Zákaz vkládání písmen a limit error – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zákaz vkládání písmen a limit error – C / C++ – Fórum – Programujte.comZákaz vkládání písmen a limit error – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
28. 5. 2008   #1
-
0
-

OLA

trápí mě 2 malé problémy doufám že by jste mi mohli pomoct :-)

1. netuším jak ošetřit abych nemohl do programu vkládat písmena či nějaké znaky

2. jak opravit následující error nikdo

c:\documents and settings\martin bernard\plocha\mb\ppj\ivt - program převod jednotek - full\hlavni.cpp(13) : warning C4067: unexpected tokens following preprocessor directive - expected a newline
C:\Documents and Settings\Martin Bernard\Plocha\MB\PPJ\IVT - Program převod jednotek - full\hlavni.cpp(1431) : fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit
Error executing cl.exe.

prevody.exe - 1 error(s), 1 warning(s)


Nahlásit jako SPAM
IP: 88.100.70.–
Reklama
Reklama
Bald3rr0
Super člen
28. 5. 2008   #2
-
0
-

To ifeeltipsy : Určitě to pude i nějak "líp", ale tak třeba pomůže :)

#include <iostream>

#include <cctype>

using std::cout;
using std::cin;

int main()
{
int x;

do {
cout << "Zadejte cislo: ";

x = cin.get();
cin.get();

if (isdigit(x))
cout << "Uspesne nacteno!";
else
cout << "Nezadali jste cislo, zadejte znovu!\n";

cin.clear();

} while(!(isdigit(x)));

cin.get();
cin.get();

return 0;
}

Nahlásit jako SPAM
IP: 82.100.0.–
28. 5. 2008   #3
-
0
-



case 1:
cout << "Zadej dlane, ktere prevedu na centimetry : ";
double dlane;
dlane = 0;
cin >> dlane;
cout << dlane << " dlani je " << dlane*8 << " cm (1 m = 8 dlani, zadane cislo * 8)" << endl;
break;


spíš jak to vložím sem...
nebo jestli to jde nadefinovat nějak globálně pro všechny...
netuším :-(

alě děkuju

Nahlásit jako SPAM
IP: 88.100.70.–
Bald3rr0
Super člen
28. 5. 2008   #4
-
0
-

To ifeeltipsy :
Vytvoříš si fci

bool kontrolavstupu() {

double dlane;
cout << "Zadej dlane, ktere prevedu na centimetry: ";

if(!(cin >> dlane)) {
cout << "Spatne Zadano!\n";
cin.clear();
cin.get();
return false;
}
else {
cout << dlane << " dlani je " << dlane*8 << " cm (1 m = 8 dlani, zadane cislo * 8)\n";
return true;
}
}


Pak do case připíšeš:
do {

if(kontrolavstupu())
vstup = true;
else
vstup = false;
} while (!vstup);


Nezapomeň někam nadeklarovat vstup (nejlépe do main)
bool vstup;

Nahlásit jako SPAM
IP: 82.100.0.–
4. 6. 2008   #5
-
0
-

Bald3rr napsal:
To ifeeltipsy :
Vytvoříš si fci

bool kontrolavstupu() {
double dlane;
cout << "Zadej dlane, ktere prevedu na centimetry: ";

if(!(cin >> dlane)) {
cout << "Spatne Zadano!
";
cin.clear();
cin.get();
return false;
}
else {
cout << dlane << " dlani je " << dlane*8 << " cm (1 m = 8 dlani, zadane cislo * 8)
";
return true;
}
}


Pak do case připíšeš:
do {
if(kontrolavstupu())
vstup = true;
else
vstup = false;
} while (!vstup);


Nezapomeň někam nadeklarovat vstup (nejlépe do main)
bool vstup;




problém je že těch case je přes 100...

šla by vytvořit spíše nějaká podmínka (např. IF), která ošetří vkládání písmen, kterou vložím mezi case a break podobně jak jsem ošetřil záporná čísla.



case 1:
cout << "Zadej dlane, ktere prevedu na centimetry : ";
double dlane;
dlane = 0;
cin >> dlane;
if (dlane < 0)
{
cerr <<"*** Nesmis vkladat zaporna cisla ***" << endl << endl;
cout <<"Pro navrat stiskni libovolnou klavesu" << endl << endl;
system ("pause");
system ("cls");
return main();
}
cout << dlane << " dlani je " << dlane*8 << " cm (1 m = 8 dlani, zadane cislo * 8)" << endl;
break;


Nahlásit jako SPAM
IP: 88.100.70.–
Bald3rr0
Super člen
4. 6. 2008   #6
-
0
-

To ifeeltipsy : Teď tě nějak nechápu, tu tvojí podmínku na záporná čísla tam máš 100x?

 case 1:                                                                   

cout << "Zadej dlane, ktere prevedu na centimetry : ";
double dlane;
dlane = 0;
cin >> dlane;

do { // Tady máš připsanou tu kontrolu mezi case a break
if(kontrolavstupu())
vstup = true;
else
vstup = false;
} while (!vstup);

if (dlane < 0)
{
cerr <<"*** Nesmis vkladat zaporna cisla ***" << endl << endl;
cout <<"Pro navrat stiskni libovolnou klavesu" << endl << endl;
system ("pause");
system ("cls");
return main();
}
cout << dlane << " dlani je " << dlane*8 << " cm (1 m = 8 dlani, zadane cislo * 8)" << endl;
break;


Takhle může být?

Nahlásit jako SPAM
IP: 82.100.0.–
4. 6. 2008   #7
-
0
-

Bald3rr napsal:
To ifeeltipsy : Teď tě nějak nechápu, tu tvojí podmínku na záporná čísla tam máš 100x?

 case 1:                                                                   
cout << "Zadej dlane, ktere prevedu na centimetry : ";
double dlane;
dlane = 0;
cin >> dlane;

do { // Tady máš připsanou tu kontrolu mezi case a break
if(kontrolavstupu())
vstup = true;
else
vstup = false;
} while (!vstup);

if (dlane < 0)
{
cerr <<"*** Nesmis vkladat zaporna cisla ***" << endl << endl;
cout <<"Pro navrat stiskni libovolnou klavesu" << endl << endl;
system ("pause");
system ("cls");
return main();
}
cout << dlane << " dlani je " << dlane*8 << " cm (1 m = 8 dlani, zadane cislo * 8)" << endl;
break;


Takhle může být?




šlo by všechno nadefinovat do tohoto jednoho case?

Nahlásit jako SPAM
IP: 88.100.70.–
5. 6. 2008   #8
-
0
-

Bald3rr napsal:
To ifeeltipsy : Teď tě nějak nechápu, tu tvojí podmínku na záporná čísla tam máš 100x?

 case 1:                                                                   

cout << "Zadej dlane, ktere prevedu na centimetry : ";
double dlane;
dlane = 0;
cin >> dlane;

do { // Tady máš připsanou tu kontrolu mezi case a break
if(kontrolavstupu())
vstup = true;
else
vstup = false;
} while (!vstup);

if (dlane < 0)
{
cerr <<"*** Nesmis vkladat zaporna cisla ***" << endl << endl;
cout <<"Pro navrat stiskni libovolnou klavesu" << endl << endl;
system ("pause");
system ("cls");
return main();
}
cout << dlane << " dlani je " << dlane*8 << " cm (1 m = 8 dlani, zadane cislo * 8)" << endl;
break;


Takhle může být?




můj program je právě konzolová aplikace a já v programování nejsem zrovna zběhlý, těch case je tam mnoho a já bych to potřeboval asi nadefinovat konkrétně do každého case...

kousek programu vypadá takto


if(menu_prevod == 7)															

{
cout << "Menu Sily:" << endl << endl << endl;
cout << "01 ... Kilopond na newtony" << endl;
cout << "02 ... Pound-force na newtony" << endl;
cout << "88 ... Zpet" <<endl;
cout << "99 ... Konec" << endl << endl;
cout << "Vyber si polozku z menu a zadej cislo dle vyberu:"<< endl;

int menu_sily;
cin >> menu_sily;

system ("cls");

switch(menu_sily)
{
case 1:
cout << "Zadej kilopondy, ktere prevedu na newtony : ";
double kilopondy;
kilopondy = 0;
cin >> kilopondy;
if (kilopondy < 0)
{
cerr <<"*** Nesmis vkladat zaporna cisla ***" << endl << endl;
cout <<"Pro navrat stiskni libovolnou klavesu" << endl << endl;
system ("pause");
system ("cls");
return main();
}
cout << kilopondy << " kilopondu je " << kilopondy*9.80665 << " N (1 N = 9.80665 kilopondu, zadane cislo * 9.80665)" << endl;
break;

case 2:
cout << "Zadej pound-force, ktere prevedu na newtony : ";
double pound_force;
pound_force = 0;
cin >> pound_force;
if (pound_force < 0)
{
cerr <<"*** Nesmis vkladat zaporna cisla ***" << endl << endl;
cout <<"Pro navrat stiskni libovolnou klavesu" << endl << endl;
system ("pause");
system ("cls");
return main();
}
cout << pound_force << " pound-forcu je " << pound_force*4.44822 << " N (1 N = 4.44822 pound-forcu, zadane cislo * 4.44822)" << endl;
break;

case 88:
return main ();
break;

case 99:
cout << "Pro ukonceni stisknete libovolnou klavesu" << endl;
return 0;
break;

default:
cout << "Spatny vyber" << endl;

return main();
break;
}
}



zkoušel jsem do toho case také vložit:


if (!isdigit(dlane))
{
cerr <<"Tohle neni cislo" << endl;
cin.clear();
cin.get();
return main();
}


když zadám jedno písmeno tak ho opraví a napíše ale když už zadám číslo tak ho považuje taky za písmeno a vyhodí chybnou hlášku taktéž


jsem rád že se mi aspoň někdo snaží pomoct... děkuju mockrát :-)

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

Podobná vlákna

Zákaz kopírování. — založil ospaly.stanislav

Limit — založil DuDo

Zakaz scroolovania stranky — založil marioff

Zákaz kopírovania aplikácie — založil delphak

Moderátoři diskuze

 

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý