Využij akce až 80 % zdarma při nákupu e-learningu. Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Pythonu
discount week 80
Avatar
Denis Stránský:31.3.2018 19:10

Zdravím,
Mám udělat tři funkce. Každá bude mít nějaký úkol. Prosím o žádné ukazatele nebo třídy a další věci, které nemám v kodu.

zde je zadání:

  1. Navrhněte datový typ xArray, který bude mít celočíselný datový typ, bude mít 20 políček.
  2. Vytvořte proměnnou s DT xArray s názvem pole.
  3. Napište funkci, která nebude mít žádný návratový parametr a bude mít jeden vstupní parametr xArray. Název funkce bude fill. Funkce naplní pole číselnými hodnotami z klávesnice.
  4. Napište funkci s názvem FindMinus, která bude vracet celé číslo a bude mít jeden vstupní parametr xArray. Funkce spočítá kolik je záporných hodnot v poli a tuto hodnotu pak vrátí do výstupního parametru.
  5. Napište funkci, která bude počítat aritmetický průměr z KLADNÝCH HODNOT v poli. Bude vracet float a bude mít jeden vstupní parametr xArray. Název funkce bude average.
  6. Tyto funkce postupně zavolejte ve funkci main.

Zkoušel jsem to, ale program dělá tyto problémy:

1: Když zadám například: -1, -2, -3, 1, 2 vyhodí mi to pocet zapornych cisel 3. A prumer kladnych vyhodi 0. Přitom by to mělo vyhodit 3 a 1,5.

2: Program umí vypočítat pocet zapornych cisel a jejich prumery. Divné :D

Zde mám zdroják:

// Example program
#include <iostream>
#include <string>

using namespace std;

const int velikost=4;
typedef double xArray[velikost];
xArray pole;

void fill(xArray&vstup){
    cout<<"zadej 5 cisel "<<endl;

    for(int x=0;x<=velikost;x++){
        cin>>vstup[x];
    }

}

int findMinus(xArray vstup){
    int hodnota=0;
    int pocet;

    for(int x=0;x<=velikost;x++){
        if(vstup[x]<hodnota){
         pocet++;
        }
    }

    cout<<"pocet zapornych cisel je: ";
    return pocet;
}

float average(xArray vstup){
    int hodnota=-32000;
    int hodnotaCisel=0;
    int pocet;
    float prumer;

    for(int x=0;x<=velikost;x++){
        if(vstup[x]>hodnota){
        hodnotaCisel=hodnotaCisel+vstup[x];
        pocet++;
        }

    }

    cout<<"prumer cisel je: ";
    prumer=hodnotaCisel/pocet;

    return prumer;

}

int main()
{
  fill(pole);
  cout<<findMinus(pole);
  cout<<endl;
  cout<<average(pole);


}
Editováno 31.3.2018 19:11
 
Odpovědět
31.3.2018 19:10
Avatar
Martin Petrovaj
Redaktor
Avatar
Odpovídá na Denis Stránský
Martin Petrovaj:31.3.2018 19:29

Ahoj, tak už len vzhľadom na správanie tvojho programu ti mohlo napadnúť, že chyba bude niekde v tom, že tvoj program vôbec vie spočítať priemery záporných čísel, aj keď by to vôbec nemal robiť :-D

Pozrel by som sa do funkcie average a na to, aké čísla si v nej vlastne na základe podmienky filtruješ. Si si istý, že chceš zisťovať, či je číslo väčšie ako -32000, aby si ho započítal do priemeru? :-)

Nahoru Odpovědět
31.3.2018 19:29
if (this.motto == "") { throw new NotImplementedException(); }
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Denis Stránský:31.3.2018 19:36

Díky moc. Já jsem strašné vemeno :D

 
Nahoru Odpovědět
31.3.2018 19:36
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Denis Stránský
DarkCoder:31.3.2018 19:45

V zadání máš navrhnout celočíselný datový typ, místo toho používáš double.
Velikost pole volíš 4, přesto se jej snažís naplnit 5 hodnotami.
Seznam parametrů funkce fill() je chybně.
Inkrementuješ nedefinovanou lokální proměnnou pocet.
Inicializovat proměnnou hodnota na hodnotu -32000 není správné.

Nahoru Odpovědět
31.3.2018 19:45
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.