Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
C++

Czytanie operatora ze stringu

C++

  • Zamknięty Temat jest zamknięty
1 odpowiedź w tym temacie

#1 diablix

    emeryt

  • Przyjaciel

Reputacja: 507
Wszechwiedzący

  • Postów:663
  • GG:
  • Steam:steam
  • Imię:Daniel
  • Lokalizacja:Warszawa
Offline

Napisano 14.05.2011 22:23

Witam mam pewien problem, pisze sobie kalkulator (na pewny projekt z informatyki) i nie mam pojęcia jak przeczytać wynik następująco

int iNum1 = atoi(szNum1.c_str()); // z pobranego stringu zamieniam na wartość int
int iNum2 = atoi(szNum2.c_str()); // to samo
int iWynik = atoi(szOpr.c_str()); //no i tu ten problem

//dalej nic nie obliczy..

string szRownaSie = (szNum1, szOpr, szNum2);

cout<<szRownaSie;


Wcześniejszy kod gdy operator był ustalany w kodzie wszystko ładnie działało..
Myślę że jest to wina przecinków w stringu (próbowałem replace ale jakoś nie wychodziło)
Pełny kod

#include <cstdlib>
#include <iostream>
//#include <sstream>
using namespace std;

int main(int argc, char *argv[]){
cout<<"KALKULATOR 0.1\n\n\n"<<endl;

beginingPoint:

string szNum1 = "0", szNum2 = "0", szOpr, szDalej, szOperator;

cout<<"\n\nWybierz operator\nDostepne ( : + - * )"<<endl;
cin >> szOpr;

int iTimesChoosen = 0;

if(szOpr == "+") { szOperator = "Suma"; iTimesChoosen++; }
if(szOpr == "-") { szOperator = "Roznica"; iTimesChoosen++; }
if(szOpr == ":" || szOpr == "/") { szOpr == "/"; szOperator = "Iloraz"; iTimesChoosen++; }
if(szOpr == "*") { szOperator = "Iloczyn"; iTimesChoosen++; }

if(iTimesChoosen != 1){
cout<<"Blad! Sproboj ponownie"<<endl;
goto beginingPoint;
}

cout<<"\n\nPodaj liczbe numer 1"<<endl;
cin >> szNum1;

cout<<"\n\nPodaj liczbe numer 2"<<endl;
cin >> szNum2;

int iNum1 = atoi(szNum1.c_str());
int iNum2 = atoi(szNum2.c_str());
int iWynik = atoi(szOpr.c_str());

string szRownaSie = (szNum1, szOpr, szNum2);

if(szRownaSie == ","){
szRownaSie.replace(32, szRownaSie.length() - 32, "");
}

int iRownaSie = atoi(szRownaSie.c_str());

cout<<"\n\n"<<szOperator;
cout<<" liczb "<<szNum1;
cout<<" i "<<szNum2;
cout<<" to "<<iRownaSie;
cout<<"\n"<<endl;

cout<<"\n\n\n!-------ZAKONCZONE SUKCESEM-------!"<<endl;
cout<<"!-------ZAKONCZONE SUKCESEM-------!"<<endl;
cout<<"!-------ZAKONCZONE SUKCESEM-------!\n"<<endl;
questionPoint:

cout<<"Aby obliczyc ponownie wpisz reset, aby wyjsc wpisz exit"<<endl;
cin >> szDalej;
if(szDalej == "reset")
goto beginingPoint;

if(szDalej == "exit"){
system("PAUSE");
return EXIT_SUCCESS;
}
else
goto questionPoint;
}



EDIT:

Poradziłem sobie można zamknąć :)

Użytkownik diablix edytował ten post 14.05.2011 23:42

  • +
  • -
  • 0

#2 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 14.05.2011 23:55

jak masz tak programowac to lepiej wyłącz komputer i idz pograc w pilke xD

zaczynajac od tego ze jak wrzucisz do stringa text to raczej kompilator ci nie poda gotowego wyniku.

Pozatym liczby mozesz pobierac jako int'y a operator jako char wiec tak naprawdę stringi sa tutaj zbedne chyba ze musisz ale latwiej jest pobrac do inta wartosci potem wykonac obliczenia a na koncu wszystko wrzucic do string'a na pewno musisz miec jakiegos switch'a ktory w zaleznosci od operatora wykona jakies dzialanie :D

masz kod robiacy chyba to co chciales :a przynajmniej na to mi to wyglada.

Blad byl taki ze
szRownaSie
to string a ty go zamieniles na liczbe a tak sie nie da kompilator nie jest po to zeby myslec za ciebie tylko zeby odwalac za ciebie robote xD


Spoiler

  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D





Również z jednym lub większą ilością słów kluczowych: C++

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych