To przenieś wczytywanie zmiennych m,n
w inne miejcie, przyda się funkcja.
- 1
- 2
- Rejestracja:ponad 4 lata
- Ostatnio:około 2 lata
- Postów:31
funkcja fakt się przyda ale gdzie ją umieścić i jak miałaby wyglądać to po pierwsze a po drugie gdzie sugerujesz ją przenieść ??
i jak powinna ta funkcja wyglądać...
- aa.png (296 KB) - ściągnięć: 122
- Rejestracja:ponad 4 lata
- Ostatnio:około 2 lata
- Postów:31
przyjacielu, ja chce napisać prosty skrypt na zasadzie
wprowadz litere:
(poprawne litery A B C D Q)
wprowadzasz A : OK idziemy dalej
wprowadzasz B : OK idziemy dalej
wprowadzasz C : OK idziemy dalej
wprowadzasz D : OK idziemy dalej
wprowadzasz Q : OK idziemy dalej
wprowadzasz K :pojawia się komunikat : WYBIERZ: A B C D lub Q
wprowadz litere:
i tylko o to mi chodzi.
tak jak na tym zdjęciu :
- 1.png (167 KB) - ściągnięć: 64
- Rejestracja:ponad 4 lata
- Ostatnio:około 2 lata
- Postów:31
nie wiem czy rozwiązanie tego problemu jest bardzo skomplikowane w oparciu o kod, który stworzyłem, będę na prawdę wdzięczny za każde rozwiązanie, które przybliży mnie do rozwikłania jak się okazuje tej nie prostej układanki. :).
- Rejestracja:około 6 lat
- Ostatnio:dzień
- Postów:214
char n;
bool running = true;
while (running)
{
running = false;
std::cin >> n;
switch (n)
{
case 'A':
std::cout << "wprowadzasz A : OK idziemy dalej";
break;
case 'B':
std::cout << "wprowadzasz B : OK idziemy dalej";
break;
case 'C':
std::cout << "wprowadzasz C : OK idziemy dalej";
break;
case 'D':
std::cout << "wprowadzasz D : OK idziemy dalej";
break;
case 'Q':
std::cout << "wprowadzasz Q : OK idziemy dalej";
break;
default:
std::cout << "WYBIERZ: A B C D lub Q"<<std::endl;
running = true;
break;
}
}
Tutaj masz przykład ze switchem na ifach można zrobić tak samo tylko switch wygląda ładniej.

- Rejestracja:ponad 6 lat
- Ostatnio:ponad rok
- Postów:192
@majkel1234: Jesteś pewien że wkleiłeś ten kod do funkcji?
- Rejestracja:ponad 4 lata
- Ostatnio:około 2 lata
- Postów:31
@Yukiteru Gromadzki:
tzn ??
- Rejestracja:ponad 4 lata
- Ostatnio:około 2 lata
- Postów:31
widzę że nas wszystkich zadanie przerosło po prostu. ile dałem rade to się nauczycielowi pokaże i będzie co będzie po prostu.

- Rejestracja:prawie 20 lat
- Ostatnio:14 dni
Zauważ że dla dodania kolejnego działania wystarczy dodać jeden wiersz, tak jak "Potęga
"
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <cmath>
#include <cstdlib>
using namespace std;
typedef double calcproc(double,double);
const struct { string operation,sign,info; bool quit; calcproc* calc; } menu[]=
{
{"a","+","Dodawanie",false,[](double a,double b){ return a+b; }},
{"b","-","Odejmowanie",false,[](double a,double b){ return a-b; }},
{"c","*","Mnozenie",false,[](double a,double b){ return a*b; }},
{"d","/","Dzielenie",false,[](double a,double b){ return a/b; }},
// {"e","^","Potega",false,[](double a,double b){ return pow(a,b); }},
{"q","","Wyjscie",true,[](double a,double b){ return 0.0; }},
};
const size_t menuSize=sizeof(menu)/sizeof(*menu);
const char title[]="Program wykonujacy podstawowe dzialania";
const char prompt[]="wybierz opcje: ";
const char warning[]="Prosze uzyc jedno z: ";
const char askValue[]="wprowadz wartosc";
const int msgWidth=sizeof(title)-1;
void showFrame() { cout<<'+'<<string(msgWidth+2,'-')<<'+'<<endl; }
void showInFrame(const string &msg){ cout<<"| "<<left<<setw(msgWidth)<<msg<<" |"<<endl; }
size_t menuPos(const string &choise)
{
int ret=0;
for(const auto &item:menu)
{
if(item.operation==choise) return ret;
++ret;
}
return menuSize;
}
string menuOperations()
{
stringstream sout;
for(const auto &item:menu)
{
if(sout.tellp()>0) sout<<", ";
sout<<item.operation;
}
return sout.str();
}
void showMenu()
{
showFrame();
showInFrame(title);
showFrame();
for(const auto &item:menu)
{
stringstream sout;
sout<<item.operation<<" - "<<item.info;
showInFrame(sout.str());
}
showFrame();
}
void input(double &a,double &b)
{
cout<<askValue<<" a = ";
cin>>a;
cout<<askValue<<" b = ";
cin>>b;
while(cin.get()!='\n') {}
}
int main(int n,char *p[])
{
while(true)
{
showMenu();
cout<<prompt;
string choise;
getline(cin,choise);
size_t pos=menuPos(choise);
if(pos>=menuSize)
{
showFrame();
showInFrame(warning+menuOperations());
showFrame();
cout<<endl;
}
else
{
auto item=menu[pos];
double a,b;
if(item.quit) return 0;
input(a,b);
stringstream sout;
sout<<"Wybrales "<<item.info<<" liczb "<<a<<" "<<item.sign<<" "<<b<<" = "<<item.calc(a,b);
showFrame();
showInFrame(sout.str());
showFrame();
cout<<endl;
}
}
}
- Rejestracja:ponad 4 lata
- Ostatnio:około 2 lata
- Postów:31
pozamieniałem i działa, tak tylko względem estetycznym, jak mogę dodać przed każdą z liter znak "wybierz:
próbowałem wziąć w cudzysłowy i nie działa
nie mogę też dopisać przed a bo mi posypie wszystko.
czy muszę coś tu dodać lub zmienić ??
const struct { string operation,sign,info; bool quit; calcproc* calc; } menu[]=
- 1
- 2
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.