Średnia artmetyczna - wczytywanie danych

0

Witam,

problem bo nie wiem jak mam wczytywać znaki z konsoli.
Napisałem program gdzie użytkownik podaje ile razy chce obliczyć śrenia a potem po spacji żądane liczby.
Problem polega że poniższe pętle cały czas działają :(

while (scanf("%d", &n) != EOF)

bądź

while (scanf("%d", &n) != '\n')
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int n; //wczytana liczba z wiersza
int t; //ilosc prob
int sredniaArtmetyczna = 0;
int iloscliczb = 0;
int i;
int *tabWyn;

   scanf("%d", &t);
   tabWyn = (int *) malloc(t * sizeof(int));
   for(i = 0; i < t; ++i)
   {
   		while (scanf("%d", &n) != EOF)
   		{
   			sredniaArtmetyczna += n;
   			++iloscliczb;
   		}
   sredniaArtmetyczna /= iloscliczb;
   tabWyn[i] = sredniaArtmetyczna;
   sredniaArtmetyczna = 0;
   iloscliczb = 0;
   }
   for(i = 0; i < t; ++i)
   {
        printf("%d\n", tabWyn[i]);
   }

 return 0;
 }

thx z góry za pomoc.

dodanie znaczników <code class="c"> - fp

0

Byłoby miło, gdybyśmy wiedzieli, jaki format mają dane wejściowe...
Btw - w momencie, w którym musisz komentować nazwy zmiennych, by wiedzieć co one oznaczają, dzieje się źle.

0

Input:

2 
4 1 2 3 4 
4 4 3 2 1

Output:

2
3

zadanie ze spoja http://pl.spoj.com/problems/PP0604A/

0

Zatem po prostu zrób to na zasadzie:

var liczba_testow = wczytaj_inta();

while (liczba_testow--)
{
 var liczba_liczb = wczytaj_inta();
 var liczby = new Array;

 while (liczba_liczb--)
  liczby.add(wczytaj_inta());

 println(przelicz_dane(liczby));
}
0

a jest jakiś inny sposób niż pytanie z ilu liczb ma się składać średnia??

0

Cóż, w treści zadaniu na SPOJ-u tak czy siak jest napisane, że na stdin masz zarówno liczbę testów, jak i w każdym teście liczbę przypadków (liczb) do wczytania, więc odnośnie SPOJ-a to byłoby najłatwiejsze i najrozsądniejsze.
Jeżeli natomiast chodzi o jakiś przypadek ogólny w którym nieznana jest liczba liczb na wejściu, to != EOF powinno działać (ew.zmień format na %d (ze spacją na końcu)).

0

własnie niestety nie wchodzi mi z EOF tylko się zapętla. :(

0

Co do SPOJ-a i wczytywania danych, to tutaj http://pl.spoj.com/forum/viewtopic.php?f=10&t=1206&sid=22286afef5d45bce8ddf1f665428a2b4 opisali to dla C. Zarówno dla określonej jak i nieznanej liczby przypadków.

0
Terravitka napisał(a):

a jest jakiś inny sposób niż pytanie z ilu liczb ma się składać średnia??

#include <stdio.h>
 
int main()
  {
   int ch,val,row=0,count=0;
   printf("");
   for(;;)
     {
      while(((ch=getchar())==EOF)||(ch=='\n')||((ch==' ')||(ch=='\t')))
        {
         if((ch==EOF)||(ch=='\n'))
           {
            printf("W wierszu %d - wczytano %d liczb\n",++row,count);
            if(ch==EOF) return 0;
            count=0;            
           }
        }
      ungetc(ch,stdin);
      if(scanf("%d",&val)==1) ++count;
      else getchar();
     }
  }

http://ideone.com/gFZ8RD

1 użytkowników online, w tym zalogowanych: 0, gości: 1