Errore cannot convert `int (*)[100]' to `int*' for argument

di il
3 risposte

Errore cannot convert `int (*)[100]' to `int*' for argument

Devo realizzare un programma che effettua il calcolo formale tra polinomi, il programma seguente non è terminato, ho provato a compilarlo per vedere se fin dove fatto c'erano degli errori e come errore alla compilazione mi da il seguente:

cannot convert `int (*)[100]' to `int*' for argument `3' to `void leggi(poli, int, int*)'

che vuol dire e dove sta lo sbaglio?

il codice è il seguente
/* Realzzare un programma di calcolo formale di algebra dei polinomi (somma, sottrazione, moltiplicazione). 
Il programma deve essere in grado di eseguire operazioni come:
(a + b) * (a - b) = a^2 - b^2
(a + b)^2 = a^2 + 2ab + b^2 */

#include<stdio.h>
#include<stdlib.h>
using namespace std;
typedef int vettore[100];

struct pol {double coeff;
               char var[100];   
               double deg;};

struct poli {pol p[100];}; 

void leggi(poli,int,vettore);
void somma(poli,int,vettore);
void diff(poli,int,vettore);
void prod(poli,int,vettore);

int main()
{ char opzione;
int n; 
poli pp[100];         
vettore v[100];
printf("\n\nnumero polinomi in lettura");
scanf("%d",&n);

leggi(pp[100],n,v);

printf("\n\n scegliere quale operazione tra somma, prodotto e moltiplicazione\n\n fare tra polinomi\n");
printf("Se somma digitare +\n");
printf("Se differenzq digitare -\n");
printf("Se moltiplicazione digitare *\n");
printf("Se potenza digitare ^\n\n");
printf("opzione=");scanf("%c",&opzione);
switch(opzione){
                case '+': somma(pp[100],n,v);break;
                case '-': diff(pp[100],n,v); break;
                case '*': prod (pp[100],n,v); break;
                case '^': prod (pp[100],n,v); }

system("pause");
return 0;
}

void leggi(poli pp[100],int n,vettore v)
{ int i,j,flag;
for(i=0;i<=n-1;i++)                  
{j=0;
flag=0; 
printf("\n\n\n");
do {                                         
printf("termine %d",j);
scanf("%lf",&pp[i].p[j].coeff);

if(pp[i].p[j].coeff==0)
{j=j-1;break;}

scanf("%c",&pp[i].p[j].var[0]);
scanf("%lf",&pp[i].p[j].deg);

printf("\n continuare? se sì digita 0:");
scanf("%d",&flag);
j++;}

while(flag==0);
v[i]=j;                    }

return;}

3 Risposte

  • Re: Errore cannot convert `int (*)[100]' to `int*' for argument

    Ciao LelleL,
    il codice è illeggibile, ti converrebbe formattarlo correttamente, sarà un grosso vantaggio sia per te sia per chi dovrà leggerlo.

    dato un prototipo del genere:
    
    typedef int vettore[100];
    
    struct pol
    {
    	double coeff;
    	char var[100];
    	double deg;
    };
    
    struct poli
    {
    	pol p[100];
    };
    
    void leggi(poli, int, vettore);
    
    una chiamata corretta sarebbe:
    
        int n; 
        poli pp;
        vettore v;
     
        leggi(pp, n, v);
    
    oppure:
    
        int n; 
        poli pp[50];
        vettore v[30];
     
        leggi(pp[4], n, v[7]);
    
  • Re: Errore cannot convert `int (*)[100]' to `int*' for argument

    barba59 ha scritto:



    una chiamata corretta sarebbe:
    
        int n; 
        poli pp;
        vettore v;
     
        leggi(pp, n, v);
    
    ho provato a farlo anche così ma mi dà errore.

    Un'altra cosa che non capisco è che ho provato a farlo con array senza limiti anziché mettere la gransezza standard [100], ma me lo segnala errore.
  • Re: Errore cannot convert `int (*)[100]' to `int*' for argument

    Ma io penso che ci sia un po di confusione in chi ha scritto sia i prototipi delle funzioni che nel richiamare questi utilizzandole.

    Mi stupisco pure che compili.
Devi accedere o registrarti per scrivere nel forum
3 risposte