Tableau

Fermé
isa - 6 août 2013 à 18:49
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 6 août 2013 à 22:44
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

arthurg95 Messages postés 2421 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 4 juin 2014 341
6 août 2013 à 18:53
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 6/08/2013 à 18:56
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
6 août 2013 à 22:14
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
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
6 août 2013 à 22:44
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