Obsah a obvod 2D obrazců – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Obsah a obvod 2D obrazců – C / C++ – Fórum – Programujte.comObsah a obvod 2D obrazců – C / C++ – Fórum – Programujte.com

 

pazdy0
Návštěvník
15. 10. 2013   #1
-
0
-

Zdravím jsem v programování začátečník a tak si zkouším sám doma programovat, na netu jsem našel různé úlohy a v téhle jsem se zarazil... Zde je zadání..

Vstupem programu je znak 'a', 'b' nebo 'c', který označuje volbu uživatele - a - čtverec, b - obdélník, c - kruh, a hodnoty nutné pro výpočet obvodu a obsahu zvoleného obrazce.

Výstupem programu jsou následující informace v pořadí dle ukázek:

obsah obrazce a
obvod obrazce.

Zde je práce programu:


Zadejte rovinny obrazec, jehoz obsah a obvod chcete spocitat: a - ctverec, b - obdelnik, c - kruh

a

Zadejte stranu ctverce:

5.5

Obsah ctverce je: 30.2500 Obvod ctverce je: 22.0000

A zde je můj začátek programování

#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>

using namespace std;

int main()
{   char a;
    char b;
    char c;
    cout << "Zadejte rovinny obrazec, jehoz obsah a obvod chcete spocitat: a - ctverec, b - obdelnik, c - kruh" << endl;
    cin>>a;
    cin>>b;
    cin>>c;
if (std::cin='a')
    {
        cout<<"Zadejte stranu ctverce:"<<endl;
    }

    return 0;
}

Nevím jak udělat, abych když zadám to písmeno (a,b,c), aby se mi ukázalo zadejte stranu čtverce například. Prosím o radu. Díky moc

Nahlásit jako SPAM
IP: 2001:718:1001:6a4:34:8f72...–
KIIV
~ Moderátor
+43
God of flame
15. 10. 2013   #2
-
+1
-
Zajímavé

no tu volbu musis nacist jen jednou - ne trikrat jak to ted mas... a pak pomoci vetveni (switch nebo tak udelat to rozeznani...)

mimochodem   std::cin = 'a'  je teda docela ulet :)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kenvelo+2
Super člen
15. 10. 2013   #3
-
0
-

#1 pazdy 

#include <iostream>
#include <math.h>

using namespace std;

int main()
{   
char menu;
int strana;

    cout << "Zadejte rovinny obrazec, jehoz obsah a obvod chcete spocitat: a - ctverec, b - obdelnik, c - kruh" << endl;

   cin>>menu;
     switch(menu)
         {
          case 'a'
           {
             cout<<"Zadejte stranu ctverce:"<<endl; 
             cin >> strana; cout <<"Strana ctverce je dlouha ":            << strana << "cm\
            break;
           }
           case 'b'
            {
                     // atd...
              break;
             }
          }


    return 0;
}
Nahlásit jako SPAM
IP: 89.177.211.–
Díky bohu, že počítače vymysleli muži. Kdyby to byly ženy, tak binární soustavu reprezentují jedničky, nuly a "možná"
KIIV
~ Moderátor
+43
God of flame
15. 10. 2013   #4
-
+1
-
Zajímavé

mimochodem presne todle resil vcera jeden typek na #programatori na ircnetu :) s kamosem sme to zkouseli vyresit co nejrychleji (jako trivial challenge:)) pak sme si to navzajem zkontrolovali a tazateli samozrejme neukazali .. at se taky neco aspon zkusi naucit sam :)

(bez kompletniho zadani sme to meli oba do 7minut i s vybavovanim se na netu)

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
pazdy0
Návštěvník
15. 10. 2013   #5
-
0
-

Tak určitě vy už nějakou dobu programujete.. Já programuji ani ne měsíc :) Tak ještě nemám tolik zkušeností :)

Nahlásit jako SPAM
IP: 2001:718:1001:6a4:34:8f72...–
KIIV
~ Moderátor
+43
God of flame
15. 10. 2013   #6
-
0
-

#5 pazdy
chce si to hlavne umet predstavit... vedet ze  cin >> a; nacte jeden libovolnej znak do promenne a... a ze kdyz todle napises 3x tak budes muset zadat 3 znaky .. a pokud to nahodou zadas pokazdy do stejneho a, tak ze se ti to pokazdy prepise posledni hodnotou...

pokud chces dal neco testovat, tak musis pouzit promennou a ne to nejak obskurdne tahat z cin ...

jo a dobry je delat   if ('a' == znak) ...     kdyz udelas chybu jako tato:  if ('a' = znak)  tak se to ani nezkompiluje, protoze nemuzes do konstanty nacpat hodnotu znaku (o coz se = pokousi) - ale kdyz to udelas obracene:  if (znak = 'a') tak si prave prepsal znak na 'a' a jelikoz je to vetsi nez nula, tak se to i provede

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
pazdy0
Návštěvník
15. 10. 2013   #7
-
0
-

Tak už jsem si s tím díky pomoci Kenvela dokázal poradit, jen nevím jak napsat, aby když zadám jiní písmeno místo a, b, c na začátku, mi to napsalo "Nespravny vstup."... Nevím jakou podmínku udělat...

#define _USE_MATH_DEFINES
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
char menu;
double strana1;
double strana2;
double polomer;
double s;
double o;


    cout << "Zadejte rovinny obrazec, jehoz obsah a obvod chcete spocitat: a - ctverec, b - obdelnik, c - kruh" << endl;

   cin>>menu;


        switch(menu)
         {
    
          case 'a':
           {
             cout<<"Zadejte stranu ctverce:"<<endl;
             cin >> strana1;
        if (strana1<=0)
        {
            cout<<"Nespravny vstup."<<endl;
            return 0;
        }
        if ( !cin.good() )
        {
            cout<<"Nespravny vstup."<<endl;
            return 0;
        }
             s=strana1*strana1;
             o=4*strana1;
             cout.precision(4);
             cout << std::fixed;
             cout<<"Obsah ctverce je: "<<s<<endl;
             cout<<"Obvod ctverce je: "<<o<<endl;

            break;
           }
           case 'b':
            {
             cout<<"Zadejte strany obdelniku:"<<endl;
             cin>>strana1;
             cin>>strana2;
              if (strana1<=0 || strana2<=0)
        {
            cout<<"Nespravny vstup."<<endl;
            return 0;
        }
        if ( !cin.good() )
        {
            cout<<"Nespravny vstup."<<endl;
            return 0;
        }
             s=strana1*strana2;
             o=2*(strana1+strana2);
             cout.precision(4);
             cout << std::fixed;
             cout<<"Obsah obdelniku je: "<<s<<endl;
             cout<<"Obvod obdelniku je: "<<o<<endl;


              break;
             }
             case 'c':
            {
             cout<<"Zadejte polomer kruznice"<<endl;
             cin>>polomer;
              if (polomer<=0)
        {
            cout<<"Nespravny vstup."<<endl;
            return 0;
        }
        if ( !cin.good() )
        {
            cout<<"Nespravny vstup."<<endl;
            return 0;
        }
             s=M_PI*(polomer*polomer);
             o=2*M_PI*polomer;
             cout.precision(4);
             cout << std::fixed;
             cout<<"Obsah kruznice je: "<<s<<endl;
             cout<<"Obvod kruznice je: "<<o<<endl;


              break;
             }
          }


    return 0;
}
Nahlásit jako SPAM
IP: 2001:718:1001:6a4:34:8f72...–
KIIV
~ Moderátor
+43
God of flame
15. 10. 2013   #8
-
0
-

switch ma i default: vetev... kam se dostane kdyz to zadny case nepokryva

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
pazdy0
Návštěvník
15. 10. 2013   #9
-
0
-

Nechápu váš příspěvek.. Šlo by to napsat nějak srozumitelněji?.. Děkuji moc

Nahlásit jako SPAM
IP: 2001:718:1001:6a4:34:8f72...–
KIIV
~ Moderátor
+43
God of flame
15. 10. 2013   #10
-
+2
-
Zajímavé

   

switch (...) {
    case 'a':
      ...
      break;
    ...

    default:
      cout << "chybny vstup!\n";
      break;
}

strucneji to uz asi nejde

Nahlásit jako SPAM
IP: 62.216.147.–
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, 45 hostů

Podobná vlákna

Obvod ctverce VB — založil Mike007

Vhodný obvod — založil rosssak

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ý