Prob avec le code source
Résolu/Fermé
A voir également:
- Prob avec le code source
- Le code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
18 févr. 2010 à 15:10
18 févr. 2010 à 15:10
int somme_ligne ( const int i , const int ok , const int taille )
{
int som ;
for( int i=0 ; i < taille ; i++ )
tu mets un const sur i alors que tu le modifies.... t'as pas le droit il me semble.
de plus, tes variables sont passées sur la pile, donc meme si tu modifies ton i, il ne sera pas modifié dans la fonction appellante
{
int som ;
for( int i=0 ; i < taille ; i++ )
tu mets un const sur i alors que tu le modifies.... t'as pas le droit il me semble.
de plus, tes variables sont passées sur la pile, donc meme si tu modifies ton i, il ne sera pas modifié dans la fonction appellante
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
19 févr. 2010 à 09:11
19 févr. 2010 à 09:11
bien sur, car tu fais de la redéfinition de variables....
#include <iostream>
#include <windows.h>
using namespace std;
const int TAILLE_MAX = 100;
typedef int ok[5][5];
ok ok5[5][5]={ //ici tu crées ok5 qui est visible PARTOUT DANS LE PROGRAMME (variable glaobale car déclaré en dehors d'une fonction)
{17, 24, 1, 8, 15},
{23, 5, 7, 14, 16},
{4, 6, 13, 20, 22},
{10, 12, 19, 21, 3},
{11, 18, 25, 2, 9 }
};
int somme_ligne ( int l , ok ok5 , int taille ) //3:tu récupères ton paramèter nommé ok5 qui est la variable
//remplaces cette ligne par
int somme_ligne ( int l , ok tartiflette), int taille //et ca marchera ...
déclaré dans le main, donc non initialisé
{
int som =0 ;
if ( taille > TAILLE_MAX || l > taille ) {
cout << "Erreur fonction som_ligne : depassement de la taille " << endl ;
exit(-1) ;
}
for (int i=0;i<taille;i++){
som=som + ok5[l][i]; //4: tu travailles avec un tableau qui contient des valeurs complètement aléatoires
}
return som;
}
int main()
{
int som,i,j,l,taille ;
ok ok5; //1:ici tu déclare un objet de type ok, nommé ok5, comme ta vcariable globale, mais celle ci n'est jamais initialisé !!!!
cout << "Quel est la taille de votre matrice" ;
cin >> taille;
som=somme_ligne( l,ok5,taille); //2:tu passes en parametre ok5 qui n'est pas initialisé car la variable locale prime sur la variable globale
cout << som;
Sleep(10000);
}
#include <iostream>
#include <windows.h>
using namespace std;
const int TAILLE_MAX = 100;
typedef int ok[5][5];
ok ok5[5][5]={ //ici tu crées ok5 qui est visible PARTOUT DANS LE PROGRAMME (variable glaobale car déclaré en dehors d'une fonction)
{17, 24, 1, 8, 15},
{23, 5, 7, 14, 16},
{4, 6, 13, 20, 22},
{10, 12, 19, 21, 3},
{11, 18, 25, 2, 9 }
};
int somme_ligne ( int l , ok ok5 , int taille ) //3:tu récupères ton paramèter nommé ok5 qui est la variable
//remplaces cette ligne par
int somme_ligne ( int l , ok tartiflette), int taille //et ca marchera ...
déclaré dans le main, donc non initialisé
{
int som =0 ;
if ( taille > TAILLE_MAX || l > taille ) {
cout << "Erreur fonction som_ligne : depassement de la taille " << endl ;
exit(-1) ;
}
for (int i=0;i<taille;i++){
som=som + ok5[l][i]; //4: tu travailles avec un tableau qui contient des valeurs complètement aléatoires
}
return som;
}
int main()
{
int som,i,j,l,taille ;
ok ok5; //1:ici tu déclare un objet de type ok, nommé ok5, comme ta vcariable globale, mais celle ci n'est jamais initialisé !!!!
cout << "Quel est la taille de votre matrice" ;
cin >> taille;
som=somme_ligne( l,ok5,taille); //2:tu passes en parametre ok5 qui n'est pas initialisé car la variable locale prime sur la variable globale
cout << som;
Sleep(10000);
}
Merci , j'ai terminé le code le voila pour ceux qui auront le meme prob que moi:
#include <iostream>
#include <windows.h>
using namespace std;
const int TAILLE_MAX = 100;
// définition d'une matrice carree d'ordre TAILLE_MAX
typedef int Carre[TAILLE_MAX][TAILLE_MAX];
int sommeLigne(const int i, const Carre ok, const int taille);
int main()
{
Carre ok = { {17, 24, 1, 8, 15 },
{23, 5, 7, 14, 16},
{4, 6, 13, 20, 22},
{10, 12, 19, 21, 3},
{11, 18, 25, 2, 9 }};
// calcule et affiche la somme de chaque ligne
for (int i=0 ; i<5 ; i++)
{
cout <<"somme ligne numero "<<i<<" : "<<sommeLigne(i, ok, 5)<<'\n';
}
Sleep(10000);
}
int sommeLigne(const int i , const Carre ok , const int taille)
{
int som = 0;
for (int j=0 ; j < taille ; j++)
{
som = som + ok[i][j] ;
}
return som;
}
#include <iostream>
#include <windows.h>
using namespace std;
const int TAILLE_MAX = 100;
// définition d'une matrice carree d'ordre TAILLE_MAX
typedef int Carre[TAILLE_MAX][TAILLE_MAX];
int sommeLigne(const int i, const Carre ok, const int taille);
int main()
{
Carre ok = { {17, 24, 1, 8, 15 },
{23, 5, 7, 14, 16},
{4, 6, 13, 20, 22},
{10, 12, 19, 21, 3},
{11, 18, 25, 2, 9 }};
// calcule et affiche la somme de chaque ligne
for (int i=0 ; i<5 ; i++)
{
cout <<"somme ligne numero "<<i<<" : "<<sommeLigne(i, ok, 5)<<'\n';
}
Sleep(10000);
}
int sommeLigne(const int i , const Carre ok , const int taille)
{
int som = 0;
for (int j=0 ; j < taille ; j++)
{
som = som + ok[i][j] ;
}
return som;
}
18 févr. 2010 à 17:25
#include <iostream>
#include <windows.h>
using namespace std;
const int TAILLE_MAX = 100;
int ok[5][5] = { 17, 24, 1, 8, 15,
23, 5, 7, 14, 16,
4, 6, 13, 20, 22,
10, 12, 19, 21, 3,
11, 18, 25, 2, 9 };
int somme_ligne ( const int i , int ok , const int taille )
{
int som,j ;
som = 0 ;
for( int i=0 ; i < taille ; i++ )
{
for ( int j=0 ; j < taille ; j++ )
{
som = som + ok[i][j] ;
}
}
return som;
}
int main()
{
int ok,som,i,j,taille ;
cout << "Quel est la taille de votre matrice" ;
cin >> taille;
somme_ligne( i , ok , taille );
cout << som;
Sleep(10000);
18 févr. 2010 à 17:38
{
int som,j ;
som = 0 ;
for( int i=0 ; i < taille ; i++ ) //ici le int i=0redéfini le i qui a été déclaré dans tes parametres d'entrée, et en plus tu le modifie... peut etre voulais tu mettre simplement i=0 ??? mais pourquoi donc avoir passé i dans les paramètres ???
{
for ( int j=0 ; j < taille ; j++ )
{
som = som + ok[i][j] ; //t'as déclaré dans les parametres que ok est un entier, pas un tableau d'entier
}
}
return som;
}
en bref, tu me vires ces const qui sont inutiles, et tu ne fais pas de redéfinition de variables (t'en a sur i et sur ok... en plus ok tu le redéfini meme aps du meme type)
18 févr. 2010 à 17:39
int ok,som,i,j,taille ;
cout << "Quel est la taille de votre matrice" ;
cin >> taille;
somme_ligne( i , ok , taille ); //variables non initialisées
18 févr. 2010 à 17:41
18 févr. 2010 à 17:45
2- je n'ai pas envie de donner la réponse toute prete
3- tu comprendra pas si tu le fais pas toi meme.
je te dis les erreurs que je vois, tu corrige, tu me dis si ca marche... c'est comme ca que ca marche ..
a l'avenir, utilises les balises < code > (a coté de souligné) pour conserver l'indentation du code ...