Anteprima
Vedrai una selezione di 1 pagina su 4
Programmazione - C - Matrice dinamica 1 Pag. 1
1 su 4
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

#include <stdlib.h>

#include <stdio.h>

#define RANGE_NUMERI 15 // indica il range (da 1 al numero qui scritto) di numeri che

potrebbero comparire all'interno dei vettori

int main ()

{ int n,i,j,**pt_pt,max,h,mat[RANGE_NUMERI][2],k,flag;

do

{ printf("inserire un numero : ");

// pulizia del buffer di input

fflush(stdin);

i=scanf("%d",&n);

//controllo che la scanf sia andata a buon fine

if(!i)

{ printf("Non hai inserito un numero!\n\n");

n=-1;

//passiamo alla prossima iterazione

continue;

}

if(n<1)

{ printf("il numero inserito non può essere minore di 1\n\n");

}

}

while (n<1);

pt_pt = (int **) malloc(n * sizeof(int *)); //allocazione puntatore di puntatore a int...

per creare poi una matrice dinamica

if(pt_pt == NULL)

{ printf("Non e' stato possibile allocare la memoria!!\n\n");

system("pause");

exit(1);

}

for (i=0;i<n;i++) // allocazione dei vettori che conterranno i numeri

{ pt_pt[i]= (int *) malloc( (i+2) * sizeof(int));

if(pt_pt[i] == NULL)

{ printf("Non e' stato possibile allocare la memoria!!\n\n");

system("pause");

exit(1);

}

}

printf("\n\n");

srand(time(NULL));

for (i=0;i< n ;i++) //riempimento random dei vettori

{ for (j=0;j< i+2 ;j++)

{ pt_pt[i][j] = rand() % RANGE_NUMERI + 1;

}

}

max = pt_pt[0][0];

for (i=0;i<RANGE_NUMERI;i++) //inizializzazione matrice di

appoggio

{ mat[i][0]=0;

mat[i][1]=0;

}

h=0;

for(i=0;i< n ;i++) //stampo il risultato dell'inizializzazione random

{ for (j=0;j< i+2 ;j++)

{ printf(" %3d",pt_pt[i][j]);

}

printf("\n");

}

printf("\n\n");

for (i=0;i< n ;i++)

{ for (j=0;j< i+2 ;j++)

{ if(pt_pt[i][j]>max) //cerco il max

{ max = pt_pt[i][j];

}

// trovo quali numeri sono ripetuti grazie alla matrice di appoggio

if(h==0)

{ mat[h][0]=pt_pt[i][j];

mat[h][1]++;

h++;

}

else

{ flag=0;

for (k=0;k<h;k++)

{ if(mat[k][0]==pt_pt[i][j])

{ mat[k][1]++;

flag=1;

}

}

if (flag==0)

{ mat[h][0]=pt_pt[i][j];

Dettagli
Publisher
A.A. 2013-2014
4 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher siboXD di informazioni apprese con la frequenza delle lezioni di Programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Carbonaro Antonella.