[C] Wczytywanie z getchar()
Ostatnio zmodyfikowano 2013-11-15 14:25
james5 Temat założony przez niniejszego użytkownika |
[C] Wczytywanie z getchar() » 2013-11-15 04:06:49 Czy może mi ktoś powiedzieć co mam zrobić, kiedy mam pętle: for( i = 0; i <( szerokosc_int + 1 ); i++ ) { scanf( "%d", & tab[ i ] ); tab[ 10 ] = tab[ i ] + tab[ 10 ]; if( getchar() == '\n' ) break; }
i ona jest w pętli, która wykonuje ją jeszcze raz i wtedy pierwsza liczba w następnych krokach nie jest czytana, chyba przez ten getchar(), ale nie wiem jak potem go zczytać. Na wszelki wypadek wklejam cały kod, bo może nie w tym tkwi problem. #include <stdio.h> #include <stdlib.h> #define szerokosc_int 11 #define szerokosc_double 20
int main() { int tab[ szerokosc_int ]; double srednia[ szerokosc_double ]; int i, k; int j; for( j = 0; j < szerokosc_double; j++ ) { tab[ 10 ] = srednia[ j ] = 0; while( getchar() != '\n' || i <= szerokosc_int ) { scanf( "%d", & tab[ i ] ); tab[ 10 ] = tab[ i ] + tab[ 10 ]; }; for( k = 0; k <= i; k++ ) printf( "%d\n", tab[ k ] ); srednia[ j ] =( double ) tab[ 10 ] /( i + 1 ); if( getchar() == '\n' ) break; } return 0;
@EDIT okazało się, że to nie ten getchar() to powoduje, ale ten na końcu pierwszej pętli. I to nie jest cala liczba, a tylko pierwsza jej cyfra... |
|
Monika90 |
» 2013-11-15 08:14:03 1. Zmienna i jest niezainicjalizowana. 2. Wartość i nie zmienia się w wewnętrznej pętli, a chyba powinna. 3. Nie uwzględniasz faktu, że getchar może zwrócić EOF. 4. Jak getchar zwróci coś innego niż '\n' albo EOF, to wstaw to coś z powrotem do strumienia za pomocą ungetc.
|
|
james5 Temat założony przez niniejszego użytkownika |
» 2013-11-15 14:25:29 Bardzo dziękuję. Oczywiście jak się okazało wkleiłem zły kod i dlatego i było nieokreślone, i nie było inkrementowane... zaraz sprawdzę ungetc i powiem czy się udało :) @EDIT Wszystko działa elegancko!!! :D DZIĘKUJĘ! |
|
« 1 » |