PDA

Visualizza la versione completa : C - array random crescenti , richiesta esecuzione e output excel


gabama
18-03-2010, 17:37
Vorrei avere 2 informazioni,
1)in un array è possibile avere una creazione casuale di dati crescenti,con "a[i] = rand() % val" li crea a caso,vorrei averli a caso,ma crescenti,si può?

2)vorrei costruire una strutturina che permette all' utente di scegliere se creare interamente l' array random o parzialmente,in pratica mi serve la possibilità di far fare all' utente 2 scelte, con " case" ?

3)si può eseguire l' output su un foglio di excel?

Grazie mille in anticipo

oregon
18-03-2010, 18:22
Originariamente inviato da gabama
1)in un array è possibile avere una creazione casuale di dati crescenti,con "a[i] = rand() % val" li crea a caso,vorrei averli a caso,ma crescenti,si può?

Potresti usare una "offset" nella formula del tipo

off + (rand % val)

in cui off all'inizio è 0 e nella generazione seguente è uguale al valore precedentemente generato. Ovviamente così il valore massimo aumenta ...

Oppure li generi e li ordini alla fine.


2)vorrei costruire una strutturina che permette all' utente di scegliere se creare interamente l' array random o parzialmente,in pratica mi serve la possibilità di far fare all' utente 2 scelte, con " case" ?

Non l'ho capita ...


3)si può eseguire l' output su un foglio di excel?

E' abbastanza complesso ... dovresti usare un server COM dal C e, ovviamente, dovresti avere Excel installato (in ogni caso, non è affatto una passeggiata).

gabama
18-03-2010, 18:45
intanto grazie mille oregon,
la mia prima domanda è nata perchè dovrei cercare di creare metà un array "a caso" ,ma ordinato,e poi random

nella seconda vorrei creare un menù,del tipo "scegliere opzione"
1-- interamente random
2-- parzialmente random

e indirizzando di conseguenza,un goto è proprio brutto?

come posso modificare in modo che l' utente finchè non inserisca 1 o 2 non possa avanzare?


while((a!=2) || (a!=1))
{
printf("inserisci a ");
scanf("%d",&a);}
}

entra in loop.....
grazie mille

oregon
18-03-2010, 18:50
No ... niente goto ... basta una

if

else

no? ...

Per il resto



do
{
printf("inserisci a ");
scanf("%d",&a);
} while((a!=2) && (a!=1));

gabama
18-03-2010, 19:25
no,ok io intendevo avere un goto per indirizzare in base all' opzione del menu,come lo posso fare?

oregon
18-03-2010, 21:09
Non capisco ... puoi usare uno switch ...

gabama
19-03-2010, 10:16
ok grazie,mi potete postare un esempio di codice?

oregon
19-03-2010, 10:34
Originariamente inviato da gabama
ok grazie,mi potete postare un esempio di codice?

Un esempio di uso dello switch ? C'è in qualsiasi libro di base del C ...

http://xoomer.virgilio.it/ennebi/cpp/pag25.html

gabama
19-03-2010, 18:59
grazie,ancora 2 domandine

per quanto riguarda l' array generato per metà in modo crescente e per metà a caso con numeri maggiori al max del precedente ,ho fatto così,è corretto?

void creaarraypr(int *a,int dim,int diff){
int i;srand(time(NULL));int val=0;
for (i = 0; i < dim/2; i++){
a[i]= (val=val + (rand ()% diff));
}

for (i = dim/2; i < dim; i++){
a[i]= val + rand (dim-val)%diff ;
val++;
}}

Altra cosa,mi ricordo che esiste la possibilità di far ritornare il codice da capo e essere eseguito,che codice implica?

Grazie in anticipo

gabama
20-03-2010, 11:48
nessuno?

Loading