PDA

View Full Version : [C++] Mi bypassa system("pause") :O


Louder Than Hell
21-06-2003, 10:58
Ieri stavo facendo uno dei miei soliti programmi scemi e ho notatato che se lo faccio cosi:

#include <iostream.h>
#include <alloc.h>
#include <stdlib.h>
#include <windows.h>

main(){
int mem=2000000000,def=1000000000;
int*blocco;
long double disp;
while(1){
if((blocco=(int*)malloc(mem))==NULL){
cout<<"Non e' possibile allocare "<<mem<<" byte in memoria! Provo con meno byte!"<<endl;
mem=mem-def;
}
else{
if(def==1){
cout<<endl<<"La ricerca e' finita:"<<endl<<"il tuo sistema dispone di "<<mem<<" kb di memoria!"<<endl<<endl;
system("pause");
exit(0);
}
cout<<"Posso allocare "<<mem<<" byte!"<<endl;
mem=mem+def;
cout<<"Abbasso la definizione di ricerca da "<<def;
def=def/10;
cout<<" a "<<def<<endl;
free(blocco);
cout<<"Libero la memoria"<<endl;
}
}
}
Non aspetta system("pause"); e non si ferma neanche se metto cin>>def;! Come è possibile!??????!?!???!??!?

Ho dovuto ripiegare cosi:
#include <iostream.h>
#include <alloc.h>
#include <stdlib.h>
#include <windows.h>

main(){
int mem=2000000000,def=1000000000;
int*blocco;
bool carryon=true;
long double disp;
while(carryon){
if((blocco=(int*)malloc(mem))==NULL){
cout<<"Non e' possibile allocare "<<mem<<" byte in memoria! Provo con meno byte!"<<endl;
mem=mem-def;
}
else{
if(def==1){
carryon=false;
disp=mem;
disp=disp/1000000;
}
cout<<"Posso allocare "<<mem<<" byte!"<<endl;
mem=mem+def;
cout<<"Abbasso la definizione di ricerca da "<<def;
def=def/10;
cout<<" a "<<def<<endl;
free(blocco);
cout<<"Libero la memoria"<<endl;
}
}
cout<<endl<<"La ricerca e' finita:"<<endl<<"il tuo sistema dispone di "<<disp<<" MB di memoria!"<<endl<<endl;
system("pause");
}

Qualcuno mi spiega perchè? :eek:

Louder Than Hell
21-06-2003, 14:56
UP...e pensandoci bene per fare mb dai byte si fa /1024/1024 :)

Louder Than Hell
22-06-2003, 18:30
E dai :cry:

verloc
23-06-2003, 16:58
Tu speri che un Sant'Uomo in periodo di esami si legga
una sessantina di righe :

1)Per scoprire prima quale è la tua domanda.
2)Dove è l'istruzione su un intero programma che genera l'errore
avendo come aiuto un SECONDO PROGRAMMA!

:D

Una regola non scritta (a volte) dei forums di programmatori è
che non si posta un intero programma per chiedere cosa non va,
a meno che non sia fatto di 7-8 righe al massimo e si è newbie.

Devi essere + specifico :
Considerala come una cosa che oggi hai imparato. :)

Louder Than Hell
23-06-2003, 18:54
Grazie :)

Allur retifico il problema è questo: se metto un while(1) e all'interno di esso un if dentro quando lancio il programma ignora sia system("pause") sia cin>> e va avanti :confused: