Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Wczytywanie z getchar()

Ostatnio zmodyfikowano 2013-11-15 14:25
Autor Wiadomość
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:
C/C++
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.
C/C++
#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...
P-96291
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.
P-96293
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Ę!
P-96299
« 1 »
  Strona 1 z 1