[C] Komunikat błędu przy wpisaniu litery

Odpowiedz Nowy wątek
2015-01-29 11:49
Mały Lew
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;
}

Pozostało 580 znaków

2015-01-29 11:51
0

O RLY?
Zabezpieczenie przed wpisywaniem liter
wisi od roku 2010...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-29 11:54
Mały Lew
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

Pozostało 580 znaków

2015-01-29 12:07
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-29 12:24
Mały Lew
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?

Pozostało 580 znaków

2015-01-29 12:27
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-01-29 12:27

Pozostało 580 znaków

2015-01-29 12:31
Mały Lew
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

Pozostało 580 znaków

2015-01-29 12:49
0
Mały Lew napisał(a):

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

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

edytowany 2x, ostatnio: spartanPAGE, 2015-01-29 12:49

Pozostało 580 znaków

2015-01-29 12:55
Mały Lew
0

w takim razie getint(i tutaj kod?)

Pozostało 580 znaków

2015-01-29 13:10
Mały Lew
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?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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

Robot: CCBot