#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<math.h>
//questo programma l’ho pensato così ma riconosco che si potesse anche risolvere inserendo una matrice
//essendo noti sia il massimo numero di colonne (6), sia il massimo numero di righe (100000)
int main(int argc, char*argv[])
{
const int MAX=100;
FILE*f;
FILE*f2;
char riga[MAX+1];
int azioni[6];
int cliente,codcl,codsoc,i;
if(argc!=7)
{
printf(“numero di parametri errato\n”);
exit(1);
}
f=fopen(argv[1],”r”);
if(f==NULL)
{
printf(“impossibile aprire il file\n”);
exit(1);
}
codcl=atoi(argv[2]);
codsoc=atoi(argv[3]);
while(fgets(riga,MAX,f)!=NULL)
{
sscanf(riga,”%d %d %d %d %d %d”, &cliente, &azioni[1], &azioni[2], &azioni[3], &azioni[4], &azioni[5]);
if(cliente==codcl)
{
if(strcmp(argv[4],”A”)==0)
{
azioni[codsoc]=azioni[codsoc]+atoi(argv[5]);
}
else if(strcmp(argv[4],”V”)==0)
{
if(azioni[codsoc]>=atoi(argv[5]))
{
azioni[codsoc]=azioni[codsoc]-atoi(argv[5]);
}
else
{
printf(“impossibile concludere la transazione, numero di azioni insufficienti\n”);
}
}
else if(strcmp(argv[4],”G”)==0)
{
if(azioni[codsoc]!=0)
{
azioni[codsoc]=azioni[codsoc]+((atoi(argv[5])*((azioni[codsoc])/100)));
}
else
{
printf(“impossibile concludere la transazione, non si posseggono azioni della societa’ %d”, codsoc);
}
}
}
f2=fopen(argv[6], “a”);
if(f2==NULL)
{
printf(“impossibile aprire il file\n”);
exit(1);
}
fprintf(f2,”%2d “, cliente);
for(i=1;i<=5;i++)
{
fprintf(f2,”%5d “,azioni[i]);
}
fprintf(f2,”%s”, “\n”);
fclose(f2);
}
fclose(f);
exit(0);
}

Ci hai salvato
Alby,Ele e Dani