Récupérer les données d'un tableau [Résolu]

Signaler
Messages postés
3
Date d'inscription
mercredi 12 décembre 2012
Statut
Membre
Dernière intervention
23 juillet 2013
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
Salut tout le monde, j'ai posé cette question auparavant et j'ai été conseillé d'aller lire un document sur les pointeurs dont cela ne m'a pas trop aidé. D'abord, la contrainte, que j'ai dans mon programme, est que je n'arrive pas à récupérer les données d'un tableau dans une fonction pour l'utiliser dans une autre. Mon code:

#include <iostream>

using namespace std;

void menu(); // fonction qui affiche un menu d'options.

void initialiser(); // Avec la fonction initialise je mets des données manuellement.
void totalventes(); // sensée de me calculer le total des valeurs du tableau.

// Le case est peut-être pas intéressant pour le moment.

int main()
{
menu();
char choix;
cin >> choix;
switch(choix){

case '1':
initialiser(); // Appel de ma fonction initialiser.
break;

case '2':
totatventes(); // Appel de ma fonction totalVentes.
break;

case '3':
break;

case '4':
break;

case '5':
break;

case '6':
break;

default:
cout << " choix invalide " << endl;
}
return 0;
}


void menu(){

cout << endl;
cout << "Menu" << endl;
cout << " 1_ Initialisation " << endl;
cout << " 2_ Total ventes " << endl;
cout << " 3_ Moyenne ventes " << endl;
cout << " 4_ Meilleure vente " << endl;
cout << " 5_ Pire vente " << endl;
cout << " 6_ Quitter " << endl;
cout << " ===> Voulez-vous choisir une option:" ;
}


void initialiser(){

int lignes = 2;
int colonnes = 4;
int tableau[lignes][colonnes];

tableau [0][0] = 25000;
tableau [0][1] = 10000;
tableau [0][2] = 50000;
tableau [0][3] = 30000;
tableau [1][0] = 11000;
tableau [1][1] = 20000;
tableau [1][2] = 12500;
tableau [1][3] = 40000;

for(int i = 0; i < lignes; i++ )
{
cout << endl;
cout << endl;
for(int j = 0; j < colonnes; j++)
{
cout << tableau[i][j] << " " ;
}
}
}

void totalventes()
{
Dans le corps de cette fonction, je veux calculer le total et de l'afficher sans refaire un autre tableau et faire la même chose.

}

Merci pour toutes vos réponses.

Prog93.

3 réponses


Hello,
Tu ne peux pas le faire comme cela. Etant donné que ton tableau est local à ta méthode initialiser(), il est normal que tu ne le vois pas dans totalventes(). Il faut voir ta méthode comme une "boite noire" ou un sac: tout ce qui est dedans reste dedans.

Dans le main(), si tu connais la taille de ton tableau, tu peux le créer de manière statique. Sinon, il va falloir passer par les pointeurs...


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
23
Salut,

tu peux masquer les pointeurs avec un typedef,
Il suffit ensuite de passer le nom du tableau en paramètre, sans pointeur, comme on passerait un "int",

exemple pour un tableau dont la taille est connue :

const int LIGNES = 2; 
const int COLONNES = 4; 
typedef int TABLEAU2X4[LIGNES][COLONNES];

int totalventes(TABLEAU2X4 tab) 
{ 
int total=0;
for(int i=0; i<LIGNES; i++)  
for(int j=0; j<COLONNES; j++)  
total += tab[i][j]; 
return total;
}

int main(void)
{
TABLEAU2X4 monTableau = { {1,2,3,4}, {5,6,7,8} };

std::cout << "total = " << totalventes(monTableau) << std::endl;

return 0;
}



bye...
Messages postés
3
Date d'inscription
mercredi 12 décembre 2012
Statut
Membre
Dernière intervention
23 juillet 2013

Merci Buno. Dans ce cas, je vais aller relire 4 fois le chapitre des pointeurs afin de saisir le concept qui me semble très flou pour le moment.