Natrag   Forum.hr > Informatička tehnologija > Za napredne korisnike > Programiranje

Programiranje Za programere i one koji to žele postati ...

Odgovor
 
Tematski alati Opcije prikaza
Old 22.03.2009., 16:26   #1
pomoć sa strukurama??

Bok društvo!? jel mi može netko pomoći? zanima me zašto mi u ovom zadatku ne vraća povratnu vrijednost s return?
Moram napisati funkciju koja za dva studenta određuje imaju li isto ime i prezime i ovisno o kombinaciji mora vratiti npr. 3 ako su i imena i prezimena jednaki, 2 vraća ako su samo imena jednaka itd. Hvala unaprijed!

Kod:
struct studenti {
char ime[SIZE];
char prezime[SIZE];
int godina_rodjenja;
};

void ispisi(struct studenti *ispis, int godina_rodjenja, int n)
{int i = 0;
while (i < n){
	if(ispis->godina_rodjenja < godina_rodjenja){
	printf("%s\n", ispis->ime);
printf("%s\n", ispis->prezime);

	}
	ispis ++;
	i++;
}
}
int usporedi(struct studenti *nesto, int n)
{int result1, result2;
result1 = strcmp(nesto[0].ime, nesto[1].ime );
result2 = strcmp(nesto[0].prezime, nesto[1].prezime );

if (result1 == 0 && result2 == 0)
printf("Jednaka imena i prezimena!\n");
return 3;
if(result1 == 0 && result2 < 0 || result2 > 0)
printf("Ista imena ali razlicita prezimena");
return 2;

if( result2 == 0 && result1 > 0 ||result1 < 0)
printf("Ista prezimena ali razlicita imena!");
return 1;


if(result1 != 0 && result2 != 0 )
printf("Razlicita imena i prezimena");
return 0;

}


int main (void)
{struct studenti popis[N]  = {{"Antonia","Olivari", 1975}, {"Anica", "Markovic", 1984}, {"Lara", "Tomic", 1982}};
ispisi(popis, 1983, N);
usporedi(popis, 2);

}
Tea Šatrak is offline  
Odgovori s citatom
Old 22.03.2009., 17:28   #2
Probaj ovako:
Kod:
int usporedi(struct studenti *nesto, int n) {
    int result1, result2;
    result1 = strcmp(nesto[0].ime, nesto[1].ime );
    result2 = strcmp(nesto[0].prezime, nesto[1].prezime );

    if(result1 == 0 && result2 == 0) {
        printf("Jednaka imena i prezimena!\n");
        return 3;
        }
    else if(result1 == 0 && (result2 != 0 || result2 != 0)) {
       printf("Ista imena ali razlicita prezimena\n");
       return 2;
       }
    else if(result2 == 0 && (result1 != 0 || result1 != 0)) {
       printf("Ista prezimena ali razlicita imena!\n");
       return 1;
       }
    else if(result1 != 0 && result2 != 0 )
      printf("Razlicita imena i prezimena\n");
    return 0;
}
Obrati pažnju na zagrade,
Kod:
 if(result2 == 0 && (result1 != 0 || result1 != 0)) 
       printf("Ista prezimena ali razlicita imena!\n");
       return 1;
nije isto što i
Kod:
 if(result2 == 0 && (result1 != 0 || result1 != 0)) {
       printf("Ista prezimena ali razlicita imena!\n");
       return 1;
       }
, takodjer
Kod:
if(result2 == 0 && result1 != 0 || result1 != 0)
nije isto što i
Kod:
if(result2 == 0 && (result1 != 0 || result1 != 0))
i kod ovakvih provjera uvijek koristi if() {} else if() {}, a ne samo if() {} jedan za drugim.Tako ćeš spriječiti nepotrebne provjere.
__________________
The possession of anything begins in the mind.

Zadnje uređivanje Froyd : 22.03.2009. at 18:09.
Froyd is offline  
Odgovori s citatom
Old 22.03.2009., 18:01   #3
Hvala puno na savjetima. Pozdrav veeliki!!!
Tea Šatrak is offline  
Odgovori s citatom
Odgovor



Kreni na podforum




Sva vremena su GMT +2. Trenutno vrijeme je: 12:40.