[REŠENO] Pomoć oko konverzije char u int

stanje
Zatvorena za pisanje odgovora.

Zlatko P.

Početnik
Poruka
8
Treba mi pomoć oko rešavanja problema ovakvog tipa. Znam za konverziju tipa char u int ali ne mogu u ovom kokretnom primeru da sastavim sintaksu koja bi radila. Evo koda u c++:

#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;
int main()
{
int x1, x2, s;
char a[3]={'1', '0', '2'};


cout << "Unesite 2 jednocifrena broja: ";
cin>>x1>>x2;

if ((x1-x2)>0)
{
cout<<"a="<<'1'<<endl;
}
if ((x1-x2)<0)
{
cout<<"a="<<'0'<<endl;
}
if ((x1-x2)==0)
{
cout<<"a="<<'2'<<endl;
}

// Kako ove znakove '1', '0' ili '2' (char) pretvoriti u broj (u int) da bi se moglo dalje racunati?
//Npr. ovako:

s=2+a;
cout <<"s="<<s<<endl;

cout <<endl;

system("PAUSE");
return 0;
//izbacuje error: invalid conversion from 'char*' to 'int' [-fpermissive]|
}


Konverzija ide ovako

int a = 50; // integer a
char y = '1'; // character y
a = a - y;
cout << "a = " << a << endl;

ili ovako

char a[] = "105";

int converted = 0;

int arraysize = strlen(a);

int i = 0;
for (i = 0; i < arraysize ; i++)
{
converted = converted *10 + a - '0';
}

cout<<""<<converted<<endl;

ali kako to primeniti u konkretnom problemu?
 
Hvala na odgovoru, međutim i dalje smo na početku. Tu se ne radi o nizu jer može biti i ovako:

#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;
int main()
{
int x1, x2, s;
char a;
itd.

Dakle, pitanje ostaje kako da konvertujem ynakove 1, 0 i 2 ( ili npr. +,- i 0 što bi imalo isto značenje jer se radi o znaku koji nastaje pri oduzimanja x1 i x2, npr. (x1-x2)>0 znači da je rezultat pozitivan pa možemo pisati znak +, i tako dalje za znak - i znak 0 kada su x1 i x2 jednaki. Umesto znakova plus, minus i nula ja sam uzeo 1 0 i 2 i sada je problem što su u ispisu cout oni znakovi a ne brojevi. Treba ih pretvoriti u tip int da bi se moglo dalje računati, npr. u formuli za redni broj varijacije sa ponavljanjem, itd.
Nadam se da sam objasnio šta mi je potrebno.
 
Još uvek ne radi kako treba. Sada pri svakoj varijanti x1 i x2 uvek dobijem da je s=2.

#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;
int main()
{
int x1, x2, s;
char a;

cout << "Unesite 2 jednocifrena broja: ";
cin>>x1>>x2;

if ((x1-x2)>0)
{

cout<<"a="<<'1'<<endl;

}
if ((x1-x2)<0)
{
cout<<"a="<<'0'<<endl;

}
if ((x1-x2)==0)
{
cout<<"a="<<'2'<<endl;

}

int conv = a - '0';

s=2+a;
cout <<"s="<<s<<endl;

cout <<endl;

system("PAUSE");
return 0;
}
 
Sta ce ti tu konverzija iz char u int?
Efektivno x1 i x2 nemaju nikakvu vezu sa a, mozda si hteo da inicijalizujes a sa 1 ako je x1>x2, sa 0 ako je x1<x2 i sa 2 ako je x1 == x2?
Inace ne vidim zasto koristis char literale pa konvertujes u int kada mozes odmah da inicijalizujes sa data 3 broja.
Inace efektivno si poslao
char a;
int s;
s = a - '0';
itd
Kapiras?
 
To je logicki izraz. Rezultat operatora > je bool. Znati true ili false.
Evo mislim da je ovo sto si zapravo hteo:
Kod:
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;
int main()
{
    int x1, x2, s;
    int a;

    cout << "Unesite 2 jednocifrena broja: ";
    cin>>x1>>x2;

    if ((x1-x2)>0)
    {
        a = 1;

    }
    if ((x1-x2)<0)
    {
        a = 0;
    }
    if ((x1-x2)==0)
    {
        a = 2;
    }

    cout<<"a="<<a<<endl;

    s=2+a;
    cout <<"s="<<s<<endl;

    cout <<endl;

    cin.get();
    return 0;
}
 
stanje
Zatvorena za pisanje odgovora.

Back
Top