sortowanie w C

TereFere
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 30 kwie 2009, o 11:42
Płeć: Kobieta

sortowanie w C

Post autor: TereFere »

Witam, język C uczę się od niedawna, mam pewien problem i prosiłam by o pomoc: w projekcie mam do posortowania dane wg nazwiska, dane te są odczytywane z pliku. Program działa, jeżeli zakomentuje odpowiednie linie (tak jak w kodzie poniżej), problem zaczyna się, jeśli odkomentuje, którąś z tych lini.

Kod: Zaznacz cały

void pokaz(void)
{  
int ilosob, i, j, tym;
char tymz[30];
FILE*f;
struct osoba*td;

f = fopen("ilosob.txt", "rt");
fscanf( f, "%d" , &ilosob);
fclose( f );
if (ilosob==0) 
	{
	printf("
 Baza danych jest pusta 
 ");
	getch();
	}
else 
	{
		f = fopen("baza.txt", "rt");
		td=(struct osoba*)malloc(ilosob*sizeof(struct osoba));
		for (j=0; j<ilosob; j++)
				{
					fscanf(f, "%s" , td[j].imie1);
					fscanf(f, "%s" , td[j].imie2);
					fscanf(f, "%s" , td[j].nazwisko);
					fscanf(f, "%s" , td[j].nazwiskoR);
					fscanf(f, "%s" , td[j].miejsM);
					fscanf(f, "%s" , td[j].ulica);
					fscanf(f, "%d" , &td[j].nrD);
					fscanf(f, "%d" , &td[j].nrM);
					fscanf(f, "%d" , &td[j].nrTD);
					fscanf(f, "%d" , &td[j].nrTK);
					fscanf(f, "%s" , td[j].miejsU);
					fscanf(f, "%d" , &td[j].dataU);
				}

		fclose( f );
		for (i=0;i<=ilosob;i++)
			{
				if((strcmp(td[i].nazwisko, td[i+1].nazwisko))>0)
					{
						strcpy(tymz,td[i].imie1);				
						strcpy(td[i].imie1,td[i+1].imie1);
						strcpy(td[i+1].imie1,tymz);
						
						/*strcpy(tymz,td[i].imie2);				
						strcpy(td[i].imie2,td[i+1].imie2);
						strcpy(td[i+1].imie2,tymz);

						strcpy(tymz,td[i].nazwisko);				
						strcpy(td[i].nazwisko,td[i+1].nazwisko);
						strcpy(td[i+1].nazwisko,tymz);

						strcpy(tymz,td[i].nazwiskoR);				
						strcpy(td[i].nazwiskoR,td[i+1].nazwiskoR);
						strcpy(td[i+1].nazwiskoR,tymz);

						strcpy(tymz,td[i].miejsM);				
						strcpy(td[i].miejsM,td[i+1].miejsM);
						strcpy(td[i+1].miejsM,tymz);

						strcpy(tymz,td[i].ulica);				
						strcpy(td[i].ulica,td[i+1].ulica);
						strcpy(td[i+1].ulica,tymz);*/

						tym=td[i].nrD;				
						td[i].nrD=td[i+1].nrD;
						td[i+1].nrD=tym;

						tym=td[i].nrM;				
						td[i].nrM=td[i+1].nrM;
						td[i+1].nrM=tym;

						tym=td[i].nrTD;				
						td[i].nrTD=td[i+1].nrTD;
						td[i+1].nrTD=tym;

						tym=td[i].nrTK;				
						td[i].nrTK=td[i+1].nrTK;
						td[i+1].nrTK=tym;

						/*strcpy(tymz,td[i].miejsU);				
						strcpy(td[i].miejsU,td[i+1].miejsU);
						strcpy(td[i+1].miejsU,tymz);*/

						tym=td[i].dataU;				
						td[i].dataU=td[i+1].dataU;
						td[i+1].dataU=tym;

						//i=-1;

					}
			
			}
		for (j=0; j<ilosob; j++)
			{
				printf("
 %s %s %s %s %s %s %d %d %d %d %s %d 
 
" , 
td[j].imie1, td[j].imie2, td[j].nazwisko, td[j].nazwiskoR, td[j].miejsM, td[j].ulica, td[j].nrD, 
td[j].nrM, td[j].nrTD, td[j].nrTK, td[j].miejsU, td[j].dataU);
			}
		flushall(); 
		getch();
	}
main();
 }
Awatar użytkownika
kwak2k
Użytkownik
Użytkownik
Posty: 24
Rejestracja: 13 paź 2008, o 09:56
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 1 raz
Pomógł: 6 razy

sortowanie w C

Post autor: kwak2k »

daj jeszcze strukture osoby i kilka danych to sie zobaczy
TereFere
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 30 kwie 2009, o 11:42
Płeć: Kobieta

sortowanie w C

Post autor: TereFere »

dzięki;) znalazłam już błąd;)
ODPOWIEDZ