Tableau

Bonjour,
suis débutant en C.
Mon problème est que je veux extraire des valeurs dans un tableau pour appliquer des formules et enregistrer le résultat dans un autre tableau. Le problème c'est comment faire pour mettre les résultats dans un autre tableau.

Aider moi

2 réponses

  1. Bonjour,

    Euh... Simplement :

    int result = tab1[0];
    result += 3;
    tab2[0] = result;
    


    Avec result une variable qui récupère les données du premier tableau (j'ai mit int pour le cas où c'est un tableau d'entier)
    Ensuite result += 3 ça correspond aux calculs (à remplacer bien sûr)
    et la dernière ligne c'est le placement du résultat dans un nouveau tableau (déjà déclaré bien sûr ).

    Envoie ton code si tu as besoin d'un exemple plus concret ;)
    0
    1. Contributeur
      Salut, un exemple:
      int *tableau1 = malloc(20);
      
      int* ma_fonction(int *donnees) {
          int *tableau2 = malloc(20);
          for (int i=0; i < 20; i++) {
              // Tu tritures les chiffres de tableau1 et les mets dans tableau2
          }
          return tableau2;
      }
      
      int main() {
          // TU remplis tableau1
          int *calculay = ma_fonction(tableau1);
          // Tu fais joujou avec tableau2
      }
      Je sais par convention on n'alloue pas de tableau que l'on renvoie, un bordel pour gérer le heap après...

      from human import idiocy
      del idiocy
      -1
      1. Contributeur
        Nope. Dans ma_fonction, tu retournes une adresse située dans le stack => Erreur assurée (ou coup de chance). Il faut passer par un double pointeur.
        0
      2. Contributeur
        Je sais, j'ai fait de la m*rde... Mais je tient préciser que tableau2 est dans le stack, mais c'est qu'un pointeur donc le tableau est dans le heap, et tableau2 se fera juste copier dans le tas de main() au même titre qu'un int ou char. Pas d'erreur, ce code marche très bien:
        #include <stdio.h>
        #include <stdlib.h>
        
        int *tableau1;
        
        int* ma_fonction(int *donnees) {
        	int *tableau2 = (int*)malloc(20*sizeof(int));
        	for (int i=0; i < 20; i++) {
        		tableau2[i] = tableau1[i]*2;
        	}
        	return tableau2;
        }
        
        int main() {
        	tableau1 = (int*)malloc(20*sizeof(int));
        	tableau1[3] = 128;
        	tableau1[6] = 44;
        	int *calculay = ma_fonction(tableau1);
        	for (int i=0; i < 20; i++) {
        		printf("%d ", calculay[i]);
        	}
        	free(calculay);
        	free(tableau1);
        	return 0;
        } 
        Mais j'ai fait une pure merde; je devrais limite supprimer le post
        0