prosty kalkulator z błędem

prosty kalkulator z błędem
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 dni
0

To przenieś wczytywanie zmiennych m,n w inne miejcie, przyda się funkcja.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0

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ść ??
aa.png i jak powinna ta funkcja wyglądać...

  • aa.png (296 KB) - ściągnięć: 122
edytowany 1x, ostatnio: majkel1234
M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0

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

  • 1.png (167 KB) - ściągnięć: 64
edytowany 5x, ostatnio: majkel1234
M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0

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. :).

BO
Ta zagadka jest banalna tylko ty kompletnie nie masz pojęcia o programowaniu.
BO
  • Rejestracja:około 6 lat
  • Ostatnio:dzień
  • Postów:214
0
Kopiuj
    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.

M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0

gdzieś się błąd wkradł chyba albo ja czegoś nie rozumiem.
11.png

  • 11.png (239 KB) - ściągnięć: 6
Yukiteru Gromadzki
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:192
0

@majkel1234: Jesteś pewien że wkleiłeś ten kod do funkcji?

M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0
M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0

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.

edytowany 1x, ostatnio: majkel1234
Patryk27
@Botek podał Ci jedynie fragment kodu, który powinieneś był wkleić do wnętrza funkcji (np. int main() { TUTAJ KOD }).
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 dni
0

Zauważ że dla dodania kolejnego działania wystarczy dodać jeden wiersz, tak jak "Potęga"

Kopiuj
#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;
		}
	}	
}

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0

dzięki wielki za pomoc, jedmak po wklejeniu do kompilatora wyskakuje mi coś takiego. Coś przeoczyłem ??czy może powinienem dodać ??
blad.png

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 dni
1

Przeczytać ostrzeżenia i zastosować.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
M1
  • Rejestracja:ponad 4 lata
  • Ostatnio:około 2 lata
  • Postów:31
0

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[]=

edytowany 2x, ostatnio: majkel1234
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 dni
0

Zacznij od prostszych zadań, jak widać ten kod cię przerasta.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

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.