C++ nepochopeni fce – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

C++ nepochopeni fce – C / C++ – Fórum – Programujte.comC++ nepochopeni fce – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Franceq+1
Stálý člen
14. 8. 2011   #1
-
0
-

Zdravím, můj problém spočívá v tom, že jsem napsal fci, která nefunguje, tak jak bych chtěl a já se nyní ptám, kde je problém. Dělá to, že když jako vztup dám několik písmen za sebou (např. aaaa), tak to vypíše chybovou hlášku tolikrát, kolik je tam zadaných písmen. Jinak fce má dělat to, že veme int a nic jinyho jako vztup, při neplatném vztupu vypíše chybovou hlášku a vyzve k opakování akce. 

Fce vypadá následovně:

void vztup_parametr ()
{
     int vztup;
     cin >> vztup;
     while (!cin)
     {
              cout << "Neplatny vztup! Zadejte platny vztup: ";
              cin.clear();
              cin.get();
              vztup_parametr();
     }
}

Nahlásit jako SPAM
IP: 31.133.8.–
street punk+1
Návštěvník
14. 8. 2011   #2
-
+2
-
Zajímavé

#1 Franceq
Ty ale chceš, aby ti tá funkcia aj vracala to čo tam vložíš, tak prečo používaš void

a ja cin.clear() používam takto, keď zadám dačo iné

cin.clear()
while (cin.get() != '\n')
	continue;
Nahlásit jako SPAM
IP: 188.112.122.–
Franceq+1
Stálý člen
14. 8. 2011   #3
-
0
-

#2 street punk
Opravil jsem na: 

int vztup_parametr ()
{
    int parametr;
    cin >> parametr;
    while (!cin)
    {
          cin.clear();
          while (cin.get() != '\n')
          {
                        continue;
          }
          cout << "Chybny vztup, zadavejte znovu: ";
          vztup_parametr();
    }
    return parametr;
}

vraci to neco podivneho, ale minuly problem je vychytany...

Nahlásit jako SPAM
IP: 31.133.8.–
street punk+1
Návštěvník
15. 8. 2011   #4
-
0
-

#3 Franceq
Neviem či je to spravené najlepšie (lebo aj ja som začiatočník a akurát sa len učím funkcie). Neviem či si to chcel priamo takto, ale keď zadáš niečo iné ako číslo, tak ti to stále vypíše, že si zle zadal a máš zadať znova. A až keď zadáš číslo, tak ti vypíše že hodnota je to číslo.

#include <iostream>
int vztup_parametr (int a);

int main ()
{
using namespace std;
int vstup;
cout<<"Zadaj hodnotu: ";
cin>>vstup;
vztup_parametr(vstup);
system ("pause");
return 0;
}

int vztup_parametr (int a)
{
using namespace std;
   
  while (!cin)
  {
     cin.clear();
     while (cin.get() != '\n')
     continue;
     cout << "Chybny vztup, zadavejte znovu: ";
     cin>>a;
  }
cout<<"hodnota je: "<<a<<endl;
    return a;
}
Nahlásit jako SPAM
IP: 188.112.122.–
Franceq+1
Stálý člen
15. 8. 2011   #5
-
0
-

dik, uz jsem to vyresil....trochu jinak ale funguje to dobre, jediny co to nerozkouse je to, kdyz vztup jsou pismena a cisla dohromady ale co se da delat..:-)

Nahlásit jako SPAM
IP: 31.133.8.–
crazy
~ Moderátor
+10
Grafoman
15. 8. 2011   #6
-
0
-

#5 Franceq
OT: co znamená vztup? 

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
street punk+1
Návštěvník
15. 8. 2011   #7
-
0
-

#5 Franceq
No lebo cin ti bude načítavať po biely znak. Takže keď zadáš prvé písmeno, tak ti hodí hlášku, že si zle zadal, tak zadaj znova. Lenže, keď prvé zadáš číslo a potom ďalšie čísla (samozrejme v rozsahu int) a medzi to dáš nejaké písmeno, tak program ti bude čítať len po to písmeno, keďže to nieje typu int. Napríklad 256j589 ti vypíše číslo 256. Keď chceš, aby ti opravovalo tie písmená (vypísalo, že si zadal zlú hodnotu, a aby si sa opravil), tak treba to spraviť cez pole. Potom si to "j "  budeš vedieť opraviť.

Nahlásit jako SPAM
IP: 188.112.86.–
Franceq+1
Stálý člen
16. 8. 2011   #8
-
0
-

jo to vím, je mně jasné, že a jak se to dá opravit, ale já jsem se snažil vytěžit maximum z if(!cin)

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

Podobná vlákna

Skok z fce do fce — založil Fcelik

Fce — založil Dave-CZ

Fce system — založil kejv

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ý