C/C++

MadA@FakA

Black&White
Член од
4 август 2006
Мислења
1.049
Поени од реакции
105
Ај кажи ја целата задача па ќе видиш пример со код.

Инаку во моето мислење по грешка пишав функција споредуваш. Мислев споредувач. Како и да е, кажи ја задачата.

Задачата е да се внесат Име, Презиме и Номер на ученик (во вид на структура) и со внесувањето се создава датотека. Откако ќе се внесат податоците за сите ученици (30 треба да се):

Датотеката да се сортира по Име, Презиме и Номер, при што се создава друга датотека sort.dat

толку :)
 
Член од
6 јуни 2009
Мислења
3.094
Поени од реакции
445
Задачата е да се внесат Име, Презиме и Номер на ученик (во вид на структура) и со внесувањето се создава датотека. Откако ќе се внесат податоците за сите ученици (30 треба да се):

Датотеката да се сортира по Име, Презиме и Номер, при што се создава друга датотека sort.dat

толку :)
Еве пример код, разгледај го, смени тоа што треба.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define golemina 3
struct Zapis
{
	char Ime[20];
	char Prezime[20];
	int nomer;
};

int sporediZapisi(struct Zapis * a, struct Zapis * b)
{
	int ret = 0;
	if (a!=NULL && b!=NULL)
	{
		ret = strcmp(a->Ime, b->Ime);
		if (ret == 0)
		{
			ret = strcmp(a->Prezime, b->Prezime);
			if (ret == 0)
			{
				if (a->nomer < b->nomer)
					ret = -1;
				else if (a->nomer > b->nomer)
					ret = 1;
				else
					ret = 0;
			}
		}
	}
	return ret;
}

void podrediZapisi(struct Zapis ** pZapisi, int len)
{
	//
	int i,j, najmalIndex;
	struct Zapis * pTmp;
	for (i=0;i<len-1; i++)
	{
		najmalIndex = i;
		for (j=i+1; j<len; j++)
		{
			if (sporediZapisi(pZapisi[j], pZapisi[i]) < 0) // eve ja taa sporedbata. 
				najmalIndex = j;
		}
		if (najmalIndex != i)
		{
			//zameni
			pTmp = pZapisi[i]; pZapisi[i] = pZapisi[najmalIndex]; pZapisi[najmalIndex] = pTmp;
		}
	}
}

int main()
{
	int i;
	
	//ova ni treba. tuka gi smestuvame pointerite kon zapisi za lesno sortiranje
	struct Zapis * pZapisi[golemina];

	//alocirame eden po eden, 3 zapisi
	for (i = 0; i<golemina; i++)
		pZapisi[i] = (struct Zapis *)malloc(sizeof(struct Zapis));
	
	//citame od standarden vlez/ zmeni go po potreba
	for ( i = 0; i<golemina; i++)
	{
		scanf("%s %s %d", pZapisi[i]->Ime, pZapisi[i]->Prezime, &pZapisi[i]->nomer);
	}
	printf("%s", "-----------------------------------------\n");
	podrediZapisi(pZapisi, golemina);

	//pecatime
	for ( i = 0; i<golemina; i++)
		printf("%s %s %d\n", pZapisi[i]->Ime, pZapisi[i]->Prezime, pZapisi[i]->nomer);

	system("PAUSE");
	return 0;
}
Еве тест. влезот е пред цртата, а излезот после.
Код:
Boris Petreski 4
Antonio Dimoski 2
Goran  Gjorevski 5
--------------------
Antonio Dimoski 2
Boris Petreski 4
Goran Gjorevski 5
 

MadA@FakA

Black&White
Член од
4 август 2006
Мислења
1.049
Поени од реакции
105
Еве пример код, разгледај го, смени тоа што треба.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define golemina 3
struct Zapis
{
    char Ime[20];
    char Prezime[20];
    int nomer;
};

int sporediZapisi(struct Zapis * a, struct Zapis * b)
{
    int ret = 0;
    if (a!=NULL && b!=NULL)
    {
        ret = strcmp(a->Ime, b->Ime);
        if (ret == 0)
        {
            ret = strcmp(a->Prezime, b->Prezime);
            if (ret == 0)
            {
                if (a->nomer < b->nomer)
                    ret = -1;
                else if (a->nomer > b->nomer)
                    ret = 1;
                else
                    ret = 0;
            }
        }
    }
    return ret;
}

void podrediZapisi(struct Zapis ** pZapisi, int len)
{
    //
    int i,j, najmalIndex;
    struct Zapis * pTmp;
    for (i=0;i<len-1; i++)
    {
        najmalIndex = i;
        for (j=i+1; j<len; j++)
        {
            if (sporediZapisi(pZapisi[j], pZapisi[i]) < 0) // eve ja taa sporedbata. 
                najmalIndex = j;
        }
        if (najmalIndex != i)
        {
            //zameni
            pTmp = pZapisi[i]; pZapisi[i] = pZapisi[najmalIndex]; pZapisi[najmalIndex] = pTmp;
        }
    }
}

int main()
{
    int i;
    
    //ova ni treba. tuka gi smestuvame pointerite kon zapisi za lesno sortiranje
    struct Zapis * pZapisi[golemina];

    //alocirame eden po eden, 3 zapisi
    for (i = 0; i<golemina; i++)
        pZapisi[i] = (struct Zapis *)malloc(sizeof(struct Zapis));
    
    //citame od standarden vlez/ zmeni go po potreba
    for ( i = 0; i<golemina; i++)
    {
        scanf("%s %s %d", pZapisi[i]->Ime, pZapisi[i]->Prezime, &pZapisi[i]->nomer);
    }
    printf("%s", "-----------------------------------------\n");
    podrediZapisi(pZapisi, golemina);

    //pecatime
    for ( i = 0; i<golemina; i++)
        printf("%s %s %d\n", pZapisi[i]->Ime, pZapisi[i]->Prezime, pZapisi[i]->nomer);

    system("PAUSE");
    return 0;
}
Еве тест. влезот е пред цртата, а излезот после.
Код:
Boris Petreski 4
Antonio Dimoski 2
Goran  Gjorevski 5
--------------------
Antonio Dimoski 2
Boris Petreski 4
Goran Gjorevski 5
фала :helou:
 
Член од
4 декември 2008
Мислења
28
Поени од реакции
13
Да се најдат сите палиндроми кои се јавуваат како подзбор
во некој збор внесен преку тастатура.
Објаснување: Палиндром е збор кој се чита исто и одназад
нанапред, како и однапред наназад.

Ако знае некој нека ми помогне се убив од решавање и не е како што треба.
:nesum:
 
Член од
5 август 2009
Мислења
1.295
Поени од реакции
484
Да се најдат сите палиндроми кои се јавуваат како подзбор
во некој збор внесен преку тастатура.
Објаснување: Палиндром е збор кој се чита исто и одназад
нанапред, како и однапред наназад.

Ако знае некој нека ми помогне се убив од решавање и не е како што треба.
:nesum:
Ако добро разбирам што е подзбор тогаш:

Код:
string zbor, s1, s2;
    int i,y,z;
    cout << "Vnesi zbor: ";
    cin >> zbor;
    
    for(i=0;i<zbor.length();i++){
        for(y=3;y<=zbor.length()-i;y++){
            s1 = zbor.substr(i,y);
            s2 = "";
            for (z=s1.length();z>0; z--){
                s2 += s1[z-1];
            }            
            if (s1==s2)
                cout << "Podzborot " + s2 + " e palindrom\n";
        }
    }
 

Falcao

rossonero per sempre
Член од
28 мај 2008
Мислења
1.986
Поени од реакции
561
Ако може помош за задачава во Ц++. Да тргнам, па натаму ќе се мачам.


Пресметка на поминато време меѓу два датуми

Да се напише програма во која се пресметува времето поминато помеѓу два внесени датуми.
Датумите да се внесуваат како броеви од облик dd.mm.gggg. Во програмата исто така, да се
врши проверка на коректноста на датумите, т.е да се пресметува дали внесен датум е коректен
според бројот на денови кои ги имаат месеците, вклучително, и престапните години (да се
овозможи за секоја престапна година да се земе во предвид дека 02 месец има 29 дена). Во
случај кога некој од датумите не е коректен, пресметката за време да не се извршува и да се
допушта корисникот повторно да направи внес.
Секаде каде е тоа можно, да се работата парцијалните програмски целини со функции.
Избери примери по следната шема:

Datum1: |коректен| некоректен |некоректен| |
Datum2: |коректен| коректен |некоректен| |
vreme: | | | | | |
br.ind: | | | | | |


П.С Како ке ја најдам дали годината е престапна или не е ?
 
Член од
4 декември 2008
Мислења
28
Поени од реакции
13
Ако добро разбирам што е подзбор тогаш:

Код:
string zbor, s1, s2;
    int i,y,z;
    cout << "Vnesi zbor: ";
    cin >> zbor;
    
    for(i=0;i<zbor.length();i++){
        for(y=3;y<=zbor.length()-i;y++){
            s1 = zbor.substr(i,y);
            s2 = "";
            for (z=s1.length();z>0; z--){
                s2 += s1[z-1];
            }            
            if (s1==s2)
                cout << "Podzborot " + s2 + " e palindrom\n";
        }
    }
Фала ти многу pLaToOn, само мене ми трбаше програмата да е во С а не С++ ако може да ми кажиш како да го напишам во С for циклусот...
 
Член од
5 август 2009
Мислења
1.295
Поени од реакции
484
Фала ти многу pLaToOn, само мене ми трбаше програмата да е во С а не С++ ако може да ми кажиш како да го напишам во С for циклусот...
аххх, јас сум VB дете ... незнам ... зарем има разлика? :)
 

InSuLaNeR

A man who never was a boy.
Член од
13 јули 2009
Мислења
878
Поени од реакции
107
Сакам да почнам да ја учам основата на програмскиот јазик како и од кај да почнам совети??:toe:
 

Kajgana Shop

На врв Bottom