Pagina 1 di 2
un aiuto i programmazione...
Inviato: lun 30 ott 2006, 15:44
da Absolut
ragazzi avrei bisogno del vostro aiuto per scrivere un programmino in C++ che mi faccia questa cosa..... mi aiutereste perfavore!?
Scrivere un programma in linguaggio C++ che,
data in ingresso da tastiera una sequenza,
a priori di lunghezza indefinita di interi,
compresi tra 0 e 36,
corrispondenti alle possibili uscite del gioco della roulette,
stampi a video:
? il massimo numero di uscite consecutive di un medesimo valore ed il valore stesso;
? il numero di estrazioni per ogni dozzina,
ossia quelli appartenenti all’intervallo 1-12, 13-24, 25-36,
rispettivamente prima, seconda e terza dozzina.
? il numero di uscite per ogni colonna;
? il numero di uscite pari e quello dispari.
Es: data la sequenza 3 32 0 12 1 32 15 17 0 19 27 35 12 12 30 14 27 12 6 21 18 2 24
vengono stampati i seguenti risultati:
Il massimo numero di uscite consecutive dello stesso numero e’: 2 volte il numero 12
Uscite nella prima dozzina: 8
Uscite nella seconda dozzina: 7
Uscite nella terza dozzina: 6
Uscite nella prima colonna: 2
Uscite nella seconda colonna: 6
Uscite nella terza colonna: 13
Uscite pari: 12
Uscite dispari: 9
vi ringrazio!!
Inviato: lun 30 ott 2006, 15:51
da elettronicha
E che aiuto ti serve? Il programma mi sembra abbastanza semplice, se si ha un minimo di basi. Prova a stenderlo come esercizio, poi se non funziona posta.
Qual è il problema?
Inviato: lun 30 ott 2006, 16:14
da raozuzu
prova magari con qualche altro linguaggio più semplice

Inviato: lun 30 ott 2006, 16:23
da Absolut
PS non devo usare array....!!
si lo so che è semplice, ma non ho conoscenza di C++ mi serve solo per una parte di una cosa... potreste scrivermelo se avete tempo!? vi ringrazio!!
ciao1!!
Inviato: lun 30 ott 2006, 16:36
da Sari
Effettivamente non e' difficile.
Per leggere da tastiera usi sscanf e piazzi tutto dentro un vettore.
#include <stdio.h>
#include <vector>
vector<int> v;
int x;
while (1) {
printf ("Inserisci un numero da 1 a 36:");
sscanf ("%d", &x);
v.push_back (x);
}
Poi gli algoritmi che andranno ad eseguire le richieste li dovrai scrivere tu

, altrimenti non si impara. per andare a leggere gli elementi del vettore:
for (int i=0; i<v.size();i++)
"con v
ottieni l'elemento i-esimo"
due dritte:
- Per controllare se un numero è dispari controlla se il resto della divisione per 2 ha resto... il resto di x/2 lo ottieni con x%2
- Per controllare il numero di uscite per ogni dozzina potrebbe tornarti utile ordinare il vettore. In questo caso potresti, senza usare splendidi algoritmi come il counting-sort (tra l'altro eccezionalmente adatto a questo caso :P), usare un classico algoritmo come l'insertion-sort del quale trovi il codice funzionante in rete con poche ricerche.
A quel punto ti basterà guardare l'indice dell'ultimo 12, dell'ultimo 24 e dell'ultimo 36, qualche sottrazione e il gioco è fatto.
Inviato: lun 30 ott 2006, 16:54
da Absolut
spetta te spettate..... io cerco una soluzione di base.. molto semplice che preveda l'uso di if, else for o while... niente di che.. il controllo deve essere fatto per ogni numero che uno digita, non puo essere usato ne array ne vettore!
vi ringrazio!!!
Inviato: lun 30 ott 2006, 17:02
da Sari
vabe allora leggi il numero ma invece di metterlo nel vettore fai immediatamente i controlli su di esso. ti dichiari 3 interi per le dozzine, tre per le colonne e 2 per pari/dispari e usi queste variabili come contatori.
L'unica cosa "difficile" e' il valutare quale sia il numero uscito piu' volte e il numero di uscite. Se non devi usare array dichiarati 36 variabili :P, altrimenti basterebbe un int uscite[35]; Da qualche parte devi tenerti salvati il numero di volte in cui è stato inserito ognuno dei 36 numeri.
Inviato: lun 30 ott 2006, 17:13
da elettronicha
slackvitto ha scritto:molto semplice che preveda l'uso di if, else for o while... niente di che..
Qualsiasi programma "strutturato" si scrive _solo_ con if...else, while e for... Ma tu stai imparando la programmazione a oggetti e utilizzi il C++ oppure ti basta fare un programma in C?
non può essere usato né array né vettore!
...che sono la stessa cosa.
Sai generare una lista in C? Se usi il C++ puoi anche sfruttare le funzioni di libreria standard che esso ti mette a disposizione. Insomma, il programma deve solo creare una lista, esplorarla più volte e fare i conti del caso. Se ti vuoi sbizzarrire con gli alberi binari, il C++ mette a disposizione funzioni per la gestione degli alberi, se non ricordo male.
Inviato: lun 30 ott 2006, 17:21
da Absolut
No mi serve solo fare questo piccolo programma in C++, non devo imparare a programmare.... Idealmente saprei come farlo, ma non conosco la sintassi del C++, per questo ho chiesto se qualcuno puo farlo.. credo sia una cosa da 15 minuti al max.... in java lo so fare....
comunque, diciamo che per ogni numero digitato, devo fare quei punti, quindi senza liste etc etc...
vi ringrazio!
Inviato: lun 30 ott 2006, 18:05
da dapuzz
elettronicha ha scritto:non può essere usato né array né vettore!
...che sono la stessa cosa.
Effettivamente per un programmatore sono la stessa cosa, ma per chi viene dal java o dal c# oppure approccia per la prima volta il c++ credo che si riferisca ad una qualche classe "vector" che poi tanto array non è

Inviato: lun 30 ott 2006, 18:11
da Paoletta
data una sequenza a priori di lunghezza indefinita di interi
il fatto che sia di lunghezza indefinita ti indica che non puoi usare array...non puoi sapere quanto è lunga la sequenza, per cui come puoi allocare a priori lo spazio di memoria?
IMHO queste cose vanno fatte da soli e, soprattutto se si è alle prime armi, il procedimento da usare va prima scritto su carta e poi al computer, altrimenti non si riesce ad imparare...
Inviato: lun 30 ott 2006, 18:21
da chrix
Paoletta ha scritto:
queste cose vanno fatte da soli e, soprattutto se si è alle prime armi, il procedimento da usare va prima scritto su carta e poi al computer, altrimenti non si riesce ad imparare...
Già mi sembra un compitino di fondamenti di informatica...
Inviato: lun 30 ott 2006, 19:00
da Absolut
La questione è che non devo imparare il C, non mi interessa e non mi serve. é solo in questa occasione che ho una piccola necessità e pensavo che invece di perdere qualche oretta a leggere un manualino essenziale, qualcuno di cosi gentile potesse scrivermi questo codice.
Lo so dasolo che le cose si imparano facendole e studiandole.... ma trovo inutile sprecare ore per una cosa che mi serve una volta sola e che si puo fare in 15 minuti. almeno questo il tempo necessario in java.
Ora se qualcuno vuole essere cosi gentile gli sarà grato... chi non vorrà grazie comunque, ma dei "legi qui" e "impara facendo" e più in generale di altri genitori non ne ho bisogno almeno stavolta.
senza vole offendere nessuno,
Vi ringrazio anticipatamente
Inviato: lun 30 ott 2006, 19:25
da albatros
il numero di uscite per ogni colonna;
Cioé? Che cosa intendi per colonne?
Ora come ora purtroppo non ho tempo, se nessuno te lo avrà fatto prima o se non avrai risolto in altro modo, guardo di fartelo in C nel prossimo fine settimana...
Un programmino che via via che inserisci i numeri, uno alla volta, ti stampa ad ogni invio un riepilogo come quello da te richiesto ti andrebbe bene?
Inviato: lun 30 ott 2006, 19:31
da Sari
slackvitto ha scritto:La questione è che non devo imparare il C, non mi interessa e non mi serve. é solo in questa occasione che ho una piccola necessità e pensavo che invece di perdere qualche oretta a leggere un manualino essenziale, qualcuno di cosi gentile potesse scrivermi questo codice.
Lo so dasolo che le cose si imparano facendole e studiandole.... ma trovo inutile sprecare ore per una cosa che mi serve una volta sola e che si puo fare in 15 minuti. almeno questo il tempo necessario in java.
Ora se qualcuno vuole essere cosi gentile gli sarà grato... chi non vorrà grazie comunque, ma dei "legi qui" e "impara facendo" e più in generale di altri genitori non ne ho bisogno almeno stavolta.
senza vole offendere nessuno,
Vi ringrazio anticipatamente
E se invece scrivi in 15 minuti il codice java funzionante? Dopo è solo una questione di modifica delle funzioni di libreria usate. In java c'e' System con i BufferedReader in C/C++ c'e' sscanf e compagnia dalla stdio. Se scrivi solo un main senza classi (che in questo esempio nn servono) non ci sono altre modifiche da fare se non quelle banali sostituzioni. I costrutti e la sintassi sono identici.