Probleme en c++
Fermé
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
-
31 mai 2009 à 14:35
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 2 juin 2009 à 16:38
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 2 juin 2009 à 16:38
20 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
31 mai 2009 à 16:39
31 mai 2009 à 16:39
Apparement ton fichier se termine trop tôt, as-tu fermer toutes tes accolades ?
Si tu utilises une ou plusieurs classes, as-tu penser au ";" à la fin de chaque classe ?
Si tu utilises une ou plusieurs classes, as-tu penser au ";" à la fin de chaque classe ?
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
31 mai 2009 à 20:22
31 mai 2009 à 20:22
en faite voici mon code main avec 7 erreurs:
l'idee que j'ai eu durant l'ecriture de mon code est d'inserer les nombres fixes du jeu et laisser les cases vides pour que l'utilisateur met ses reponses dedans NB lesa cases vide je les ai mis a zero je ne sais pas si c juste ou faux. :
#include<iostream>
using namespace std;
void main()
{
int tab [9][9];
int [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
{
}
}
}
int [9][9]=
{tab[0][0]=5;
tab[0][1]=3;
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0;
tab[0][6]=0;
tab[0][7]=0;
tab[0][8]=0;
tab[1][0]=6;
tab[1][1]=0;
tab[1][2]=0;
tab[1][3]=1;
tab[1][4]=9;
tab[1][5]=5;
tab[1][6]=0;
tab[1][7]=0;
tab[1][8]=0;
tab[2][0]=0;
tab[2][1]=9;
tab[2][2]=8;
tab[2][3]=0;
tab[2][4]=0;
tab[2][5]=0;
tab[2][6]=0;
tab[2][7]=6;
tab[2][8]=0;
tab[3][0]=8;
tab[3][1]=0;
tab[3][2]=0;
tab[3][3]=0;
tab[3][4]=6;
tab[3][5]=0;
tab[3][6]=0;
tab[3][7]=0;
tab[3][8]=3;
tab[4][0]=4;
tab[4][1]=0;
tab[4][2]=0;
tab[4][3]=8;
tab[4][4]=0;
tab[4][5]=3;
tab[4][6]=0;
tab[4][7]=0;
tab[4][8]=1;
tab[5][0]=7;
tab[5][1]=0;
tab[5][2]=0;
tab[5][3]=0;
tab[5][4]=2;
tab[5][5]=0;
tab[5][6]=0;
tab[5][7]=0;
tab[5][8]=6;
tab[6][0]=0;
tab[6][1]=6;
tab[6][2]=0;
tab[6][3]=0;
tab[6][4]=0;
tab[6][5]=0;
tab[6][6]=2;
tab[6][7]=8;
tab[6][8]=0;
tab[7][0]=0;
tab[7][1]=0;
tab[7][2]=0;
tab[7][3]=4;
tab[7][4]=1;
tab[7][5]=9;
tab[7][6]=0;
tab[7][7]=0;
tab[7][8]=5;
tab[8][0]=0;
tab[8][1]=0;
tab[8][2]=0;
tab[8][3]=0;
tab[8][4]=8;
tab[8][5]=0;
tab[8][6]=0;
tab[8][7]=7;
tab[8][8]=9;}
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]=i & tab[j]=j)
{
cout<<"erreur!try again"<<endl;
}
else cout<<"reponse correcte!"<<endl;
}
}
return 0 ;
}
l'idee que j'ai eu durant l'ecriture de mon code est d'inserer les nombres fixes du jeu et laisser les cases vides pour que l'utilisateur met ses reponses dedans NB lesa cases vide je les ai mis a zero je ne sais pas si c juste ou faux. :
#include<iostream>
using namespace std;
void main()
{
int tab [9][9];
int [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
{
}
}
}
int [9][9]=
{tab[0][0]=5;
tab[0][1]=3;
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0;
tab[0][6]=0;
tab[0][7]=0;
tab[0][8]=0;
tab[1][0]=6;
tab[1][1]=0;
tab[1][2]=0;
tab[1][3]=1;
tab[1][4]=9;
tab[1][5]=5;
tab[1][6]=0;
tab[1][7]=0;
tab[1][8]=0;
tab[2][0]=0;
tab[2][1]=9;
tab[2][2]=8;
tab[2][3]=0;
tab[2][4]=0;
tab[2][5]=0;
tab[2][6]=0;
tab[2][7]=6;
tab[2][8]=0;
tab[3][0]=8;
tab[3][1]=0;
tab[3][2]=0;
tab[3][3]=0;
tab[3][4]=6;
tab[3][5]=0;
tab[3][6]=0;
tab[3][7]=0;
tab[3][8]=3;
tab[4][0]=4;
tab[4][1]=0;
tab[4][2]=0;
tab[4][3]=8;
tab[4][4]=0;
tab[4][5]=3;
tab[4][6]=0;
tab[4][7]=0;
tab[4][8]=1;
tab[5][0]=7;
tab[5][1]=0;
tab[5][2]=0;
tab[5][3]=0;
tab[5][4]=2;
tab[5][5]=0;
tab[5][6]=0;
tab[5][7]=0;
tab[5][8]=6;
tab[6][0]=0;
tab[6][1]=6;
tab[6][2]=0;
tab[6][3]=0;
tab[6][4]=0;
tab[6][5]=0;
tab[6][6]=2;
tab[6][7]=8;
tab[6][8]=0;
tab[7][0]=0;
tab[7][1]=0;
tab[7][2]=0;
tab[7][3]=4;
tab[7][4]=1;
tab[7][5]=9;
tab[7][6]=0;
tab[7][7]=0;
tab[7][8]=5;
tab[8][0]=0;
tab[8][1]=0;
tab[8][2]=0;
tab[8][3]=0;
tab[8][4]=8;
tab[8][5]=0;
tab[8][6]=0;
tab[8][7]=7;
tab[8][8]=9;}
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]=i & tab[j]=j)
{
cout<<"erreur!try again"<<endl;
}
else cout<<"reponse correcte!"<<endl;
}
}
return 0 ;
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
31 mai 2009 à 21:09
31 mai 2009 à 21:09
Déjà, je pense que tu aurais intérêt à utiliser ce genre de déclaration pour tab[9][9] :
int tab[9][9]={5, 3, 0, 0, 7, 0, 0, 0, 0, 6, 0, 0, 1, 9, 5, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 6, 8, ... };Pour la suite du code, voici une GROSSE erreur !!! et sa correction :
tab[i]=i & tab[j]=j // en C, ça ne fera pas du tout ce que tu veux ! tab[i]==i && tab[j]==j // ça c'est bien mieux !
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
31 mai 2009 à 21:50
31 mai 2009 à 21:50
merciii
tu veux dire que cette maniere int tab[9][9]={5, 3, 0, 0, 7, 0, 0, 0, 0,
6, 0, 0, 1, 9, 5, 0, 0, 0,
0, 9, 8, 0, 0, 0, 0, 6, 8, .... est la meme que la maniere que j'ai ecrit: tab[0][0]=5;
tab[0][1]=3;
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0 ???
voici le code mais avec 5 erreurs seulement :)
#include<iostream>
using namespace std;
void main()
{
int tab [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
}
}
}
int tab [9][9]=
tab[0][0]=5;
tab[0][1]=3;
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0;
tab[0][6]=0;
tab[0][7]=0;
tab[0][8]=0;
tab[1][0]=6;
tab[1][1]=0;
tab[1][2]=0;
tab[1][3]=1;
tab[1][4]=9;
tab[1][5]=5;
tab[1][6]=0;
tab[1][7]=0;
tab[1][8]=0;
tab[2][0]=0;
tab[2][1]=9;
tab[2][2]=8;
tab[2][3]=0;
tab[2][4]=0;
tab[2][5]=0;
tab[2][6]=0;
tab[2][7]=6;
tab[2][8]=0;
tab[3][0]=8;
tab[3][1]=0;
tab[3][2]=0;
tab[3][3]=0;
tab[3][4]=6;
tab[3][5]=0;
tab[3][6]=0;
tab[3][7]=0;
tab[3][8]=3;
tab[4][0]=4;
tab[4][1]=0;
tab[4][2]=0;
tab[4][3]=8;
tab[4][4]=0;
tab[4][5]=3;
tab[4][6]=0;
tab[4][7]=0;
tab[4][8]=1;
tab[5][0]=7;
tab[5][1]=0;
tab[5][2]=0;
tab[5][3]=0;
tab[5][4]=2;
tab[5][5]=0;
tab[5][6]=0;
tab[5][7]=0;
tab[5][8]=6;
tab[6][0]=0;
tab[6][1]=6;
tab[6][2]=0;
tab[6][3]=0;
tab[6][4]=0;
tab[6][5]=0;
tab[6][6]=2;
tab[6][7]=8;
tab[6][8]=0;
tab[7][0]=0;
tab[7][1]=0;
tab[7][2]=0;
tab[7][3]=4;
tab[7][4]=1;
tab[7][5]=9;
tab[7][6]=0;
tab[7][7]=0;
tab[7][8]=5;
tab[8][0]=0;
tab[8][1]=0;
tab[8][2]=0;
tab[8][3]=0;
tab[8][4]=8;
tab[8][5]=0;
tab[8][6]=0;
tab[8][7]=7;
tab[8][8]=9;
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]=i && tab[j]=j)
cout<<"erreur!try again"<<endl;
else
cout<<"reponse correcte!"<<endl;
}
}
return 0;
}
les erreurs sont :1-'tab' : redefinition
2-'initializing' : cannot convert from 'int' to 'int [9][9]'
There are no conversions to array types, although there are conversions to references or pointers to arrays //je ne comprends pas qu'est ce qu'il veut
3-'=' : cannot convert from 'bool' to 'int [9]'
4-'main' : 'void' function returning a value.
5- see declaration of 'main'
est ce que ce code est valide pour executer un sudoku ou je dois ajouter qq chose ???
merci d'avance
tu veux dire que cette maniere int tab[9][9]={5, 3, 0, 0, 7, 0, 0, 0, 0,
6, 0, 0, 1, 9, 5, 0, 0, 0,
0, 9, 8, 0, 0, 0, 0, 6, 8, .... est la meme que la maniere que j'ai ecrit: tab[0][0]=5;
tab[0][1]=3;
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0 ???
voici le code mais avec 5 erreurs seulement :)
#include<iostream>
using namespace std;
void main()
{
int tab [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
}
}
}
int tab [9][9]=
tab[0][0]=5;
tab[0][1]=3;
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0;
tab[0][6]=0;
tab[0][7]=0;
tab[0][8]=0;
tab[1][0]=6;
tab[1][1]=0;
tab[1][2]=0;
tab[1][3]=1;
tab[1][4]=9;
tab[1][5]=5;
tab[1][6]=0;
tab[1][7]=0;
tab[1][8]=0;
tab[2][0]=0;
tab[2][1]=9;
tab[2][2]=8;
tab[2][3]=0;
tab[2][4]=0;
tab[2][5]=0;
tab[2][6]=0;
tab[2][7]=6;
tab[2][8]=0;
tab[3][0]=8;
tab[3][1]=0;
tab[3][2]=0;
tab[3][3]=0;
tab[3][4]=6;
tab[3][5]=0;
tab[3][6]=0;
tab[3][7]=0;
tab[3][8]=3;
tab[4][0]=4;
tab[4][1]=0;
tab[4][2]=0;
tab[4][3]=8;
tab[4][4]=0;
tab[4][5]=3;
tab[4][6]=0;
tab[4][7]=0;
tab[4][8]=1;
tab[5][0]=7;
tab[5][1]=0;
tab[5][2]=0;
tab[5][3]=0;
tab[5][4]=2;
tab[5][5]=0;
tab[5][6]=0;
tab[5][7]=0;
tab[5][8]=6;
tab[6][0]=0;
tab[6][1]=6;
tab[6][2]=0;
tab[6][3]=0;
tab[6][4]=0;
tab[6][5]=0;
tab[6][6]=2;
tab[6][7]=8;
tab[6][8]=0;
tab[7][0]=0;
tab[7][1]=0;
tab[7][2]=0;
tab[7][3]=4;
tab[7][4]=1;
tab[7][5]=9;
tab[7][6]=0;
tab[7][7]=0;
tab[7][8]=5;
tab[8][0]=0;
tab[8][1]=0;
tab[8][2]=0;
tab[8][3]=0;
tab[8][4]=8;
tab[8][5]=0;
tab[8][6]=0;
tab[8][7]=7;
tab[8][8]=9;
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]=i && tab[j]=j)
cout<<"erreur!try again"<<endl;
else
cout<<"reponse correcte!"<<endl;
}
}
return 0;
}
les erreurs sont :1-'tab' : redefinition
2-'initializing' : cannot convert from 'int' to 'int [9][9]'
There are no conversions to array types, although there are conversions to references or pointers to arrays //je ne comprends pas qu'est ce qu'il veut
3-'=' : cannot convert from 'bool' to 'int [9]'
4-'main' : 'void' function returning a value.
5- see declaration of 'main'
est ce que ce code est valide pour executer un sudoku ou je dois ajouter qq chose ???
merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
31 mai 2009 à 22:00
31 mai 2009 à 22:00
Soit tu fais
Quand tu fais tab[9][9]; toutes les cases sont initialisées à 0 puis tu les modifies une à une
Quand tu fais tab[9][9]={ ... } les cases sont initialisées avec les valeurs précisées dans les accolades, éventuellement avec des 0 pour compléter...
Avec ton code, toujours pareil : if (tab[i]=i && tab[j]=j) ne donne pas ce que tu veux
Pour comparer deux valeurs on utilise ==, l'opérateur = c'est pour l'affectation
De plus i est un entier et tab[i] est un tableau, utilise tab[i][j]==i par exemple...
int tab [9][9]; // Attention pas de = ici tab[0][0]=5; tab[0][1]=3; tab[0][2]=0; tab[0][3]=0; tab[0][4]=7;Soi tu fais
int tab [9][9]={ 5, 3, 0, 0, 7, 0, 0, 0, 0, 6, 0, 0, 1, 9, 5, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 6, 8, ... }; // ne pas oublier le ;Les deux méthodes (bien utilisées) donnent le même résultat
Quand tu fais tab[9][9]; toutes les cases sont initialisées à 0 puis tu les modifies une à une
Quand tu fais tab[9][9]={ ... } les cases sont initialisées avec les valeurs précisées dans les accolades, éventuellement avec des 0 pour compléter...
Avec ton code, toujours pareil : if (tab[i]=i && tab[j]=j) ne donne pas ce que tu veux
Pour comparer deux valeurs on utilise ==, l'opérateur = c'est pour l'affectation
De plus i est un entier et tab[i] est un tableau, utilise tab[i][j]==i par exemple...
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
31 mai 2009 à 22:06
31 mai 2009 à 22:06
mais quand j'ecris == les erreurs augmentent
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 01:16
1 juin 2009 à 01:16
C'est parce qu'à mon avis tu n'écris pas ce que tu veux obtenir !!!
Je pense que tu veux faire ce genre de code :
Je pense que tu veux faire ce genre de code :
for (int k=0; k<9; k++) for (int i1=0; i1<9; i1++) for (int i2=i1+1; i2<9; i2++) { if (tab[i1][k]==tab[i2][k]) std::cout << "erreur ! try again" << endl; else std::cout << "reponse correcte !" << endl; }Sinon il va falloir que tu expliques (en français) ce que tu veux pour qu'on puisse t'aider !
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
31 mai 2009 à 22:30
31 mai 2009 à 22:30
je ne comprends pas cette partie ..cela veut dire que ma methode est fausse ?
//Quand tu fais tab[9][9]; toutes les cases sont initialisées à 0 puis tu les modifies une à une
Quand tu fais tab[9][9]={ ... } les cases sont initialisées avec les valeurs précisées dans les accolades, éventuellement avec des 0 pour compléter...
code avec 4 erreurs....am sorry i am asking too many questions....
#include<iostream>
using namespace std;
void main()
{
int tab [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
}
}
}
int tab [9][9];
tab[0][0]=5; //ou,5, 3, 0, 0, 7, 0, 0, 0, 0, [0] //6, 0, 0, 1, 9, 5, 0, 0, 0, [1]
tab[0][1]=3; //0, 9, 8, 0, 0, 0, 0, 6, 0, [2] //8, 0, 0, 0. 6. 0. 0. 0. 3, [3]
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0;
tab[0][6]=0;
tab[0][7]=0;
tab[0][8]=0;
tab[1][0]=6;
tab[1][1]=0;
tab[1][2]=0;
tab[1][3]=1;
tab[1][4]=9;
tab[1][5]=5;
tab[1][6]=0;
tab[1][7]=0;
tab[1][8]=0;
tab[2][0]=0;
tab[2][1]=9;
tab[2][2]=8;
tab[2][3]=0;
tab[2][4]=0;
tab[2][5]=0;
tab[2][6]=0;
tab[2][7]=6;
tab[2][8]=0;
tab[3][0]=8;
tab[3][1]=0;
tab[3][2]=0;
tab[3][3]=0;
tab[3][4]=6;
tab[3][5]=0;
tab[3][6]=0;
tab[3][7]=0;
tab[3][8]=3;
tab[4][0]=4; //4,0,0,8,0,3,0,0,1 [4]
tab[4][1]=0;
tab[4][2]=0;
tab[4][3]=8;
tab[4][4]=0;
tab[4][5]=3;
tab[4][6]=0;
tab[4][7]=0;
tab[4][8]=1;
tab[5][0]=7; //7,0,0,0,2,0,0,0,6 [5]
tab[5][1]=0;
tab[5][2]=0;
tab[5][3]=0;
tab[5][4]=2;
tab[5][5]=0;
tab[5][6]=0;
tab[5][7]=0;
tab[5][8]=6;
tab[6][0]=0; //0,6,0,0,0,0,2,8,0 [6]
tab[6][1]=6;
tab[6][2]=0;
tab[6][3]=0;
tab[6][4]=0;
tab[6][5]=0;
tab[6][6]=2;
tab[6][7]=8;
tab[6][8]=0;
tab[7][0]=0; //0,0,0,4,1,9,0,0,5 [7]
tab[7][1]=0;
tab[7][2]=0;
tab[7][3]=4;
tab[7][4]=1;
tab[7][5]=9;
tab[7][6]=0;
tab[7][7]=0;
tab[7][8]=5;
tab[8][0]=0; //0,0,0,0,8,0,0,7,9 [8]
tab[8][1]=0;
tab[8][2]=0;
tab[8][3]=0;
tab[8][4]=8;
tab[8][5]=0;
tab[8][6]=0;
tab[8][7]=7;
tab[8][8]=9;
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]=i && tab[j]=j)
cout<<"erreur!try again"<<endl;
else
cout<<"reponse correcte!"<<endl;
}
}
return 0;
}
//Quand tu fais tab[9][9]; toutes les cases sont initialisées à 0 puis tu les modifies une à une
Quand tu fais tab[9][9]={ ... } les cases sont initialisées avec les valeurs précisées dans les accolades, éventuellement avec des 0 pour compléter...
code avec 4 erreurs....am sorry i am asking too many questions....
#include<iostream>
using namespace std;
void main()
{
int tab [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
}
}
}
int tab [9][9];
tab[0][0]=5; //ou,5, 3, 0, 0, 7, 0, 0, 0, 0, [0] //6, 0, 0, 1, 9, 5, 0, 0, 0, [1]
tab[0][1]=3; //0, 9, 8, 0, 0, 0, 0, 6, 0, [2] //8, 0, 0, 0. 6. 0. 0. 0. 3, [3]
tab[0][2]=0;
tab[0][3]=0;
tab[0][4]=7;
tab[0][5]=0;
tab[0][6]=0;
tab[0][7]=0;
tab[0][8]=0;
tab[1][0]=6;
tab[1][1]=0;
tab[1][2]=0;
tab[1][3]=1;
tab[1][4]=9;
tab[1][5]=5;
tab[1][6]=0;
tab[1][7]=0;
tab[1][8]=0;
tab[2][0]=0;
tab[2][1]=9;
tab[2][2]=8;
tab[2][3]=0;
tab[2][4]=0;
tab[2][5]=0;
tab[2][6]=0;
tab[2][7]=6;
tab[2][8]=0;
tab[3][0]=8;
tab[3][1]=0;
tab[3][2]=0;
tab[3][3]=0;
tab[3][4]=6;
tab[3][5]=0;
tab[3][6]=0;
tab[3][7]=0;
tab[3][8]=3;
tab[4][0]=4; //4,0,0,8,0,3,0,0,1 [4]
tab[4][1]=0;
tab[4][2]=0;
tab[4][3]=8;
tab[4][4]=0;
tab[4][5]=3;
tab[4][6]=0;
tab[4][7]=0;
tab[4][8]=1;
tab[5][0]=7; //7,0,0,0,2,0,0,0,6 [5]
tab[5][1]=0;
tab[5][2]=0;
tab[5][3]=0;
tab[5][4]=2;
tab[5][5]=0;
tab[5][6]=0;
tab[5][7]=0;
tab[5][8]=6;
tab[6][0]=0; //0,6,0,0,0,0,2,8,0 [6]
tab[6][1]=6;
tab[6][2]=0;
tab[6][3]=0;
tab[6][4]=0;
tab[6][5]=0;
tab[6][6]=2;
tab[6][7]=8;
tab[6][8]=0;
tab[7][0]=0; //0,0,0,4,1,9,0,0,5 [7]
tab[7][1]=0;
tab[7][2]=0;
tab[7][3]=4;
tab[7][4]=1;
tab[7][5]=9;
tab[7][6]=0;
tab[7][7]=0;
tab[7][8]=5;
tab[8][0]=0; //0,0,0,0,8,0,0,7,9 [8]
tab[8][1]=0;
tab[8][2]=0;
tab[8][3]=0;
tab[8][4]=8;
tab[8][5]=0;
tab[8][6]=0;
tab[8][7]=7;
tab[8][8]=9;
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]=i && tab[j]=j)
cout<<"erreur!try again"<<endl;
else
cout<<"reponse correcte!"<<endl;
}
}
return 0;
}
Utilisateur anonyme
31 mai 2009 à 22:42
31 mai 2009 à 22:42
Salut,
Je ne fais pas de C++ mais :
void main()
{
int tab [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
}
}
}
Il y a un bleme dans tes accolades non ?
int j; //i is for les colonnes et j for les lignes.
{ <== rien ne justifie l'ouverture de celle-à
Je ne fais pas de C++ mais :
void main()
{
int tab [9][9];
int i;
int j; //i is for les colonnes et j for les lignes.
{
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
}
}
}
Il y a un bleme dans tes accolades non ?
int j; //i is for les colonnes et j for les lignes.
{ <== rien ne justifie l'ouverture de celle-à
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
31 mai 2009 à 22:47
31 mai 2009 à 22:47
oui ca ne sert a rien vraiment
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 00:55
1 juin 2009 à 00:55
En fait on peut ouvrir des accolades comme ça, pour déclarer des variables à portée réduites...
Exemple :
Exemple :
{ int i; for (i=0; i<10; i++) { } } // i est détruit par la fermeture de l'accoladeMême si dans ce cas précis on préférerait cette écriture :
for (int i=0; i<10; i++) { } // i est détruit par la fermeture de l'accolade
Utilisateur anonyme
31 mai 2009 à 22:59
31 mai 2009 à 22:59
De plus,
En C, void ne retourne pas de valeur; or ton main lui en retourne
4-'main' : 'void' function returning a value.
plutot un
int main()
{
bla bla bla;
}
et heu j'connais pas le C++, mais il n'y a pas moyen de factoriser tes tab ?
pcq les
tab [x][y]=z
etc
etc
etc
C'est un poil lourd et rébarbatif
En C, void ne retourne pas de valeur; or ton main lui en retourne
4-'main' : 'void' function returning a value.
plutot un
int main()
{
bla bla bla;
}
et heu j'connais pas le C++, mais il n'y a pas moyen de factoriser tes tab ?
pcq les
tab [x][y]=z
etc
etc
etc
C'est un poil lourd et rébarbatif
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 00:57
1 juin 2009 à 00:57
La factorisation des tab se fait comme je l'ai expliqué plus haut, dès l'initialisation
int tab[9][9]={5, 3, 0, 0, 7, 0, 0, 0, 0, 6, 0, 0, 1, 9, 5, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 6, 8, ... };En plus c'est plus clair car on "voit" la grille de Sudoku
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
31 mai 2009 à 23:44
31 mai 2009 à 23:44
j'ai eu un erreur a la fin qui est fatal error unexpected end of file....apres ca j'ai verifier tous les accolades....et j'ai ajoute apres #include <iostream>
#include<stdafx.h>
et j'ai eu un autre erreur qui est :"Cannot open include file: 'stdafx.h': No such file or directory"
comment puis-je l'enlever ?? ou il y a qq chose qui peut le remplacer ??
merci d'avance
#include<stdafx.h>
et j'ai eu un autre erreur qui est :"Cannot open include file: 'stdafx.h': No such file or directory"
comment puis-je l'enlever ?? ou il y a qq chose qui peut le remplacer ??
merci d'avance
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 01:02
1 juin 2009 à 01:02
essaye avec ce début de code
#include <iostream> #include "stdafx.h"Et comme le disais boisdulait il faut faire un int main()
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 01:22
1 juin 2009 à 01:22
j'ai mis void main() est ce que ca differe de int main ()
quand j'enleve le "stdafx.h" je recois 3 erreurs et quand je le met c 1 erreur.....qui est l'errur de "no such file or directory"
quand j'enleve le "stdafx.h" je recois 3 erreurs et quand je le met c 1 erreur.....qui est l'errur de "no such file or directory"
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 01:26
1 juin 2009 à 01:26
les 3 erreurs sont si j'enleve le stdafx.h >>
1-'tab' : redefinition
2-'int' : forcing value to bool 'true' or 'false' (performance warning)
3-'=' : left operand must be l-value
4-'=' : cannot convert from 'bool' to 'int [9]'
j'ai demande au M des TD il ma dit d'enlever stdafx.h parce que ca sert a rien mais quand je l'enleve il me parait ces 4 erreurs je ne sais pas quoi faire ??
en plus il ya une partie que je comprends pas :void insertionSort(int*, int); ??
1-'tab' : redefinition
2-'int' : forcing value to bool 'true' or 'false' (performance warning)
3-'=' : left operand must be l-value
4-'=' : cannot convert from 'bool' to 'int [9]'
j'ai demande au M des TD il ma dit d'enlever stdafx.h parce que ca sert a rien mais quand je l'enleve il me parait ces 4 erreurs je ne sais pas quoi faire ??
en plus il ya une partie que je comprends pas :void insertionSort(int*, int); ??
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 01:33
1 juin 2009 à 01:33
Je ne sais pas à quoi sert stdafx, mieux vaut ne pas t'en servir pour l'instant...
1-'tab' : redefinition
Tu écris deux fois int tab [9][9];
Enlèves-en un des deux
2-'int' : forcing value to bool 'true' or 'false' (performance warning)
3-'=' : left operand must be l-value
Il faut que tu utilises == et non pas =
4-'=' : cannot convert from 'bool' to 'int [9]'
Tu utilises tab[i] comme un int alors qu'il est de type int[9]
1-'tab' : redefinition
Tu écris deux fois int tab [9][9];
Enlèves-en un des deux
2-'int' : forcing value to bool 'true' or 'false' (performance warning)
3-'=' : left operand must be l-value
Il faut que tu utilises == et non pas =
4-'=' : cannot convert from 'bool' to 'int [9]'
Tu utilises tab[i] comme un int alors qu'il est de type int[9]
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 01:38
1 juin 2009 à 01:38
1-('=' : left operand must be l-value
Il faut que tu utilises == et non pas = ) ce que j'ai compris que == pour faire une comparaison et = pour exprimer l'egalite...et dans mon cas c une egalite en plus si je met == le nb. d'erreurs augmentent ?? je veux dire au rpog s'il trouve 2 nombres repetee il fait apparaitre un message "erreur"
2-'=' : cannot convert from 'bool' to 'int [9]'
Tu utilises tab[i] comme un int alors qu'il est de type int[9]
>>je ne comprends pas cette partei qu;est ce que je dois faire ??
Il faut que tu utilises == et non pas = ) ce que j'ai compris que == pour faire une comparaison et = pour exprimer l'egalite...et dans mon cas c une egalite en plus si je met == le nb. d'erreurs augmentent ?? je veux dire au rpog s'il trouve 2 nombres repetee il fait apparaitre un message "erreur"
2-'=' : cannot convert from 'bool' to 'int [9]'
Tu utilises tab[i] comme un int alors qu'il est de type int[9]
>>je ne comprends pas cette partei qu;est ce que je dois faire ??
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 02:01
1 juin 2009 à 02:01
tab est une matrice 9x9 (un tableau de tableau)
tab[i] est une ligne du tableau (un tableau d'entier)
tab[i][j] est un entier
Si tu fais tab[i]=i, ça veut dire que tu donnes la valeur i à la ligne i !!!
Mais une ligne ce n'est pas un entier... D'où l'erreur l-value
Et puisque tu fais "&&" après il considère que tab[i]=i est un bool,
Or une fois l'affectation "=i" effectuée le programme considère que c'est tab[i] qui est un bool !!!
Or c'est toujours le même problème, tab[i] est un tableau...
D'où l'erreur convert from 'bool'
Il faut que tu utilises UNIQUEMENT des entiers sous la forme tab[i][j]
Si tu écris tab, ou tab[i] ça ne suffit pas !
De plus pour que tu obtienne un bool (pour faire ton if)
IL FAUT que tu fasses une comparaison avec "=="
Si tu fais juste "=" ça modifie la valeur à gauche mais ça ne compare RIEN !
Exemple :
Du coup la comparaison est effectuée avec la valeur de i (donc 0, c'est à dire false)
Donc le programme affichera tout le temps "i vaut 0" alors que i valait 3 :(
Mais il n'y a plus le problème si tu remplaces =, par ==
tab[i] est une ligne du tableau (un tableau d'entier)
tab[i][j] est un entier
Si tu fais tab[i]=i, ça veut dire que tu donnes la valeur i à la ligne i !!!
Mais une ligne ce n'est pas un entier... D'où l'erreur l-value
Et puisque tu fais "&&" après il considère que tab[i]=i est un bool,
Or une fois l'affectation "=i" effectuée le programme considère que c'est tab[i] qui est un bool !!!
Or c'est toujours le même problème, tab[i] est un tableau...
D'où l'erreur convert from 'bool'
Il faut que tu utilises UNIQUEMENT des entiers sous la forme tab[i][j]
Si tu écris tab, ou tab[i] ça ne suffit pas !
De plus pour que tu obtienne un bool (pour faire ton if)
IL FAUT que tu fasses une comparaison avec "=="
Si tu fais juste "=" ça modifie la valeur à gauche mais ça ne compare RIEN !
Exemple :
int i=3; if (i=0) cout << "i vaut 0"; else cout << "i différent 0";En fait ici, à la deuxième ligne on modifie i en 0, on ne le compare pas
Du coup la comparaison est effectuée avec la valeur de i (donc 0, c'est à dire false)
Donc le programme affichera tout le temps "i vaut 0" alors que i valait 3 :(
Mais il n'y a plus le problème si tu remplaces =, par ==
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 02:11
1 juin 2009 à 02:11
si j'ecris == eu erreur convienne qui est ('==' : no conversion from 'int' to 'int *')??
voici cette partie est ce vous pouvez me faire les chagements necessaire stp ??
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]==i && tab[j]==j)
cout<<"erreur!try again"<<endl;
else
cout<<"reponse correcte!"<<endl;
}
}
voici cette partie est ce vous pouvez me faire les chagements necessaire stp ??
for(i=0;i<=8;i++)
{
for(j=0;j<=8;j++)
{
if (tab[i]==i && tab[j]==j)
cout<<"erreur!try again"<<endl;
else
cout<<"reponse correcte!"<<endl;
}
}
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 02:24
1 juin 2009 à 02:24
Parce qu'il faut corriger toutes erreurs en même temps ;)
tab[i] est un tableau ! (en fait c'est un pointeur) son type c'est int*
On ne peux pas comparer un entier avec un tableau, c'est absurde !
Il faut TOUJOURS que tu fasses tab[i][j]== et non pas juste tab[i]==
tab[i] est un tableau ! (en fait c'est un pointeur) son type c'est int*
On ne peux pas comparer un entier avec un tableau, c'est absurde !
Il faut TOUJOURS que tu fasses tab[i][j]== et non pas juste tab[i]==
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 02:29
1 juin 2009 à 02:29
0 erreur :D:D
main je ne sais pas quoi faire maintenant pour l'executer ??
main je ne sais pas quoi faire maintenant pour l'executer ??
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 02:35
1 juin 2009 à 02:35
Ça dépend ce que tu veux faire, pour l'instant tu as ta grille de Sudoku
De toute façon, avec le code tel quel, tu n'iras pas bien loin... Tu as encore du boulot !
int tab [9][9]={ 5, 3, 0, 0, 7, 0, 0, 0, 0, 6, 0, 0, 1, 9, 5, 0, 0, 0, 0, 9, 8, 0, 0, 0, 0, 6, 0, 8, 0, 0, 0, 6, 0, 0, 0, 3, 4, 0, 0, 8, 0, 3, 0, 0, 1, 7, 0, 0, 0, 2, 0, 0, 0, 6, 0, 6, 0, 0, 0, 0, 2, 8, 0, 0, 0, 0, 4, 1, 9, 0, 0, 5, 0, 0, 0, 0, 8, 0, 0, 7, 9 };Mais à vrai dire je n'ai pas compris l'intérêt de ta "vérification" try again...
De toute façon, avec le code tel quel, tu n'iras pas bien loin... Tu as encore du boulot !
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 02:37
1 juin 2009 à 02:37
de toute facon il m'a pas donner qq chose
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 02:41
1 juin 2009 à 02:41
Peut-être qu'avec un system("PAUSE"); avant le return 0; ça ira mieux...
#include<iostream> using namespace std; int main() { int tab [9][9]={ ... }; for(int i=0; i<9; i++) // ième colonne for(int j=0; j<9; j++) // jème ligne { if (tab[i][j]==i && tab[i][j]==j) cout << "erreur ! try again " << endl; else cout << "reponse correcte ! " << endl; } system("PAUSE"); return 0 ; }Ici ça n'affiche que des "réponses correctes" même si le test n'a aucun sens pour moi...
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 17:59
1 juin 2009 à 17:59
salut,
je voudrais savoir quel sont les etapes que je dois ecrire en c++ pour faire un tableau [9][9]
merci d'avance
je voudrais savoir quel sont les etapes que je dois ecrire en c++ pour faire un tableau [9][9]
merci d'avance
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
1 juin 2009 à 18:00
1 juin 2009 à 18:00
j'ai ecrit dans le code :
int tab[9][9];
int i ;
int j ; //mais je crois que c insuffisant pour declarer le tableau.
int tab[9][9];
int i ;
int j ; //mais je crois que c insuffisant pour declarer le tableau.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
1 juin 2009 à 18:41
1 juin 2009 à 18:41
int tab[9][9]; suffit à créer un tableau de 81 cases (initialisées avec des 0)
Tu accèdes au données en faisant tab[i][j] avec i et j entre 0 et 8
Remarque : Il y a d'autres méthodes d'accès liées aux pointeurs, mais il vaut mieux que tu n'utilises que celle avec [i][j]
Tu accèdes au données en faisant tab[i][j] avec i et j entre 0 et 8
Remarque : Il y a d'autres méthodes d'accès liées aux pointeurs, mais il vaut mieux que tu n'utilises que celle avec [i][j]
fk08
Messages postés
16
Date d'inscription
dimanche 31 mai 2009
Statut
Membre
Dernière intervention
2 juin 2009
2 juin 2009 à 15:19
2 juin 2009 à 15:19
a quoi ca sert cette ligne dans le code :
cout<<i<<"| ";
merci.
cout<<i<<"| ";
merci.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
2 juin 2009 à 16:38
2 juin 2009 à 16:38
ça affiche la valeur de i puis une barre verticale "|"
exemple :
exemple :
for (int i=0; i<5; i++) cout << i << "| "; 0| 1| 2| 3| 4|