nie zamykający się program po zakończeniu działania.

0

Cześć, ostatnio robię prosty kalkulator. Drogi kombinowania, i metoda prób i błędów mi się wyczerpały, bo dopiero się uczę i nie znam zbyt wielu możliwości rozwiązania danej rzeczy, dlatego zwracam się do Was... Ale do rzeczy, chodzi o to że chciałbym, aby po policzeniu danego działania program się nie zamykał, ale aby zadawał początkowe pytanie jeszcze raz, żeby można było kolejny raz coś policzyć... Kombinowałem z tą pętlą coś i z właściwością Sleep(), w celu stworzenia nieskończonej pętli, aby program ciągle pytał o nowe działanie , jednak nic nie poradziłem, dlatego nie zwracajcie zbytnio uwagi na obecne umiejscowienie pętli... No i najważniejsze, czy da się w ogóle zrobić to co chcę za pomocą pętli ?

KOD:

#include <iostream>
#include <string>
#include <math.h>
#include <windows.h>

using namespace std;

string znak; float firstNum, secondNum, score;

int main()
{

  cout << "Witaj!" << endl;
  cout << "Podaj twoje dzialanie...: ";
  cin >> firstNum >> znak >> secondNum;

for(int i=1; i>=2; i--){

    if (znak == "*") {
      cout << endl << "Twoje dzialanie to: " << firstNum <<" "<< znak<<" "<< secondNum;
      score = firstNum * secondNum;
      cout << endl <<"Wynik: "<<score << endl;
    }

    else if (znak == "/") {
      cout << endl << "Twoje dzialanie to: " << firstNum <<" "<< znak<<" "<< secondNum;
      score = firstNum / secondNum;
      cout << endl <<"Wynik: "<<score << endl;
    }

    else if (znak == "+") {
      cout << endl << "Twoje dzialanie to: " << firstNum <<" "<< znak<<" "<< secondNum;
      score = firstNum + secondNum;
      cout << endl <<"Wynik: "<<score << endl;
    }

    else if (znak == "-") {
      cout << endl << "Twoje dzialanie to: " << firstNum <<" "<< znak<<" "<< secondNum;
      score = firstNum - secondNum;
      cout << endl <<"Wynik: "<<score << endl;
    }

    else{
      cout << endl <<"Wprowadziles niepoprawny znak!" <<"("<< znak << ")" << endl;
    }


}

    return 0;
}

2

for(int i=1; i>=2; i--) WTF?

0

najprostrza nieskończona pętla to:

for (;;) {
}

Wyrażenia nie są obowiązkowe w C.
Tu jest jakaś dyskusja o nieskończonych pętlach na SO. Która lepsza itd

1

Spróbuj troszkę zmienić schemat, nieskończona pętla i przerwanie operatorem, Możesz zresztą eksperymentować.

#include <iostream>

int main() {
  std::string znak; float firstNum, secondNum, score;
  std::cout << "Welc to calc\n";
  while (true) {
    std::cout << "Enter operation +, -, *, /, E for exit\n";
    std::cin >> znak;
    if (znak == "E") break;
    std::cout << "Enter left and right operand: \n";
    std::cin >> firstNum >> secondNum;
  if (znak == "-") {
      std::cout <<"\nOperation is: " << firstNum <<" "<< znak<<" "<< secondNum;
      score = firstNum - secondNum;
      std::cout <<"\nResult: " << score <<"\n";
      continue;
    }

    else{
      std::cout <<"\nYou've enetered incorred operator!" <<"("<< znak << ")\n";
      continue;
    }
  }
  std::cout << "Bye!\n";
}
1

Strasznie nakręciłeś!

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

int main() 
{
	typedef double Operation(double a,double b);
	const struct { char sign; Operation *op; } tb[]=
	{
		{'+',[](double a,double b) { return a+b; }},
		{'-',[](double a,double b) { return a-b; }},
		{'*',[](double a,double b) { return a*b; }},
		{'/',[](double a,double b) { return a/b; }},
	};
	char sign;
	for(double a,b;(cout<<"Podaj wyrażenie (np 2*2): ")&&(cin>>a>>sign>>b>>ws);)
	{
		for(size_t i=0;i<sizeof(tb)/sizeof(*tb);++i)
		{
			if(tb[i].sign==sign)
			{
				cout<<a<<' '<<sign<<' '<<b<<" = "<<tb[i].op(a,b)<<endl;
				sign=0;
				break;
			}
		}
		if(sign) cout<<"Nieznana operacja"<<endl;
	}
	return 0;
}

https://ideone.com/WbECpr

1 użytkowników online, w tym zalogowanych: 0, gości: 1