Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Problém s programování if/else C++
Jdi na stránku Předchozí  1, 2
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
p32



Založen: Jan 13, 2007
Příspěvky: 15542
Bydliště: Olomouc

PříspěvekZaslal: út srpen 11 2015, 8:23    Předmět: Citovat

RAD - rapid application development
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: po srpen 17 2015, 13:30    Předmět: Citovat

Ahoj, nakonec sem se pokusil to celé překopat na jednotlivě volané funkce, ale zase to hlásí nějaký chyby:

kód:
#include <iostream>
#include <cmath>
#include <ctype.h>
using namespace std;
int main()
{
  char input;
  int volba, cislo1, cislo2 ; // deklarovani funkce volba a operandů příkladů
  float deleni ; // deleni se zbytkem umoznuje pouze nekolik druhu pameti, viz Floating point anebo Pohyblivá řádová čárka
  double polomer, povrch ; // podobný typ jako float
  do //do-while loop starts here.that display menu again and again until user select to exit program
  {
     //Vlastni nabidka:
     cout << "Vitejte v ukazkovem programu matematickych operaci." << endl;
    cout << "Upozorneni: pri psani desetinnych cisel dodrzujte" << endl;
    cout << "anglosasky standart, tudiz 2.5 (nikoliv 2,5)!" << endl;
    cout << "(Vyhotoven: 9.8.2015)" << endl;
    cout << "1) Soucet +" << endl;
     cout << "2) Soucin *" << endl;
     cout << "3) Rozdil -" << endl;
     cout << "4) Podil / " << endl;
     cout << "5) Modulo % " << endl;
     cout << "6) Povrch kruhu " << endl;   // obvod kruhu - Circumference
     cout << "7) rez" << endl;
     cout << "8) KONEC" << endl;

     cout << "Prosim, zadejte volbu: ";
     cin >> input;
    if (!isdigit(input))
    cout << "Toto není číslice!" << endl;
    cout << "Prosim, zadejte ZNOVU volbu: " << endl;
    else
    cin >> volba;   
    }
   
   return 0;
}
   
    void menu()
{ if(volba == 1)
     {
    cout << "Zvoleno scitani:" << endl;
    cout << "Zadejte prvni cislo: " << endl;
   cin >> cislo1;
   cout << "Zadejte druhe cislo: " << endl;
   cin >> cislo2;
   cislo1 += cislo2;
   cout << "Vas vysledek: " << endl;
   cout << cislo1 << endl;
    }
     else if(volba == 8)
     {
       cout << "Ukonceni programu..." << endl;
     }
  else //doplnit hlídání CÍSELNÝCH výrazů
     {
       // Displaying error message
       cout << "Zadan neplatny udaj." << endl;
     }
  }
  while(volba != 8); 
      while (volba < 0)
    {
        cin >> input;
       volba = static_cast<int>(volba) - 48;
    }
   
   return 0;
}


CHAR.cpp:32:3: error: 'else' without a previous 'if' ---pročpak, když ho tam mám?
CHAR.cpp:36:11: error: expected 'while' before numeric constant
CHAR.cpp:36:11: error: expected '(' before numeric constant
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
ross4435897



Založen: Nov 10, 2009
Příspěvky: 426
Bydliště: Brno

PříspěvekZaslal: po srpen 17 2015, 13:37    Předmět: Citovat

a tohle je ok? ... else if(volba ==
vypada to ze to to by mohlo byt to misto kteremu ten kompilator nerozumi
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
mtajovsky



Založen: Sep 19, 2007
Příspěvky: 3698
Bydliště: Praha

PříspěvekZaslal: út srpen 18 2015, 9:48    Předmět: Citovat

Přepsal jsem část kódu počínaje funkcí void menu() do trochu lepšího formátování:
kód:

void menu()
{
    if(volba == 1)
    {
        cout << "Zvoleno scitani:" << endl;
        cout << "Zadejte prvni cislo: " << endl;
        cin >> cislo1;
        cout << "Zadejte druhe cislo: " << endl;
        cin >> cislo2;
        cislo1 += cislo2;
        cout << "Vas vysledek: " << endl;
        cout << cislo1 << endl;
    }
    else if(volba == 8)
    {
        cout << "Ukonceni programu..." << endl;
    }
    else //doplnit hlídání CÍSELNÝCH výrazů
    {
       // Displaying error message
        cout << "Zadan neplatny udaj." << endl;
    }
}
while(volba != 8);

    while (volba < 0)
    {
        cin >> input;
        volba = static_cast<int>(volba) - 48;
    }
   
   return 0;
}   


Tak a teď k čemu patří while(volba != 8 ); ? Ta pravá složená závorka před tím ukončuje tělo funkce a ne blok do-while. Nehledě na to, že by se zde program zacyklil. V první půlce kódu je zase blok do bez klausule while. Hlavním příznakem zmatku v blocích je to, že počet levých a pravých složených závorek není shodný. Celkem je tam 7 levých závorek a 8 pravých.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
chuckyw



Založen: Sep 01, 2014
Příspěvky: 19

PříspěvekZaslal: st srpen 19 2015, 10:40    Předmět: Citovat

arduino2015: nauč se uzavírat do { } všechny těla podmínek, cyklů, apod. i jednořádková, ušetříš si s tím spoustu problémů:
citace:

if (!isdigit(input))
cout << "Toto není číslice!" << endl;
cout << "Prosim, zadejte ZNOVU volbu: " << endl;
else
cin >> volba;


je jasná chyba, kdybys psal:

citace:

if (!isdigit(input))
{
cout << "Toto není číslice!" << endl;
cout << "Prosim, zadejte ZNOVU volbu: " << endl;
}
else
{
cin >> volba;
}


nic podobného by se ti nestalo
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
p32



Založen: Jan 13, 2007
Příspěvky: 15542
Bydliště: Olomouc

PříspěvekZaslal: st srpen 19 2015, 19:03    Předmět: Citovat

Tak, tak, pravdu má předseda. Wink
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
arduino2015



Založen: Jan 30, 2015
Příspěvky: 158

PříspěvekZaslal: pá září 18 2015, 12:31    Předmět: Citovat

Ok, díky.
Jaká skripta pro C++ jsou vhodná pro začátečníka? Děkuji...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.14 sekund