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;}