FiddleComputers

EXO50 NF05

Nov 29th, 2020
500
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. char* input_string()
  5. {
  6.     getchar(); //on vide le buffer
  7.  
  8.     int n = 0;
  9.     char *c = (char*) malloc(1);
  10.     char saisie = getchar();
  11.     while(saisie != '\n')
  12.     {
  13.         c[n] = saisie;
  14.         saisie = getchar();
  15.         n++;
  16.         c = (char*) realloc(c, n+1);
  17.     }
  18.  
  19.     c[n] = '\0';
  20.  
  21.     return c;
  22. }
  23.  
  24. void ecrire_vecteurs(int n, int m, char* filename)
  25. {
  26.     FILE *file = fopen(filename, "w");
  27.     int i,j;
  28.     float element;
  29.     for(i=0;i<m;i++)
  30.     {
  31.         for(j=0;j<n;j++)
  32.         {
  33.             printf("Entrer l'element %d du vecteur %d\n", j, i);
  34.             scanf("%f", &element);
  35.             fprintf(file, "%.3f ", element);
  36.         }
  37.         fprintf(file, "\n");
  38.     }
  39.     fclose(file);
  40. }
  41.  
  42. void addition_vecteurs(int n, int m, char* filename)
  43. {
  44.     FILE *file = fopen(filename, "r+");
  45.     float **vecteurs = (float**) malloc((m+1)*sizeof(float*));
  46.     int i,j,k;
  47.     //Lecture des vecteurs
  48.     for(i=0;i<m;i++)
  49.     {
  50.         vecteurs[i] = (float*) malloc(n*sizeof(float));
  51.         for(j=0;j<n;j++)
  52.         {
  53.             fscanf(file, "%f", &vecteurs[i][j]);
  54.         }
  55.     }
  56.     fclose(file);
  57.  
  58.     file = fopen(filename, "a");
  59.     int pos = 0;
  60.     //Addition des vecteurs
  61.     vecteurs[m] = (float*) malloc(n*sizeof(float));
  62.     for(i=0;i<n;i++)
  63.     {
  64.         vecteurs[m][pos] = 0;
  65.         for(j=0;j<m;j++)
  66.         {
  67.             vecteurs[m][pos] += vecteurs[j][i];
  68.         }
  69.         pos++;
  70.     }
  71.  
  72.     for(i=0;i<n;i++)
  73.     {
  74.         fprintf(file, "%.3f ", vecteurs[m][i]);
  75.     }
  76.     fclose(file);
  77. }
  78.  
  79. int main(int argc, char const *argv[])
  80. {
  81.     int n, m;
  82.     printf("Combien de vecteurs voulez-vous ecrire ?\n");
  83.     scanf("%d", &m);
  84.     printf("Quelle est la taille de ces vecteurs ?\n");
  85.     scanf("%d", &n);
  86.  
  87.     char* filename;
  88.     printf("Entrer le nom du fichier (avec l'extension)\n");
  89.     filename = input_string();
  90.  
  91.     ecrire_vecteurs(n,m,filename);
  92.     addition_vecteurs(n,m,filename);
  93.     return 0;
  94. }
RAW Paste Data