Pagina 1 di 2
Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 10:03
di MauriAxel
ragazzi mi serve una mano, devo scrivere un programma in C++. questa è la consegna:
Una sequenza di numeri è costruita nel modo seguente:
si scrive il numero 1 una volta, il numero 2 due volte, il numero 3 tre volte, il numero 4 quattro volte, il numero 5 cinque volte, il numero n n volte.
Si scriva un programma in grado di rispondere al seguente quesito:
Quale numero troviamo nella milionesima posizione?
Dopo aver scritto il programma in grado di fornire la risposta, si rifletta sulla possibilità di ottenere lo stesso risultato con una formula chiusa.
I primi due studenti che postano il programma avranno una valutazione di 8 i secondi due di 7.
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 10:42
di dannyb78
non ricordo il c++ ma l'algoritmo potrebbe essere questo. La complessità mi sembra valida anche se forse si potrebbe ridurla.
i_max= 1.000.000 (puoi anche chiederlo come input per vedere chi sta nella posizione i_max, così fai una cosa elegante
i=1;
num=1;
while (i<=1_max)
{ i=i+num;
num++;
}
alla fine del while num è il risultato che ti interessa. tutte le var sono interi.
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 13:48
di tonertemplum
dannyb78 ha scritto:non ricordo il c++ ma l'algoritmo potrebbe essere questo. La complessità mi sembra valida anche se forse si potrebbe ridurla.
i_max= 1.000.000 (puoi anche chiederlo come input per vedere chi sta nella posizione i_max, così fai una cosa elegante
i=1;
num=1;
while (i<=1_max)
{ i=i+num;
num++;
}
alla fine del while num è il risultato che ti interessa. tutte le var sono interi.
Farei anche io allo stesso modo, cambiando una sola istruzione...
- Codice: Seleziona tutto
i_max= 1.000.000
i=1;
num=1;
while (i!=1_max) //cambierei questa istruzione
{ i=i+num;
num++;
}
Cioè direi "Finchè il contatore NON è UGUALE (
- Codice: Seleziona tutto
!=
) a 1.000.000 (o al numero dato in input)
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 16:43
di `knives`
non conosco il c++.. ma in c lo farei cosi:
- Codice: Seleziona tutto
#include <stdio.h>
unsigned int main ()
{
int num1=1000, num2=0, num3=1,i,j=1;
do
{
for ( i = 1; i <= j ; i++ )
{
if (num3<=num1)
{
num2=j;
num3++;
}
}
j++;
} while(j<=num1);
printf("%d",num2);
}
quello a cui devi stare attento secondo me.. è proprio come dichiari le variabili perchè (almeno in c) int va da -32700 a 32700, quindi 1000000 è fuori dal range.
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 17:11
di dannyb78
così ha complessità maggiore dell'altro, e mi sembra anche meno leggibile (così a colpo d'occhio)
almeno però è scritto in c++ (o qualcosa che ci somiglia molto). Io non lo uso da almeno 8 anni e lo ho [quasi] completamente dimenticato. MAURIIIIII
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 17:26
di `knives`
è meno leggibile xke l ho scritto velocemente... senza badare troppo ad indentare o altro..
per la complessita.. non ho provato il vostro.. cmq il mio risolve la richiesta
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 17:41
di `knives`
l'oputput dei due è diverso.. il mio si ferma alla posizione voluta, il vostro la salta.. diciamo che basterebbe aggiungere al vostro un controllo sulla posizione giusta e fermarlo li oppure salvare la variabile della posizione.
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 18:23
di Joistick
non capisco una cosa.... qual'è il valore assegnato alla variabile i nel tuo programma knives???
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 18:40
di diegofio
i va da 1 a j l'assegnamento si fa all'interno del for
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 18:54
di dannyb78
`knives` ha scritto:l'oputput dei due è diverso.. il mio si ferma alla posizione voluta, il vostro la salta.. diciamo che basterebbe aggiungere al vostro un controllo sulla posizione giusta e fermarlo li oppure salvare la variabile della posizione.
il mio si ferma alla posizione voluta uscendo dal while, basta aggiungere l'output della variabile num che è il valore cercato. O forse sono totalmente arrugginito, il che è possibile.
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 18:55
di Joistick
diego.fiozzi ha scritto:i va da 1 a j l'assegnamento si fa all'interno del for
capito grazie diego
sistemando un po tutto alla fine vieni così
- Codice: Seleziona tutto
#include <iostream>
using namespace std;
int main ()
{
int num1,num2,num3,i,j;
num1=1000;
num2=0;
num3=1;
j=1;
do
{
for(i=1;i<=j;i++)
{
if (num3<=num1)
{
num2=j;
num3++;
}
}
j++;
} while(j<=num1);
cout<<"Il numero in milionesima posizione e':"<<num2<<endl;
system("PAUSE");
return 0;
}
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 19:14
di `knives`
dannyb78 ha scritto:`knives` ha scritto:l'oputput dei due è diverso.. il mio si ferma alla posizione voluta, il vostro la salta.. diciamo che basterebbe aggiungere al vostro un controllo sulla posizione giusta e fermarlo li oppure salvare la variabile della posizione.
il mio si ferma alla posizione voluta uscendo dal while, basta aggiungere l'output della variabile num che è il valore cercato. O forse sono totalmente arrugginito, il che è possibile.
l ho provato, e dato che somma le varie posizioni non avrai la milionesima.
@joistick : num1 = 1000 del mio è in realta 1000000. non va bene un int.. ma deve essere un long int o un unsigned int, per il discorso che dicevo prima
se il tuo è scritto in c++ ora provo a sistemarlo..
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 19:46
di Joistick
`knives` ha scritto:
@joistick : num1 = 1000 del mio è in realta 1000000. non va bene un int.. ma deve essere un long int o un unsigned int, per il discorso che dicevo prima
se il tuo è scritto in c++ ora provo a sistemarlo..
si ho visto... comunque il mio è scritto in C++ e compila solo che va fino al 1000...
se compilo con un long int non finisce più( e da 5 minuti in esecuzione), adesso provo con unsigned ma non penso cambi e penso sia colpa del milione...
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 20:06
di dannyb78
non ricordo la sintassi, per cui il mio non è scritto in c++, anche se conoscendo la sintassi da lì si dovrebbe arrivare velocemente al codice.
il mio programma somma il numero alla posizione e scorre il numero. Chiaramente però fa il controllo sulla posizione. Si ferma quando supera la posizione i_max e restituisce l'intero con il quale ha superato i_max (che deve essere uguale a quello in posizione i_max)
Re: Quale numero troviamo nella milionesima posizione?
Inviato:
04 apr 2008, 20:49
di MauriAxel
ecco ci ho provato anche io a farlo:
- Codice: Seleziona tutto
#include <iostream>
using namespace std;
int main ()
{
int cont=0;
int num=0;
do
{
num=num+1;
cont=cont+num;
}while(cont<=1000000);
cout<< "L'elemento in milionesima posizione e' il numero "<<num;
cout<<endl;
system("pause");
return 0;
}