un aiuto i programmazione...
Moderatore: Staff
Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
- Absolut
- Linux 4.x

- Messaggi: 1465
- Iscritto il: gio 10 feb 2005, 0:00
- Slackware: current
- Località: Roma
un aiuto i programmazione...
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!!
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!!
- elettronicha
- Master

- Messaggi: 1712
- Iscritto il: mer 13 apr 2005, 0:00
- Località: Torino
- Contatta:
- Sari
- Linux 3.x

- Messaggi: 584
- Iscritto il: mer 16 feb 2005, 0:00
- Slackware: 12.1
- Kernel: 2.6.24
- Desktop: Gnome
- Località: Verona
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.
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
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.
- Sari
- Linux 3.x

- Messaggi: 584
- Iscritto il: mer 16 feb 2005, 0:00
- Slackware: 12.1
- Kernel: 2.6.24
- Desktop: Gnome
- Località: Verona
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.
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.
- elettronicha
- Master

- Messaggi: 1712
- Iscritto il: mer 13 apr 2005, 0:00
- Località: Torino
- Contatta:
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?slackvitto ha scritto:molto semplice che preveda l'uso di if, else for o while... niente di che..
...che sono la stessa cosa.non può essere usato né array né vettore!
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.
- Absolut
- Linux 4.x

- Messaggi: 1465
- Iscritto il: gio 10 feb 2005, 0:00
- Slackware: current
- Località: Roma
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!
comunque, diciamo che per ogni numero digitato, devo fare quei punti, quindi senza liste etc etc...
vi ringrazio!
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 èelettronicha ha scritto:...che sono la stessa cosa.non può essere usato né array né vettore!
- Paoletta
- Staff

- Messaggi: 3974
- Iscritto il: lun 25 apr 2005, 0:00
- Slackware: 14.2 - 64 bit
- Desktop: fluxbox
- Località: Varese
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?data una sequenza a priori di lunghezza indefinita di interi
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...
- Absolut
- Linux 4.x

- Messaggi: 1465
- Iscritto il: gio 10 feb 2005, 0:00
- Slackware: current
- Località: Roma
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
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
- albatros
- Iper Master

- Messaggi: 2073
- Iscritto il: sab 4 feb 2006, 13:59
- Kernel: 5.4.0
- Desktop: lxde
- Distribuzione: ubuntu 20.04
- Località: Darmstadt - Germania
Cioé? Che cosa intendi per colonne?il numero di uscite per ogni colonna;
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?
- Sari
- Linux 3.x

- Messaggi: 584
- Iscritto il: mer 16 feb 2005, 0:00
- Slackware: 12.1
- Kernel: 2.6.24
- Desktop: Gnome
- Località: Verona
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.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
