[PROBLEM ROZWIĄZANY] Dodawanie i funkcje w C++

Temat edytowany przez kamilc03 - 20 maja 2015, 16:30

Avatar
Konto usunięte
Mam sobie taki kawałek kodu:
kod pisze:

int liczba = 0;
int liczba2 = 0;

std::cout<<std::endl;
std::cin>>liczba;
std::cout<<"+"<<std::endl;
std::cin>>liczba2;
std::cout<<"="<<std::cout<<liczba+liczba2<<std::endl;
return(0);


I wynik tego to 0x47e748po czym jest wynik. I jak to naprawić?

Drugi problem to to, że przy kompilowaniu wyskakuje błąd o braku deklaracji funkcji, które są w kodzie pod funkcją, która ma ją wywołać.
EDIT: Oczywiście wyżej są biblioteki :)
EDIT2: Próbowałem także za pomocą dodatkowej zmiennej i operatora +=, oraz próbowałem zmienić na typ na float, ale to też nic nie dało.

Avatar
Konto usunięte
Nie lepiej gdzieś na początku napisać "Using namespace std;"? Zaoszczędziło by to połowy problemów, bo w twoim przypadku musisz się męczyć z wpisywaniem "std" w każdą linijkę kodu.

Nie jestem jakimś znawcą, na pewno mojlogin pomoże.

Avatar
Konto usunięte
jak zaczynałem się uczyć(nadal się uczę) to korzystałem z kursu, gdzie ktoś podał właśnie bez tej funkcji co napisałeś. Później się z tym spotykałem, ale nie mogłem się przyzwyczaić do takiej formy. :)

Avatar
Konto usunięte
Może to wina kompilatora?

Avatar
Konto usunięte
Używam Dev++, jutro pobiorę inny i sprawdzę

Avatar
Konto usunięte
kamilc03 pisze:
Używam Dev++, jutro pobiorę inny i sprawdzę

To ściągnij Code::Blocks, nie powinno być problemów.

Avatar
Konto usunięte
arek3000 pisze:
To ściągnij Code::Blocks, nie powinno być problemów.

Pobiorę i sprawdzę. Znasz jakiś kompilator, który można dołączyć do Notepada?

Avatar mojlogin
1. Nie wrzucaj do zmiennych wartości 0, bo to jest niepotrzebne
2. return 0; a nie return (0);
3. Daj cały kod
4. std::cout<<"="<<std::cout<<liczba+liczba2<<std::endl;

Pogrubiona część kodu jest niepotrzebna, czyli powinno to tak wyglądać:

std::cout<<"="<<liczba+liczba2<<std::endl;

5. Dev-C++, jeśli już chcesz z niego korzystać to nie z wersji 4.9.9.2, tylko najnowszej, czyli tej

6.Używaj using namespace std;, bo uwierz mi, mniej męczarni i estetyczniej będzie wyglądał kod

Avatar
Konto usunięte
Usunięcie std::cout pomogło, ale nadal nie wiem czemu nie da się odwołać do funkcji niżej...
W funkcjach, które robią jakieś działanie zamiast return chciałem main(); , ale właśnie nie kompiluje się wtedy. Po prostu chciałem aby funkcja main zaczęła się od początku.
Tutaj daję cały kod:

#include <iostream>
#include <conio.h>
#include <math.h>
#include <ctime>
#include <cstdlib>

int dodawanie ()
{
int liczba = 0;
int liczba2 = 0;

std::cin>>liczba;
std::cout<<"+"<<std::endl;
std::cin>>liczba2;
std::cout<<"="<<liczba+liczba2<<std::endl;
return 0;
}

int odejmowanie ()
{
int liczba = 0;
int liczba2 = 0;

std::cin>>liczba;
std::cout<<"-"<<std::endl;
std::cin>>liczba2;
std::cout<<"="<<liczba-liczba2<<std::endl;
return 0;
}

int mnozenie ()
{
int liczba = 0;
int liczba2 = 0;

std::cin>>liczba;
std::cout<<"*"<<std::endl;
std::cin>>liczba2;
std::cout<<"="<<liczba*liczba2<<std::endl;
return 0;
}

int dzielenie ()
{
int liczba = 0;
int liczba2 = 0;

std::cin>>liczba;
std::cout<<"/"<<std::endl;
std::cin>>liczba2;
std::cout<<"="<<liczba/liczba2<<" r."<<liczba%liczba2<<std::endl;
return 0;
}

int kalkulator ()
{
int dzialanie = 0;
std::cout<<"Jestes w kalkulatorze!\nWybierz program:\n[1]-dodawanie;\n[2]-odejmowanie;\n[3]-mnożenie\n[4]-dzielenie\n[cos innego]-powrot do menu\n";
std::cin>>dzialanie;
if(dzialanie == 1)
{
dodawanie();
}
if(dzialanie == 2)
{
odejmowanie ();
}
if(dzialanie == 3)
{
mnozenie ();
}
if(dzialanie == 4)
{
dzielenie ();
}
}

int main ()
{
int wybor = 0;
std::cout<<"Witaj!\nWybierz program:\n[1]-kalkulator;\n";
std::cin>>wybor;
switch(wybor)
{
case 1:
kalkulator();
break;

case 2:
//funkcja 2
break;

case 3:
//funkcja 3
break;

case 4:
//funkcja 4
break;

case 5:
//funkcja 5
break;

case 6:
//funkcja 6
break;

case 7:
//funkcja 7
break;

case 8:
//funkcja 8
break;

case 9:
//funkcja 9
break;

default:
return 0;
break;
}
}

Avatar mojlogin
Po to ta funkcja nazywa się main (ang. główna) i ma int zamiast void, żeby od niej zaczął się program. I nie możesz się odwołać do funkcji, która jest wyżej, bo kompilator jej nie widzi, pozwól, że wytłumaczę:

Oto kod:
kod pisze:
#include <iostream>
void tekst ()
{
std::cout << "tekst"<<std::endl;
}

void wypisztekst ()
{
tekst ();
}

int main ()
{
wypisztekst ();
}

Kompilator wypluje błąd: tekst () is not declared un this scope

Czemu się tak dzieje ?

Przedstawię proces kompilacji

include <iostream>

Kompilator: aha, mam dołączyć plik iostream, wiec go szukam

void tekst ()

Kompilator: spoko zrobiłeś funkcje to idę dalej

std::cout << "tekst" << endl;

Kompilator: dobra, jak odwołasz się do funkcji to wypisze tekst

void wypisztekst

Kompilator: okej, kolejna funkcja

wypisztekst ();

Kompilator: okej, jak znajdę ta funkcje to ja wywołam

I teraz kompilator szuka funkcji, ale gdy szuka to nie może wrócić do dołu, wiec nie widzi tej funkcji.

Oczywiście jest na to sposób

Na początku napisz void nazwafunkcji();

Avatar
Konto usunięte
Okey, dzięki za wytłumaczenie, temat do zamknięcia. :)

Avatar Dark_Dante
Zamykam. W razie czego pisać na PW

Temat zamknięty

Pokaż znaczniki BBCode, np. pogrubienie tekstu

Dodaj zdjęcie z dysku

Dodaj nowy temat Dołącz do grupy +
Avatar Koteczek_21
Właściciel: Koteczek_21
Grupa posiada 75275 postów, 2324 tematów i 1467 członków

Opcje grupy Świat Gier

Sortowanie grup

Grupy

Popularne

Wyszukiwarka tematów w grupie Świat Gier