| 	
	
	
		
		|||||||
  | 
		
| 
 | 
![]()  | 
	
	
| 
		 | 
	Strumenti | 
| 		
			
			 | 
		#1 | 
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Feb 2004 
				Città: venezia 
				
				
					Messaggi: 1318
				 
				
				
				
				 | 
	
	
	
	
		
			
			 
				
				Da frammento di codice individuale trovare risultato
			 
			
		Ciao a tutti. Stavo svolgendo un'esercizio dove mi si chiede da questo frammento di codice di ricavare la risposta esatta: 
		
	
		
		
		
		
			Fr codice: int num, dato,conta num=4 dato=2 per conta=1 a conta<=num scrivi (dato) dato=dato+num num+=1 fine per devo scegliere tra le risposte: a) 2688 b)ciclo infinito c)2222 d)261014 In c++ ho scritto questo codice: #include <iostream> using namespace std; int main() { int num; int dato; int conta; num=4; dato=2; for (conta= 1;conta<= num;conta=conta+1) { cout << dato << endl; dato=dato+num; num+=1; } system("Pause"); } Come risposta mi da un ciclo infinito (spero che sia giusta). Ho dovuto creare anche lo stesso codice in Visual Basic ma qui non riesco a venirne a capo. Questo è il mio codice: Module VBModule Sub Main () dim num,dato,conta As integer num=4 dato=2 For conta =1 To num Step dato=dato+num num+=1 Console.WriteLine ("dato = {0}",dato) Next End Sub End Module Come lo eseguo non mi da un ciclo infinito ma solo: 6-11-17-24 Potreste aiutarmi a capire dove sbaglio visto che sono alle prime armi. Grazie mille 
				__________________ 
		
		
		
		
	
	cpu: CoreDuo E6750 Vga: Geforce 8800 gtx Alimentatore: Corsair Hw 620 watt Case: Cool master Stacker Ram: 2gb 800 mhz Extreme Hard Disk: Wd Raptor 10000 rpm  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Apr 2001 
				Città: Milano 
				
				
					Messaggi: 3736
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		non sono molto convinto di quello che ti ho evidenziato in grassetto 
		
	
		
		
		
		
		
	
	Sub Main () dim num,dato,conta As integer num=4 dato=2 For conta =1 To num Step dato=dato+num num+=1 Console.WriteLine ("dato = {0}",dato) Next End Sub End Module For conta =1 To num num = num + 1  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Feb 2004 
				Città: venezia 
				
				
					Messaggi: 1318
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		Per prima cosa grazie per la risposta. Ho provato a mettere come suggerito:  
		
	
		
		
		
		
			For conta =1 To num num = num + 1 eliminando Step e modificando num+=1 in num = num + 1 ma niente da fare 
				__________________ 
		
		
		
		
	
	cpu: CoreDuo E6750 Vga: Geforce 8800 gtx Alimentatore: Corsair Hw 620 watt Case: Cool master Stacker Ram: 2gb 800 mhz Extreme Hard Disk: Wd Raptor 10000 rpm  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: May 2005 
				Città: Trieste 
				
				
					Messaggi: 2285
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		nono ri-leggi meglio la parte in grassetto di misterx...  
		
	
		
		
		
		
			chi è l'indice nel for? viene gestito correttamente? cosa rappresenta num? deve cambiare o no? 
				__________________ 
		
		
		
		
	
	  neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w    
			trattative concluse : tante...  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#5 | |
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Apr 2005 
				
				
				
					Messaggi: 3248
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 Poniamo che compili a 64 bit, un int raggiunge al massimo il valore 9.223.372.036.854.775.807 quindi non appena fai un "+1" il valore "fa il giro" è diventa -9.223.372.036.854.775.807 In quel momento quindi conta sarà sicuramente maggiore di num, e quindi il ciclo termina.  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#6 | 
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Feb 2004 
				Città: venezia 
				
				
					Messaggi: 1318
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		Ragazzi penso di esserci riuscito grazie ai vostri suggerimenti (ma non sono sicuro al 100%).  
		
	
		
		
		
		
			Questo è quello che ho fatto: For conta=conta To num step conta dato=dato+num num+=1 Console.WriteLine ("dato = {0}",dato) Adesso mi da il ciclo infinito. 
				__________________ 
		
		
		
		
	
	cpu: CoreDuo E6750 Vga: Geforce 8800 gtx Alimentatore: Corsair Hw 620 watt Case: Cool master Stacker Ram: 2gb 800 mhz Extreme Hard Disk: Wd Raptor 10000 rpm  | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#7 | |
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Feb 2004 
				Città: venezia 
				
				
					Messaggi: 1318
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 
				__________________ 
		
		
		
		
	
	cpu: CoreDuo E6750 Vga: Geforce 8800 gtx Alimentatore: Corsair Hw 620 watt Case: Cool master Stacker Ram: 2gb 800 mhz Extreme Hard Disk: Wd Raptor 10000 rpm  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#8 | 
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Apr 2005 
				
				
				
					Messaggi: 3248
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 
		Modifica il tuo programma in c++ e stampa a video sia il valore di conta che di num e lascialo andare. (hint: magari fai partire num da 2^31 che ci impiega meno)
		 
		
	
		
		
		
		
		
	
	 | 
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
| 		
			
			 | 
		#9 | |
| 
			
			
			
			 Senior Member 
			
		
			
			
			Iscritto dal: Apr 2001 
				Città: Milano 
				
				
					Messaggi: 3736
				 
				
				
				
				 | 
	
	
	
	
		
		
		
		 Quote: 
	
 Non ho a disposizione un ambiente di sviluppo VB, ho provato un VBA per Excel in una vecchia versione del 2000 e num+=1 non è supportata, magari 20 dopo si? Ma nemmeno il non specificare il valore di Step non è supportato, devi digitare qualcosa. Se non metti nulla, per default prende Step 1. Per evitare errori negli esercizi, usa il solito metodo passo passo con carta e penna e fai la simulazione con solita tabella che sicuramente ti hanno insegnato a costruire nella quale elenchi per ogni passo, il contenuto delle variabili. Perdi molto ma molto meno tempo.  | 
|
| 
		
 | 
	
	
	
		
		
		
		
		
		
			 
		
		
		
		
		
		
			
			
		
	 | 
		
		  
	   | 
| Strumenti | |
		
  | 
	
		
  | 
Tutti gli orari sono GMT +1. Ora sono le: 02:07.









		
		
		


 
 







