Toma91 Inviato 30 Settembre 2009 Segnala Condividi Inviato 30 Settembre 2009 Uffa!!! Perché la funzione [primoNum setIntValue:(random() %90) +1]; [secondoNum setIntValue:(random() %90) +1]; [terzoNum setIntValue:(random() %90) +1]; [quartoNum setIntValue:(random() %90) +1]; mi da sempre gli stessi valori? Mi spiego meglio: apro l'app _primo click 74 - 17 - 28 - 26 _secondo click 10 - 2 - 33 -68 chiudo l'app la riapro _primo click ANCORA 74 - 17 - 28 - 26 _secondo click DI NUOVO 10 - 2 - 33 -68 Cosa sbaglio??? Le mie : Macintosh Plus con System 7, Power Macintosh 8600/200 con Mac OS 9.1, iMac G3 DV con Mac OS 9.2.2 e Mac OS X 10.0, MacBook Nero 3,1 con Mac OS X 10.7.2, iPod Nano 2G 4 Gb e iPod Nano 4G 8 Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
numerone Inviato 1 Ottobre 2009 Segnala Condividi Inviato 1 Ottobre 2009 Non so il lunguaggio che usi ma in c si deve inizializzare il "seme" al fine di ottenere dati diversi. Questo significa incominciare ad elaborare il numero pseudocasuale da un valore diverso ogni volta, se no se si parte dallo stesso valore e si fanno gli stessi calcoli si arriva sempre alla stessa soluzione. in c si va con srand(time(NULL)). Dio@paradiso:~$ gcc -o Terra World.cpp Link al commento Condividi su altri siti Altre opzioni di condivisione...
Toma91 Inviato 1 Ottobre 2009 Autore Segnala Condividi Inviato 1 Ottobre 2009 Infatti scusa, dovevo dire cosa stavo usando... Ora provo e poi ti faccio sapere Le mie : Macintosh Plus con System 7, Power Macintosh 8600/200 con Mac OS 9.1, iMac G3 DV con Mac OS 9.2.2 e Mac OS X 10.0, MacBook Nero 3,1 con Mac OS X 10.7.2, iPod Nano 2G 4 Gb e iPod Nano 4G 8 Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
Toma91 Inviato 1 Ottobre 2009 Autore Segnala Condividi Inviato 1 Ottobre 2009 Grazie, così ho risolto Allora ti faccio un'altra domanda, se posso... Come faccio a far ricominciare a lavorare il codice da capo in caso due numeri vengano uguali? Scusa se ti rompo Le mie : Macintosh Plus con System 7, Power Macintosh 8600/200 con Mac OS 9.1, iMac G3 DV con Mac OS 9.2.2 e Mac OS X 10.0, MacBook Nero 3,1 con Mac OS X 10.7.2, iPod Nano 2G 4 Gb e iPod Nano 4G 8 Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
marforic Inviato 1 Ottobre 2009 Segnala Condividi Inviato 1 Ottobre 2009 puoi fare: [primoNum setIntValue:(random() %90) +1]; [secondoNum setIntValue:(random() %90) +1]; while ([secondoNum intValue] == [primoNum intValue]) [secondoNum setIntValue:(random() %90) +1]; [terzoNum setIntValue:(random() %90) +1]; while ([terzoNum intValue] == [primoNum intValue] || [terzoNum intValue] == [secondoNum intValue]) [terzoNum setIntValue:(random() %90) +1]; etc etc... Non e' granche come codice (si puo' fare meglio) ma non so come salvi le varie cose. A proposito, perche' usi NSNumber (immagino usi quello, visto che usi setIntValue), se usi semplicement degli int? Puoi appunto usare int or NSInteger. Sono type, non objects. Se per qualcosa ti serve un object e non un type (ad esempio, per salvare in un NSArray, ...) puoi sempre fare tutto on the fly salvando solo gli int/NSInteger... ciopciop ciop ciop ~marforic Il mio blog: http://www.cloudgoessocial.net Link al commento Condividi su altri siti Altre opzioni di condivisione...
Toma91 Inviato 1 Ottobre 2009 Autore Segnala Condividi Inviato 1 Ottobre 2009 Guarda io ho provato a fare così... Solo che non funziona ancora... Non ri-inizia il loop se il primo numero non è uguale al secondo... E uso stringValue perché i numeri si trovano all'interno di NStextField... Sbaglio? // // MAFoo.m // // Created by Andrea on 30/09/09. // Copyright 2009 AndreaDev. All rights reserved. // #import "MAFoo.h" @implementation MAFoo - (IBAction)gioca:(id)sender { do { srand(time(NULL)); [primoNum setIntValue:(rand() %90) +1]; [secondoNum setIntValue:(rand() %90) +1]; [terzoNum setIntValue:(rand() %90) +1]; [quartoNum setIntValue:(rand() %90) +1]; [quintoNum setIntValue:(rand() %90) +1]; [sestoNum setIntValue:(rand() %90) +1]; [jollyNum setIntValue:(rand() %90) +1]; [starNum setIntValue:(rand() %90) +1]; } while([[primoNum stringValue] isEqualTo: [secondoNum stringValue]]); } @end Le mie : Macintosh Plus con System 7, Power Macintosh 8600/200 con Mac OS 9.1, iMac G3 DV con Mac OS 9.2.2 e Mac OS X 10.0, MacBook Nero 3,1 con Mac OS X 10.7.2, iPod Nano 2G 4 Gb e iPod Nano 4G 8 Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
marforic Inviato 1 Ottobre 2009 Segnala Condividi Inviato 1 Ottobre 2009 ma e' ovvio che non re-inizializza tutto il loop. Controlla solo che il secondo non sia uguale al primo, che il terzo non sia uguale al secondo o al primo, ... (questo il codice che ti ho passato io...) non so cosa sia primoNum, etc, mi dici che sono dei textfields? - (IBAction)gioca:(id)sender { srand(time(NULL)); NSMutableArray * nums = [[NSMutableArray alloc] init]; for (NSUInteger i = 0; i < 8; i++) { NSUInteger tmp = (rand() % 90) + 1; if (![nums containsObject:[NSNumber numberWithInt:tmp]]) [nums addObject:[NSNumber numberWithInt:tmp]]; } [primoNum setIntValue:[nums objectAtIndex:0]]; [secondoNum setIntValue:[nums objectAtIndex:1]]; [terzoNum setIntValue:[nums objectAtIndex:2]]; [quartoNum setIntValue:[nums objectAtIndex:3]]; [quintoNum setIntValue:[nums objectAtIndex:4]]; [sestoNum setIntValue:[nums objectAtIndex:5]]; [jollyNum setIntValue:[nums objectAtIndex:6]]; [starNum setIntValue:[nums objectAtIndex:7]]; [nums release]; } ciop ciop ~marforic Il mio blog: http://www.cloudgoessocial.net Link al commento Condividi su altri siti Altre opzioni di condivisione...
Toma91 Inviato 1 Ottobre 2009 Autore Segnala Condividi Inviato 1 Ottobre 2009 Allora: primoNum ecc sono IBOutlet, che in Interface Builder sono NSTextFields. Poi se per favore mi spieghi cosa fa il codice che mi hai proposto, visto che sono quasi agli albori della programmazione e devo/voglio capire... Grazie per l'attenzione Le mie : Macintosh Plus con System 7, Power Macintosh 8600/200 con Mac OS 9.1, iMac G3 DV con Mac OS 9.2.2 e Mac OS X 10.0, MacBook Nero 3,1 con Mac OS X 10.7.2, iPod Nano 2G 4 Gb e iPod Nano 4G 8 Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
marforic Inviato 1 Ottobre 2009 Segnala Condividi Inviato 1 Ottobre 2009 mi sono accorto che ho fatto un errore. for (NSUInteger i = 0; i < 8; i++) deve essere while ([nums count] < 1) setto il seed di rand() 2) creo un array (una lista) di oggetti (vuoto) 3) finche' l'array non contiene 8 numeri continuo nel while 3a) creo un numero a random, se l'array non lo contiene lo aggiungo (cosi' sei sicuro di non avere duplicati) 4) per ogni TextField prendo un numero dall'Array. (se tu al posto di avere 8 IBOutlets nello .xib assegni un tag unico ad ogni textfield potresti fare tutto molto meglio... ma e' gia piu' avanzato, quindi lascia stare per ora). 5) releaso l'array nums che ho creato qui' perche' non mi serve piu' (altrimenti avresti un 'leak'). piu' chiaro? ciop ciop ciop ciop ~marforic Il mio blog: http://www.cloudgoessocial.net Link al commento Condividi su altri siti Altre opzioni di condivisione...
Gianluck Inviato 1 Ottobre 2009 Segnala Condividi Inviato 1 Ottobre 2009 se posso permettermi di darti un consiglio...studiati bene i costrutti base di C che sono essenziali in OBJC - Cocoa... ciao Macbook White 13" 2,0GHz || iMac 20" 2,4 GHz || iPhone 3G 8Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
Toma91 Inviato 1 Ottobre 2009 Autore Segnala Condividi Inviato 1 Ottobre 2009 se posso permettermi di darti un consiglio...studiati bene i costrutti base di C che sono essenziali in OBJC - Cocoa...ciao È ovviamente quello che intendo fare e farò !!! Però intanto stavo provando ad applicare qualche concetto base, perché anche facendo esperienza direttamente nel campo si impara... Solo che questa volta sono voluto andare un po' altre per un mio piccolo sfizio Le mie : Macintosh Plus con System 7, Power Macintosh 8600/200 con Mac OS 9.1, iMac G3 DV con Mac OS 9.2.2 e Mac OS X 10.0, MacBook Nero 3,1 con Mac OS X 10.7.2, iPod Nano 2G 4 Gb e iPod Nano 4G 8 Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
Toma91 Inviato 1 Ottobre 2009 Autore Segnala Condividi Inviato 1 Ottobre 2009 mi sono accorto che ho fatto un errore. for (NSUInteger i = 0; i < 8; i++) deve essere while ([nums count] < 1) setto il seed di rand() 2) creo un array (una lista) di oggetti (vuoto) 3) finche' l'array non contiene 8 numeri continuo nel while 3a) creo un numero a random, se l'array non lo contiene lo aggiungo (cosi' sei sicuro di non avere duplicati) 4) per ogni TextField prendo un numero dall'Array. (se tu al posto di avere 8 IBOutlets nello .xib assegni un tag unico ad ogni textfield potresti fare tutto molto meglio... ma e' gia piu' avanzato, quindi lascia stare per ora). 5) releaso l'array nums che ho creato qui' perche' non mi serve piu' (altrimenti avresti un 'leak'). piu' chiaro? ciop ciop Non ti avevo ancora ringraziato, scusa! Sì così è più chiaro spero di imparare meglio al più presto Domani in giornata provo il codice, e poi faccio sapere Le mie : Macintosh Plus con System 7, Power Macintosh 8600/200 con Mac OS 9.1, iMac G3 DV con Mac OS 9.2.2 e Mac OS X 10.0, MacBook Nero 3,1 con Mac OS X 10.7.2, iPod Nano 2G 4 Gb e iPod Nano 4G 8 Gb Link al commento Condividi su altri siti Altre opzioni di condivisione...
numerone Inviato 1 Ottobre 2009 Segnala Condividi Inviato 1 Ottobre 2009 Se conosci il numero più grande che è possibile far uscire dall'elaborazione basta che fai un vettore di booleani di dimensione esattamente quella del numero più grande. Ogni volta che fai uscire un numero n controlli se vettore[n] è false ed in questo caso lo metti a true. Se è true aumenti di 1 finché non arrivi a massimo+1 o non trovi un posto false. Se i posti sono tutti true ricominci da 0 fino ad arrivare al numero iniziale: se sono tutti positivi significa che hai esaurito i valori, altrimenti un posto false lo trovi. Un metodo meno veloce ma meno incasinato consiste nel salvare i valori che escono in un vettore ridimensionabile e fare la ricerca nel vettore. Dio@paradiso:~$ gcc -o Terra World.cpp Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.