|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 44
|
[C] Problemi inversione di un vettore
Salve a tutti...
sto facendo un programma che prenda un vettore e lo inverta.... per ora sono riuscito a fare questo: Codice:
#include <stdio.h>
#include <stdlib.h>
#define MAX_VETT 100
int *inverso(int *vett[]);
int vett[MAX_VETT],inv_vett[MAX_VETT];
int i,dim_vett,j;
main()
{
inizio:
printf("Inserisci la dimensione del vettore (MAX 100): ");
scanf("%d",&dim_vett);
if(dim_vett<=MAX_VETT)
{
printf("Ora inserici uno ad uno i valori del vettore: \n");
for(i=0;i<dim_vett;i++)
scanf("%d",&vett[i]);
for(j=0;j<dim_vett;j++)
printf("%2d",vett[j]);
printf("\n\n");
inv_vett=inverso(vett);
for(j=0;j<dim_vett;j++)
printf("%2d",inv_vett[j]);
}
else
{
printf("\n\nIl valore max e' 100!!! RIPROVA!!!\n\n");
goto inizio;
}
system("pause");
}
int *inverso(int *vett[])
{
for(i=dim_vett;i>=0;i--)
{
for(j=0;j<dim_vett;j++)
{
inv_vett[j]=*vett[i];
}
}
return(inv_vett);
}
Il compilatore mi da questo errore: "error: cannot convert 'int*' to 'int**' for argument '1' to 'int* inverso(int**)' cosa devo fare?? qualcuno è in grado di correggerlo?? Grazie mille a tutti |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
|
vett è un array, dunque int*, mentre la funzione inverso() si aspetta un puntatore ad array, dunque int**.
Correggi la definizione e dovrebbe andare. Ricordati anche quando posti gli errori di riportare il numero di riga ![]() Inoltre, evita di dichiarare variabili come globali e non usare quel lercissimo goto! Puoi rendere in maniera molto più chiara il tutto usando un do...while, ad esempio. Dai un occhio al teorema di Bohm-Jacopini.
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. --Gerald Weinberg Ultima modifica di Albi89 : 04-06-2008 alle 17:34. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2007
Messaggi: 44
|
Codice:
#include <stdio.h>
#include <stdlib.h>
#define MAX_VETT 100
int *inverso(int *vett[]);
int vett[MAX_VETT],inv_vett[MAX_VETT];
int i,dim_vett,j;
main()
{
inizio:
printf("Inserisci la dimensione del vettore (MAX 100): ");
scanf("%d",&dim_vett);
if(dim_vett<=MAX_VETT)
{
printf("Ora inserici uno ad uno i valori del vettore: \n");
for(i=0;i<dim_vett;i++)
scanf("%d",&vett[i]);
for(j=0;j<dim_vett;j++)
printf("%2d",vett[j]);
printf("\n\n");
for(i=0;i<dim_vett;i++);
inverso(*vett[i]);
for(j=0;j<dim_vett;j++)
printf("%2d",inv_vett[j]);
}
else
{
printf("\n\nIl valore max e' 100!!! RIPROVA!!!\n\n");
goto inizio;
}
system("pause");
}
int *inverso(int *vett[])
{
for(i=dim_vett;i>=0;i--)
{
for(j=0;j<dim_vett;j++)
{
inv_vett[j]=*vett[i];
}
}
return(inv_vett);
Codice:
for(i=0;i<dim_vett;i++);
inverso(*vett[i]);
Mi da un errore alla riga 24 nello stesso punto di prima... ho aggiunto il puntatore come dici tu ma non va.... Cosa faccio?? Grazie mille per l'aiuto Ultima modifica di Ov3rLo4d : 04-06-2008 alle 17:42. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2004
Città: Napoli
Messaggi: 773
|
Quote:
Codice:
int* inverti(int vett[]) Codice:
int* inverti(int* vett) In ogni caso, molto più importanti dei consigli sull'esercizio sono quelli che ti ho scritto dopo. Imparare a risolvere questo esercizio non ti servirà a niente, capire le buone abitudini di programmazione ti aiuterà nella vita
__________________
If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. --Gerald Weinberg |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2005
Città: Morimondo city
Messaggi: 5491
|
senza offesa,ma piu che intestardirti sul perchè non ti funziona,come dice albi89 mi andrei a vedere come si scrive un programma,ma su che libro hai studiato?
__________________
Khelidan |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:33.





















