Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako prekinuti program u C++ pomoću nekog slova sa tastature

[es] :: C/C++ programiranje :: C/C++ za početnike :: Kako prekinuti program u C++ pomoću nekog slova sa tastature

[ Pregleda: 3047 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Trantor

Član broj: 100930
Poruke: 275
91.150.111.*

ICQ: 199139277


Profil

icon Kako prekinuti program u C++ pomoću nekog slova sa tastature08.12.2007. u 11:55 - pre 199 meseci
Evo o čemu se radi. Ja hoću da mi program za promenljivu "x" prepoznaje kad je unet broj a kada neko slovo sa tastature za prekid program. Znači neću da izaberem recimo 0 za prekid programa već baš slovo. Čuo sam da postoji neka komanda koja omogućava da promenljiva recimo "x" prepozna kad joj je dodeljena numerička vrednosta a kad znakovna ili karakter. Evo konkretnog primera gde bih to hteo da odradim:

#include <iostream>
#include<cmath>

using namespace std;

int main()
{
float x,y;
pocetak: cout << endl;
cout << "Unesite parametar funkcije (x):" << endl;
cin >> x;

if (x<=0.5)
{
y=sqrt (fabs(pow(x,2)+3*x+2));
cout << "Za x=" << x <<" funkcija y=koren|x*x+3*x+2|=" << y << "." << endl;
goto pocetak;
}

if (x>0.5 && x<=1.5)
{
y=log(x+1);
cout << "Za x=" << x <<" funkcija y=ln(x*x+5)=" << y << "." << endl;
goto pocetak;
}

if (x>1.5)
{
y=exp(3*x+1);
cout << "Vrednost eksponencijalne funkcije je: " << y << "." << endl;
goto pocetak;
}
}

Znači kako da nateram ovaj program da se prekine u slučaju da sa tastature unesem recimo slovo "k". Hvala unapred.
The truth is out there and I want to believe.
 
Odgovor na temu

perun_
Nemanja Andjelkovic
Banglades

Član broj: 151779
Poruke: 115
212.62.55.*

Sajt: 127.0.0.1


Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature08.12.2007. u 14:17 - pre 199 meseci
Prvo, zasto goto? Ovo treba uvek izbegavati..
U ovom slucaju mislim da bi ti do while fenomenalno odradilo stvar. Jesi li razmisljao o tome... Sto se tice znaka, ti uvek mozes pomocu ASCII-a utvrditi da li se radi o cifri, ili cemu vec. Nadam se da si shvatio na sta mislim? (mrzi me da pisem kod )
Ne treba ciljati u metu vec metati u cilj
 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
*.PPPoE-2367.sa.bih.net.ba.



Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature08.12.2007. u 14:56 - pre 199 meseci
Pozdrav,
Da probas nesto ovako
Code:

#include <iostream>
using namespace std;

int main(void){
    char n;
    int broj;
   
 while(1){
        cin>>n;
        if(n=='x' || n == 'X')
            break;
        //Ovo je dio koji char konvertuje u int
        broj= n - '0';
        cout<<endl<<broj<<endl;
    }
    return 0;
}



Fazon je u tome da sve vrijeme uzimas promjenjljive tipa char provjeravas da li je to 'x' ili 'X' tek onda vrsis konverziju.
Npr unesen je '1', da bi njega pretvorio u broj 1 koristiš ovaj dio:
Citat:

//Ovo je dio koji char konvertuje u int
broj= n - '0';




if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

xeron
Sarajevo

Član broj: 25909
Poruke: 133
*.PPPoE-1678.sa.bih.net.ba.



Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature08.12.2007. u 15:43 - pre 199 meseci
Jos jedan, malo bolji primjer, konverzije:

Code:

#include <iostream>
#include <cstring>
using namespace std;

int main(void){
    int broj=0;
    const char* ulaz="256";
    
    //funkcija ascii to integer
    broj=atoi(ulaz);
    
    cout<<"broj povecan za 20 iznosi: "<<broj + 20<<endl;
    cout<<"ulaz povecan za 20 iznosi: "<<ulaz +20<<endl;
    return 0;
}


Rezultat:
Citat:

[muamer@localhost /]$ ./test
broj povecan za 20 iznosi: 276
ulaz povecan za 20 iznosi: 70

if (argc > 1 && strcmp(argv[1], "-advice") == 0) {
printf("Don't Panic!n");
exit(42);
}
 
Odgovor na temu

Trantor

Član broj: 100930
Poruke: 275
91.150.111.*

ICQ: 199139277


Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature08.12.2007. u 17:17 - pre 199 meseci
Hvala na brzom odgovoru.

X Files:

Izvini zbog otvaranja teme na pogrešnom mestu. Ja sam mislio da sam je otvorio na "C++ za početnike" ali eto pogreših.

perun_:

Ja sam prvo probao da to odradim sa "while" komandom ali da bi to moglo da radi uslov bi morao da bude ako je broj onda da se izvršava jedna od funkcija u zavisnosti od ispunjenja "if " funkcije, a ako nije tj. ako je neko slovo koje ja hoću da prekine rad onda da se program zatvori i to je upravo ono što ja ne znam da uradim tako da u svakom slučaju nisam mogo da koristim "while" jer "goto" mi bar odradi pola posla vraća program na početak posle proračunavanja. Mada ti verovatno znaš način na koji bi mogle da se u potpunosti zaobiđe "goto" ja bi i pored "while" morao da upotrebim i jedno "goto" da bi program vratio na početak.

xeron:

Hvala ti na odgovoru ali ja baš ne kapiram kako ovo radi tako da ne vidim način kako da ovaj tvoj kod implementiram u moj program. Ja imam onu knjigu "C++ za 21 dan" i u njoj stvarno ništa ne piše o tome. Iz tvog odgovora sam bar shvatio da ja treba da definišem "char" i da ako je sa tastature unet broj konvertujem u broj tj. "int" ili "float". Da ti možda neznaš neku literaturu gde bi ja mogo da pročitam nešto eventualno vezano za ovaj problem? Bilo bi super ako znaš neki online tutorial mada sam ga ja tražio ali nisam uspeo da ga nađem.

Hvala svima još jednom.

The truth is out there and I want to believe.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-47.bvcom.net.



+1064 Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature21.12.2007. u 11:13 - pre 199 meseci
Citat:
Trantor: Evo o čemu se radi. Ja hoću da mi program za promenljivu "x" prepoznaje kad je unet broj a kada neko slovo sa tastature za prekid program. Znači neću da izaberem recimo 0 za prekid programa već baš slovo. Čuo sam da postoji neka komanda koja omogućava da promenljiva recimo "x" prepozna kad joj je dodeljena numerička vrednosta a kad znakovna ili karakter. Evo konkretnog primera gde bih to hteo da odradim:


Sa obzirom na tvoj program, i koriscenje strimova, kada cin naleti na gresku, u ovom slucaju
pokusaj konvertovanja slova u broj on ulazi u fail state i dok ne odradis cin.clear(), svaki sledeci read
ce javljati gresku.No to na stranu bas ova osobina ti omogucava da razlikujes input u tvom
primeru.
Dakle sve sto treba da uradis je:
float x;
while(cin>>x) // cim ukucas slovo izlece iz petlje
{


// umesto goto pocetak
if(uslov1)
continue; // odavde ide na pocetak

if(uslov2).....;

}

Pozdrav!
 
Odgovor na temu

Trantor

Član broj: 100930
Poruke: 275
77.46.199.*

ICQ: 199139277


Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature08.01.2008. u 18:09 - pre 198 meseci
Citat:


Branimir:Sa obzirom na tvoj program, i koriscenje strimova, kada cin naleti na gresku, u ovom slucaju
pokusaj konvertovanja slova u broj on ulazi u fail state i dok ne odradis cin.clear(), svaki sledeci read
ce javljati gresku.No to na stranu bas ova osobina ti omogucava da razlikujes input u tvom
primeru.
Dakle sve sto treba da uradis je:
float x;
while(cin>>x) // cim ukucas slovo izlece iz petlje
{


// umesto goto pocetak
if(uslov1)
continue; // odavde ide na pocetak

if(uslov2).....;

}


Vidis ja nikako ne mogu da primenim ovo sto si ti napisao. Ovo sa "while" radi znači kad upisem neko slovo on automatski izlazi iz programa. Međutim ako upisem neki broj da bi izracunao vrednost neke od funkcija program ne radi nista. Drugo meni treba da ga nateram da se ugasi ne kad pritisnem bilo koje slovo nego tacno određen slovo npr. slovo "k". Trece ne znam kako da iskoristim ovu komandu "continue" evo ga kod ispod pa ako bi mogo da mi kazes sta ja to pogresno radim jer kod ne radi kako treba.

Code:

 #include <iostream>
 #include<cmath>

 using namespace std;

 int main()
 {
     float x,y;
     cout << endl;
     cout << "Unesite parametar funkcije (x):" << endl;
     cin >> x;

     if (x<=0.5)
     {
     y=sqrt (fabs(pow(x,2)+3*x+2));
     cout << "Za x=" << x <<" funkcija y=koren|x*x+3*x+2|=" << y << "." << endl;
     continue;
     }

     else
     if (x>1.5)
     {
     y=exp(3*x+1);
     cout << "Vrednost eksponencijalne funkcije za x=" << x << " je: " << y << "." << endl;
     continue;
     }
     
     else
     {
     y=log(x+1);
     cout << "Za x=" << x <<" funkcija y=ln(x*x+5)=" << y << "." << endl;
     continue;
     }

     system("PAUSE");
     return 0;
 }

The truth is out there and I want to believe.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p3-35.BVCOM.NET.



+1064 Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature12.01.2008. u 01:32 - pre 198 meseci
Ok, evo ti tvoj modifikovani program koji radi sve sto zelis osim sto zastavlja na bilo koje slovo.


Code:

#include <iostream>
#include<cmath>

using namespace std;

int main()
{
    float x,y;
    cout << endl;
    while(cout << "Unesite parametar funkcije (x):"<<endl, cin >> x)
    {
     if (x<=0.5)
     {
     y=sqrt (fabs(pow(x,2)+3*x+2));
     cout << "Za x=" << x <<" funkcija y=koren|x*x+3*x+2|=" << y << "." << endl;
     continue;
     }

     else
     if (x>1.5)
     {
     y=exp(3*x+1);
     cout << "Vrednost eksponencijalne funkcije za x=" << x << " je: " << y << "." << endl;
     continue;
     }
     
     else
     {
     y=log(x+1);
     cout << "Za x=" << x <<" funkcija y=ln(x*x+5)=" << y << "." << endl;
     continue;
     }
    }

    cin.clear(); // resetujes stanje na 'good'
    cin.ignore(80,'\n'); // ocistis liniju koja nije prosla

    cin.get(); // cekas na single character, enter dovoljno, za izlaz
    return 0;
 }




Ako hoces da se zaustavljas bas na 'k', onda moras ucitati podatak kao string, potom proveriti jel prvi karakter
'k' a ako nije onda konvertovati u float, ako je konverzija uspela nastaviti, ako ne javiti gresku i izaci iz programa.

Pozzzzzzzzzzzzzzzzzz!


 
Odgovor na temu

Trantor

Član broj: 100930
Poruke: 275
77.46.199.*

ICQ: 199139277


Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature13.01.2008. u 21:56 - pre 198 meseci
Hvala ti puno sad ću da ga probam. :)
The truth is out there and I want to believe.
 
Odgovor na temu

Trantor

Član broj: 100930
Poruke: 275
77.46.199.*

ICQ: 199139277


Profil

icon Re: Kako prekinuti program u C++ pomoću nekog slova sa tastature13.01.2008. u 22:06 - pre 198 meseci
Da ovaj kod radi kako treba ali te nisam baš razumeo šta treba da uradim ako hoću da se zaustavi baš na slovo "k".
The truth is out there and I want to believe.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Kako prekinuti program u C++ pomoću nekog slova sa tastature

[ Pregleda: 3047 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.