[C] Komunikat błędu przy wpisaniu litery

0

Witam, miałem za zadanie napisać program który oblicza sumę liczb nie parzystych wprowadzonych przez użytkownika, jakoś sobie z tym poradziłem niestety nie wiem co zrobić aby wyświetlił się błąd gdy użytkownik wpisze inny znak niż liczbę, powinien wyskoczyć komunikat że został wprowadzony zły znak i powtarzać się gdy użytkownik dalej będzie próbował wpisać inny znak niż liczbę ale gdy już wpiszę tą liczbę to program powinien dalej kontynuować obliczenia, proszę o pomoc.

Tutaj program:

 #include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])

{
int i;
int t[10]={0};
int suma=0;


printf("Wprowadz cyfre:\n");

for (i=0; i<9; i++)
{

scanf ("%d",&t[i]);
if(t[i]%2!=0) suma+=t[i];

}

if (scanf("%d",&t[i])==1)

{
printf("Liczby ktore wprowadziles : %d %d %d %d %d %d %d %d %d %d  \n
",t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9]);

printf("Suma liczb nieparzystych wynosi: %d\n ",suma);
}
else
printf("Zly znak");


  system("PAUSE");
  return 0;
}
0

Nie do końca rozumiem ten kawałek kodu

 while((c = getchar()) != '\n' && c != EOF);

Mógłby mi ktoś dokładnie wytłumaczyć? Noga jestem z programowania

0

To znaczy że w pętli wyciągamy z wejścia znaki aż nie trafimy na znak nowej linii albo aż się znaki nie skończą. W ten sposób czyścimy strumień aż do znaku nowej linii ktory tam poleciał kiedy użytkownik wcisnął enter.

0

To teraz kolejne pytanie, czy tą pętle mam wstawić pomiędzy printf("wprowadz cyfre") a petle for? i zmienna w petli while to bedzie moje 'i' czy musze nowa?

1

Ja bym sugerował wyjątkowo użyć głowy do czynności innej niż tylko jedzenie. Na przykład do myślenia. Zrób funkcje getInt() w której będzie cały kod w podanym artykule. A potem u siebie w kodzie będziesz ją tylko wywoływał zamiast swojego scanf.

0

Tak jak już wcześniej napisałem jestem noga w programowaniu a przybliżając to sformułowanie chodzi mi tylko i wyłącznie o zaliczenie programowania i nic więcej nawet nie wiem w jaki sposób zastosować funkcję getint

Czy mógłby ktoś połączyć tą funkcje z kodem? Byłbym wdzięczny

0
Mały Lew napisał(a):

[..]jestem noga w programowaniu [..]

Myśleniu*.
Trochę inicjatywy, to ty masz zdać ten przedmiot.

0

w takim razie getint(i tutaj kod?)

0

Mam coś takiego:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])

{
int i;
int t[10]={0};
int suma=0;


printf("Wprowadz cyfre:\n");

for (i=0; i<9; i++)
{
while(scanf("%d", &t[i]) != 1) 
{
  printf("Nieodpowiedni znak!\n");
  int c;
  while((c = getchar()) != '\n' && c != EOF); 
}
scanf ("%d",&t[i]);
if(t[i]%2!=0) suma+=t[i];

}

if (scanf("%d",&t[i])==1)

{
printf("Liczby ktore wprowadziles : %d %d %d %d %d %d %d %d %d %d  \n" ,t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9]);

printf("Suma liczb nieparzystych wynosi: %d\n ",suma);
}



  system("PAUSE");
  return 0;
} 

I wszystko fajnie tylko że muszę wprowadzić więcej niż 10 liczb, od czego to się ma?

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