Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Dorojimasis su Wrong Input, bei C biblioteku derinimas su C++

Parašė DieHardG33k· 2012 Bal. 25 17:04:24
#1

Sveiki. As tik megejas, nesu baiges jokiu mokslu(vis dar vidurinej) ir programuoju tik savo malonumui. todel mano klausimai gali but keisti.

Zodziu vis karts nuo karto darau programeles mokyklines C++. Man bedarant tas programeles ir jas isbandant didziausias pyktis sukyla kai ivedus netinkama duomeni programa uzluzta ir pradeda begalo "suktis" :D As nesu dar tiek pazenges, kad ypatingai gerai suprasciau visokius Error_Catching ar Exception_Handling ar kazkas panasaus, ten man visko per daug kolkas ir net nenoriu gilintis kuri laika i tai. .. Taigi ziuredamas Harvardo paskaitas C kalbos suzinojau jog C kalboje buvo naudojama biblioteka sc50 (computer science 50) ivedimui ten naudoja ne cin (nezinau ar cin isvis buvo C kalboj bet ne tame esme)
o integravus ta biblioteka atsiranda galimybe pvz:

f = GetFloat(); // zodziu sita eilute leidzia ivest kintamaji f

nu ir priklausomai nuo to kokio tipo f buvo nustatytas, meginant ivest kitokio tipo kintamaji, programa neuzluzta, o ispeja kad ivestas netinkamas dalykas ir leidzia pakartoti. Na gi visaip meginau ieskot(kogero nemoku ieskot) kokio nors tokio pat paprasto budo kaip apsisaugot nuo uzluzimo wrong input atveju.
Ir radau daug maz kaip galima apsisaugot, pavyzdini koduka, palyginus su visais kitais rastais pavyzdziais tai sitas gana trumpas ir labai graziai veikiantis stai:


#include <iostream>
#include <windows.h>
using namespace std;
int main(){
int x=0;
while (x == 0){
	float skaicius;
	 bool tinkamumas = false;
 
	while (!tinkamumas)
	{
		tinkamumas = true; //Jeigu cin bus float
		cout << "Duok man skaiciu: ";
		cin >> skaicius;
		if(cin.fail())
		{
			cin.clear();
			cin.ignore();
			cout << "As juk prasiau taves skaiciaus." << endl;
			tinkamumas = false; //cin nera float
		}
 
	}
	cout << "Aciu, tu man davei skaiciu: " << skaicius << endl;
    cout << "Kai noresi testi paspausk betkuri klavisa..."<< endl;
	system("PAUSE");
 
    }
}
 


taciau tiek salygu prirasyt kiekvienoje vietoje kur reikia kazka ivest yra per daug. Taigi mano pagrindinis klausimas yra toks:

Ar yra C++ kalboje kokia nors panasi biblioteka ar koks seip panasus ir paprastas budas apsisaugot nuo uzluzimo wrong input metu kaip C kalboje?

Sekantis klausimas: ar galima ta pacia C kalboje naudota biblioteka cs50 kaip nors integruot i savo C++ programa ?

Parašė Kižas· 2012 Bal. 25 18:04:52
#2

Mnau atsakyma rastum cia http://programavimopamokos.net/i...as=CPPMeta

Parašė DieHardG33k· 2012 Geg. 5 20:05:18
#3

http://3dev.lt/tv#all pamokos cia idomesnes, o linkas kuri tu davei lievas. Gali isivaizduot, kad atsakei i mano klausima

Parašė Faitas.· 2012 Geg. 5 23:05:04
#4

Sveikas,

Nežinau kaip C kalboje, bet Python'e arba PHP'e gali pasirašyti biblioteką tam dalykui :) Pavyzdžiui susikuri klasę su vienu metodu, kuris tikrina ar input'as gerai įvestas, jei viskas atitinka, gražina true, jei ne - false... Tada nereikėtų ant kiekvieno kampo tavo to pavyzdinio kodo rašyti, būtų kur kas greičiau :) Na su tuo try-catch C kalboje biški ne kas, kitose kur kas lengvesnis reikalas...