Kolega draghan propozycje podrzucił, jak można ten problem rozwiązać. Ze swojej strony, mógłbym ewentualnie zaproponować użycie funkcji strtok(). Wrzuć co stworzyłeś, to łatwiej będzie Ci pomóc, podpowiedzieć coś. http://www.cplusplus.com/reference/cstring/strtok/?kw=strtok
Może kompilator by to przetrawił, ale będzie podobnego rodzaju problem. Jeśli podasz np.rok 1991, to modulo będzie wykonywane na liczbie 31h (kod ASCII znaku '1') a nie na liczbie 1991. Troche polukałem po kodzie:
//Dane stanowia sekwencje zlozone z nazwiska,imienia oraz daty urodzenia postaci rrrr-mm-dd. //Wprowadzanie danych konczy pusty wiersz. //Wyswietlic liste nazwisk uporzadkowana w/g malejacego wieku. //Liczba osob opisanych w danych wejsciowyuch nie przekracza 40. //Zastosowac sortowanie metoda prostego wybierania #include <stdio.h> #include <stdlib.h> enum {wyst,niewyst} blad=niewyst;//okreslenie czy blad wystapil, czy nie enum {przestepny,nieprzestepny} rok=nieprzestepny;//zmienna okreslajaca czy rok jest przestepny typedef struct { int rok; int miesiac; int dzien; } Data; typedef struct { char imie [30]; char nazwisko[30]; Data data_ur; int n;//klucz do sortowania w formacie rrrrmmdd } Osoba; int main() { int i=0; int x=0;//sprawdza ile osob zostalo wprowadzonych char ciag[256]; char znaki_podzialu[] = " -"; char * token; char ciete [5][100];//k Osoba osoby[40]; puts("Program sortujacy osoby w/g malejacego wieku."); puts("Wpisz imie, nazwisko oraz date urodzenia(rrrr-mm-dd)."); puts("Aby zakonczyc wpisywanie wybierz <q/Q>."); while (i++<2)//petla do wczytywania do 40 osob { fgets(ciag,256,stdin); if (*(ciag)=='q') break; token = strtok(ciag, znaki_podzialu); int j=0; while( token != NULL ) { strcpy(ciete[j],token); j++; token = strtok( NULL, znaki_podzialu ); } strcpy(osoby[i].imie,ciete[0]); strcpy(osoby[i].nazwisko,ciete[1]); osoby[i].data_ur.rok=atoi(ciete[2]); osoby[i].data_ur.miesiac=atoi(ciete[3]); osoby[i].data_ur.dzien=atoi(ciete[4]); } puts("Dziekuwa."); return 0; }
Data jest zrobiona na zmiennych int, co potem upraszcza sprawę przy porównianiach, modulo, etc.
O funkcjach zadeklarowanych w nagłówku string.h o pięknie brzmiących nazwach: strstr(), strchr() oraz strpbrk().
sczyta
Nie powinno być "wczyta"? Bo sczytywać to wg PWN oznacza "czytając, porównać tekst przepisany z oryginałem"
93,720 zapytań
142,644 odpowiedzi
323,266 komentarzy
63,270 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj
Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.