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

Sprawdzanie poprawności wczytywanych danych

Ostatnio zmodyfikowano 2010-12-29 12:01
Autor Wiadomość
Marys
Temat założony przez niniejszego użytkownika
Sprawdzanie poprawności wczytywanych danych
» 2010-12-24 06:28:07
Jak zrobić kasować w konsoli (cin) nie poprawne dane. Chodzi o to, że np. jak ktoś wprowadzi literę lub ciąg liter to kasuje wpisany wynik i kursor powraca na pierwotne miejsce. Jeszcze przydałoby się sprawdzać czy została wpisana cyfra nieparzysta i z przedziału (a, b).
P-25458
DejaVu
» 2010-12-24 08:18:15
Kursy
Obsługa strumienia wejściowegoRozdział 9. Omówienie obsługi standardowego wejścia za pomocą strumienia std::cin oraz przedstawienie sposobu walidacji wczytywanych danych. (lekcja)
Wykorzystujesz synca omówionego w tutorialu. Do powtarzania tworzysz pętlę. Do sprawdzania czy parzyste wykorzystujesz warunek pętli lub if'a w zależności od tego co chcesz osiągnąć.
P-25460
Mazzir
» 2010-12-25 17:26:51
C/C++
#include <iostream>
#include <conio.h>

using namespace std;

main()
{
    poczatek:
    int a, twoje_dane = 0; // zamiast 0 wpisz co tam chcesz chyba, że to jest tekst to inny typ zmiennej daj
    cout << "Podaj dane: ";
    cin >> a;
    if( a != twoje_dane ) goto poczatek;
    else { return 0; } // dalszy ciąg programu
}

To jest tylko przykład (wiem, że goto jest złe) ;p
P-25502
DejaVu
» 2010-12-25 17:32:49
Tak się nie sprawdza poprawności danych.
P-25507
malan
» 2010-12-25 17:48:04
Można też tak:
C/C++
#include <iostream>

const int RANGE_BEGIN = 0;
const int RANGE_END = 69;

int main()
{
    int num;
   
    while( true )
    {
        std::cin >> num;
       
        if( std::cin.fail() )
        {
            std::cout << "input error!" << std::endl;
           
            std::cin.clear();
            std::cin.sync();
        } else
        {
            if( num >= RANGE_BEGIN && num <= RANGE_END )
                 break;
            else
                 std::cout << "input error: bad range!" << std::endl;
           
        }
    }
   
    std::cout << num;
   
    return 0;
}
P-25510
Mazzir
» 2010-12-25 18:22:48
Aaa o to chodzi ;p To sory - nie patrz na mój post nawet xD
P-25514
Marys
Temat założony przez niniejszego użytkownika
» 2010-12-27 05:10:38
Dobra zrobiłem to trochę inaczej, z wykorzystaniem funkcji wherex i wherey oraz gotoxy() i działa :) Później wrzucę kod bo mam na drugim kompie.
P-25648
ison
» 2010-12-27 11:29:53
@malan nie byłoby łatwiej zwyczajnie użyć try, catch i throw?
P-25652
« 1 » 2
  Strona 1 z 2 Następna strona