|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
|
[C++] Mi bypassa system("pause") :O
Ieri stavo facendo uno dei miei soliti programmi scemi e ho notatato che se lo faccio cosi:
Codice:
#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;
}
}
}
Ho dovuto ripiegare cosi: Codice:
#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");
}
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov) Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth) |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
|
UP...e pensandoci bene per fare mb dai byte si fa /1024/1024
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov) Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
|
E dai
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov) Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2000
Messaggi: 551
|
Ti spiego perchè non ti risponde nessuno
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! 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. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2002
Città: Cagliari
Messaggi: 844
|
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
__________________
Non ho paura dei computer, ma della loro eventuale mancanza. (Asimov) Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C. (Firth) |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:05.



















