Dwie szanse wpisania danej liczbowej

Dwie szanse wpisania danej liczbowej
NA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Potrzebuję pomocy z prostym fragmentem kodu. Moim celem jest, żeby użytkownik miał dwie szanse wpisania liczby całkowitej. Kod nie działa tak jak trzeba- gdy w pierwszym przypadku wpiszę np. -5, a w drugim już poprawną daną np. 5, program zacina się. Z góry dziękuję za podpowiedź lub wskazanie miejsca, w którym popełniam błąd.

Kopiuj
#include <stdio.h>
int main()
{
    int i=1,n,cur;
    puts("ilosc punktow:");
    cur=scanf("%d",&n);
    if(cur!=1 || n<=1) 
        {
            puts("blad, sprobuj jeszcze raz");
            scanf("%*s");
            cur=scanf("%d",&n);
            if(cur!=1 || n<=1)
            {
                puts("zle dane");
                return -1;
            }
        }
      printf("%d",n);
      return 0;
}
MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
1

a co to ma robić:

Kopiuj
scanf("%*s");

to ci zjada wpisaną 5 wiec następne scanf czeka na więcej danych.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Nie rozumiem po kiego próbujesz czyścić bufor po ewentualnym błędzie, jeżeli po błędzie i tak wychodzisz z programu?

Coś takiego próbujesz zrobić?

Kopiuj
#include <stdio.h>
using namespace std;

int main()
{
	int n=0;
	for(int tr=0;tr<2;++tr)
	{
                printf(tr?"blad, sprobuj jeszcze raz: ":"ilosc punktow: ");
                scanf("%d",&n);
                if(n>1) break;
                puts("zle dane");
                while(getchar()!='\n') {}
	}
	printf(n>1?"%d\n":"maksymalna ilosc nieudanych prob",n);
	return 0;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.