|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Ricorsione
Ciao a tutti,esperti o meno.... devo fare una PROCEDURA RICORSIVA,
int decr (int tab[] , int n) nella quale vi è un array di interi, tale procedura restituisce 0 se i numeri inseriti sono decrescenti (in valore assoluto) altrimenti 1... ho iniziato ad impostarla...ma coem ricorsione non è il massimo... non riesco a districarmine.... avete consigli? #include <stdlib.h> #include <stdio.h> #define DIM 5 int decr (int tab[], int n) { if (abs (tab[n-1])> abs (tab[n-2])) return 1; else decr (tab, n-1); /*boo quà sto ancora improvvisando...*/ } int main() {int a,i=0; int tab [DIM]; printf ("Scrivi %d numeri\n",DIM); for (i=0; i<DIM; i++) {printf ("Digita il %d numero\n",i+1); scanf ("%d",&tab[i]);} a= decr (tab, DIM); printf ("%d\n",a); system("PAUSE"); return 0; }
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Manca la condizione di arresto...
Una funzione del genere ti andrebbe in ciclo... Non è che poi ci si possa inventare l'impossibile con una funzione così semplcie Io l'avrei fatta così : Codice:
int decr(int tab[], int n)
{
if(n <= 1) /*condizione di errore*/
return 1;
if(abs(tab[n-1]) > abs(tab[n-2]))
return 1;
if(n == 2) /*condizione di arresto*/
return 0;
return decr(tab, n-1);
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
coinci, mi speghi l'utilizzo del tag code?? Non ne ero a conoscenza
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Quote:
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
E ti lascia il codice indentato...c'è anche il tag PHP, per scrivere codice php |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Fantastico
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Quote:
Grazie !!! intanto ho partorito questa...ceh ad occhio è simile alla tua....che dici? può andare? int decr (int tab[], int n) { if (n==1) return 0; if (abs (tab[n-1])< abs (tab[n-2])) decr (tab, n-1); else return 1; } Fisso oggi ha fatto array multidimensionali....!!! meglio che vada a studiarli che se mi prendo indietro ora che le cose si fanno complicate....son finito! Posso una domanda illecita? dato che dai programmare bene lo fai per lavvoro o per studio? .... tanto per farmi i cavoli tuoi.... ciao
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per entrambe le cose
Sì...può andare bene, ma manca il return...altrimenti non funziona niente... Codice:
int decr (int tab[], int n)
{
if (n==1)
return 0;
if (abs (tab[n-1])< abs (tab[n-2]))
return decr (tab, n-1); /*mancava il return qui*/
return 1; /*tolto l'else per evitare warning in compilazione*/
}
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Ciao, ho un nuovo quesito....
devo fare una funzione che dato un array di caratteri e un successivo carattere inserito dall'utente, determini se tale carattere è effettivamente presente nell'array.... la funzione deve restituire un puntatroie all'elemento dell'array che contiene il carattere insewrito dall'utente se tale elemento esiste, altrimenti restituisce NULL. Io ho partorito sto aborto....ma il compilatore mi da un errore prima della chiamata della procedura....????? #include <stdlib.h> #include <stdio.h> #define DIM 5 char *cerca_carattere (char a[], char caract, int dim) {char *p; for (p=&a[0]; p<=&a[dim-1]; p++) if (*p==caract) return p ; } int main() {int i; char caract; char tab[DIM]; for (i=0; i<DIM; i++) {printf ("Scrivi la %d lettera\n", i+1); scanf ("%c", & tab[i]);} printf ("Digita un ulteriore carattere\n"); scanf ("%c",&caract); char *cerca_carattere (tab,caract,DIM) system("PAUSE"); return 0; }
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
#include <stdlib.h>
#include <stdio.h> #define DIM 5 char *cerca_carattere (char a[], char caract, int dim) {char *p; for (p=&a[0]; p<=&a[dim-1]; p++) if (*p==caract) return p ; /*una funzione deve sempre ritornare in qualsiasi suo ramo di terminazione, quindi nel caso che il carattere non venga trovato devo ritornare qualcosa, cioè NULL*/ return NULL; } int main() {int i; char caract; char tab[DIM]; char *p; /* variabile in cui mettere il risultato della ricerca */ for (i=0; i<DIM; i++) {printf ("Scrivi la %d lettera\n", i+1); scanf ("%c", & tab[i]);} printf ("Digita un ulteriore carattere\n"); scanf ("%c",&caract); p = cerca_carattere (tab,caract,DIM); /*assegnazione del risultato a p*/ if(p != NULL) printf("\nCarattere trovato!!!\n"); system("PAUSE"); return 0; } |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:43.



















