Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-01-2007, 12:31   #1
Piojolopez2406
Senior Member
 
L'Avatar di Piojolopez2406
 
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
..genero 2 numeri casuali in rand poi per copiarli l'uno sull'altro come faccio???

ragazzi ho da fare questo tipo di esercizio...dato un mazzetto di carte napoletane ordinato generare 1 coppia di carte e scambiarle l'una con l'altra....

ho creato uan struct carta:

struct carta
{
int valore;
char seme[8];
};

//definizione mazzetto ordinato
struct carta mazzetto[]={
{1,"bastoni"},{2,"bastoni"},{3,"bastoni"},{4,"bastoni"},{5,"bastoni"},
{6,"bastoni"},{7,"bastoni"},{8,"bastoni"},{9,"bastoni"},{10,"bastoni"},
{1,"coppe"},{2,"coppe"},{3,"coppe"},{4,"coppe"},{5,"coppe"},
{6,"coppe"},{7,"coppe"},{8,"coppe"},{9,"coppe"},{10,"coppe"},
{1,"denari"},{2,"denari"},{3,"denari"},{4,"denari"},{5,"denari"},
{6,"denari"},{7,"denari"},{8,"denari"},{9,"denari"},{10,"denari"},
{1,"spade"},{2,"spade"},{3,"spade"},{4,"spade"},{5,"spade"},
{6,"spade"},{7,"spade"},{8,"spade"},{9,"spade"},{10,"spade"};}

ho estratto con la rand 2 carte casuali:

//generazione due carte a caso
for (i=1;i<=2;i++)

{
nc=rand()%41;
}
ora ho necessità di copiare nella posizione della prima carta la seconda e viceversa....insomma vojo stampare il mazzetto non più in modo ordinato ma con il cambio delle 2 carte generate a caso.... come posso fare???
__________________
O'Napule dint'o'core..........
-MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3
-IPhone 3GS 16 GB
-Ipad wifi+3g 64gb
Piojolopez2406 è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 12:50   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Piojolopez2406
ora ho necessità di copiare nella posizione della prima carta la seconda e viceversa
Codice:
int idx1, idx2;
struct carta tmp;

srand ((unsigned int) time (NULL));

idx1 = rand () % 40;
idx2 = rand () % 40;

tmp = mazzetto[idx1];
mazzetto[idx1] = mazzetto[idx2];
mazzetto[idx2] = tmp;
Nota che:
a) Visto che hai 40 carte, gli indici vanno da 0 a 39 (per quello % 40 e non % 41).
b) Alla fine dell'array devi mettere ....{10,"spade"}};
c) L'operazione di modulo sul valore di rand() non offre una ottima pseudo-casualità (leggi <qui>).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2007, 12:50   #3
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
ti memorizzi i 2 "indici" delle carte da scambiare.
copi mazzetto[primoindice] in una temporanea.
incolli mazzetto[secondoindice] in mazzetto[primoindice] e incolli la temporanea in mazzetto[secondoindice]...

sono un cane nella sintassi del c/c++ ma... quando dichiari il mazzetto mi sembra che tu non debba mettere struct in quanto "carta" è già un """""tipo di dato"""" caratterizzato dalla struttura
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 11:02   #4
Piojolopez2406
Senior Member
 
L'Avatar di Piojolopez2406
 
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
Quote:
Originariamente inviato da leox@mitoalfaromeo
ti memorizzi i 2 "indici" delle carte da scambiare.
copi mazzetto[primoindice] in una temporanea.
incolli mazzetto[secondoindice] in mazzetto[primoindice] e incolli la temporanea in mazzetto[secondoindice]...

sono un cane nella sintassi del c/c++ ma... quando dichiari il mazzetto mi sembra che tu non debba mettere struct in quanto "carta" è già un """""tipo di dato"""" caratterizzato dalla struttura

cioè tu dici così???

nc=rand()%40;
nc1=rand()%40;
swap=mazzetto[nc];
mazzetto[nc]=mazzetto[nc1];
mazzetto[nc1]=swap;

mi da un incompatibilità di types (swap=mazzetto[nc]...io swap l'ho dikiarato int...coem devo fare per eliminare questo errore??
__________________
O'Napule dint'o'core..........
-MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3
-IPhone 3GS 16 GB
-Ipad wifi+3g 64gb
Piojolopez2406 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 11:06   #5
Piojolopez2406
Senior Member
 
L'Avatar di Piojolopez2406
 
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
Quote:
Originariamente inviato da andbin
Codice:
int idx1, idx2;
struct carta tmp;

srand ((unsigned int) time (NULL));

idx1 = rand () % 40;
idx2 = rand () % 40;

tmp = mazzetto[idx1];
mazzetto[idx1] = mazzetto[idx2];
mazzetto[idx2] = tmp;
Nota che:
a) Visto che hai 40 carte, gli indici vanno da 0 a 39 (per quello % 40 e non % 41).
b) Alla fine dell'array devi mettere ....{10,"spade"}};
c) L'operazione di modulo sul valore di rand() non offre una ottima pseudo-casualità (leggi <qui>).


a parte questi errori....che già avev notato io...così com ho impostato io lo struct non va bene??? nn riesco a salvare in una variabile d'appoggio(swap)
"mazzetto[nc]" perkè mi da incompatibilità di type...coem devo impostare swap?int??
__________________
O'Napule dint'o'core..........
-MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3
-IPhone 3GS 16 GB
-Ipad wifi+3g 64gb
Piojolopez2406 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 11:07   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Piojolopez2406
io swap l'ho dikiarato int...coem devo fare per eliminare questo errore??
Leggere il mio esempio sopra??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 11:09   #7
Piojolopez2406
Senior Member
 
L'Avatar di Piojolopez2406
 
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
Quote:
Originariamente inviato da andbin
Leggere il mio esempio sopra??
ti kiedevo se l'unico modo era fare come hai fatto tu o cmq anke come ho fatto io ma con le ddovute correzioni..ecco tutto...ti ripeto ho solo un probl per la variabile d'appoggio...
__________________
O'Napule dint'o'core..........
-MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3
-IPhone 3GS 16 GB
-Ipad wifi+3g 64gb
Piojolopez2406 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 11:21   #8
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Piojolopez2406
ho solo un probl per la variabile d'appoggio...
La variabile di appoggio la devi per forza dichiarare di tipo struct carta (se vuoi spostare l'intera struttura ... nulla ti vieta di spostare i singoli campi in qualunque altro modo).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 12:32   #9
Piojolopez2406
Senior Member
 
L'Avatar di Piojolopez2406
 
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
Quote:
Originariamente inviato da andbin
La variabile di appoggio la devi per forza dichiarare di tipo struct carta (se vuoi spostare l'intera struttura ... nulla ti vieta di spostare i singoli campi in qualunque altro modo).
grazie ...risolto questo problema...

ora vedo ke capita anke ke mi generi casualmente 2 carte uguali...come poso evitare ke succeda questo???con un if???

bhe ora...dato ke devo stampare il mazzo di carte miskiato...(io prima tramite ciclo for ho impostato il numero di miskiate ke vojo fare...ad ogni miskiata ovviamente corrisponde lo scambio di 2 carte...)....come faccio???
__________________
O'Napule dint'o'core..........
-MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3
-IPhone 3GS 16 GB
-Ipad wifi+3g 64gb
Piojolopez2406 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 12:48   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Piojolopez2406
ora vedo ke capita anke ke mi generi casualmente 2 carte uguali...come poso evitare ke succeda questo???con un if???

bhe ora...dato ke devo stampare il mazzo di carte miskiato...(io prima tramite ciclo for ho impostato il numero di miskiate ke vojo fare...ad ogni miskiata ovviamente corrisponde lo scambio di 2 carte...)....come faccio???
La soluzione più semplice (che non è il massimo ...) è la seguente:
Codice:
idx1 = rand () % 40;
do {
    idx2 = rand () % 40;
} while (idx2 == idx1);
In pratica si ripete la generazione del secondo numero se è uguale al primo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 12:53   #11
Piojolopez2406
Senior Member
 
L'Avatar di Piojolopez2406
 
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
Quote:
Originariamente inviato da andbin
La soluzione più semplice (che non è il massimo ...) è la seguente:
Codice:
idx1 = rand () % 40;
do {
    idx2 = rand () % 40;
} while (idx2 == idx1);
In pratica si ripete la generazione del secondo numero se è uguale al primo.
ho risolto con un semplice if...
{
nc=rand()%40;
nc1=rand()%40;
if (nc!=nc1)
{...qui poi faccio l'operazione di swap}

ora ovviamente devo stampare il mazzetto miskiato.....tramite for immagino...ma come???

p.s. in ogni caso grzie per la gentile cortesia e l'attenzione ke mi stai dedicando...
__________________
O'Napule dint'o'core..........
-MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3
-IPhone 3GS 16 GB
-Ipad wifi+3g 64gb
Piojolopez2406 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 13:10   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Un'altra soluzione per mischiare le carte e non avere problemi di indici doppi, è la seguente (mi baso sulla tua struttura del mazzo):
Codice:
....

int rand_int (int min, int max)
{
    double d;

    d = rand () / (RAND_MAX+1.0);
    return ((int) (d * (max-min+1))) + min;
}

...

    int i, idx1, idx2;
    struct carta tmp;

    srand ((unsigned int) time (NULL));

    for (i = 0; i < 39; i++)
    {
        idx1 = i;
        idx2 = rand_int (i+1, 39);

        tmp = mazzetto[idx1];
        mazzetto[idx1] = mazzetto[idx2];
        mazzetto[idx2] = tmp;
    }
rand_int è una funzioncina che ho fatto io (che uso sempre in questi casi) e che permette sia di estrarre un valore entro certi limiti (compresi) specifici, sia di ottenere una ottima pseudo-casualità.

L'algoritmo di mescolamento è semplice: la prima carta la scambio con una delle altre 39, la seconda la scambio con una delle altre 38, e così via.
In questo modo nessuna carta sarà più al suo "posto" originale.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 13:31   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Piojolopez2406
ora ovviamente devo stampare il mazzetto miskiato.....tramite for immagino...ma come???
Con un semplice for:
Codice:
for (i = 0; i < 40; i++)
{
    printf ("%d di %s\n", mazzetto[i].valore, mazzetto[i].seme);
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 14:38   #14
Piojolopez2406
Senior Member
 
L'Avatar di Piojolopez2406
 
Iscritto dal: Jan 2005
Città: NAPOLI
Messaggi: 648
ho finito il programma....
permettimi di correggerti ma nel for di cui sopra i parametri il parametro ke cvaria non è "i", ma "nc",quindi for(nc=0;nc<40;nc++) e ovviamente la printf mi dovrà scrivere questi 2 valori...mazzetto[nc].valore,mazzetto[nc].seme tutto nel ciclo for così da generarmi il mazzetto miskiato...
di seguito metterò tutto il programma, così se a qyualcuno in futuro potrà serivire lo trova qui...


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

int main()
{
int j,n,nc,nc1,i;

struct carta //crea una struct di tipo carta
{
int valore;
char seme[8];
};
struct carta swap;/* di tipo carta riferita alla variabile swap (N.B. se la var. swap la si inizializzasse di tipo intovviamente questa genererebbe un errore durante l'assegnazione dello swap nella riga 43 perche le 2 variabili a quel punto risulterebbero di diverso tipo*/
//definizione mazzetto ordinato
struct carta mazzetto[]={
{1,"bastoni"},{2,"bastoni"},{3,"bastoni"},{4,"bastoni"},{5,"bastoni"},
{6,"bastoni"},{7,"bastoni"},{8,"bastoni"},{9,"bastoni"},{10,"bastoni"},
{1,"coppe"},{2,"coppe"},{3,"coppe"},{4,"coppe"},{5,"coppe"},
{6,"coppe"},{7,"coppe"},{8,"coppe"},{9,"coppe"},{10,"coppe"},
{1,"denari"},{2,"denari"},{3,"denari"},{4,"denari"},{5,"denari"},
{6,"denari"},{7,"denari"},{8,"denari"},{9,"denari"},{10,"denari"},
{1,"spade"},{2,"spade"},{3,"spade"},{4,"spade"},{5,"spade"},
{6,"spade"},{7,"spade"},{8,"spade"},{9,"spade"},{10,"spade"}
};
//stampa mazzetto ordinato
for (i=0;i<40;i++)
{printf ("%d di %s\n",mazzetto[i].valore,mazzetto[i].seme);};
//immettere il numero di smazzate che si vuole fare
printf("\nscrivere quante smazzate si vogliono fare: ");
scanf("%d",&n);
printf("\n");
//la srand ci genererà parametri casuali tramite la funzione rand sempre diversi, esa è legata all'orario
srand(time(NULL));
//ciclo for che effettua il numero di smazzate (N.B. ad una smazzata corrisponde uno scambio tra 2 carte)
for (j=0;j<=n-1;j++)
{
nc=rand()%40;//generazione primo numero casuale
nc1=rand()%40;//generazione secondo numero casuale
//costrutto if che farà in modo danon generare due indici casuali uguali
if (nc!=nc1)
{ //effettua lo scambio usando una variabile d'appoggio swap
swap=mazzetto[nc];
mazzetto[nc]=mazzetto[nc1];
mazzetto[nc1]=swap;
//stampa scambi avvenuti
printf("gli scambi avvenuti sono: %d di %s con %d di %s\n",
mazzetto[nc].valore,mazzetto[nc].seme,mazzetto[nc1].valore,mazzetto[nc1].seme);
}
}
printf("\n\nil mazzetto dopo aver effettuato %d smazzate e':\n\n",n);
//ciclo for che mi stamperà il mazzetto di 40 carte dopo aver effettuato un numero da noi deciso di smazzate
for (nc=0;nc<40;nc++)
printf("%d di %s\n",mazzetto[nc].valore,mazzetto[nc].seme);
}
__________________
O'Napule dint'o'core..........
-MacBook 2,26 GHz Intel Core 2 Duo - 4 GB DDR3
-IPhone 3GS 16 GB
-Ipad wifi+3g 64gb
Piojolopez2406 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 15:09   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Piojolopez2406
permettimi di correggerti ma nel for di cui sopra i parametri il parametro ke cvaria non è "i", ma "nc",quindi for(nc=0;nc<40;nc++)
E cosa cambia???
Io ho fatto solo degli esempi di codice .... poi le variabil chiamale come ti pare.

Quote:
Originariamente inviato da Piojolopez2406
di seguito metterò tutto il programma, così se a qyualcuno in futuro potrà serivire lo trova qui...
Allora inizia a postare il codice dentro il tag CODE, a scrivere il codice in modo chiaro e ben indentato (4 spazi per la indentazione), a mettere /* */ invece di //, a mettere il return alla fine del main.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2007, 19:36   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Oppure ti estrai gli indici da scambiare in questo modo:
Codice:
idx1 = rand() % 40;
idx2 = rand() % 39;

if(idx2 >= idx1) idx2++;
In questo modo i due indici non saranno mai uguali...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Il prossimo God of War potrebbe non esse...
La crisi delle memorie potrebbe non infl...
Samsung conferma la data di presentazion...
2 TV Samsung da 55" a un super prez...
Claude amplia il piano free: la risposta...
Helldivers: Oppressione Meccanica, il nu...
2 scope elettriche imperdibili: 102€ la ...
Ford: l'elettrico genera una perdita di ...
Ayaneo Next 2: la console portatile Wind...
Il WiFi può vederti senza telecam...
Linux sotto assedio: SSHStalker riporta ...
Stellantis: dopo il crollo di venerd&igr...
Combat Liquid 360 HUD: raffreddamento AI...
Tornano le EVO Sessions della Formula E:...
Moltbook, il social network per AI: i po...
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: 09:08.


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