Witam
mam pytanie w jaki sposób napisać pętlę która po wpisaniu np. słowa 'stop' kończy program?

- Rejestracja:około 8 lat
- Ostatnio:około 5 godzin
- Postów:4935
1
Umiesz napisać pętlę i Wiesz co to instrukcje warunkowe? Skąd program ma czytać to słowo? Jeśli z klawiatury w pętli(nieskończonej: while (1)
), to, np., tak:
int main(int argc, char **argv){
std::string s;
while (1) {
std::cin >> s;
std::cout << "\n";
if (s == "stop")
break;
}
Jeśli inaczej, sprawdzenie może być też w warunku pętli: while (s != "stop")
.
EDIT: Lub też z czytaniem w pętli (druga opcja):
std::string s;
while (s != "stop") {
std::cin >> s;
cout << "loop's' running\n";
}
edytowany 2x, ostatnio: lion137

- Rejestracja:ponad 6 lat
- Ostatnio:ponad 4 lata
- Postów:12
0
no przykładowo prosty kalkulator, który ma zmienną char wybor , która służy do wybierania znaku działania (+,-,*,/) i po wpisaniu stop program kończyłby działanie.

- Rejestracja:ponad 6 lat
- Ostatnio:ponad 4 lata
- Postów:12
0
ajj generalnie mi chodzi o to żeby działało tak że jak wpiszę stop to pętla kończy działanie programu i tyle

lion137
To Zrób, tak jak Ci napisałem powyżej.

- Rejestracja:prawie 20 lat
- Ostatnio:8 dni
3
#include <cstdlib>
#include <iostream>
using namespace std;
void add() { cout<<"dodajemy"<<endl; }
void mul() { cout<<"mnożymy"<<endl; }
void stop() { exit(0); }
typedef void fun();
struct { const string cmd; fun *call; } tb[]=
{
{"+",&add},
{"*",&mul},
{"stop",&stop},
};
int main()
{
for(string cmd;getline(cin,cmd);)
{
bool found=false;
for(const auto &r:tb)
{
if(r.cmd==cmd)
{
r.call();
found=true;
break;
}
}
if(!found) cout<<"Nieznane polecenie"<<endl;
}
}
Albo tak:
#include <cstdlib>
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
void show(double a,double b,double c,char op) { cout<<a<<' '<<op<<' '<<b<<" = "<<c<<endl; }
typedef void fun(double a,double b);
struct rec_t { const string cmd; fun *call; };
vector<rec_t> tb=
{
{
{"+",[](double a,double b){ show(a,b,a+b,'+'); }},
{"*",[](double a,double b){ show(a,b,a*b,'*'); }},
{"stop",[](double a,double b){ cout<<"nara"<<endl; exit(0); }},
{"",[](double a,double b){ cout<<"Nieznane polecenie"<<endl; }},
}
};
int main()
{
char op;
string cmd;
double a,b;
while(true)
{
if(cin>>a>>op>>b) cmd=string(1,op);
else
{
cin.clear();
cin>>cmd;
}
find_if(begin(tb),end(tb),[&cmd](auto r){ return (!r.cmd.size())||(r.cmd==cmd); })->call(a,b);
getline(cin,cmd);
}
}
edytowany 1x, ostatnio: _13th_Dragon
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.