Newsgroup: it.comp.lang.c
Titolo: Re: somma vettore colonna

 ciao e grazie a tutti
/* nota: l'indice nell'esempio qui sotto va da 0 a 1023 e non da 1 a 1024
come da te indicato */
int somma, i, a[1024], b[1024];
somma = 0;
for (i = 0; i < 1024; i++)
    somma += a[i] * b[i];

     somma += a[i] * b[i];
grazie. guarda cosa ho fatto io, mi sa che ci sono problemi anche
prima della somma!! mi sapresti dire quali sono gli errori? non riesco
proprio a trovarli....sospetto i puntatori!!
il programma ha come parametri un coefficiente costante detto area, 2
file dati da leggere e un file dati da creare. in pratica deve leggere
i due file dati che sono vettori  colonna(fcon e fen), poi li devo
moltiplicare riga per riga ottenendo un altro vettore colonna (detto
totcont) e infine scrivere su un file la somma degli elementi di
questo vettore (diviso un fattore costante che si chiama area). ho
fatto una prova con file stupidi scritti da me di vettori composti da
3 elementi, in realtà come dicevo prima essi ne hanno ciascuno 1024.
credevo di sapermi districare con un programma del genere...eppure non
ci riesco. help!! grazie!!!!
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
float somma();
int main(int argc,char *argv[])
{
  if(argc!=5){
    fprintf(stderr,"right usage:  area,fcon,fen, output file");
    exit(1);
  }
  float fluence;
  float area = atof(argv[1]);
  FILE *fcon, *fen,*ffluen;
  fcon=fopen(argv[2], "r");
  if (fcon==NULL){
    printf("can't open file\n", argv[2]);
    exit(1);
  }
  fen=fopen(argv[3], "r");
  if (fen==NULL){
    printf("can't open file\n", argv[3]);
    exit(1);
  }
  ffluen=fopen(argv[4], "w");
  if (ffluen==NULL){
    printf("can't open file\n", argv[4]);
    exit(1);
  }
  float cont [3];
  int i;
  for(i=0;i<3;i++)
    fscanf(fcon,"%3d",&cont[i]);
  float binen [3];
  int j;
  for(j=0;j<3;j++)
	fscanf(fen,"%3d",&binen[j]);
  float totcont[3];
  int k;
  for (k=0;k<3;k++)
      totcont[k]=cont[i]*binen[j];
 float somma()
    {
      int w;
      float x=0.0;
      float sum;
      for(w=0;w<3;w++)
	x=x+ totcont(k);
      return x;
      }
fluence=(float)somma()/(float)area;
  fprintf (ffluen, "%d\n", fluence);
  fclose(ffluen);
}

 prima della somma!! mi sapresti dire quali sono gli errori? 
L'errore (senza offesa...) e' che non hai mai preso in mano
un manuale di C in vita tua ... almeno lo spero.
Non ho mai visto roba simile!
Senza controlli, cosi' di getto:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char *argv[])
{
   double somma=0.0, x, y, area;
   int i;
   FILE *fin1, *fin2, *fout;
   area=atof(argv[1]);
   fin1=fopen(argv[2],"r");
   fin2=fopen(argv[3],"r");
   for (i=0; i<1024; i++)
   {
      fscanf(fin1,"%lf",&x);
      fscanf(fin2,"%lf",&y);
      somma += x * y;
   }
   fclose(fin1);
   fclose(fin2);
   fout=fopen(argv[4],"w");
   fprintf(fout,"%f",somma/area);
   fclose(fout);
   return 0;
}
g.


beh, c'è sempre una prima volta nella vita! e comunque ricorda che non
tutti maneggiano il C tutti i giorni ma lo usano solo occasionalmente,
che non tutti amano programmare, anzi, ritengono che sia abbastanza
noioso...ma lo devono fare, e che nn tutti hanno le medesime capacità.
il mondo è bello perchè è vario!!
grazie comunque...e non mi sono offeso
ciao ciao

   fscanf(fcon,"%3d",&cont[i]);
tipico...
%3d legge un intero dal file
Per leggere un float devi usare %f, %ld per un double, come ha fatto Marco.
Buono Studio
Giuseppe

ok! grazie mille per i consigli, pian piano imparo!!
ciao ciao
sophos