[c++] Program wykoleja sie na przecinkach


(Byadii22) #1

Witam!

Właśnie zaczałem naukę programowania w c++, i na wypróbowanie swoich umiejętności napisałem prosty, banalny wręcz, przelicznik PLN na EUR. I właśnie... Program jest w konsoli tekstowej Windowsa, jednak sednem problemu jest wykolejanie się programu przy podawaniu kursu euro z przecinkami (tj. 2,56, 3,60 itp.). #-o

Przy podaniu "oprzecinkowanej" kwoty i naciśnięciu ENTER wypluwa mi jakże przejżysty bląd:

0adc5122ff0cf20c.gif

Pomoże ktoś?? :shock:


(Dark Choosen) #2

Zmnienne są w int czy float? Liczby wymierne (z przecinkami) można dawać tylko w float.

Edit: Właściwie to nie liczby wymierne, a zmiennoprzecinkowe (o ile to nie jedno i to samo).


(Kambor4) #3

Czyżby syf?Po wykonaniu co napisał @Aveanare, Daj log z Combofix


(Byadii22) #4

Na int, dzięki-zobacze na floatach :slight_smile:


(Sawyer47) #5

Gdybyś dał kod byłoby prościej stwierdzić co jest nie tak. Potencjalny błąd widzę w używaniu przecinka, w zamian spróbuj użyć kropki dziesiętnej, w końcu w chyba wszystkich językach programowania używa się kropki dziesiętnej (a przynajmniej w bardzo wielu).


(Dark Choosen) #6

nr47 , masz rację. Przed chwilą sprawdziłem i z przecinkiem nie działa.

Przy takim kodzie:

#include 

#include 


using namespace std;


int main()

{

    float liczba1; //deklaracja zmiennej liczba1 typu float

    cout << "Podaj liczbe1: ";

    cin >> liczba1; //wprowadzienie zmiennej liczba1


    float liczba2; //deklaracja zmiennej liczba2 typu float

    cout << "Podaj liczbe2: ";

    cin >> liczba2; //wprowadzenie zmiennej liczba2


    float wynik = liczba1 + liczba2; //deklaracja zmiennej wynik typu float będącej sumą zmiennych liczba1 i liczba2


    cout << endl;

    cout << liczba1 << " + " << liczba2 << " = " << wynik << endl; //wyświetlenie wyniku


    getch();


    return 0;

}

plikdy3.jpg

Z kropką działa normalnie.

EDIT: Dodałem komentarz do kodu.


(D Kielbania) #7

i prpgram działa poprawnie. Przecinek jest inaczej traktowany przez program.


(Byadii22) #8

hmm... A Aveanare, wytłumaczyłbyś mi o co biega w twoim programie?? A w zasasadzie JAK wykorzystac tego floata??

/* EDIT */

Kod PROgramu :stuck_out_tongue: Może sie przyda:)

#include 

#include 


using namespace std;


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

{ 

    const float kurse = 0,5; //Normalnie stosuje tutaj int kurse =0

    float kurse; //Normalnie nie ma tej linijki


    const float zloty = 0,5; //Normalnie stosuje tutaj int zloty =0

    float zloty; //Normalnie nie ma tej linijki


    const float euro = 0,5; // Normalnie, ehh.. tutaj jest int euro =0

    float euro; // Nie ma tego na normalu...


    cout << "Podaj aktualny kurs Euro w stosunku do PLN: ";

    cin >> kurse;


    cout << endl;


    cout << "Podaj, ile zlotowek posiadasz: "; 

    cin >> zloty;


    cout << "Podaj, ile euro posiadasz: ";

    cin >> euro;


    cout << endl;


    cout << "W takim razie:" << endl;

    cout << "Jesli zamienisz PLN na EUR, bedziesz posiadac: " << zloty*euro << " EUR" << endl;

    cout << "Jesli zamienisz EUR na PLN, bedziesz posiadaczem: " << zloty/euro << " PLN" << endl;


    system("PAUSE");

    return EXIT_SUCCESS;

}

Komentarze w kodzie na potrzeby forum


(Dark Choosen) #9

Mój kod miał dodawać dwie liczby :slight_smile:

  1. W liczbach nie stosujemy przecinka tylko kropkę (0.5)

  2. Float stosujesz tak jak int. Radzę przeczytać to i to

  3. Nie rozumiem czemu kurse, zloty i euro deklarujesz jako stałe (const) a w następnej linijce jako zmienne.

  4. Poza tym pokręciłeś coś w liczeniu (zloty*euro itd.)


(Byadii22) #10

co do pkt. 1-3 muszę się zgodzić/przyznać do błędu :wink: Dziękuję za pomoc :slight_smile:

a do pkt 4 na int licze w ten sposób i jest ok :wink:


(system) #11

(Byadii22) #12

Hm... no tak, mój błąd :slight_smile: