Newsgroup: it.comp.lang.c
Titolo: SFIDA...AIUTO...

nessuno sa dirmi cosa non va in questo programma ???
grazie
tripod_blee...
                            SVOLGIMENTO:
/* INCLUSIONI */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
/*--------------------------------------------------------------------------
--*/
/*PROTOTIPI DI FUNZIONI*/
void INSERISCI(int *, int);/*PROTOTIPO DELLA FUNZIONE INSERISCI*/
void DERIVA(int *,int,int **,int);/*PROTOTIPO DELLA FUNZIONE DERIVA*/
void VISUALIZZA(int *,int,int **,int);/*PROTOTIPO DELLA FUNZIONE
VISUALIZZA*/
/*--------------------------------------------------------------------------
--*/
/*MAIN*/
main ()
{
 char c;
 int n,nn,m,i;
 int *P;
 int **D;
 do
 {
  clrscr();
         /* TEST INSERIMENTO VALIDO */
  do
  {
 clrscr();
 printf("INSERISCI IL GRADO MASSIMO DEL POLINOMIO:  ");
 scanf("%d",&n);   /* COLONNE */
 }while(n<1);
         /* TEST INSERIMENTO VALIDO */
  do
  {
 clrscr();
 printf("INSERISCI IL NUMERO DELLE DERIVATE DA CALCOLARE:  ");
 scanf("%d",&m);   /* RIGHE */
 }while(m>n || m<1);
 printf("\n");
 P=(int *) malloc((n+1)*sizeof(int)); /*ALLOCAZIONE VETTORE P*/
 nn=n;
 D=(int **) malloc(m*sizeof(int *)); /*ALLOCAZIONE VETTORE D*/
 for (i=0;i<m;i++)
   {
    nn--;
    D[i]=(int *) malloc(nn*sizeof(int)); /*ALLOCAZIONE RIGHE*/
    }
 INSERISCI(P,n);/*ATTIVAZIONE DELLA FUNZIONE INSERISCI*/
 DERIVA(P,n,D,m);/*ATTIVAZIONE DELLA FUNZIONE DERIVA*/
 VISUALIZZA(P,n,D,m);/*ATTIVAZIONE DELLA FUNZIONE VISUALIZZA*/
 free(P);
 free(D);
 gotoxy(23,23);
 printf("VUOI CALCOLARE LA DERIVATA DI UN NUOVO POLINOMIO?(S/N)");
 do c=getch();while (c!='s' && c!='n' && c!='S' && c!='N');
 }while(c=='s' || c=='S');
 return 0;
 }
/*--------------------------------------------------------------------------
--*/
/*FUNZIONI*/
          /*INSERISCI-10TAB-*/
void INSERISCI(int *v, int l)/*DICHIARAZIONE DELLA FUNZIONE INSERISCI*/
{
 int i,grado;
/*CICLO INSERIMENTO POLINOMIO*/
 for (i=0;i<=l;i++)
   {
  grado=l-i;
  printf("MONOMIO GRADO %d: ",grado);scanf("%d",&v[i]);
  }
 }
          /*DERIVA-10TAB-*/
void DERIVA(int *v, int l, int **v1, int l1)/*DICHIARAZIONE DELLA FUNZIONE
DERIVA*/
{
 int i,j,ll,grado;
 ll=l;
/*CICLO CALCOLO DERIVATE*/
 for (j=0;j<l1;j++)
   {
  ll--;
  if (j==0) {
       for (i=0;i<ll;i++)
       {
        grado=l-i;
        v1[j][i]=grado * (v[i]);
        }
       }
  else      {
       for (i=0;i<ll;i++)
       {
        grado=l-i;
        v1[j][i]=grado * (v1[j-1][i]);
        }
       }
  }
 }
          /*VISUALIZZA-10TAB-*/
void VISUALIZZA(int *v, int l, int **v1, int l1)/*DICHIARAZIONE DELLA
FUNZIONE VISUALIZZA*/
{
 int i,j,grado,ll;
 ll=l;
 printf("POLINOMIO:\n");
/*CICLO VISUALIZZAZIONE POLINOMIO*/
 for (i=0;i<=l;i++)
   {
  grado=l-i;
  if (grado!=0) printf(" %dX^%d",v[i],grado);
  else printf("%d\n",v[i]);
  }
/*CICLO VISUALIZZAZIONE DERIVATE*/
 for (j=0;j<l1;j++)
   {
  ll--;
  printf("DERIVATA %d:",j+1);
  for (i=0;i<ll;i++)
    {
     grado=ll-i;
     if (grado!=0) printf(" %dX^%d ",v1[j][i],grado);
     else printf(" %d\n",v1[j][i]);
     }
  }
 }

  }
Infine, nella routine di visualizzazione, stessa cosa!
for (i=0;i<=l;i++)
 {
  grado=l-i;
  if (grado!=0) printf(" %dX^%d",v[grado],grado);
  else printf(" %d\n",v[grado]);
 }
 /*CICLO VISUALIZZAZIONE DERIVATE*/
 for (j=0;j<l1;j++)
 {
  printf("DERIVATA %d:",j+1);
  ll--;
  for (i=0;i<=ll;i++)
  {
   grado=ll-i;
   if (grado!=0) printf(" %dX^%d",v1[j][grado], grado);
   else printf(" %d\n", v1[j][grado]);
  }
 }
Poi pensa che se il programma ha soltanto la funzione di visualizzare le
derivate dei polinomi, la matrice non č per niente necessaria, basta un
vettore sul quale fai sovrascrivere i dati dopo avere fatto il calcolo...
Ciao
Riz