un aiuto i programmazione...

Area di discussione libera.

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.
Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

un aiuto i programmazione...

Messaggio 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!!

Avatar utente
elettronicha
Master
Master
Messaggi: 1712
Iscritto il: mer 13 apr 2005, 0:00
Località: Torino
Contatta:

Messaggio 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?

Avatar utente
raozuzu
Linux 2.x
Linux 2.x
Messaggi: 307
Iscritto il: gio 13 gen 2005, 0:00
Località: padova
Contatta:

Messaggio da raozuzu »

prova magari con qualche altro linguaggio più semplice :D

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Messaggio 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!!

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio 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.

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Messaggio 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!!!

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio 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.

Avatar utente
elettronicha
Master
Master
Messaggi: 1712
Iscritto il: mer 13 apr 2005, 0:00
Località: Torino
Contatta:

Messaggio 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.

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Messaggio 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!

Avatar utente
dapuzz
Linux 4.x
Linux 4.x
Messaggi: 1136
Iscritto il: mar 16 mag 2006, 11:09
Contatta:

Messaggio 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 è ;)

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3974
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio 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...

Avatar utente
chrix
Linux 2.x
Linux 2.x
Messaggi: 375
Iscritto il: gio 30 set 2004, 0:00
Località: Trieste
Contatta:

Messaggio 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...

Avatar utente
Absolut
Linux 4.x
Linux 4.x
Messaggi: 1465
Iscritto il: gio 10 feb 2005, 0:00
Slackware: current
Località: Roma

Messaggio 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

Avatar utente
albatros
Iper Master
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

Messaggio 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?

Avatar utente
Sari
Linux 3.x
Linux 3.x
Messaggi: 584
Iscritto il: mer 16 feb 2005, 0:00
Slackware: 12.1
Kernel: 2.6.24
Desktop: Gnome
Località: Verona

Messaggio 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.

Rispondi