Łańcuchy, funkcja atoi, spoj
Ostatnio zmodyfikowano 2017-12-30 00:54
Bercik97 Temat założony przez niniejszego użytkownika |
Łańcuchy, funkcja atoi, spoj » 2017-12-29 19:01:33 Witam, postanowiłem sobie zrobić zadanie na spoju http://pl.spoj.com/problems/JPESEL/ i mam problem z moim kodem, otóż nie wiem dlaczego nie działa mi to if( pesel == '\n' ) continue; tak jak chce czyli, że pomija mi znak nowej linii. Chodzi o to, że jak wpisze np liczbę testów 2, i w nast. linijce wszystkie liczby czyli, np 44051401458 a nie osobno każda w innej linii to program liczy mi poprawnie ale jakby użytkownik chciał właśnie wprowadzić każdą liczbę w osobnych liniach to jest wtedy lipa, i jeszcze program kończy od razu swoje działanie zamiast zacząć drugi test. Pomoże ktoś? Oto mój kod: #include <stdio.h> #include <stdlib.h> #define SIZE 11
int main() { int i, j, t, suma = 0, liczba[ SIZE ]; char pesel[ SIZE ]; scanf( "%d", & t ); for( i = 0; i < t; i++ ) { fflush( stdin ); for( j = 0; j <= SIZE; j++ ) { scanf( "%c", & pesel ); if( pesel == '\n' ) continue; else { printf( "%d\n", atoi( pesel ) ); liczba[ j ] = atoi( pesel ); suma += atoi( pesel ); } } if( suma < 0 ) continue; else { suma = 0; suma += liczba[ 0 ] + liczba[ 4 ] + liczba[ 8 ] + liczba[ 10 ] + ( 3 * liczba[ 1 ] ) +( 3 * liczba[ 5 ] ) +( 3 * liczba[ 9 ] ) + ( 7 * liczba[ 2 ] ) +( 7 * liczba[ 6 ] ) +( 9 * liczba[ 3 ] ) +( 9 * liczba[ 7 ] ); if( suma % 10 == 0 ) puts( "D" ); else puts( "N" ); } } return 0; }
|
|
mateczek |
» 2017-12-29 19:09:39 pesel jest c-stringiem a porównujesz ze znakiem ?? poza tym skoro na spoju jest podane, że masz 20 testów to masz 20 testów. I nie musisz robić nadprogramowych sprawdzeń Pozatym do testu ostaniej cyfry sumy nie trzeba zamieniać ascii na int. Wykomentowałem zbędny kod #include <stdio.h> #include <stdlib.h> #define SIZE 11
int main() { int i, j, t, suma = 0; char liczba[ SIZE + 1 ]; scanf( "%d", & t ); for( i = 0; i < t; i++ ) { scanf( "%s", & liczba ); suma = liczba[ 0 ] + liczba[ 4 ] + liczba[ 8 ] + liczba[ 10 ] + ( 3 * liczba[ 1 ] ) +( 3 * liczba[ 5 ] ) +( 3 * liczba[ 9 ] ) + ( 7 * liczba[ 2 ] ) +( 7 * liczba[ 6 ] ) +( 9 * liczba[ 3 ] ) +( 9 * liczba[ 7 ] ); if( suma % 10 == 0 ) puts( "D" ); else puts( "N" ); } return 0; } |
|
Bercik97 Temat założony przez niniejszego użytkownika |
» 2017-12-30 00:54:53 LOL. Nie wiem po co ja próbuje tak kombinować, dzięki. Po prostu na spoju w niektórych zadaniach miałem tak, że nie było podanego warunku i jak nie spełniłem wszystkich możliwych warunków to spoj mi nie zaliczał, myślałem, że tutaj też tak będzie dlatego tak pisałem ten kod.. Dzięki jeszcze raz. |
|
« 1 » |