IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Programme pour effectuer des opérations sur les matrices


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Programme pour effectuer des opérations sur les matrices
    Bonjour svp j'ai écris un programme pour effectuer quelques oppérations sur les matrices. Quand je compile j'ai une erreur: C:\Users\La Nokim's\Documents\Fichiers source C\collect2.exe [Error] ld returned 1 exit status
    je ne comprend pourtant pas le problème. Mon code source est le suivant:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    #include <stdio.h>
    #include <stdlib.h>
    #include<math.h>
    #include<conio.h>
    main()
    	{
    		printf("Bienvenue dans le programme qui effectue des operations sur les matrices \n \n");
    		int choix;
    		do{
    			printf("1. Additionner deux matrices \n");
    			printf("2. Multiplier deux matrices \n");
    			printf("3. Multiplier une matrice par un réel \n");
    			printf("4. Quitter \n");
    			scanf("%d",&choix);
    			int n=2;
    			float mat1[n][n];
    			float mat2[n][n];
    			float mats[n][n];
    			int i,j;
    			switch(choix){
    				case 1:{
    					printf("Entrer les données de la première matrice \n");
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							scanf("%f", &mat1[i][j]);
    						}
    					}
    					printf("Entrer les données de la seconde matrice \n");
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							scanf("%f", &mat2[i][j]);
    						}
    					}
    					//début de la somme des matrices
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							mats[i][j]=mat1[i][j]+mat2[i][j];
    						}
    					}
    					//Affichage de la solution
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							Printf("Le résultat de la somme de ces deux matrices est: %f \n", mats[i][j]);
    						}
    					}
    					break;
    				}
    				case 2:{
    					printf("Entrer les données de la première matrice \n");
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							scanf("%f", &mat1[i][j]);
    						}
    					}
    					printf("Entrer les données de la seconde matrice \n");
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							scanf("%f", &mat2[i][j]);
    						}
    					}
    					//Calcul du produit des matrices
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							float s=0;
    							int k;
    							for(k=0; k<n; k++){
    								s=s+mat1[i][k]*mat2[k][j];
    							}
    							mats[i][j]=s;
    						}
    					}	
    					//Affichage des résultats
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							Printf("Le résultat du produit de ces deux matrices est: %f \n", mats[i][j]);
    						}
    					}	
    					break;
    				}
    				case 3:{
    					printf("Veuillez entrer les donner de la matrice \n");
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							scanf("%f", &mat1[i][j]);
    						}
    					}
    					printf("Veuillez entrer le réel par lequel vous voulez multiplier la matrice \n");
    					float m;
    					scanf("%f", &m);
    					//Calcul du produit par un réel
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							mats[i][j]=m*mat1[i][j];
    						}
    					}
    					//Affichage des solutions
    					for(i=0; i<n; i++){
    						for(j=0; j<n; j++){
    							Printf("Le résultat du produit de cette matice par un réel est: %f \n", mats[i][j]);
    						}
    					}
    					break;
    				}
    				case 4:{
    					Printf("Aurevoir et à bientot");
    					break;
    				}
    			}
    		}while(choix==4);
    		return 0;
    	}

  2. #2
    Membre actif Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Points : 222
    Points
    222
    Par défaut
    Et ça compile? T'as 4 printf() avec un P majuscule.

    C'est pas portable conio.h et tu ne t'en sers pas dans ton code.

    Les bonnes façons de déclarer main():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int main(void)
    int main(int argc, char *argv[])
    Ta boucle do-while se termine tout le temps sauf quand tu fais 4 (quitter) Faudrait revoir la condition de la boucle.

    Une fois les erreurs corrigés, chez moi le programme fonctionne. Est-ce que ça arrive dans des cas particuliers ton erreur?

    Sinon ta façon de déclarer les tableaux ne fonctionne pas sous toutes les normes, en particulier sous c89.

    Et utilise les balises de code et indente mieux ton code.


  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Je n'ai pas lu le code, mais, les références non définies à un symbole donné arrivent au moment de l'édition des liens, qui est la dernière étape du processus de compilation.

    Il y a donc deux grandes possibilités:

    L'édition de liens échoue du fait que la compilation du fichier a elle-même échoué, et, dans ce cas, la réponse de moins1 devrait te donner une partie de la solution, mais il est plus que probable que tu aurais des erreurs avant celle là
    L'édition de liens échoue parce que, dans ton code, tu fais appel à des fonctions issues de bibliothèques externes (comprends : qui ne sont pas rajoutées à l'édition de liens "par défaut" lors de l'invocation de ld), et dans ce cas, il faut veiller à les rajouter avec les options -L<chemin/vers/bibliothèque/externe> -l<nom_de_la_bibliothèque>.

    Nota:Il arrive assez régulièrement que la compilation "empile" différentes erreurs les unes sur les autres, surtout si l'on n'active pas l'option -Wfatal-errors qui permet d'arrêter la compilation à la première erreur rencontrée.

    Il arrive d'ailleurs très souvent qu'une flopée d'erreurs surviennent simplement du fait d'une seule erreur (la première à être reportée), parce que le compilateur "perd les pédales" du fait de cette erreur

    l'erreur collect2.exe [Error] ld returned 1 exit status n'est que l'erreur qui est reportée tout à la fin du processus (qui aurait du se terminer par l'édition de liens).

    Pour obtenir une aide efficace, il est important d'essayer de remonter toute la liste des erreurs que le compilateur te donne et de fournir non pas le résultat de la dernière ligne, mais plutot celui des cinq ou six (allez, on peut même monter à dix ) premières lignes d'erreurs
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [TPW] Calculatrice effectuant des opérations sur les entiers longs
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 04/12/2011, 11h36
  2. programme qui fait des opérations sur la matrices
    Par nomadstorm dans le forum Débuter
    Réponses: 6
    Dernier message: 06/01/2010, 23h05
  3. API pour effectuer des opérations sur des matrices
    Par Mobius dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 14/11/2008, 15h18
  4. Opérations sur les matrices...
    Par aokiseiichiro dans le forum C
    Réponses: 32
    Dernier message: 28/07/2005, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo