[C++] Dev-C++, problem z kodem źródłowym

Awatar użytkownika
Ceplusplusik
Użytkownik
Użytkownik
Posty: 228
Rejestracja: 7 paź 2012, o 17:02
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 94 razy

[C++] Dev-C++, problem z kodem źródłowym

Post autor: Ceplusplusik »

Witam. Na zadanie na wtorek mam ułożyć program na objętości i pola brył. Wszystko hula, poza jedną "pierdółką" - w momencie podawania wartości tuż obok tekstu na konsoli wyświetlają się nie stąd ni zowąd jakieś dziwnawe liczby - prosiłbym o weryfikację kogoś, kto ogarnia . Pozdrawiam .

Kod: Zaznacz cały

#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>
using namespace std;

int main ()
{
	double promienKuli;
	cout << "Wprowadz dlugosc promienia kuli= " << endl;
	cin >> promienKuli;
	double poleKuli=4*M_PI*pow(promienKuli, 2);
	double objetoscKuli=(4*M_PI*pow(promienKuli, 3))/3.0;

	double tworzacaStozka, promienStozka, wysokoscStozka;
	cout << "Wprowadz dlugosc tworzacej stozka= " << tworzacaStozka << endl;
	cin >> tworzacaStozka;
	cout << "Wprowadz dlugosc promienia stozka= " << promienStozka << endl;
	cin >> promienStozka;
	cout << "Wprowadz dlugosc wysokosci stozka= " << wysokoscStozka << endl;
	cin >> wysokoscStozka;
	double poleStozka=M_PI*pow(promienStozka, 2)+M_PI*promienStozka*tworzacaStozka;
	double objetoscStozka=(M_PI*pow(promienStozka, 2)*wysokoscStozka)/3.0;
	
	double promienWalca, wysokoscWalca;
	cout << "Wprowadz dlugosc promienia walca= " << tworzacaStozka << endl;
	cin >> promienWalca;
	cout << "Wprowadz dlugosc wysokosci walca= " << promienStozka << endl;
	cin >> wysokoscWalca;
	double poleWalca=2*M_PI*pow(promienWalca, 2)+2*M_PI*promienWalca*wysokoscWalca;
	double objetoscWalca=M_PI*pow(promienWalca, 2)*wysokoscWalca;
	
	cout << "Pole kuli wynosi= " << poleKuli << endl;
	
	cout << "Objetosc kuli wynosi= " << objetoscKuli << endl;
	
	cout << "Pole stozka wynosi= " << poleStozka << endl;
	
	cout << "Objetosc stozka wynosi= " << objetoscStozka << endl;
	
	cout << "Pole walca wynosi = " << poleWalca << endl;
	
	cout << "Objetosc walca wynosi = " << objetoscWalca << endl;
	
		
	return 0;
}
Załączam także obrazek z wynikiem z konsoli:
Jonarz
Użytkownik
Użytkownik
Posty: 120
Rejestracja: 2 paź 2013, o 22:16
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 32 razy
Pomógł: 11 razy

[C++] Dev-C++, problem z kodem źródłowym

Post autor: Jonarz »

Niepotrzebnie wpisałeś w każdej linii początkowej z cout zmienne (tzn. powinno być np.:

Kod: Zaznacz cały

 cout << "Wprowadz dlugosc tworzacej stozka= "<< endl;
   cin >> tworzacaStozka;
zamiast

Kod: Zaznacz cały

 cout << "Wprowadz dlugosc tworzacej stozka= " << tworzacaStozka << endl;
   cin >> tworzacaStozka;
Kiedy jest to wpisane tak, jak Ty to zrobiłeś - program wyświetla aktualną (niewprowadzoną) wartość, którą przyjmuje zmienna, równą 0.
Awatar użytkownika
Ceplusplusik
Użytkownik
Użytkownik
Posty: 228
Rejestracja: 7 paź 2012, o 17:02
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 94 razy

[C++] Dev-C++, problem z kodem źródłowym

Post autor: Ceplusplusik »

W porządku, dzięki wielkie za pomoc . Faktycznie tego nie zauważyłem. Pytanie tylko, skąd wyświetla takie dziwne liczby, zamiast zera.
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8691
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C++] Dev-C++, problem z kodem źródłowym

Post autor: miki999 »

A na jakiej podstawie miałyby być wyświetlane zera, skoro nie przypisałeś zmiennym takiej wartości?
Gouranga
Użytkownik
Użytkownik
Posty: 1588
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[C++] Dev-C++, problem z kodem źródłowym

Post autor: Gouranga »

miki999, słuszna uwaga, nie będą wypisywane zera tylko śmieciowe dane z pamięci bo w momencie tworzenia zmiennej np. x automatycznie dostajemy dostęp do &x czyli adresu który ona zajmuje w pamięci i przy wypisywaniu de facto nie jest brana stricte zmienna tylko jest robiona niejawnie operacja *(&x) czyli wyłuskanie z adresu x, w momencie gdy nie przypiszemy do zmiennej nic zrozumiałego dla programu jej adres będzie wskazywał na dane pozostawione przez poprzedni program korzystający z danego miejsca w pamięci
ODPOWIEDZ