Torna indietro   Hardware Upgrade Forum > Software > Programmazione

LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode
Hyper Mini LED con 2.304 zone, DisplayPort 2.1 e Dual Mode: 5K a 165 Hz oppure QHD a 330 Hz: LG propone un monitor da gioco ma dalla buona versatilità creativa, con prestazioni interessanti e un listino di 1.220 euro. Peccato l'alimentatore ingombrante
Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio
Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio
Motorola edge 70 Fusion FIFA World Cup 26 Edition porta la maglia iridata su uno smartphone accessibile: display Extreme AMOLED da 6,78 pollici a 144Hz, fotocamera Sony LYTIA 710 con moto ai, Snapdragon 7s Gen 3 abbinato a 8GB di RAM, batteria da 5200 mAh con ricarica TurboPower a 68W e certificazione IP68/IP69, il tutto in una veste PANTONE Silhouette con logo dorato a 24 carati, moto buds bass incluse in confezione e contenuti software dedicati ai Mondiali 2026
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati?
Dopo più di un anno dal primo test drive ci siamo rimessi al volante della Renault 5 E-Tech Electric, questa volta utilizzandola come prima auto per circa due settimane. Scoprite con noi se il progetto convince ancora
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-12-2021, 22:22   #1
Demonius
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
Demonius è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 07:58   #2
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
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
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 09:16   #3
Demonius
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
Demonius è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 09:40   #4
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2287
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...

-MiStO- è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 10:11   #5
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 3302
Quote:
Originariamente inviato da Demonius Guarda i messaggi
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
[..]
Come risposta mi da un ciclo infinito (spero che sia giusta).
Non sono stato dietro a leggere tutto ma NON può dare un ciclo infinito per un motivo semplice: il tipo INT ha un valore massimo.
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.
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 10:17   #6
Demonius
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
Demonius è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 10:21   #7
Demonius
Senior Member
 
Iscritto dal: Feb 2004
Città: venezia
Messaggi: 1318
Quote:
Originariamente inviato da Kaya Guarda i messaggi
Non sono stato dietro a leggere tutto ma NON può dare un ciclo infinito per un motivo semplice: il tipo INT ha un valore massimo.
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.
quindi ho sbagliato da principio ?
__________________
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
Demonius è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 12:14   #8
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 3302
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)
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2021, 16:10   #9
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da Demonius Guarda i messaggi
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

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.
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
Motorola edge 70 Fusion FIFA World Cup 26 Edition: un ottimo smartphone per i fan del calcio Motorola edge 70 Fusion FIFA World Cup 26 Editio...
Renault 5 elettrica al giudizio definitivo: solo stupore iniziale o premi meritati? Renault 5 elettrica al giudizio definitivo: solo...
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
OpenAI aggiorna ChatGPT: GPT-5.6 Luna ar...
Fine del supporto per Windows 10 LTSC: M...
Francia, Google lancia i riassunti IA: e...
Un'app gratuita monitora il connettore 1...
Voi comprate la GPU, MSI vi regala l'ali...
Le Big Tech della Silicon Valley accusat...
Dopo 18 anni, Condemned 2 arriva su PC g...
Un razzo Falcon 9 colpisce la Luna e Mus...
Google Maps può ordinare il pranzo al po...
Gmail chiude la porta agli indirizzi Yah...
E-bike con batteria di 15Ah e autonomia ...
GTA 6, il 27 agosto arriva l'Extended Lo...
PagoPA è adesso di Poligrafico dello Sta...
Dreame Aqua10 Ultra Roller Complete a 69...
Emulazione PS3: il 90% degli utenti sbag...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:21.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v