probleme dans un projet (niveau debutant)

probleme dans un projet (niveau debutant) - C - Programmation

Marsh Posté le 13-08-2007 à 10:48:25    

Bonjour,
Suite au bon fonctionnement de mon programme, j'ai voulu apprendre à découper celui-ci pour en faire un projet.
Cependant, celui-ci ne fonctionne pas, bien que la compilation ne sorte aucune erreur. Je pense qu'il ne passe pas par la fonction.
Soit 2 répertoires :
- header files : proto.h
- source files : main.c
                     sommeTableau.c
 
 
 
proto.h

Citation :

long sommeTableau(long tableau[], long tailleTableau);


 
main.c

Citation :

#include <stdio.h>
#include <stdlib.h>
#include "proto.h"
 
 
int main(int argc, char *argv[])
{
    long tableau[4] = {12, 15, 17, 16}, i = 0, somme;
    somme=sommeTableau(tableau,4);
    printf("soit %ld\n",somme);
    system("PAUSE" );
    return 0;
}


 
sommeTableau.c

Citation :

#include <stdio.h>
#include <stdlib.h>
 
 
long sommeTableau(long tableau[], long tailleTableau)
{
    long i, somme=0;
    for (i = 0 ; i < tailleTableau ; i++)  
    {
    somme=somme+tableau[i];    
    }
    return somme/tailleTableau;
     
}


 
Si vous avez une idée de l'erreur, dites le moi.
Merci d'avance :)

Reply

Marsh Posté le 13-08-2007 à 10:48:25   

Reply

Marsh Posté le 13-08-2007 à 11:04:36    

Faut déclarer sommeTableau.c dans ton main

Reply

Marsh Posté le 13-08-2007 à 11:12:51    

tu le déclares comment? avec un include?

Reply

Marsh Posté le 13-08-2007 à 11:31:11    

exact #include "sommeTableau.c"

Reply

Marsh Posté le 13-08-2007 à 11:36:39    

Non, il faut faire une entete à sommetableau, et c'est celle ci qui doit etre includée.


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 11:38:35    

oui ca c'est la facon propre (la mienne fonctionne aussi quand meme) (enfin c'est un peu crade)

Reply

Marsh Posté le 13-08-2007 à 11:43:36    

ok mais la jsuis perdu.  que veut tu dire par entete à somme tableau

Reply

Marsh Posté le 13-08-2007 à 11:46:32    

Ouvrir un livre ou un cours, lire un livre ou un cours.


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 11:47:24    

antac a écrit :

oui ca c'est la facon propre (la mienne fonctionne aussi quand meme) (enfin c'est un peu crade)


Donc il n'y a qu'une méthode  [:moule_bite]


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 11:48:29    

Reply

Marsh Posté le 13-08-2007 à 11:48:29   

Reply

Marsh Posté le 13-08-2007 à 11:49:56    


Ce que tu demandes est trivial, il te suffit d'utiliser un minimum de tes ressources cerveau pour t'en sortir, à savoir lire n'importe quel tutoriel de base pour t'en sortir. Si tu fais pas ça, tu ne fera jamais rien.


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 11:53:46    

antac a écrit :

exact #include "sommeTableau.c"


Horrible ! Quand on ne sait pas, on se tait...

 



Message édité par Emmanuel Delahaye le 13-08-2007 à 11:54:10

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 13-08-2007 à 11:55:39    

antac a écrit :

Faut déclarer sommeTableau.c dans ton main


Mais qu'est-ce que tu racontes ? T'as bu ou quoi ?


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 13-08-2007 à 11:57:59    

faut mettre quoi dans l'include et dans quel fichier

Message cité 2 fois
Message édité par lamouche8 le 13-08-2007 à 11:58:15
Reply

Marsh Posté le 13-08-2007 à 11:59:01    

Tu demandes aussi à ta maman comment t'habiller le matin ?


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 12:00:14    

lamouche8 a écrit :

faut mettre quoi dans l'include et dans quel fichier


 
Les fichiers comme tu nous les a présenté me semble bons.
 
Par contre, est-ce que tu les compile bien ?
Cad, un fichier objet par fichier C, et ensuite tu les réunie par le linkage en un exécutable.

Reply

Marsh Posté le 13-08-2007 à 12:00:53    

bon, si c'est pour dire des stupidités inutile de parler, jte rappelle que tu t'adresses à un débutant alors ...
je sais que sa doit être amusant de rabaisser les autres mais la jsuis déjà bas donc t'ira pas très loin bonhomme.

Reply

Marsh Posté le 13-08-2007 à 12:01:09    

lamouche8 a écrit :

faut mettre quoi dans l'include et dans quel fichier

 

Admettons que tu aies cette arborescence :

 

<blabla>
   |- <machin>
          |- sommeTableau.c
   |- main.c

 


Tu commences par créer un fichier sommeTableau.h, dans le répertoire "machin", contenant les prototypes des fonctions sommeTableau.c que tu souhaites exporter.

 

Puis, pour compiler main.c, tu as deux solutions :

  • ajouter #include "machin/sommeTableau.h"

ou

  • ajouter #include "sommeTableau.h" mais en ajoutant l'option "-I machin" à la compilation pour indiquer que les fichiers en-têtes se trouvent aussi dans le répertoire "machin".


Il ne te reste plus qu'à compiler sommeTableau.c, puis main.c, avec l'option -c de ton compilateur, et enfin linker l'objet final en ajoutant tous les *.o générés (sommeTableau.o et main.o ici).
Zieute la doc de ton compilateur pour ça, mais c'est relativement simple.


Message édité par Elmoricq le 13-08-2007 à 12:02:52
Reply

Marsh Posté le 13-08-2007 à 12:01:15    

Ouais, je lui ai donné une facon pas trop au norme pour que ca marche, par contre ce que je comprends pas c'est que tu as pas eu d'erreur à la compilation. Mon compilo m'a tout de suite dit que ta méthode était pas déclaré... Tu utilises quoi comme compilo ?
 
Je dis toujours en Ada quand ca compile c'est gagné
En C/C++ quand ca compile c'est le début des emmerdes.
 
Bref en C tu peux coder comme un porc et ca va marcher (mais c'est pas bien ;) )

Reply

Marsh Posté le 13-08-2007 à 12:03:32    

[:el g]

Reply

Marsh Posté le 13-08-2007 à 12:08:21    

lamouche8 a écrit :

Bonjour,
Suite au bon fonctionnement de mon programme, j'ai voulu apprendre à découper celui-ci pour en faire un projet.
Cependant, celui-ci ne fonctionne pas, bien que la compilation ne sorte aucune erreur. Je pense qu'il ne passe pas par la fonction.
Soit 2 répertoires :
- header files : proto.h
- source files : main.c
                     sommeTableau.c
<...>
Si vous avez une idée de l'erreur, dites le moi.


Qu'est-ce qui te fait dire qu'il y a un problème ? Le résultat ? Une division entière donne une valeur entière. Donc :  
 
somme (12, 15, 17, 16) = 60
60/4 = 15
 
Avec ton code, j'obtiens :  


soit 15
Appuyez sur une touche pour continuer...


Ce qui est correct.
 
D'autre part, ton code est correct, mais peut être amélioré selon ces principes :  
 
http://mapage.noos.fr/emdel/codage [...] ser_source
http://mapage.noos.fr/emdel/codage.htm#organiser
 
ce qui donne :  
 

Code :
  1. #ifndef H_SOMMETABLEAU_20070813120721
  2. #define H_SOMMETABLEAU_20070813120721
  3. long sommeTableau (long tableau[], long tailleTableau);
  4. #endif /* guard */


Code :
  1. /* sommetableau.c */
  2. #include "sommetableau.h"
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. long sommeTableau (long tableau[], long tailleTableau)
  6. {
  7.    long i, somme = 0;
  8.    for (i = 0; i < tailleTableau; i++)
  9.    {
  10.       somme = somme + tableau[i];
  11.    }
  12.    return somme / tailleTableau;
  13. }


Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "sommetableau.h"
  4. int main (void)
  5. {
  6.    long tableau[4] = { 12, 15, 17, 16 };
  7.    long somme = sommeTableau (tableau, 4);
  8.    printf ("soit %ld\n", somme);
  9.    return 0;
  10. }



---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 13-08-2007 à 12:10:14    

antac a écrit :

<...>
En C/C++ quand ca compile c'est le début des emmerdes.
 
Bref en C tu peux coder comme un porc et ca va marcher (mais c'est pas bien ;) )


Mais ferme la...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 13-08-2007 à 12:11:08    

je te remercie Emmanuel.

Reply

Marsh Posté le 13-08-2007 à 12:28:07    

lamouche8 a écrit :

Bonjour,
Suite au bon fonctionnement de mon programme, j'ai voulu apprendre à découper celui-ci pour en faire un projet.


http://fr.lang.free.fr/cours/Gener [...] t_v1.0.pdf


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 13-08-2007 à 13:14:01    

Emmanuel Delahaye je te pris d'etre un peu plus poli s'il te plait. Tu as raison sur le fait que faire un include sur un .c est crade (et je ne dis pas le contraire) maintenant je te pris de ne pas être insultant (je ne l'ai jamais été)

Message cité 1 fois
Message édité par antac le 13-08-2007 à 13:15:53
Reply

Marsh Posté le 13-08-2007 à 13:19:34    

Arrête d'écrire des inepties, pour commencer. Tu t'adresses à un débutant, normal qu'on t'attende au tournant, tu es en train de lui donner comme conseil toutes les horreurs qu'on aimerait ne plus rencontrer dans le code des autres.

 

Et il ne t'a pas insulté, il te demande d'arrêter de raconter des conneries.
Ce que j'approuve. [:dawa]


Message édité par Elmoricq le 13-08-2007 à 13:19:46
Reply

Marsh Posté le 13-08-2007 à 13:21:50    

J'ai dis que ma méthode était crade (je pense que c'est assez clair dans ce que j'ai dis sur mes précédents posts) et que la méthode de _darkalt3_ est bien plus intéressante (car respectant les normes de programmation C). Ce n'est pas un conseil, je lui ai donné une solution simple pour que ca marche (et j'avoue que j'ai eu tord de lui donner cette méthode).

Reply

Marsh Posté le 13-08-2007 à 13:23:30    

Allez, faisons nous tous des bisous.


---------------
Töp of the plöp
Reply

Marsh Posté le 13-08-2007 à 13:25:59    

ouais enfin bon, si tu commences à faire crade pour 4 lignes de code...

Reply

Marsh Posté le 13-08-2007 à 13:30:29    

antac a écrit :

J'ai dis que ma méthode était crade (je pense que c'est assez clair dans ce que j'ai dis sur mes précédents posts) et que la méthode de _darkalt3_ est bien plus intéressante (car respectant les normes de programmation C). Ce n'est pas un conseil, je lui ai donné une solution simple pour que ca marche (et j'avoue que j'ai eu tord de lui donner cette méthode).


Arrête de t'enfoncer, tu fais pitié...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 13-08-2007 à 13:32:21    

Je ne vois pas ou je m'enfonce mais bon....  
Tant pis.

Reply

Marsh Posté le 13-08-2007 à 13:40:55    

antac a écrit :

Emmanuel Delahaye je te pris d'etre un peu plus poli s'il te plait. Tu as raison sur le fait que faire un include sur un .c est crade (et je ne dis pas le contraire) maintenant je te pris de ne pas être insultant (je ne l'ai jamais été)


Tes propos sur le langage C sont une insulte à l'intelligence...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 13-08-2007 à 13:49:33    

Le fait que tu peux coder comme un porc en C, que tu utilises des typages foireux ou des pointeurs qui pointent sur quedalle et que ca compile. Oui désolé le C n'est pas très strict la dessus par rapport à d'autres langages (ce qui n'enlève en rien ses qualitées).
 
Tchao

Reply

Marsh Posté le 13-08-2007 à 13:53:21    

antac a écrit :

Le fait que tu peux coder comme un porc en C, que tu utilises des typages foireux ou des pointeurs qui pointent sur quedalle et que ca compile. Oui désolé le C n'est pas très strict la dessus par rapport à d'autres langages (ce qui n'enlève en rien ses qualitées).

 

Tchao

 


c'est justement pour ça qu'il ne faut jamais dire aux débutants que les trucs de porc existe :D

 

l'include de fichier .c c'est à la limite du tolérable pour le programmeur averti, qui fait du prototypage rapide et qui jete le code dans les minutes qui suivent et si il se cache et qu'il le dit à personne ^_^ et il ne faut pas non plus qu'il s'attende à recevoir de cadeau du popa noel non plus :o.
(ou aussi dans le cas de compilo foireux, mais bon, là  :sarcastic: )

Message cité 1 fois
Message édité par Deadog le 13-08-2007 à 13:56:50
Reply

Marsh Posté le 13-08-2007 à 13:56:03    

En effet et encore une fois je m'en excuse de lui avoir dit de faire un include sur un .c.
 
Au niveau du compilo, quand je dis ca c'est pour l'avoir vécu avec GCC

Reply

Marsh Posté le 13-08-2007 à 13:57:48    

antac a écrit :

En effet et encore une fois je m'en excuse de lui avoir dit de faire un include sur un .c.
 
Au niveau du compilo, quand je dis ca c'est pour l'avoir vécu avec GCC


 
comme tout bon compilo, en y mettant les bons flags de compilation tu fais ressortir les trucs de porcs ;)

Reply

Marsh Posté le 14-08-2007 à 08:47:16    

Deadog a écrit :

c'est justement pour ça qu'il ne faut jamais dire aux débutants que les trucs de porc existe :D


Pas d'accord.
En vous posant comme senseurs de la connaissance vous ne faites que répercuter à votre niveau le marasme qui nous entoure. Combien de fois avez-vous dit (ou pensé) "on ne nous dit pas la vérité, on nous cache des trucs" => et pourtant vous voulez vous aussi reproduire le même schéma ?
Non. A un débutant qui veut apprendre le C on lui apprend le C, tout le C. Le bon, comme le mauvais, mais on lui apprend aussi pourquoi c'est bon ou mauvais. Il pourra faire ensuite la part des choses...


Message édité par Sve@r le 14-08-2007 à 09:00:01

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 14-08-2007 à 09:09:41    

Deadog a écrit :


 
comme tout bon compilo, en y mettant les bons flags de compilation tu fais ressortir les trucs de porcs ;)


nan hein

Reply

Marsh Posté le 14-08-2007 à 09:43:55    


Tu ne connais pas le flag --goret ?  
;)
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed