Problème (langage C)
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Problème (langage C)



  1. #1
    invite66a17380

    Problème (langage C)


    ------

    Bonjour,
    J'essaie d’écrire un programme en C qui me permettrais de calculer le nombre de véhicules dont j'ai besoin pour transporter des marchandises d'un dépôt vers plusieurs points de ventes. Je suis nouvelle ICI et je ne sais pas ce qui n va pas avec CE CODE. PLEASE HELP !!!!!!!

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <math.h>
    
    main()
    { 	/* Matrice des distances */
    	int D[10][10];	/* matrice en deux dimensions avec un nombre maximum 
          			de 10 lignes et 10 colonnes pour les memoriser */
    				/* Matrice des distances */
    	int n;       /* nombre reel (a lire) de rangées et colonnes de la matrice */
    	int j,l; /* j est l'indice des destinations et l est l'indice des origines */
    	j=0;l=0;
    	//Entrer la dimension des matrices 
    
    	printf("Entrer le nombre des destinations: ");
    	scanf("%d", &n);
    	//Entrer les elements de la matrice des distances 
    	printf("Entrer les elements de la matrice des distances: \n");
    	for(l=0; l<=n; l++)
    		for(j=0; j<=n; j++)	
    		{
    			printf("\tElem [%d,%d]= ",l , j);
    			scanf("%d", &D[l][j]);
    		}
    	
    	j=0;		
    	/* Matrice des Quanitités */
    	int Q[10];	/* Vecteur avec un nombre maximum 
          			de 10 lignes pour les memoriser */
    				/* Vecteur des Quanitités */
    	//Entrer les élèments du vecteur des Quanitités 
    	printf("Entrer les elements de la matrice des Quanitités: \n");
    		for(j=0; j<=n; j++)
    		{
    			printf("\tElem [%d]= ", j);
    			scanf("%d", &Q[j]);
    		}
    		
    	int nombre_types;
    	printf("Entrer le nombre de types vehicules: \n");
    	scanf("%d", &nombre_types);
    	
    	int i;
    	
    	i=0;
    	/* Capacités des véhicules */
    	int T[10];	/* Vecteur avec un nombre maximum 
          			de 10 lignes pour les memoriser */
    				/* Vecteur  Capacités*/
    	//Entrer les élèments de la matrice des Capacités des véhicules 
    	printf("Entrer les elements de la matrice des Capacités des véhicules: \n");
    	for(i=0; i<nombre_types; i++)
    		{
    			printf("\tElem [%d]= ", i);
    			scanf("%d", &T[i]);
    		}
    	
    	i=0;
    	/* Couts variables */
    	float a[10];	/* Vecteur avec un nombre maximum 
          			de 10 lignes pour les memoriser */
    				/* Vecteur  couts variables */
    	//Entrer les élèments de la matrice des Couts variables 
    	printf("Entrer les elements de la matrice des Couts variables: \n");
    	for(i=0; i<nombre_types; i++)
    		{
    			printf("\tElem [%d]= ", i);
    			scanf("%d", &a[i]);
    		}
    	
    	i=0;
    	/* Couts fixes */
    	float b[10];	/* Vecteur avec un nombre maximum 
          			de 10 lignes pour les memoriser */
    	/* Vecteur  couts fixes */
    	//Entrer les élèments de la matrice des Couts fixes 
    	printf("Entrer les elements de la matrice des Couts fixes: \n");
    	for(i=0; i<nombre_types; i++)
    		{
    			printf("\tElem [%d]= ", i);
    			scanf("%d", &b[i]);
    		}
    	
    	int x[10][10]; 
    				/* Matrice du nombre de vehicules */
    				
    	int r[10][10]; 
    				/* Matrice des restes */
    
    	int y[10][10];
    				/* Matrice du nombre de vehicules */
    	
    	float c1[10][10]; 
    				/* Matrice du nombre de vehicules */
    				
    			
    				
    	i=0;j=0;
    	for (j=0; j<=n; j++)
    		for (i=0; i<nombre_types; nombre_types++)
    		{x[i][j]=floor(Q[j]/T[i]);  /*division entière*/
    		r[i][j]= Q[j]%T[i]; /*modulo*/
    		if (r[i][j]== 0) 
    			{y[i][j]=x[i][j];
    			}
    		else 
    			{y[i][j]= x[i][j]+1;
    			}
    		c1[i][j]=y[i][j]*(2*a[i]*D[0][j]+b[i]);
    		}
    
    
    	i=0;j=0;
    	for (i=0; i<nombre_types; i++)
    		{for (j=0; j<=n; j++)
    			{printf ("%d", x[i][j]);
    			}
    		printf ("\n");
    		}
    	printf ("\n");
    
    	i=0;j=0;
    	for (i=0; i<nombre_types; i++)
    		{for (j=0; j<=n; j++)
    			{printf ("%d", r[i][j]);
    			}
    		printf ("\n");
    		}
    	printf ("\n");
    
    	i=0;j=0;
    	for (i=0; i<nombre_types; i++)
    		{for (j=0;  j<=n; j++)
    			{printf ("%f", c1[i][j]);
    			}
    		printf ("\n");
    		}		
    	printf ("\n");
    
    
    getch();	
    return 1;	
    }

    -----
    Dernière modification par Antoane ; 03/05/2017 à 18h19. Motif: Intégration du code au corps du message

  2. #2
    pm42

    Re : Problème (langage C)

    Pour t'aider, il serait intéressant que tu nous dises ce qui ne va pas. Ton code ne compile pas ? Ou bien il compile mais ne fonctionne pas comme tu veux ? Tu as essayé quoi ?

  3. #3
    invite66a17380

    Re : Problème (langage C)

    Quand je compile ce code, je saisis touts les données citées au début y compris le nombre de destinations, la matrice des distances, le nombre de types de véhicules et leurs capacités, le coût de transport fixe et le coût de transport variable ce qui me permettrais normalement de calculer le nombre de véhicules nécessaires dans le cas de la disponibilité de chaque type pour chaque destination (représenté par x), la quantité restante de marchandise qui sera transporté sous forme de tournées (représentée par r) et le coût de déplacement des véhicules (représenté par c1).

    J'ai réussis à saisir toutes les données mais je n'arrive pas à obtenir un résultat (La fenêtre reste vide): Je croyais qu'il s'agissait d'un problème d’exécution de calculs ou bien d'affichage ... Enfin je ne sais plus!!

  4. #4
    Jack
    Modérateur

    Re : Problème (langage C)

    Tu devrais utiliser un debugger qui te permet de faire avancer ton programme en pas a pas en inspectant ses variables.

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : Problème (langage C)

    Citation Envoyé par Jack Voir le message
    Tu devrais utiliser un debugger qui te permet de faire avancer ton programme en pas a pas en inspectant ses variables.
    Oui, c'est la bonne solution parce qu'à 1ère vue, ton code ne devrait pas faire ça.

    Tu peux aussi virer le floor(Q[j]/T[i]) et le remplacer par Q[j]/T[i]. Parce que là, tu convertis un entier en flottant avant de le mettre dans un entier...
    Tu devrais aussi vérifier tes formats de scanf où tu dis que tu lis des flottants mais tu passes des adresses d'entier pour stocker.

    Donc ce que tu mets dans tes variables est aléatoires et ça n'aide pas. Normalement, ton compilateur t'a mis des warning.

  7. #6
    invite66a17380

    Re : Problème (langage C)

    Merci pour vos remarques.
    Lorsque je compile le code, on ne m'affiche aucun warning.
    J'ai remplacé le floor(Q[j]/T[i]) par Q[j]/T[i] (ce que j'avais écris dans un premier temps) et j'ai réglé le problème des formats scanf.
    J’essayerai d'utiliser un debugger même si je n'en ai jamais utilisé.
    Merci bien .

  8. #7
    Dlzlogic

    Re : Problème (langage C)

    Bonsoir,
    Ma petite intervention.
    Vous ne dites pas ce que fait votre code, aucun commentaire, aucune explication.
    Si vous dites exactement ce que vous voulez faire, on pourra écrire le code, mais je rigole, ce n'est pas dans habitudes.
    Par contre, si vous écrivez ce que vous voulez faire et que que vous le traduisiez en code, je suis sûr que ça marchera. Là avec les deux "textes" on pourra vous aider.

  9. #8
    CM63

    Re : Problème (langage C)

    Bonjour,

    Je n'ai pas vérifié en détail, mais il me semble qu'il y a des tableaux dimensionnés à 10 que tu parcours avec un indice qui varie de 0 à 10, ce qui fait 11 valeurs et donc boom!!. A certains endroits, il vaudrait mieux faire:

    Code:
    for (j=0;  j<n; j++)
    Plutôt que :

    Code:
    for (j=0;  j<=n; j++)

  10. #9
    CM63

    Re : Problème (langage C)

    PS : je rectifie : n est saisi au début, mais il faudrait peut-être indiquer à l'utilisateur qu'il faut rentrer une valeur inférieure à 10.

  11. #10
    invite2d7144a7

    Re : Problème (langage C)

    Bonjour,
    Citation Envoyé par CM63 Voir le message
    PS : je rectifie : n est saisi au début, mais il faudrait peut-être indiquer à l'utilisateur qu'il faut rentrer une valeur inférieure à 10.
    C'est donc l'occasion d'introduire la notion de contrôle des entrées de l'utilisateur

  12. #11
    invite0bbe92c0

    Re : Problème (langage C)

    Citation Envoyé par Dlzlogic Voir le message
    Ma petite intervention.
    .
    Copier coller habituel de dlzlogic .....

  13. #12
    invite66a17380

    Re : Problème (langage C)

    Ce code devrait me permettre de calculer le nombre de véhicules nécessaires (représenté par la variable x) pour transporter des quantités de marchandises d’un dépôt vers une zone du dépôt ou bien plusieurs destinations (le nombre maximal de destinations est 9 et est représenté par la variable n). Je voudrais aussi calculer la quantité restante non transportée (représentée par r) que j’affecterai à d’autres véhicules sous forme de tournées (cette affectation n’est pas traitée dans ce code).
    Pour transporter ces marchandises, on dispose de plusieurs types de véhicules (dont le nombre est représenté par nombre_types qui varie de 1 jusqu’à 10 alors que la capacité est représentée par T[i]). Donc il faudrait choisir le type de véhicule le plus économique, c’est pour cette raison que je veux calculer le c1 : le coût de transport de l’ensemble nécessaire par type, d’où la relation c1[i][j]=x[i][j]*(2*a[i]*D[0][j]+b[i]).
    x : nombre de véhicule du type i vers la destination j (le dépôt j=0 peut aussi être une destination).
    a : coefficient du coût variable en fonction de la distance pour chaque type i.
    b : coût fixe pour chaque type i.
    D : distance entre le dépôt 0 et la destination j qui varie entre 0 et 9.
    La matrice des distances D[i][j] représente les distances entre (le dépôt 0 et les destinations 1→9) et (le dépôt 0 et les destinations 1→9).
    Voici un exemple de flux d’un dépôt vers 8 destinations.

    Fichier 3ldpi.png

    PART1.txt

  14. #13
    jacknicklaus

    Re : Problème (langage C)

    Code:
    for (i=0; i<nombre_types; nombre_types++)
    çà, ça risque pas de s'arrêter...
    There are more things in heaven and earth, Horatio, Than are dreamt of in your philosophy.

  15. #14
    pm42

    Re : Problème (langage C)

    Citation Envoyé par jacknicklaus Voir le message
    çà, ça risque pas de s'arrêter...
    En effet. Là encore, ça et tout ce qu'on a signalé se voit facilement au debugger en pas à pas.

  16. #15
    invite66a17380

    Re : Problème (langage C)

    Problème résolu.

    Merci.

Discussions similaires

  1. problème en langage c
    Par invitefa5adbe1 dans le forum Programmation et langages, Algorithmique
    Réponses: 12
    Dernier message: 05/01/2014, 23h45
  2. probleme langage c
    Par MANTA.. dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 09/03/2012, 12h56
  3. J'ai un problème de langage c
    Par invitecfe0939f dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 23/11/2008, 16h33
  4. Problème en langage VBA
    Par invite588da7a7 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 09/07/2004, 14h00