• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Program nie wchodzi do do funkcji void wynik01(float *tab5A[]); - co napisałem źle ?

Object Storage Arubacloud
0 głosów
202 wizyt
pytanie zadane 26 kwietnia 2015 w C i C++ przez Adam Początkujący (260 p.)
zamknięte 26 kwietnia 2015 przez Adam
// Uczę sie dopiero C++, używam Code::Blok-a. Proszę o pomoc.

//Wyliczenie sredniej z 5 liczb i najblizszej do tej sredniej.

#include <iostream>
#include <conio.h> //getch()
//#include <cstdio>   //getchar()
//#include <cctype>// isdigit()
#include <windows.h>// Sleep() , exit(0) , system ("cls")
#include <iomanip> //cout<<setprecision(2)
using namespace std;

// deklaracje
void menu();
void wybor();
void menu01();
void wybor01();

void wynik01(float *tab5A[]);

// zmienne globalne
char wyb;
float srednia;

//..........................
int main() {

    menu();
    wybor();
    
    if (wyb=='1') {
        
        menu01();
        wybor01();
    }
    else {
        //    los(wybor);
    }
    return 0;
}

void menu() {
    cout<<endl;
    cout<<"Obliczenie sredniej z 5 liczb i wskazanie ktore z tych 5 liczb,"<<endl;
    cout<<"sa najblizsze tej sredniej."<<endl<<"\n";
    cout << "MENU GLOWNE" << endl;
    cout << "-----------------" << endl;
    cout << "1. Podaj 5 liczb. " << endl;
    cout << "2. Wygeneruj 5 liczb. "<< endl;
    cout << "3. Koniec programu. " <<endl;
    cout << endl<<"Wybierz: ";
    wyb = getch();
    cout<<wyb;
    return; // powinien byc ale bez wartosci, bo to jest typ void.
}

void wybor() {

    int ok=1;

    for(; ok==1 ;)  {

        switch (wyb) {
        case '1': {
            ok=0;
            break;
        }
        case '2': {
            ok=0;
            system("cls");
            break;
        }
        case '3': {
            system("cls");
            exit (0);
            break;
        }
        default: {
            cout<<"\a"<<"   - Nie ma takiej opcji w menu !"<<endl;
            Sleep(1500);
            system("cls");
            menu();
            break;
        }
        }//switch (wyb)
    }//for (;ok==1;)
return; // powinien byc ale bez wartosci, bo to jest typ void.
}//void wybor()

void menu01() {

    system("cls");
    cout<<endl;
    cout<<"Obliczenie sredniej z 5 liczb i wskazanie ktore z tych 5 liczb,"<<endl;
    cout<<"sa najblizsze tej sredniej."<<endl<<"\n";

    cout << "Podaj 5 liczb." << endl;
    cout << "-----------------" << endl;

}

void wynik01(float *tab5A[]);

void wybor01() {

    int licz =0;
    float liczba = 0, suma = 0;
    float tab5A[5] {0,0,0,0,0}; // mala tablica, wiec mozna tak.
    for (int i =0; i<5; i++) tab5A[i] = 0; // inicjowanie tablicy zerami podczas deklaracji, wiec mozna i tak.

    system("cls");

    for(; licz<5;) {

        cout<<endl<<endl<< "Podaj "<< licz+1<< " liczbe: ";
        cin>>liczba;

        if (cin.good()) { // zadna z flag nie jest ustawiona

            tab5A[licz]= liczba;
            licz +=1;
            suma+= liczba;
        }
        else {

            cout<<endl <<"\a"<<"  To nie jest liczba, nacisnij Enter. "<<endl;

            cin.clear(); // metoda czysci flage bledu
            liczba = getch(); // Niestety  cin>>liczba; zle dziala.
            cin.sync();// metoda czyści bufor strumienia

        }//if (cin.good())

        system ("cls");
        cout << "Podaj 5 liczb." << endl;
        cout << "-------------------" << endl;
        cout<<"Wprowadzone liczby: "<<endl<<endl;

        for (int i=0; i<5; i++) {
            cout<< i+1 <<": "<<tab5A[i]<<"\t"<<"\t";
        }

    } //    for(; licz<5;)
    cout<<"\n" "\n"<<"Srednia z pieciu liczb:   "<<(suma/5)<<endl<<endl;
float    wynik01(float *tab5A[]);

} //void wybor01()

void wynik01(float *tab5A[]) {

    for (int i=0; i<5; i++) {
    
        //cout<< i+1 <<": "<<*tab5A[i]<<"\t"<<"\t";

        cout<< i  <<"  .......?????????...................."<<endl;
        
        getch();
    }
}
komentarz zamknięcia: Problem rozwiazany dzięki pomocy użytkownika: ListaV

2 odpowiedzi

+1 głos
odpowiedź 26 kwietnia 2015 przez LislaV Bywalec (2,400 p.)

Kiedy wywołuje się funkcje nie podaje się jej typu, tak samo nie podaje się typu zmiennych w argumentach. Ponadto, jeżeli chcesz przekazać tablice do funkcji nie potrzebujesz używać wskaźnika. Więcej na ten temat: http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Przekazywanie-tablic-jednowymiarowych-do-funkcji/324

Więc jak domyślam się, w tym miejscu próbujesz wywołac swoją funkcję:

float    wynik01(float *tab5A[]);

Ta linijka powinna wyglądać tak:

wynik01(tab5A);

I deklaracja twojej funkcji powinna wyglądać tak:

void wynik01(float tab5A[]);

 

komentarz 26 kwietnia 2015 przez Adam Początkujący (260 p.)

Dziekuje,

Wprowadziłem te zmiany i działa. Teraz programik wchodzi do funkcji void wynik01(float tab5A[]) i mogę pisać dalej. Jutro obejrzę proponowany link. Dziękuję.

0 głosów
odpowiedź 26 kwietnia 2015 przez Dorion300 Szeryf (90,250 p.)
A jaki jest błęd?

Co dostajesz gdy chcesz kompilować?

Podobne pytania

0 głosów
0 odpowiedzi 285 wizyt
pytanie zadane 3 stycznia 2021 w Inne języki przez K1NG Nowicjusz (160 p.)
0 głosów
1 odpowiedź 1,096 wizyt
pytanie zadane 13 grudnia 2017 w C i C++ przez danie6 Początkujący (280 p.)
0 głosów
4 odpowiedzi 287 wizyt
pytanie zadane 28 lutego 2017 w C i C++ przez Florek Nowicjusz (210 p.)

92,698 zapytań

141,611 odpowiedzi

320,122 komentarzy

62,057 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...