Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2670 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme dans un projet (niveau debutant)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme dans un projet (niveau debutant)

n°1598835
lamouche8
Posté le 13-08-2007 à 10:48:25  profilanswer
 

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 :)

mood
Publicité
Posté le 13-08-2007 à 10:48:25  profilanswer
 

n°1598849
antac
..
Posté le 13-08-2007 à 11:04:36  profilanswer
 

Faut déclarer sommeTableau.c dans ton main

n°1598857
lamouche8
Posté le 13-08-2007 à 11:12:51  profilanswer
 

tu le déclares comment? avec un include?

n°1598865
antac
..
Posté le 13-08-2007 à 11:31:11  profilanswer
 

exact #include "sommeTableau.c"

n°1598867
_darkalt3_
Proctopathe
Posté le 13-08-2007 à 11:36:39  profilanswer
 

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


---------------
Töp of the plöp
n°1598871
antac
..
Posté le 13-08-2007 à 11:38:35  profilanswer
 

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

n°1598876
lamouche8
Posté le 13-08-2007 à 11:43:36  profilanswer
 

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

n°1598877
_darkalt3_
Proctopathe
Posté le 13-08-2007 à 11:46:32  profilanswer
 

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


---------------
Töp of the plöp
n°1598878
_darkalt3_
Proctopathe
Posté le 13-08-2007 à 11:47:24  profilanswer
 

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
n°1598879
lamouche8
Posté le 13-08-2007 à 11:48:29  profilanswer
 
mood
Publicité
Posté le 13-08-2007 à 11:48:29  profilanswer
 

n°1598880
_darkalt3_
Proctopathe
Posté le 13-08-2007 à 11:49:56  profilanswer
 


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
n°1598882
Emmanuel D​elahaye
C is a sharp tool
Posté le 13-08-2007 à 11:53:46  profilanswer
 

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/
n°1598883
Emmanuel D​elahaye
C is a sharp tool
Posté le 13-08-2007 à 11:55:39  profilanswer
 

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/
n°1598884
lamouche8
Posté le 13-08-2007 à 11:57:59  profilanswer
 

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
n°1598885
_darkalt3_
Proctopathe
Posté le 13-08-2007 à 11:59:01  profilanswer
 

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


---------------
Töp of the plöp
n°1598886
Deadog
Dain Bramaged
Posté le 13-08-2007 à 12:00:14  profilanswer
 

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.

n°1598887
lamouche8
Posté le 13-08-2007 à 12:00:53  profilanswer
 

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.

n°1598888
Elmoricq
Modérateur
Posté le 13-08-2007 à 12:01:09  profilanswer
 

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
n°1598889
antac
..
Posté le 13-08-2007 à 12:01:15  profilanswer
 

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 ;) )

n°1598890
Elmoricq
Modérateur
Posté le 13-08-2007 à 12:03:32  profilanswer
 

[:el g]

n°1598892
Emmanuel D​elahaye
C is a sharp tool
Posté le 13-08-2007 à 12:08:21  profilanswer
 

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/
n°1598893
Emmanuel D​elahaye
C is a sharp tool
Posté le 13-08-2007 à 12:10:14  profilanswer
 

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/
n°1598894
lamouche8
Posté le 13-08-2007 à 12:11:08  profilanswer
 

je te remercie Emmanuel.

n°1598910
Sve@r
Posté le 13-08-2007 à 12:28:07  profilanswer
 

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.
n°1598927
antac
..
Posté le 13-08-2007 à 13:14:01  profilanswer
 

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
n°1598928
Elmoricq
Modérateur
Posté le 13-08-2007 à 13:19:34  profilanswer
 

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
n°1598930
antac
..
Posté le 13-08-2007 à 13:21:50  profilanswer
 

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).

n°1598931
_darkalt3_
Proctopathe
Posté le 13-08-2007 à 13:23:30  profilanswer
 

Allez, faisons nous tous des bisous.


---------------
Töp of the plöp
n°1598933
Taz
bisounours-codeur
Posté le 13-08-2007 à 13:25:59  profilanswer
 

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

n°1598935
Emmanuel D​elahaye
C is a sharp tool
Posté le 13-08-2007 à 13:30:29  profilanswer
 

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/
n°1598936
antac
..
Posté le 13-08-2007 à 13:32:21  profilanswer
 

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

n°1598940
Emmanuel D​elahaye
C is a sharp tool
Posté le 13-08-2007 à 13:40:55  profilanswer
 

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/
n°1598948
antac
..
Posté le 13-08-2007 à 13:49:33  profilanswer
 

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

n°1598952
Deadog
Dain Bramaged
Posté le 13-08-2007 à 13:53:21  profilanswer
 

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
n°1598954
antac
..
Posté le 13-08-2007 à 13:56:03  profilanswer
 

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

n°1598956
Deadog
Dain Bramaged
Posté le 13-08-2007 à 13:57:48  profilanswer
 

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 ;)

n°1599264
Sve@r
Posté le 14-08-2007 à 08:47:16  profilanswer
 

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.
n°1599268
Taz
bisounours-codeur
Posté le 14-08-2007 à 09:09:41  profilanswer
 

Deadog a écrit :


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


nan hein

n°1599283
Emmanuel D​elahaye
C is a sharp tool
Posté le 14-08-2007 à 09:43:55  profilanswer
 


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/
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme dans un projet (niveau debutant)

 

Sujets relatifs
Problème avec nom de champs identique[Résolu] Problème ActionScript - fonction onLoad
Problème ActionScript (Flash) - onLoad[VBS] Probleme WMI distant (sur Win32_Product)
{Résolu} problème URL et variablesAide pour petit script pour IRC (débutant)
[C++] Problème stringstream/fstream et rdbuf() [résolu]Problème pour une requête sql
Probleme controle de saisieProblème avec un script simple
Plus de sujets relatifs à : probleme dans un projet (niveau debutant)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR