Récupérer les données d'un tableau

Résolu
prog93 Messages postés 3 Date d'inscription mercredi 12 décembre 2012 Statut Membre Dernière intervention 23 juillet 2013 - 23 juil. 2013 à 07:53
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 23 juil. 2013 à 21:17
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

Utilisateur anonyme
23 juil. 2013 à 09:34
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...
3
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
23 juil. 2013 à 21:17
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...
3
prog93 Messages postés 3 Date d'inscription mercredi 12 décembre 2012 Statut Membre Dernière intervention 23 juillet 2013
23 juil. 2013 à 20:08
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.
0
Rejoignez-nous