Úkol do školy C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Úkol do školy C++ – C / C++ – Fórum – Programujte.comÚkol do školy C++ – C / C++ – Fórum – Programujte.com

 

Dominik
~ Anonymní uživatel
129 příspěvků
5. 4. 2017   #1
-
0
-

Ahoj,

Chodím na IT do prvního ročníku a potřeboval bych vysvětlit jeden úkol, který nám zadal učitel. Konkrétně s for cyklem psaný v C++. Prosím pokud možno o vysvětlení krok po kroku co daný příkaz, hodnota proměnné, přiřazení atd dělají. Dlouho jsem chyběl a sám na to nepřijdu potřebuju poradit.

Upravte program z hodiny tak aby: -uzivatel zadal kolik cisel se ma nacist
-program pocital pocet kladnych a zapornych cisel a na zaklade poctu techto cisel spocital spravne prumer.
****************KÓD Z HODINY************************


// Example program
#include <iostream>
#include <math.h>
using namespace std;


const int POCET=10; /*vytvorim si konstantu, kterou pak pouziju ve for cyklu*/

int suma,zSuma;
int vstup;

float prumer,zPrumer;

int main()
{
for(int i=1;i<=POCET;i++){
cout<<"zadej"<<i<<" cislo"<<endl;
cin>>vstup;
if(vstup>0){
suma+=vstup; /*suma=suma+vstup*/
}
else{
zSuma+=vstup;
}

}

prumer=float(suma)/float(POCET);
zPrumer=float(zSuma)/float(POCET);
cout<<"prumer "<<POCET<<" cisel je: "<<prumer<<endl;
cout<<"prumer zapornych cisel je: "<<zPrumer<<endl;
}

Nahlásit jako SPAM
IP: 82.99.180.–
5. 4. 2017   #2
-
0
-

   

#include <iostream>
#include <math.h>
using namespace std;


const int POCET=10; /*vytvorim si konstantu, kterou pak pouziju ve for cyklu*/

int suma,zSuma;
int vstup;

float prumer,zPrumer;

int main()
{
  for(int i=1;    //do promenne i zapise 1 
      i<=POCET;   //cyklus probehne pokazde když je podminka splnena
      i++){       //pri kazdem prubehu cyklu se i zvysi o 1
    cout<<"zadej"<<i<<" cislo"<<endl;  //vypise kolikate cislo chce
    cin>>vstup;     //nacte cislo z klavesnice
    if(vstup>0){
      suma+=vstup; //suma=suma+vstup se provede pro kladne cislo
    }
    else{
      zSuma+=vstup; //toto se provede pro zaporne cislo nebo 0
    }

  }

prumer=float(suma)/float(POCET);
zPrumer=float(zSuma)/float(POCET);
cout<<"prumer "<<POCET<<" cisel je: "<<prumer<<endl;
cout<<"prumer zapornych cisel je: "<<zPrumer<<endl;
}


Několik poznámek:
- nejsem si jistý, zda průměr kladných čísel by se měl počítat z celkového počtu daných čísel, spíš bych čekla, že se bude počítat z počtu zadaných kladných čísel. Podobně u čísel záporných
-0 (nula) není ani kladné, ani záporné číslo. V kódu, který jsi sem dal, se však chová neutrálně a tak je jedno, kam ji přičteš.

Hodnota v proměnné POCET určuje kolikrát cyklus proběhne.

K úpravě kódu: je "natvrdo" dáno const int POCET = 10; Když to nahradíš proměnou int pocet a vyzveš uživatele k zadání její hodnoty, bude uživatel volit počet zadávaných čísel.

hu

Nahlásit jako SPAM
IP: 193.86.81.–
KIIV
~ Moderátor
+43
God of flame
5. 4. 2017   #3
-
0
-

#2 hlucheucho
Souhlas ze by se to melo pocitat suma kladnych podelena poctem kladnych, podobne pro zaporne.

---

Taktez tam neni zadna kontrola jestli nacteni z cin probehlo spravne. Jakmile zada neco neciselneho, tak se to zacykli na cin.fail()...

A jako obvykle se uci bad practice jmenem   using namespace std;   Pak zacatecnici maji tendenci cpat i do headeru a to je teprve maglajz.

Nahlásit jako SPAM
IP: 94.113.99.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Staon0
Návštěvník
6. 4. 2017   #4
-
0
-

#3 KIIV
A když už jsme u těch školních čuňáren, co se učí, tak všechny proměnné jsou zbytečně globální, a navíc neinicializované :-) Vím, že v globálu to není třeba, ale stejně je dobrý zvyk to dělat.

Nahlásit jako SPAM
IP: 94.142.234.–
6. 4. 2017   #5
-
0
-

Ještě jsem si všiml drobnosti 

cout<<"prumer "<<POCET<<" cisel je: "<<prumer<<endl;

Asi by to mělo vypisovat průměr kladných čísel. Naznačuje to, že před úpravou kód počítal průměr 10 čísel. Pak jsem tazateli zapomněl vysvětlit důvod přetypování na float ve výpočtu průměru: celočíselné dělení by mělo celočíselný výsledek, ten by byl hodně nepřesný. Jinak dávám za pravdu, že je to názorná ukázka nevhodného použití globálních proměnných. S tou inicializací jsi odhalil "funkční" chybu programu. Přičítat něco do neinicializované proměnné suma a zSuma může generovat hausnumera. Že se to při zkoušení programu neprojevilo je díky tomu, že byla programu (náhodou?) přidělena vynulovaná paměť.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
KIIV
~ Moderátor
+43
God of flame
6. 4. 2017   #6
-
0
-

#5 hlucheucho
To ze to funguje neni nahodou. Globalni a staticke promenne jsou automaticky inicializovany na jejich defaultni hodnotu pokud neni definovana hodnota explicitne. To Staon zminil, jen to asi trochu zapadlo.

Nahlásit jako SPAM
IP: 212.47.3.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

Ukol do školy — založil Ales

úkol do školy — založil stop

C++ ukol do skoly — založil Aleš

Ukol do skoly — založil sniff

Ukol do skoly:( — založil Martina

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý