Program wczytujący kilka liczb i liczący sumę, iloczyn, itp.

0

Mam mały problem z programikiem który wczytuje kilka liczb z klawiatury i wykonuje podstawowe działania z nimi ( suma, iloczyn itp.). Kompilować się kompiluje, ale nie chce robić tego, czego chcę. Programować się uczę i zbytnio nie ogarniam trochę rzeczy.
To co mi się udało napisać:

#include <iostream>

using namespace std;

int licz(char O, int i, int s)
{
	int a;

	switch (O) {
	case 'T':
		cout << "Podaj kolejna : " << "\n";
		cin >> a;
		i *=  a;
		s += a;
		cout << " Czy chcesz podac nastepna? (T/N)" << "\n";
		cin >> O;
		licz(O, a, a);
		return 0;
	case 'N':
		cout << "Suma wynosi: " << s << "\n" << "Iloczyn wynosi" << i << "\n";
		return 0;


	default:

		cout << "Odpowiedz klikajac T (tak) lub N (nie)" << "\n";
		cin >> O;
		licz(O, a, a);
		return 0;
	}
}
int main()
{
	int a;
	char O;

	cout << "Podaj liczbe: " << "\n";
	cin >> a;
	cout << "Czy chcesz podać nastepna? (T/N)" << "\n";
	cin >> O;
	licz(O, a, a);
	system("PAUSE");
}

	


0
  1. Parametry do funkcji przekazywane są przez wartość.
  2. Kolejne wywołanie licz następuje z tą samą liczba licz(O, a, a); w obu parametrach
  3. Czemu nie zrobić po ludzku:
double sum=0,prod=1.value;
cout<<"Podaj liczbY <Ctrl-Z> koniec (<Ctrl-D> pod linuksem):"<<endl;
while(cin>>value)
{
	sum+=value;
	prod*=value;
}

?

0
_13th_Dragon napisał(a):
  1. Czemu nie zrobić po ludzku:

Nie no mówię, uczę się i sporo nie ogarniam :( Co do mojego kodu to wstawiłem zamiast licz(O,a,a) licz(O,i,s) w funkcji int licz(...) i wszystko działa jak należy.
Dzięki za pomoc w każdym razie. Nie wiedziałem, że tak można też robić

0

Sprawdź jak zareaguje twój kod przy podaniu: jeden zamiast liczby, porównaj z zachowaniem mojej propozycji.

0

No trochę się wykrzaczył program, nie powiem. Wczoraj pokombinowałem z tym i zrobiłem osobne funkcje do każdego działania (mnożenie i dodawanie), które można aktywować przy użyciu switcha, ale gdy chcę żeby program był w zapętleniu funkcji głównej (while (true)) do naciśnięcia case'a który przerywa pętlę, to zakańcza działanie funkcji od razu przy drugim użyciu którejkolwiek z funkcji. To zdaża się tylko przy tej pętli w funkcji z (while cin >> var). Podejrzewam że ma to coś do czynienia z zapamiętaniem zmiennych.

#include <iostream>
#include <conio.h>
#include <Windows.h>
#include <cmath>
#include <stdlib.h>
using namespace std; 

void dodawanie()

{
	cout << " ============= Dodawanie =============" << "\n";
	double sum = 0, var;
	cout << "Wpisz dowolna litere i kliknij enter zeby wyswietlic wynik " << "\n";
	while (cin >> var)
	{
		sum += var;
	}
	cout << "Wynik to " << sum;
	
}
void odejmowanie()
{
	cout << "============= Odejmowanie =============" << "\n";
	

}
void mnozenie()
{
	cout << "============= Mnozenie =============" << "\n";
	double var, prod = 1;
	cout << "Wpisz dowolna litere i kliknij enter zeby wyswietlic wynik " << "\n";
	while (cin >> var)
	{
		prod *= var;
	}
	cout << "Wynik to " << prod;
	
}
void dzielenie()
{
	cout << "============= Dzielenie =============" << "\n";
	double  a,b;
	cout << "Podaj dwie liczby do dzielenia " << "\n";
	cout << "1(dzielna): " ;
	cin >> a;
    cout << " 2(dzielnik): " ;
    cin >> b;
	while (b == 0)
	{
		cout << "Blad, nie moze byc 0 w dzielniku" << "\n\n";
		Sleep(1000);
		cout << " 2(dzielnik): " << "\n";
		cin >> b;
	}
    cout << "Wynik to " << a / b << "\n";
}
void potegowanie()
{
	cout << "============= Potegowanie =============" << "\n";
	double base, index;
	cout << "Podstawa " << "\n";
	cin >> base; 
	cout << " Wykladnik " "\n";
	cin >> index;
	cout << "Wynik to " << pow(base, index) << "\n";
} 

char O;

int main()
{

	while ( true )
	{
		
		cout << "Witaj! " << " Oto kalkulator" << "\n";
		cout << "Jaka operacje chcesz wykonac?" << "\n";

		cout << "Aby zresetowac program po liczeniu wcisnij Enter" << "\n";

		cout << "1. Dodawanie " << "\n";
		cout << "2. Odejmowanie" << "\n";
		cout << "3. Mnozenie" << "\n";
		cout << "4. Dzielenie" << "\n";
		cout << "5. Potegowanie " << "\n";
		cout << "6. Wyjscie" << "\n\n";

		O = _getch();

		switch (O)
		{
		case '1':
			dodawanie();
			break;
		case '2':
			odejmowanie();
			break;
		case '3':
			mnozenie();
			break;
		case '4':
			dzielenie();
			break;
		case '5':
			potegowanie();
			break;
		case '6':
			cout << " Żegnaj! \n";
			exit(0);
	
		default:
			cout << "Nie podano opcji " << "\n";
			break;
		}
		cout << " Czyszczenie konsoli (ENTER)" << "\n";
		getchar(); getchar();
		system("cls");
	}

}


 
0

I co, działa mnożenie po dodawaniu?

0

Wszystko działa ładnie w pętli do czasu przerwania klawiszem 6 w menu, na końcu każdej funkcji dałem cin.clear() i działa wszystko.

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