Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-10-2008, 20:26   #1
mto89
Senior Member
 
L'Avatar di mto89
 
Iscritto dal: Jan 2007
Città: villa verucchio
Messaggi: 1921
[c] aiutino stesura codice

questo frammento che segue dovrebbe simulare una gara tra 4 macchinine random, il fatto è che dovrebbero arrivare tutte ad esempio alla colonna 50 e farmarsi li! invece se metto la condizione del while <50 visualizza solo le prime mosse, se la aumento tipo a 500 avanza e non capisco con che criterio! non è che mi date una mano?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>


int main()

{
int i,j;
int posizioni[4]={0,0,0};

srand (time(NULL));

do
{
system("cls");

for (i=0;i<4;i++)
{
posizioni[i]+=rand()%4;
for (j = 0; j < (posizioni[i]); j++)
{
printf(" ");
}

printf("%d\n",i);
}
Sleep(300);
}
while (posizioni[i]<200);

system("pause");
return 0;

}

inoltre vorrei sapere come assegnare il numero della macchinina che è arrivata prima a una variabile!
__________________
CPU: Amd Phenom II 955--MB: Gigabyte GA-890GPA-UD3H--RAM:4 GB DDR3--SV: ATI Radeon HD 5770--HD: Western Digital Caviar Black 500 gb--ALI:: Corsair 650w--MONITOR: SyncMaster P2270--ROUTER: Netgear DG834G--SO: Win 7 Professional 64 bit

Ultima modifica di mto89 : 27-10-2008 alle 20:29.
mto89 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 20:50   #2
royaleagle
Senior Member
 
L'Avatar di royaleagle
 
Iscritto dal: Jan 2007
Messaggi: 1237
Codice:
int posizioni[4]={0,0,0,0};
Intanto correggi questo
__________________
59 trattative ok (ultimo: IntoTrouble)
royaleagle è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 21:18   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2791
Devi cambiare la condizione di uscita, così come è ora dovrebbe dare anche errore perché vai a leggere un elemento dell'array che non esiste. Tu vuoi uscire quando tutti hanno raggiunto il traguardo, cioè quando tutte le posizioni (dalla zero alla tre) sono maggiori (o maggiori-uguali) del traguardo.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 21:49   #4
mto89
Senior Member
 
L'Avatar di mto89
 
Iscritto dal: Jan 2007
Città: villa verucchio
Messaggi: 1921
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Devi cambiare la condizione di uscita, così come è ora dovrebbe dare anche errore perché vai a leggere un elemento dell'array che non esiste. Tu vuoi uscire quando tutti hanno raggiunto il traguardo, cioè quando tutte le posizioni (dalla zero alla tre) sono maggiori (o maggiori-uguali) del traguardo.
ah grazie, qundi è sufficiente che metto maggiore di cinquanta?
__________________
CPU: Amd Phenom II 955--MB: Gigabyte GA-890GPA-UD3H--RAM:4 GB DDR3--SV: ATI Radeon HD 5770--HD: Western Digital Caviar Black 500 gb--ALI:: Corsair 650w--MONITOR: SyncMaster P2270--ROUTER: Netgear DG834G--SO: Win 7 Professional 64 bit
mto89 è offline   Rispondi citando il messaggio o parte di esso
Old 27-10-2008, 22:14   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2791
Quote:
Originariamente inviato da mto89 Guarda i messaggi
ah grazie, qundi è sufficiente che metto maggiore di cinquanta?
Tutte le posizioni devono essere maggiori di 50. Prova a scriverlo
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 13:33   #6
mto89
Senior Member
 
L'Avatar di mto89
 
Iscritto dal: Jan 2007
Città: villa verucchio
Messaggi: 1921
no se metto >50 va avanti senza fine! ho modificato così:

#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>


int main()

{
int i,j;
int posizioni[4]={0,0,0,0}; // Posizioni cavalli
int flag=0; // Variabile di verifica arrivo
int k =0;
int traguardo=20; // colonna di arrivo
int winner=0; // Numero vincitore

srand (time(NULL));

while (flag!=1)
{
system("cls");

for (i=0;i<4;i++)
{
posizioni[i]+=rand()%3;

for (j=0; j<(posizioni[i]); j++)
{
printf(" ");
}

printf("%d\n",i);
}

Sleep(300);

for (k=0;k<4;k++); // verifica macchine da 1 a 4
{
if (posizioni[k]>=traguardo)
{
flag=1;
winner=k;
}
}
}

printf("ha vinto %d",winner);

system("pause");
return 0;

}




Facendo cosi appare la prima serie random di valori e si ferma! Ma proprio non capisco il perchè! mi sapete aiutare?
__________________
CPU: Amd Phenom II 955--MB: Gigabyte GA-890GPA-UD3H--RAM:4 GB DDR3--SV: ATI Radeon HD 5770--HD: Western Digital Caviar Black 500 gb--ALI:: Corsair 650w--MONITOR: SyncMaster P2270--ROUTER: Netgear DG834G--SO: Win 7 Professional 64 bit

Ultima modifica di mto89 : 28-10-2008 alle 14:13.
mto89 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 14:24   #7
royaleagle
Senior Member
 
L'Avatar di royaleagle
 
Iscritto dal: Jan 2007
Messaggi: 1237
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>


int main()

{
int i,j;
int posizioni[4]={0,0,0,0};

srand (time(NULL));


while (posizioni[0] < 50 && posizioni[1] < 50 && posizioni[2] < 50 && posizioni[3] < 50){
    system("cls");
    for (i=0;i<4;i++){
        posizioni[i]+=rand()%4;
        for (j = 0; j < (posizioni[i]); j++)
            printf(" ");

        printf("%d\n",i);
    }
    Sleep(300);
}
system("pause");
return 0;

}
Ti ho corretto il primo codice che avevi postato, la simulazione è corretta.
Cosa non ti torna di preciso?
__________________
59 trattative ok (ultimo: IntoTrouble)
royaleagle è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 15:12   #8
mto89
Senior Member
 
L'Avatar di mto89
 
Iscritto dal: Jan 2007
Città: villa verucchio
Messaggi: 1921
tenta e ritenta ecco la versione finale che funziona e segnala correttamente chi vince alla lnea del traguardo.
Pero c'è un grosso problema: io vorrei sapere anche chi è arrivato secondo, terzo e quarto, insomma tutta la classifica, però proprio non riesco a farlo andare! mi sapreste consigliare? inoltre se avete notato se ad esempio sia la macchina 2 che 3 arrivano oltre il traguardo la vittoria è assegnata ovviamente a quella più vicina alla fine del ciclo ovvero la 3!


questo programma simula un gioco di corse in c.
Lo avevo proposto in altra vesta giorni fa.
Vorrei sapere come modificare questo codice in modo che venga visualizzato l'intero ordine di arrivo, inoltre che venga gestito il pari merito.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

int main()

{
int i,j;
int posizioni[4]={0,0,0,0}; // Posizioni auto
int flag=0; // Variabile di verifica arrivo
int traguardo=8; // colonna di arrivo
int winner=0; // Numero vincitore

srand (time(NULL));

while (flag!=1)
{
system("cls");

for (i=0;i<4;i++)
{
posizioni[i]+=rand()%3;

for (j=0; j<(posizioni[i]); j++)
{
printf(" ");
}

printf("%d\n",i);

if (posizioni[i]>=traguardo)
{
flag=1;
winner=i;
}
}

Sleep(300);
}

printf("ha vinto %d\n",winner);

system("pause");
return 0;

}
__________________
CPU: Amd Phenom II 955--MB: Gigabyte GA-890GPA-UD3H--RAM:4 GB DDR3--SV: ATI Radeon HD 5770--HD: Western Digital Caviar Black 500 gb--ALI:: Corsair 650w--MONITOR: SyncMaster P2270--ROUTER: Netgear DG834G--SO: Win 7 Professional 64 bit
mto89 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 17:43   #9
royaleagle
Senior Member
 
L'Avatar di royaleagle
 
Iscritto dal: Jan 2007
Messaggi: 1237
Togli quel
Codice:
winner = i;
perchè può accadere che più automobili taglino contemporaneamente il traguardo: in questo caso ogni auto nel ciclo for entra nel blocco if e cambia il codice sopra riportato.

Fatto questo, fuori dal while metti un blocco di if che valuti l'ordine relativo degli elementi del vettore posizioni in modo da stabilire un ordine e quindi la classifica che cercavi.

Ad esempio un frammento può essere
Codice:
if(posizioni[0] > posizioni[1] && posizioni[1] > posizioni[2] && posizioni[2] > posizioni[3]) winner = 0;
Tieni conto anche del fatto che possono esserci più vincitori!!
__________________
59 trattative ok (ultimo: IntoTrouble)
royaleagle è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 21:24   #10
mto89
Senior Member
 
L'Avatar di mto89
 
Iscritto dal: Jan 2007
Città: villa verucchio
Messaggi: 1921
grazie della'iuto, infatti ho notato che il winner non funzia!
Però avevo avuto pure io l'idea del controllo if alla fine, solo che dovrei elencare ogni singola possibilità, a me serve invece qualcosa di più "snello", in quanto il numero di macchine che partecipano possa essere aumentato senza dover riscrivere righe di codice, pensavo tipo a un controllo con un array, ma non ho avuto idee, confido in voi!
__________________
CPU: Amd Phenom II 955--MB: Gigabyte GA-890GPA-UD3H--RAM:4 GB DDR3--SV: ATI Radeon HD 5770--HD: Western Digital Caviar Black 500 gb--ALI:: Corsair 650w--MONITOR: SyncMaster P2270--ROUTER: Netgear DG834G--SO: Win 7 Professional 64 bit
mto89 è offline   Rispondi citando il messaggio o parte di esso
Old 28-10-2008, 23:49   #11
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2791
Fai una funzione a parte che lavori su un array generico di n elementi.

PS: quando posti il codice usa il tag [code] così mantieni l'indentazione
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 06:13   #12
mto89
Senior Member
 
L'Avatar di mto89
 
Iscritto dal: Jan 2007
Città: villa verucchio
Messaggi: 1921
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Fai una funzione a parte che lavori su un array generico di n elementi.

PS: quando posti il codice usa il tag [code] così mantieni l'indentazione
si ma il pèroblema è che quando termina il ciclo for a me rimane sempre l'ultimo elemento del array, quindi non so come procedere
Perchè comunque in una funzione devo fare per forza in modo che ci sia un numero sempre uguale di macchine vero?
__________________
CPU: Amd Phenom II 955--MB: Gigabyte GA-890GPA-UD3H--RAM:4 GB DDR3--SV: ATI Radeon HD 5770--HD: Western Digital Caviar Black 500 gb--ALI:: Corsair 650w--MONITOR: SyncMaster P2270--ROUTER: Netgear DG834G--SO: Win 7 Professional 64 bit
mto89 è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2008, 09:24   #13
royaleagle
Senior Member
 
L'Avatar di royaleagle
 
Iscritto dal: Jan 2007
Messaggi: 1237
Potresti usare questo algoritmo che è semplice semplice, modificandolo opportunamente per mantenere una relazione tra gli identificatori delle automobili e gli elementi di posizioni.

http://www.personal.kent.edu/~rmuham...ectionSort.htm
__________________
59 trattative ok (ultimo: IntoTrouble)
royaleagle è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
AMD svela la roadmap EPYC fino al 2030: ...
Il PC che sostituisce il cloud: la grand...
La situazione di ULA per il razzo spazia...
Razzo spaziale cinese Lunga Marcia 3B &e...
ROCm.ai: AMD integra assistenti AI e nuo...
Phanteks XT M5, V5 e V5-LCD disponibili:...
Geely e Ford insieme per l'Europa: firma...
Geekbench 7 è disponibile e cambi...
Data center e cavi sottomarini: pronta u...
Usare la lingua come un mouse: MouthPad ...
IA agentica: la corsa all'implementazion...
No, George Russell non è bollito: ecco c...
HONOR cambia logo: il nuovo volto dell'a...
Cina: corsa ad accaparrarsi le CPU serve...
Giga in Europa e tariffe extra-UE, facci...
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: 02:26.


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