• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wywołanie jednego działania arytmetycznego z tabeli dla zmiennych

Object Storage Arubacloud
0 głosów
138 wizyt
pytanie zadane 3 maja 2016 w C i C++ przez Lithos Nowicjusz (160 p.)

Cześć, zaczynam programować w C++ i staram się łączyć wszystkie lekcje do kupy. Aktualnie analizuję wykorzystanie tabel. Chciałem stworzyć prosty program, gdzie wpisując numer od 0 do 3 mogę wybrać działanie arytmetyczne dla wcześniej podanych liczb. Program nie pokazuje mi błędów w konsoli, ale po skompilowaniu wywala błąd działania programu.

PS. Wiem, że można wyjść wartością poza tablicę i wiem, że najlepszym rozwiązaniem do uzyskania dostępu do danego elementu jest wykorzystanie pętli. Póki co korzystam z wiedzy, którą posiadam. Pytanie, czy taki kod ma prawo zadziałać, czy nie ma szans? Co tu robię źle? Kod podaję poniżej. Z góry dzięki.

#include <iostream>
using namespace std;

int main()
{
	// Tworzenie zmiennych do działań wywołanych z tablicy //
	int Liczba1 = 0;
	int Liczba2 = 0;

	// Stałe działań arytmetycznych //
	const int Mnozenie = Liczba1 * Liczba2;
	const int Dzielenie = Liczba1 / Liczba2;
	const int Dodawanie = Liczba1 + Liczba2;
	const int Odejmowanie = Liczba1 - Liczba2;

	// Tabela działań //
	int TabelaDzialan[4] = { Mnozenie, Dzielenie, Dodawanie, Odejmowanie };

	// Wprowadzenie liczb przez użytkownika //
	cout << "Podaj liczby do wykonania działania: " << endl;
	cin >> Liczba1;
	cin >> Liczba2;

	// Numeracja działań wyświetlana w konsoli //
	cout << "Numery działań:" << endl;
	cout << "Mnożenie = 0" << endl;
	cout << "Dzielenie = 1" << endl;
	cout << "Dodawanie = 2" << endl;
	cout << "Odejmowanie = 3" << endl;
	cout << "Podaj numer działania, które chcesz wykonać:" << endl;

	// Przywołanie działania określonego na początku jako stała //
	int Dzialanie = 0;
	cin >> TabelaDzialan[Dzialanie];
	cout << "Wynik działania, to " << Dzialanie << endl;
	
	return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 3 maja 2016 przez jeremus Maniak (59,720 p.)
1. mnozenie,dzielenie,dodawanie,odejmowanie - to nie mogą byc stałe

2. 12 linijka - dzielisz przez 0

3. nie można określić wyniku przed podaniem argumentów

chyba do końca nie zrozumiałeś pojęcia zmiennych..
komentarz 3 maja 2016 przez Lithos Nowicjusz (160 p.)
edycja 3 maja 2016 przez Lithos

Faktycznie, niezły fuckup na początek. Poprawiłem to, ale program za każdym razem zwraca mi wartość 0 zamiast wynik działania.

int Dzialanie = 0;

Linijka 33, przez to że mam wartość 0, wynik jest zerowy. W jaki sposób mogę się odnieść do konkretnego działania z tabeli, żeby wyświetlić wynik?

komentarz 3 maja 2016 przez jeremus Maniak (59,720 p.)
wczytaj dzialanie a nie tabeladzialan[dzialanie]

tam przeciez masz wynik działania a nie rodzaj

 

po drugie jeśłi uparłeś się wykorzystać tabele , misisz gruntownie przebudowac program

wynik zapisuj do tableli doiero po pobraniu argumentów i rodzaju działania
komentarz 3 maja 2016 przez Lithos Nowicjusz (160 p.)

Właśnie wczytując dzialanie mam wartość 0. Jak wczytuje tabeladzialan[dzialanie] podaje mi tylko wcześniej podany indeks a nie wynik zmiennej np. Mnozenie. 

Uparłem się :D Napiszę to od nowa i jak zadziała to prześlę w odpowiedzi. Dzięki za to: 

"wynik zapisuj do tableli doiero po pobraniu argumentów i rodzaju działania"

Myślę, że już wiem jak to ogarnąć.

komentarz 7 maja 2016 przez Lithos Nowicjusz (160 p.)

Największy błąd w tym kodzie to było

cin >> TabelaDzialan[Dzialanie];

Podaję kod, na który zerknąłem po przerwie i zrobiłem w minutę. Teraz doświadczyłem tego co się często powtarza. Nie ma sensu ślęczeć nad kodem nie wiadomo ile. Dłuższa przerwa, świeże podejście i poszło. Wiem, że to banalne zadanie, ale mam dopiero kilka godzin nauki za sobą. Dzięki za podpowiedzi. Poniżej kod.

#include <iostream>
using namespace std;

int main()
{
	int Mnozenie = 0;
	int Dzielenie = 0;
	int Dodawanie = 0;
	int Odejmowanie = 0;

	cout << "Numery działań:" << endl;
	cout << "Mnożenie = 0" << endl;
	cout << "Dzielenie = 1" << endl;
	cout << "Dodawanie = 2" << endl;
	cout << "Odejmowanie = 3" << endl;
	cout << "Podaj numer działania, które chcesz wykonać:" << endl;

	int Dzialanie = 0;
	cin >> Dzialanie;

	cout << "Podaj liczby do wykonania zadania: " << endl;
	int Liczba1 = 0;
	cin >> Liczba1;
	int Liczba2 = 0;
	cin >> Liczba2;

	Mnozenie = Liczba1 * Liczba2;
	Dzielenie = Liczba1 / Liczba2;
	Dodawanie = Liczba1 + Liczba2;
	Odejmowanie = Liczba1 - Liczba2;

	int TabelaDzialan[4] = { Mnozenie, Dzielenie, Dodawanie, Odejmowanie };

	cout << "Wynik działania to: " << TabelaDzialan[Dzialanie] << endl;
	
	return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 214 wizyt
0 głosów
1 odpowiedź 111 wizyt
0 głosów
1 odpowiedź 104 wizyt
pytanie zadane 14 czerwca 2022 w C i C++ przez MichaelM Bywalec (2,520 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...