int i;
*Val = 0.;
for(i = 0; i< 3; i++) {
*Val = *Val + a[i] * b[i];
}
z[0]= a[1]*b[2]-a[2]*b[1];
z[1]= a[2]*b[0]-a[0]*b[2];
z[2]= a[0]*b[1]-a[1]*b[0];
v=(double *)malloc(n*sizeof(double));
free(v);
/* Riempimento di un vettore */
Supponiamo di aver dichiarato un array a[] (o statico o dinamico con malloc) di dimensione dim e di
volerlo riempire tramite tastiera (in questo caso sono double):
for(i=0;i<dim;i++){
scanf(%lf, &a[i]);
}
se invece lo si vuole riempire con il risultato di unoperazione:
for(i=0;i<dim;i++){
a[i]=OPERAZIONE; \\come una somma, un altro vettore, ecc.
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%lf", &a[i][j]);
}
}
se invece la si vuole riempire con il risultato di unoperazione:
for(i=0;i<n;i++){
for(j=0;j<m;j++){
a[i][j]=OPERAZIONE;
}
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
printf(%lf , a[i][j]);
}
printf(\n);
}
input=fopen(in, r");
//Apro il file e verifico che sia aperto
if(input==NULL){
printf("Impossibile aprire il file.\n");
exit(1);
}
fscanf(input, %tipo_dato_da_leggere, &variabile_da_riempire);
[Esempio fscanf(input, %lf, &x);]
scanf("%s", out);
output=fopen(out, w");
//Apro il file e verifico che sia aperto
if(output==NULL){
printf("Impossibile aprire il file.\n");
exit(1);
}
fprintf(output, %tipo_dato_da_scrivere, variabile_da_scrivere);
[Esempio fprintf(output, %lf, x);]
srand48(seed);
for(i=0; i<N; i++){
pts[i].x=drand48();
pts[i].y=drand48();
}
- Per un rettangolo di lati a e b:
for(i=0; i<N; i++){
pts[i].x=a*drand48();
pts[i].y=b*drand48();
}
/* Ordinare un array */
Nel programma:
int main(){
double x[n], z[n];
for(i=0;i<n;i++){
gauss(&x[i]);
z[i]=a+b*x[i];
}
return 0;
}
return 0;
for(i=0;i<N;i++){
dist[i]=sqrt(pts[i].x*pts[i].x+pts[i].y*pts[i].y);
}
return 0;
/* Esame Matrice */
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *input, *output;
const int MAX=100;
char inp[MAX], out[MAX];
int n, m, i, j;
double **mat1, **mat2;
printf("Inserire il nome del file contenente la matrice:\n");
scanf("%s", inp);
input=fopen(inp, "r");
if(input==NULL){
printf("Impossibile aprire il file.\n");
exit(1);
}
fscanf(input, "%d , %d", &n, &m);
mat1=(double **)calloc(n, sizeof(double*));
for(i=0;i<n;i++){
mat1[i]=(double *)calloc(m, sizeof(double));
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
fscanf(input, "%lf", &mat1[i][j]);
}
}
mat2=(double **)calloc(n, sizeof(double*));
for(i=0;i<n;i++){
mat2[i]=(double *)calloc(m, sizeof(double));
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(j==0){
mat2[i][j]=mat1[i][j];
} else {
if(mat1[i][j-1]==1){
mat2[i][j]=0;
} else {
mat2[i][j]=mat1[i][j];
}
}
}
}
printf("Inserire il nome del file su cui scrivere la nuove matrice:\n");
scanf("%s", out);
output=fopen(out, "w");
if(output==NULL){
printf("Impossibile aprire il file.\n");
exit(1);
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
fprintf(output, "%.0lf ", mat2[i][j]);
}
fprintf(output, "\n");
}
}
return 0;
/* Esame Cerchio */
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct point{
double x;
double y;
double d;
};
void OrdinaCrescente(struct point *a, const int N) {
int i, j, min;
struct point temp;
int main(){
FILE *output1, *output2;
const int MAX=100;
char out1[MAX], out2[MAX];
int N, i;
struct point *pts=NULL;
double PI=acos(-1.0L), r, theta;
const long int seed=123456;
printf("Quanti punti generare?\n");
scanf("%d", &N);
pts=(struct point *)malloc(N*sizeof(struct point));
srand48(seed);
for(i=0;i<N;i++){
r=drand48();
theta=2.0L*PI*drand48();
pts[i].x=r*cos(theta);
pts[i].y=r*sin(theta);
pts[i].d=r;
}
printf("File di output non ordinato: ");
scanf("%s", out1);
output1=fopen(out1, "w");
if(output1==NULL){
printf("Impossibile aprire il file.\n");
exit(404);
}
for(i=0;i<N;i++){
fprintf(output1, "%lf %lf - Distanza=%lf\n", pts[i].x, pts[i].y, pts[i].d);
}
| CONTINUA |
| CONTINUA |
printf("File di output ordinato: ");
scanf("%s", out2);
output2=fopen(out2, "w");
if(output2==NULL){
printf("Impossibile aprire il file.\n");
exit(404);
}
OrdinaCrescente(pts, N);
for(i=0;i<N;i++){
fprintf(output2, "%lf %lf - Distanza=%lf\n", pts[i].x, pts[i].y, pts[i].d);
}
fclose(output1);
fclose(output2);
free(pts);
}
return 0;