FiddleComputers

EXO50 NF05

Nov 29th, 2020
506
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

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×