|
|
|
|
Strumenti |
01-12-2021, 22:22 | #1 |
Senior Member
Iscritto dal: Feb 2004
Città: venezia
Messaggi: 1313
|
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 |
02-12-2021, 07:58 | #2 |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
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 |
02-12-2021, 09:16 | #3 |
Senior Member
Iscritto dal: Feb 2004
Città: venezia
Messaggi: 1313
|
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 |
02-12-2021, 09:40 | #4 |
Senior Member
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2275
|
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... |
02-12-2021, 10:11 | #5 | |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2991
|
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. |
|
02-12-2021, 10:17 | #6 |
Senior Member
Iscritto dal: Feb 2004
Città: venezia
Messaggi: 1313
|
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 |
02-12-2021, 10:21 | #7 | |
Senior Member
Iscritto dal: Feb 2004
Città: venezia
Messaggi: 1313
|
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 |
|
02-12-2021, 12:14 | #8 |
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2991
|
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)
|
02-12-2021, 16:10 | #9 | |
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3594
|
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: 22:23.