PDA

Visualizza la versione completa : [C] Esercizio su array


Trusty
29-08-2005, 16:04
ciao a tutti; devo definire una funzione int verifica(int tab[N], int dim) che data una tabella tab di interi di dimensione dim restituisce 1 se tutti i numneri da 1 a 9 compaiono in tab, e restituisce 0 altrimenti!

chi mi aiuta? grazie!

infinitejustice
29-08-2005, 16:57
Potresti ordinare l'array quindi con un ciclo for con i che parte da i verificare se i valori ordinati equivalgono al valore della i.

Te la cavi con due righe di codice :)

p.s. sempre che i numeri nn siano ripetuti :stordita:

p.p.s. quando li ordini potresti creare un array di supporto nel quale mettere gli elementi nn ripetuti ed ordinati... cosi sei a posto ;)

Trusty
29-08-2005, 17:21
ho fatto cosi.. è un pò più lungo ma funziona lo stesso!




int verifica (int tab[N], int dim){
int appoggio[N];
int a=1,j,i,out;
while (a<10) { //scorro i numeri da 1 a 9
for (i=0; i<dim; i++){ //scorro il vettore di partenza
for (j=1; j<=9; j++){ //elemento jvettore di appoggio
if (tab[i]==a)
appoggio[j]=1;
else
appoggio[j]=0;
}
}
a++;
}
for (j=0; j<dim; j++){
if (appoggio[j]==1) //se sn tt 1 il vettore contiene
out=1; //i numeri da 1 a 9 altrimenti no
else out=0;
}
return out;
}

Trusty
29-08-2005, 17:25
però adesso avrei un altro problema...con i doppi puntatori (che sinceramente non ho mai capito)..

devo completare questo programma in modo che sia corretto sia a tempo di compilazione che a tempo di esecuzione e che il valore stampato sia 10.


#include <stdio.h>
main(){
<CODICE DA COMPLETARE>
*p=*q * (**r);
printf("%d", *p);
}

veramente, qua sono proprio una frana e anche molto disperato....non ce ne capisco niente di questi puntatori...

chi mi da una MANO SANTA?

alka
29-08-2005, 17:40
Originariamente inviato da Trusty
però adesso avrei un altro problema...con i doppi puntatori (che sinceramente non ho mai capito)..

Per una migliore fruibilità del forum, ad ogni quesito o problema dovrebbe corrispondere una differente discussione, per evitare di "svicolare" dall'argomento principale.

Conviene anche a chi scrive perchè ad ogni discussione corrisponde un titolo (che dovrebbe essere il più possibile significativo) ed una visibilità comunque maggiore.

Ciao! :ciauz:

infinitejustice
29-08-2005, 17:50
guarda cosi è piu semplice ancora

void check(int *vettore, const int dim){

for(int i = 1; i <= 9; i++){
for(int j = 0; j <= dim; j++){
if(vettore[j] == i)
break; //Il valore i c'e'
else if(j == dim)
return;
}
}
printf("ci sono tutti");
}

alcuni output...
5 2 8 10 10 9 5 9 2 8 1 1 8 10 6 6 2 6 7 6 5 2 6 4 1

8 8 9 9 10 8 5 10 2 6 10 8 9 9 10 2 2 10 1 10 1 7 9 5 6

5 6 9 10 1 1 10 4 8 7 4 6 9 4 7 2 10 3 3 2 2 1 1 4 4
ci sono tutti

Trusty
29-08-2005, 17:54
per l'altro quesito posso/devo aprire un'altro form vero?

ok !

grazie infinitejustice! se magari mi date una mano anche sull'altro form vi faccio una statua d'oro! :ciauz: :ciauz:

infinitejustice
29-08-2005, 17:55
si beh cmq per il doppio puntatore una soluzione è questa

int x = 2, y = 5, *p, *q, **r;
p = &x;
r = &p;
q = &y;

*p = *q * (**r);
printf("%d", *p);

alka
29-08-2005, 18:01
Originariamente inviato da Trusty
per l'altro quesito posso/devo aprire un'altro form vero?

Non ho fatto in tempo a risponderti. :)
Il mio era un suggerimento valido per le prossime discussioni; questa ormai era già andata. :)

Fa nulla. Per il secondo quesito, continua la nuova discussione che hai aperto, comunque.

Ciao! :ciauz:

Trusty
29-08-2005, 18:05
puoi venire nell'altro form? grazie!

Loading