Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dziwne coś przy programie z funkcjami

Ostatnio zmodyfikowano 2012-12-23 18:04
Autor Wiadomość
silentus
Temat założony przez niniejszego użytkownika
Dziwne coś przy programie z funkcjami
» 2012-12-23 17:48:37
Witam,
Ogarniam już lekko podstawy c++ bo kiedyś też się uczyłem, ale teraz zrobię cały kurs.
Zrobiłem kompletnie sam zadanie z funkcjami, miałem kilka błędów ale po głębszym wpatrzeniu się w kod je odnalazłem (np zamiast case 2: dawałem case 2;)
Wszystko działa itd tyle że jest pewien problem, gdy włączam program dostępne funkcje pokazują mi się dwa razy, screen:

Kod programu :
C/C++
#include <iostream>
#include <windows.h>
using namespace std;
void funkcje()
{
    cout << "[1] - Dodawanie" << endl;
    cout << "[2] - Odejmowanie" << endl;
    cout << "[3] - Wyjscie" << endl;
}

void dodawanie()
{
    cout << "DODAWANIE" << endl;
    cout << "Podaj liczbe nr 1 ";
    int liczba1;
    int liczba2;
    cin >> liczba1;
    cout << "Ok, liczba 1 to " << liczba1 << endl;
    cout << "Podaj liczbe nr 2 ";
    cin >> liczba2;
    cout << "Ok, liczba 2 to " << liczba2 << endl;
    cout << "Wynik: " << liczba1 + liczba2 << endl;
    Sleep( 30 );
}

void odejmowanie()
{
    cout << "ODEJMOWANIE" << endl;
    cout << "Podaj liczbe nr1 ";
    int liczba1;
    int liczba2;
    cin >> liczba1;
    cout << "Ok, liczba nr 1 to " << liczba1 << endl;
    cout << "Podaj liczbe nr2 ";
    cin >> liczba2;
    cout << "Ok, liczba nr 2 to " << liczba2 << endl;
    cout << "Wynik: " << liczba1 - liczba2 << endl;
    Sleep( 30 );
}

int main()
{
    cout << "Dostepne funkcje:" << endl;
    funkcje();
    cout << "Wybierz jakas" << endl;
    int wybor;
    do
    {
        funkcje();
        cin >> wybor;
        switch( wybor )
        {
        case 1:
            dodawanie();
            break;
        case 2:
            odejmowanie();
            break;
            default:
            break;
        } //switch
    } while( wybor != 3 ); //do
   
    return 0;
} //main
P-71759
Leo
» 2012-12-23 17:57:12
A funkcja Do-while nie wykonywywałą się zawsze choć 1 raz ?
cout << "Dostepne funkcje:" << endl;    napis "dostepne funkcje"
funkcje();                                ukazuje 3 funkcje
cout << "Wybierz jakas" << endl;     napis wybierz jakas
int wybor;                                wybor jako zmienna int
pętla do-while                       ukazuje 3 funkcje, po czym czeka na wybór

Poprawny kod
C/C++
#include <iostream>
#include <windows.h>
using namespace std;
void funkcje()
{
    cout << "[1] - Dodawanie" << endl;
    cout << "[2] - Odejmowanie" << endl;
    cout << "[3] - Wyjscie" << endl;
}

void dodawanie()
{
    cout << "DODAWANIE" << endl;
    cout << "Podaj liczbe nr 1 ";
    int liczba1;
    int liczba2;
    cin >> liczba1;
    cout << "Ok, liczba 1 to " << liczba1 << endl;
    cout << "Podaj liczbe nr 2 ";
    cin >> liczba2;
    cout << "Ok, liczba 2 to " << liczba2 << endl;
    cout << "Wynik: " << liczba1 + liczba2 << endl;
    Sleep( 30 );
}

void odejmowanie()
{
    cout << "ODEJMOWANIE" << endl;
    cout << "Podaj liczbe nr1 ";
    int liczba1;
    int liczba2;
    cin >> liczba1;
    cout << "Ok, liczba nr 1 to " << liczba1 << endl;
    cout << "Podaj liczbe nr2 ";
    cin >> liczba2;
    cout << "Ok, liczba nr 2 to " << liczba2 << endl;
    cout << "Wynik: " << liczba1 - liczba2 << endl;
    Sleep( 30 );
}

int main()
{
    cout << "Dostepne funkcje:" << endl;
    funkcje();
    cout << "Wybierz jakas" << endl;
    int wybor;
    do
    {
        cin >> wybor;
        switch( wybor )
        {
        case 1:
            dodawanie();
            break;
        case 2:
            odejmowanie();
            break;
            default:
            break;
        } //switch
    } while( wybor != 3 ); //do
   
    return 0;
} //main


Oczywiście ukazanie funcji może być w pętli, ale problemem było podwójne ukazanie funkcji a nie jej umieszczenie. ;]
P-71760
jsc
» 2012-12-23 17:57:41
Po pierwsze, widzę, że chcesz dobrze formatować posty, ale nie umiesz, więc zajrzyj na: » KursyKurs STC kurs

Po drugie:
W linijce 44 masz wywołanie funkcji wyświetlającej działania aplikacji i w linijce 45 w chodzisz do pętli, której każda iteracja (w przypadku do-while za pierwszym razem automatycznie) na swoim początku wywyołuje funkcję wyświetlającą działania aplikacji.
P-71761
silentus
Temat założony przez niniejszego użytkownika
» 2012-12-23 18:00:49
Aaa faktycznie, ale tak samo jest na kursie więc każdemu się wyświetli podwójnie :D Nie żebym odpisywał ale po prostu popatrzyłem jak tam jest.
P-71763
Mrovqa
» 2012-12-23 18:04:24
Sam tak napisałeś:
C/C++
int main()
{
    cout << "Dostepne funkcje:" << endl;
    funkcje(); // wyswietlasz
    cout << "Wybierz jakas" << endl;
    int wybor;
    do
    {
        funkcje(); // znow wyswietlasz
        cin >> wybor; // dopiero wczytujesz
Pierwsze wyświetlenie jest Ci zbędne. Możesz je wywalić.

/edit: wow, ale mnie osób wyprzedziło; znów przy 'Napisz nową wiadomość' nie wyświetliło informacji o zmianach.
P-71764
« 1 »
  Strona 1 z 1