Question:programmation C++
Anna
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je suis débutante en C++ et j'ai un problème avec l'un de mes programmes (il ne fonctionne pas correctement). Voici l'énoncé de l'exercice:
Écrire un programme C++ qui permet de saisir tableau de taille dim, le maximum des éléments du tableau, le rang du maximum, le minimum et le rang du minimum (à l'aide des fonctions).
Voici ce que j'ai fait :
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int MAXIMUM (int T[]) {
int dim ;
int i ;
int Max = T[0];
for (i=0 ; i<dim ; i++){
if (Max < T[i]) {
Max = T[i];
}}
return Max;
}
int MAXRANG (int T[]) {
int dim ;
int i ;
int Max ;
int rangmax ;
for (i=0 ; i<dim ; i++) {
if (Max == T[i]) {
rangmax = i ;
}}
return rangmax ;
}
int MINIMUM (int T[]) {
int dim ;
int i ;
int Min = T[0] ;
for (i=0 ; i<dim ; i++){
if (Min > T[i]) {
Min = T[i];
}}
return Min ;
}
int MINRANG (int T[]) {
int dim ;
int i ;
int Min ;
int rangmin ;
for (i=0 ; i<dim ; i++) {
if (Min == T[i]) {
rangmin = i ;
}}
return rangmin ;
}
int main (){
int dim , i , T[100] ;
int Max, Min, rangmax, rangmin ;
cout << "Entrer une valeur pour la taille du tableau\n";
cin >> dim;
for (i=0 ; i<dim ; i++) {
cout << "Entrer un entier\n";
cin >> T[i];
}
Max = MAXIMUM (T);
cout << "Le maximum des elements est : " << Max << endl;
rangmax = MAXRANG (T) ;
cout << "Le rang du maximum est : " << rangmax << endl ;
Min = MINIMUM (T) ;
cout << "Le minimum des elements est : " << Min << endl ;
rangmin = MINRANG (T) ;
cout << "Le rang du minimum est : " << rangmin << endl ;
return 0;
}
Veuillez m'aider s'il vous plaît! Merci beaucoup!
Écrire un programme C++ qui permet de saisir tableau de taille dim, le maximum des éléments du tableau, le rang du maximum, le minimum et le rang du minimum (à l'aide des fonctions).
Voici ce que j'ai fait :
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int MAXIMUM (int T[]) {
int dim ;
int i ;
int Max = T[0];
for (i=0 ; i<dim ; i++){
if (Max < T[i]) {
Max = T[i];
}}
return Max;
}
int MAXRANG (int T[]) {
int dim ;
int i ;
int Max ;
int rangmax ;
for (i=0 ; i<dim ; i++) {
if (Max == T[i]) {
rangmax = i ;
}}
return rangmax ;
}
int MINIMUM (int T[]) {
int dim ;
int i ;
int Min = T[0] ;
for (i=0 ; i<dim ; i++){
if (Min > T[i]) {
Min = T[i];
}}
return Min ;
}
int MINRANG (int T[]) {
int dim ;
int i ;
int Min ;
int rangmin ;
for (i=0 ; i<dim ; i++) {
if (Min == T[i]) {
rangmin = i ;
}}
return rangmin ;
}
int main (){
int dim , i , T[100] ;
int Max, Min, rangmax, rangmin ;
cout << "Entrer une valeur pour la taille du tableau\n";
cin >> dim;
for (i=0 ; i<dim ; i++) {
cout << "Entrer un entier\n";
cin >> T[i];
}
Max = MAXIMUM (T);
cout << "Le maximum des elements est : " << Max << endl;
rangmax = MAXRANG (T) ;
cout << "Le rang du maximum est : " << rangmax << endl ;
Min = MINIMUM (T) ;
cout << "Le minimum des elements est : " << Min << endl ;
rangmin = MINRANG (T) ;
cout << "Le rang du minimum est : " << rangmin << endl ;
return 0;
}
Veuillez m'aider s'il vous plaît! Merci beaucoup!
4 réponses
Salut Anna, Quelle erreur renvoie ton compilo ?
je pense que ton problème vient du fait que dans ta fonction MAXIMUM, la variable dim est inconnue (idem pour la fonction MINIMUM)
==> solution : passer la variable dim en argument de ta fonction
Sinon, tu peux faire d'une pierre deux coups entre ta fonction MAXIMUM et MAXRANG
code non testé mais je pense qu'il devrait fonctionner.
je pense que ton problème vient du fait que dans ta fonction MAXIMUM, la variable dim est inconnue (idem pour la fonction MINIMUM)
==> solution : passer la variable dim en argument de ta fonction
Sinon, tu peux faire d'une pierre deux coups entre ta fonction MAXIMUM et MAXRANG
double MAXIMUM(int T[],int dim,int * rang) { /* T : tableau d'entiers dim : dimension du tableau rang : indice du max */ int max=T[0]; rang=0; for(int i=1;i<dim;++i) if(T[i]>max) { max=T[i]; rang=i; }
code non testé mais je pense qu'il devrait fonctionner.
ouh là là, je recommence ma fonction car il y a encore une faute
double MAXIMUM(int T[],int dim,int & rang) { /* T : tableau d'entiers dim : dimension du tableau rang : indice du max */ int max=T[0]; rang=0; for(int i=1;i<dim;++i) if(T[i]>max) { max=T[i]; rang=i; } return max;
Salut.
L'erreeur dans ton programme Ana c'est que dans ta fonction, tu déclare dim mais tu ne l'initialise pas :
"int dim;" est équivalent à "int dim=0;"
donc ta boucle ne fait qu'un tour d'où lobtention du premier argument.
Pom, à ta place je mettrai "int MAXIMUM..." plutot que 'double'
de plus pour eviter les segmentaztion fault, je conseil :
int *T;
cin>>dim;
T=new int[dim];
ce qui necessite peut être de remplacer "int MAXIMUM(int T[]..." par
"int MAXIMUM(int*T.." mais c'est plus propre!
Bonne continuation
L'erreeur dans ton programme Ana c'est que dans ta fonction, tu déclare dim mais tu ne l'initialise pas :
"int dim;" est équivalent à "int dim=0;"
donc ta boucle ne fait qu'un tour d'où lobtention du premier argument.
Pom, à ta place je mettrai "int MAXIMUM..." plutot que 'double'
de plus pour eviter les segmentaztion fault, je conseil :
int *T;
cin>>dim;
T=new int[dim];
ce qui necessite peut être de remplacer "int MAXIMUM(int T[]..." par
"int MAXIMUM(int*T.." mais c'est plus propre!
Bonne continuation