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

wczytywanie ciagow znakow, problem z porownaniem wartosci

Ostatnio zmodyfikowano 2014-12-22 20:48
Autor Wiadomość
Vanilka
Temat założony przez niniejszego użytkownika
wczytywanie ciagow znakow, problem z porownaniem wartosci
» 2014-12-18 05:19:16
Hej,
mam kolejny problem blondynki :)

otoz, chce by user wprowadzil kod skladajacy sie okreslonej ilosci cyfr. Chce zeby zrobil to od razu.

zadanie programu to
1. sprawdzenie czy wprowadzil wlasciwa ilosc cyfr ( jeszcze tego nie zaczelam nawet)
2. sprawdzenie czy wprowadzone znaki sa prawidlowe, czyli czy cyfry nie sa za wysokie, lub czy w tym ciagu nie pojawily sie litery.

Poki co program wydaje sie dziwny, poniewaz jako ze nie dziala, zaczelam wprowadzac wszedzie gdzie tylko moge wyswietlanie dziwnych elementow, aby znalezc blad. 

Zatem :





bool verif = true;
do
{

cout << "\n Podaj kod " << endl;



(cin >> kod_user).get();

cout << " wpisales kod " << kod_user << endl;


for (int j = 0; j < ilosc_miejsc; j++)
{
    cout << " wartosc : " << kod_user[j] << endl;
}

cout << "ilosc miejsc"  << ilosc_miejsc << endl;

for (int i = 0; i < ilosc_miejsc; i++)
{
    if ((kod_user[i] < '0' )|| (kod_user[i] > ilosc_cyfr))
        {
            cout << "Kod user od i " << i << " rowny " << kod_user[i] << " jest niezgodny ze standardem" << endl;
            verif = true;
        }
    else
    {
        cout << "kod jest zgodny ze standarderm" << endl;
        verif = false;
    }


}
    } while (verif == true);


problem tak naprawde wystepuje tutaj

    if ((kod_user[i] < '0' )|| (kod_user[i] > ilosc_cyfr))
        {
            cout << "Kod user od i " << i << " rowny " << kod_user[i] << " jest niezgodny ze standardem" << endl;
            verif = true;
        }

jezeli wpisze


if ((kod_user[i] < '0' )|| (kod_user[i] > '8'))

to program zadziala poprawnie. Tyle ze zalezy mi aby ten gorny zakres byl okrelsony przez zmienna ilosc_cyfr. Jak to zrobic ?

I skoro to jest ciag charow, to dla mnie na logike kazdy znak wprowadzony tez bedzie charem.  A wedlug tablicy ascii  cyfry  maja kod rowny sobie. Nie rozumiem wiec dlaczego kod nie zadziala jesli wpisze



if ((kod_user[i] < 0)


Jak sprawdzic czy podany ciag ma odpowiednia ilosc znakow ?

P-123055
Monika90
» 2014-12-18 09:44:12
A wedlug tablicy ascii  cyfry  maja kod rowny sobie.
Nie mają. Poza tym, kody cyfr ASCII nie powinny Cię obchodzić, ponieważ żeby zamienić wartość cyfry na kod znaku cyfry wystarczy do wartości dodać '0'.

C/C++
int ilosc_cyfr = 8;
if(( kod_user[ i ] < '0' ) ||( kod_user[ i ] > ilosc_cyfr + '0' ) )
{
    std::cout << "niezgodny ze standardem\n";
}
P-123058
Vanilka
Temat założony przez niniejszego użytkownika
» 2014-12-18 10:47:29
ooo dzieki wielkie ;)

A powiesz mi gdzie moge  otym nieco wiecej poczytac ?? 
P-123059
pekfos
» 2014-12-18 10:54:35
A powiesz mi gdzie moge  otym nieco wiecej poczytac ?? 
W internecie.
P-123060
Vanilka
Temat założony przez niniejszego użytkownika
» 2014-12-18 11:16:40
@pekfos no mega pomogles ://

wyobraz sobie ze zanim zadalam pytanie probowalam to sama rozwiazac, jako ze nie rozwiazalam = nie znalazlam takich informacji. Ale mniejsza juz z tym...

pozostaje teraz ostatnia kwestia.. czyli konwersja.. Skoro juz sie wczytuje i porownuje to teraz te dane musze zapisac w tablicy, a tablice mam intowa. Czy jest mozliwe dokonac konwersji tych znakow na liczby ?? 
P-123061
darko202
» 2014-12-18 17:45:53
zamiany char na int można dokonać funkcją - atoi
http://www.cplusplus.com​/reference/cstdlib/atoi/
lub podobnymi z tej rodziny

atol - Convert string to long integer (function )
atof - Convert string to double (function )
strtol - Convert string to long integer (function )

w druga stronę int na char - itoa
http://www.cplusplus.com​/reference/cstdlib/itoa/


Jak sprawdzic czy podany ciag ma odpowiednia ilosc znakow ?
http://cpp0x.pl/kursy/Kurs-C++​/Poziom-3​/Modyfikowanie-tekstu-i-sprawd​zanie-jego-dlugosci​/353
http://cpp0x.pl/kursy/Kurs-C++​/Biblioteka-string/319

P-123069
Vanilka
Temat założony przez niniejszego użytkownika
» 2014-12-19 01:37:00
dziekuje darko :)
tylko ze moj ciag to char ... to rowniez zadziala ?
P-123094
darko202
» 2014-12-19 02:32:12
z char[] zawsze możeś sobie zrobić stringa
popatrz na
http://www.cplusplus.com​/reference/cstring/strcmp/
C/C++
include < stdio.h >
#include <string.h>

int main()
{
    char key[] = "apple";
    char buffer[ 80 ];
    do {
        printf( "Guess my favorite fruit? " );
        fflush( stdout );
        scanf( "%79s", buffer );
    } while( strcmp( key, buffer ) != 0 );
   
    puts( "Correct answer!" );
    return 0;

key[], buffer[80];
to tablice char[]


możesz też poszukać
https://www.google.pl​/#q=zmienne+znakowe+C%2B%2B+char%5B%5D
np. ostatni wynik 1 strona
http://www.google.pl/url?sa=t​&rct=j&q=&esrc=s&source=web​&cd=10&ved=0CGEQFjAJ​&url=http%3A%2F%2Fmarek.piaseck​i.staff.iiar.pwr.wroc.pl%2Fdyd​aktyka%2Fon%2FW07_teksty-tabli​ce_znakowe.pdf​&ei=cX2TVIqKMOT8ywORkYLwDg​&usg=AFQjCNEHE8zxYHNhk8zoFq8Cs​FZ2nk51vg​&bvm=bv.82001339,d.bGQ
P-123096
« 1 » 2
  Strona 1 z 2 Następna strona