Exercice sur un Tableau à 2 dimensions
T1tou
-
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Phil_1857 Messages postés 1872 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis étudiant et j'aurais besoin d'aide en langage C sur l'un des exercice de mon TD en Informatique. Le but de cet exercice est :
Ecrire un programme qui transfère un tableau M à deux dimensions L et C (dimensions maximales: 10 lignes et 10 colonnes) dans un tableau V à une dimension L*C.
Mon programme ne fonctionne pas, pourtant je n'ai aucune erreur et même aucun affichage. Je galère dessus, depuis 2-3jours et pour autant aucune solution en vue....
Voici mon code :
Merci de votre aide,
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
----
Je suis étudiant et j'aurais besoin d'aide en langage C sur l'un des exercice de mon TD en Informatique. Le but de cet exercice est :
Ecrire un programme qui transfère un tableau M à deux dimensions L et C (dimensions maximales: 10 lignes et 10 colonnes) dans un tableau V à une dimension L*C.
Mon programme ne fonctionne pas, pourtant je n'ai aucune erreur et même aucun affichage. Je galère dessus, depuis 2-3jours et pour autant aucune solution en vue....
Voici mon code :
#include<stdio.h> #include<stdlib.h> #include<time.h> main(){ int line, line_counter=0; int max_column, column, column_counter=0; int counter=0, i, j, inter; int tab_m[10][10], tab_v[100]; srand((unsigned) time(NULL)); // L'utilisateur choisis une taille superficielle à son Tableau 2D : printf("Bienvenue cher utilisateur, Choisissez les dimensions de votre tableau 2D.\n"); printf("::: ATTENTION ::: Le nombre de question doit être inf ou egal a 100.\n"); printf("Choisissez le nombre de colonne : "); scanf("%d", &column); printf("\n"); printf("Choisissez le nombre de ligne : "); scanf("%d", &line); // Vérifications des donnees entre par l'utilisateur : while(column<0 || column>100){ column = rand() % 101; printf("Votre nombre de colonne a été générer aléatoirement entre 0 et 100.\n"); printf("Le voici : %d", column); } // Répétition pour améliorer comprehension du code : while(line<0 || line>100){ line = rand() % 101; printf("Votre nombre de colonne a été générer aléatoirement entre 0 et 100.\n"); printf("Le voici : %d", line); } // Attribution de valeur au Tableau 2D : for(i=0; i<max_column; i++){ for(i=0; i<column; i++){ tab_m[i][line_counter] = rand() % 100; counter+=1; column_counter+=1; if(column_counter==column){ column_counter=0; line_counter+=1; } } } // Réinitialisation des compteurs : i = 0; j = 0; counter = 0; line_counter = 0; column_counter = 0; // Le nombre de colonnes que possède le Tableau 1D est en f(Tableau 2D) : max_column = column*line; // Insertion données de "tab_m" vers "tab_v" : for(i=0; i<max_column; i++){ for(i=0; i<column; i++){ tab_v[counter] = tab_m[i][line_counter]; counter+=1; column_counter+=1; if(column_counter==column){ column_counter=0; line_counter+=1; } } } // Affichage Tableau 2D & 1D : printf("\n"); printf("Votre tableau à 2D : "); for(i=0;i<max_column; i++){ printf("%d", tab_m[i][line_counter]); if((i+1)==max_column){ // Dans le cas où l'on serait arrivé à la fin du Tableau 2D et que l'on voudrait afficher Tableau 1D : if(line_counter==line){ printf("\n"); printf("Votre tableau à 1D : |"); for(j=0;j<max_column;j++){ printf("%d|", tab_v); break; } } line_counter+=1; } } return 0; }
Merci de votre aide,
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Merci d'y penser dans tes prochains messages.
----
A voir également:
- Exercice sur un Tableau à 2 dimensions
- Tableau word - Guide
- Trier un tableau excel - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Tableau ascii - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
3 réponses
Phil_1857
Messages postés
1872
Date d'inscription
Statut
Membre
Dernière intervention
168
Si vous pouviez, pas si vous pourriez ...
Bonjour,
As-tu activé les warnings de ton compilateur? Le mien indique:
1>C:\Users\Project\Source.c(83,28): warning C4477: 'printf' : la chaîne de format '%d' nécessite un argument de type 'int', mais l'argument variadique 1 est de type 'int *'
1>C:\Users\Project\Source.c(8,26): warning C4101: 'inter' : variable locale non référencée
1>C:\Users\Project\Source.c(36): warning C4700: variable locale 'max_column' non initialisée utilisée
Le 1er et le 3ième signalent des problèmes importants.
Ensuite, ce que tu fais est plutôt compliqué. On veut transférer les données d'un tableau dans un autre. Chaque élément
Et pour l'affichage, tu compliques aussi. Il faut afficher les 2 tableaux. Là aussi
As-tu activé les warnings de ton compilateur? Le mien indique:
1>C:\Users\Project\Source.c(83,28): warning C4477: 'printf' : la chaîne de format '%d' nécessite un argument de type 'int', mais l'argument variadique 1 est de type 'int *'
1>C:\Users\Project\Source.c(8,26): warning C4101: 'inter' : variable locale non référencée
1>C:\Users\Project\Source.c(36): warning C4700: variable locale 'max_column' non initialisée utilisée
Le 1er et le 3ième signalent des problèmes importants.
Ensuite, ce que tu fais est plutôt compliqué. On veut transférer les données d'un tableau dans un autre. Chaque élément
tab_v[k]va recevoir une valeur
tab_m[i][j]. Avec un petit dessin on peut rapidement trouver
ken fonction de
i,
jet de
column. En on évite des tas de variables.
Et pour l'affichage, tu compliques aussi. Il faut afficher les 2 tableaux. Là aussi
i,
j,
k,
columnet
linesont plus que suffisantes pour gérer tout cela.
Re -
Merci énormément Dalfab !!! J'ai trouvé comment utiliser "matrice". En plus de ta réponse, je suis retourné dans mon cours et me suis concentrer sur "plus que suffisantes". Je me suis pris énormément la tête alors que j'avais la réponse.
J'ai fait un petit programme pour "m'entraîner" avant de me mettre sur la "bête", voici :
Dans ce code j'utilise un e fonction random de stdlib pour remplir mon tableau, appelé "matrice". Je laisse ça ici pour ceux que ça pourra aider <3
Prenez soin de vous et à la prochaine !!
Merci infiniment <3
Merci énormément Dalfab !!! J'ai trouvé comment utiliser "matrice". En plus de ta réponse, je suis retourné dans mon cours et me suis concentrer sur "plus que suffisantes". Je me suis pris énormément la tête alors que j'avais la réponse.
J'ai fait un petit programme pour "m'entraîner" avant de me mettre sur la "bête", voici :
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int i, j;
int k, c, l;
int tab[100], matrice[10][10];
srand((unsigned) time(NULL));
// L'utilisateur choisis une taille superficielle à son Tableau 2D :
printf("Bienvenue cher utilisateur, Choisissez les dimensions de votre tableau 2D.\n");
printf("::: ATTENTION ::: Le nombre en question doit être inf ou egal a 10.\n");
printf("Choisissez le nombre de colonne : ");
scanf("%d", &c);
printf("\n");
printf("Choisissez le nombre de ligne : ");
scanf("%d", &l);
while(c<0 || c>10 || l<0 || l>10){
printf("\nChoisissez le nombre de colonne : ");
scanf("%d", &c);
printf("\n");
printf("Choisissez le nombre de ligne : ");
scanf("%d", &l);
}
for(i=0;i<c; i++){
for(j=0; j<l; j++){
matrice[j][i]=(rand() % 21);
}
}
for(i=0;i<c; i++){
for(j=0; j<l; j++){
printf("%d ", matrice[j][i]);
}
printf("\n");
}
return 0;
}
Dans ce code j'utilise un e fonction random de stdlib pour remplir mon tableau, appelé "matrice". Je laisse ça ici pour ceux que ça pourra aider <3
Prenez soin de vous et à la prochaine !!
Merci infiniment <3