Przelicznik temperatur

0

Siemka, napisałem program do przeliczania temperatur ale coś w nim jest nie tak bo na koniec konwertowania wywala mi błąd żę nOpcja i nJednostka to niezdefiniowane zmienne, ale je zdefiniowałem z Funkcji(), i potem wywołałem ją w main().

Aha, i nie mówcie żę za mało kodu bo reszte sytuacji z temperaturami podam później na razie chciałem tylko sprawdzić co nie działa.

 // Przelicznik temperatur

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

void Funkcja()
{
	int nTemp;
	cout << "Podaj temperature do przekonwetowania: ";
	cin >> nTemp;

	int nJednostka;
	cout << "W jakiej jendostce jest ta tenperatura?" << endl;
	cout << "1.Kelwin" << endl;
	cout << "2.Farenheit" << endl;
	cout << "3.Celcius" << endl;
	cout << "Twoj wybor: ";
	cin >> nJednostka;
	cout << endl;

	int nOpcja;
	cout << "Na jaką jednsotke chcesz przekonwertowac temperature:" << endl;
	cout << "1.Kelwin" << endl;
	cout << "2.Farenheit" << endl;
	cout << "3.Celcius" << endl;
	cout << "Twoj wybor: ";
	cin >> nOpcja;
	cout << endl;

}

void main()
{
	Funkcja();

	if (nJednostka = 1, nOpcja = 1)
	{
		cout << "To ta sama jednostka!" << endl;
	}

	getch();
}
 
0

WTF? o_O
Zmienne lokalne zdefiniowane wewnątrz funkcji giną w chwili wyjścia z tej funkcji. Zasadniczo zakres dostępności zmiennej kończy się z chwilą napotkania klamry zamykajacej blok gdzie ta zmienna została zdeklarowana.

0

Ok, zmieniłem to trochę i dodałem sytuacje dla innych wyborów, lecz jakie liczby dla nJednostka i nOpcja bym nie dał wyświetla się zawsze "To ta sama jednostka!" :/

 // Przelicznik temperatur

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

void main()
{
	float fTemp;
	cout << "Podaj temperature do przekonwetowania: ";
	cin >> fTemp;

	int nJednostka;
	cout << "W jakiej jednostce jest ta tenperatura?" << endl;
	cout << "1.Kelwin" << endl;
	cout << "2.Farenheit" << endl;
	cout << "3.Celcius" << endl;
	cout << "Twoj wybor: ";
	cin >> nJednostka;
	cout << endl;

	int nOpcja;
	cout << "Na jaka jednsotke chcesz przekonwertowac temperature:" << endl;
	cout << "1.Kelwin" << endl;
	cout << "2.Farenheit" << endl;
	cout << "3.Celcius" << endl;
	cout << "Twoj wybor: ";
	cin >> nOpcja;
	cout << endl;


	if (nJednostka == 1, nOpcja == 1)
	{
		cout << "To ta sama jednostka!" << endl;
	}else if (nJednostka == 1, nOpcja == 2)
	{
		cout << "Twoja temperatura to: " << fTemp - 457 << "F" << endl;
	}else if (nJednostka == 1, nOpcja == 3)
	{
		cout << "Twoja temperatura to: " << fTemp - 272 << "C" << endl;
	}else if (nJednostka == 2, nOpcja == 1)
	{
		cout << "Twoja temperatura to: " << fTemp + 255 << "K" << endl;
	}else if (nJednostka == 2, nOpcja == 2)
	{
		cout << "To ta sama jednostka!" << endl;
	}else if (nJednostka == 2, nOpcja == 3)
	{
		cout << "Twoja temperatura to: " << fTemp - 17 << "C" << endl;
	}else if (nJednostka == 3, nOpcja == 1)
	{
		cout << "Twoja temperatura to: " << fTemp + 274 << "K" << endl;
	}else if (nJednostka == 3, nOpcja == 2)
	{
		cout << "Twoja temperatura to: " << fTemp + 33 << "F" << endl;
	}else if (nJednostka == 3, nOpcja == 3)
	{
		cout << "To ta sama jednostka!" << endl;
	}

	getch();
} 
0

A mógłbyś łaskawie NAJPIERW NAUCZYĆ SIĘ PODSTAW a potem dopiero coś pisać? Skąd wziąłeś np. to że zapis:

if (nJednostka == 3, nOpcja == 3)

oznacza "jeśli nJednostka wynosi 3 i nOpcja wynosi 3"? Nie odpowiadaj, bo wiem ze to po prostu wymyśliłeś. Tak trudno przeczytać kilka stron z ksiażki i dowiedzieć się jak wyglądają operatory logiczne?
Jeśli instrukcje są przedzielone przecinkami to za wartość zwracaną przez taki ciągi instrukcji bierze się wartość skrajnie prawej instrukcji. Ale żeby to wiedzieć to musiałbyś się wysilić i coś przeczytać...

0

Ok dzięki za pomoc, chociaż mogłeś po prostu powiedzieć "przypomnij sobie informacje o operatorach logicznych"

P.S

Tak dla wiadomości to mam książka (jeśli można to tak nazwać) a dokładniej "Od zera do gier kodera"

0
  1. Pewnie używasz dev-cpp... Zmien na MSVC albo coś innego :)
  2. if (nJednostka == 1, nOpcja == 1) powinno być zapisane :
if(nJednostka == 1 && nOpcja == 1)
  1. Po co załączasz tyle includów ?
    Wywal:
    #include <conio.h>
    #include <cmath>
    A za getch() wstaw cin.get();
    Ale jak jesteś na poziomie początkującego to lepiej zostaw tak, jak masz :P
    Tutaj masz zatrzymywanie programu : Zatrzymanie okna programu
  2. Formatuj troche kod. TO:
if (nJednostka == 1, nOpcja == 1)
        {
                cout << "To ta sama jednostka!" << endl;
        }

można zapisać jako

if (nJednostka == 1 && nOpcja == 1)
                cout << "To ta sama jednostka!" << endl;
else
                cout << " costam " << endl;
  1. Zamiast void main() pisz int main() i na końcu programu zwracaj 0 (return 0);

Przeczytaj jeszcze raz lekcje i będzie dobrze : )

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