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

  FORUM HardWare.fr
  Programmation
  C

  qui peut dire ce qui cloche dans mon mini prog ?? [ RESOLU ]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

qui peut dire ce qui cloche dans mon mini prog ?? [ RESOLU ]

n°1054639
fullnight
Posté le 21-04-2005 à 00:11:14  profilanswer
 

qui sait me dire pq rien ne s'affiche ??
 
 
 
 
 
 

Code :
  1. #include "stdio.h"
  2. #include "conio.h"
  3. #define TAILLE 14
  4. short * fonction(short * , short []);
  5. void main()
  6. {
  7. short nb=12,*p=NULL;
  8. static short v[TAILLE]={1,2,3,5,7,11,13,17,19,23,29,31,37,41};
  9.     p=fonction(&nb,v);
  10.    
  11. printf("%p\n",p);
  12. getche();
  13. }
  14. short * fonction(short * nb, short v[])
  15. {
  16. short somme=0,i=0,*p;
  17. bool g=0;
  18.   while( nb )
  19. {
  20.  somme+=*nb%10;
  21.  *nb/=10;
  22. }
  23.  
  24.   for (i=0;i<=TAILLE;++i)
  25.   {
  26.   printf("%d",v[i]);
  27.   if( v[i] == somme )
  28.   {
  29.    g=1;
  30.    p=&v[i];
  31.   }
  32.   }
  33.   return ( g ? p : NULL);
  34. }


Message édité par fullnight le 21-04-2005 à 00:46:50
mood
Publicité
Posté le 21-04-2005 à 00:11:14  profilanswer
 

n°1054647
++fab
victime du syndrome IH
Posté le 21-04-2005 à 00:15:38  profilanswer
 

active les warnings, et regarde tes deux premieres lignes.

n°1054665
fullnight
Posté le 21-04-2005 à 00:23:16  profilanswer
 

je vais ou avec visual c++ 6.0  pr activer les warning?
 
g 0 error et  0 warning
 
alors que faire??


Message édité par fullnight le 21-04-2005 à 00:30:33
n°1054677
++fab
victime du syndrome IH
Posté le 21-04-2005 à 00:37:01  profilanswer
 

oula, en plus court :
#include <stdio.h>
#include <stdbool.h> // bool C99
 
ton while dans fonction s'emballe ...
ton for dans fonction va un coup trop loin.
 
et pitié int main por favor :o

n°1054683
fullnight
Posté le 21-04-2005 à 00:44:44  profilanswer
 

oui enfin bon..
tout ce qui manquait pour que mon prog tourne était ETOILE
 
devant nb dans la boucle while
 
 
MERCI QD MEME :)

n°1054696
++fab
victime du syndrome IH
Posté le 21-04-2005 à 00:50:15  profilanswer
 

ça compile, ça s'affiche, donc ça marche  [:sinking]  
o yeah  :sleep:

n°1054827
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-04-2005 à 09:22:54  profilanswer
 

fullnight a écrit :

oui enfin bon..
tout ce qui manquait pour que mon prog tourne était ETOILE
 
devant nb dans la boucle while


Non, ça ne suffit pas.  

  • La boucle for() va trop loin (Comportement indéfini)
  • Le formatteur pour short est "%hd". (Au fait, pourquoi short et pas int ?)
  • le type pour "%p" est (void*) (cast obligatoire)



#include "stdio.h"
 
int *fonction (int *p_nb, int v[], size_t taille)
{
   int *p = NULL;
   int somme = 0;
   int g = 0;
 
   if (p_nb != NULL)
   {
      while (*p_nb > 0)
      {
         somme += *p_nb;
         somme %= 10;
         *p_nb /= 10;
      }
   }
 
   {
      size_t i = 0;
      for (i = 0; i < taille; ++i)
      {
         printf ("%3d", v[i]);
         if (v[i] == somme)
         {
            g = 1;
            p = &v[i];
         }
      }
      printf ("\n" );
   }
   return (g ? p : NULL);
}
 
int main (void)
{
   int v[] =
   {1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
   int nb = 12;
 
   int *p = fonction (&nb, v, sizeof v / sizeof *v);
   if (p != NULL)
   {
      printf ("*p=%d nb=%d\n", *p, nb);
   }
   else
   {
      printf ("error\n" );
   }
   return 0;
}



Message édité par Emmanuel Delahaye le 21-04-2005 à 09:23:19

---------------
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°1055740
fullnight
Posté le 21-04-2005 à 21:21:17  profilanswer
 

même si elle va trop loin
 
il suffit de mettre l'étoile pour que le programme fonctionne..c tout ski manquait.
 
 
pour le formateur d'un short oui c hd, bizarrement g oublié de le remettre.
 
j'avais fait des modifs avec un int puis g remis en short mais j'ai pas rechangé partout ce qu'il fallait pour correspondre !
 
pq un short et pas un int? bein paske la taille d'un int est variable selon le compilo et mon prof préfere qu'on employe un short comme ca on sait directement combien de bytes on manipule(meme si un sizeof aura vite fait de nous dire de combien de bytes retourne le int...)
 
soit !!
 
 
"le type pour "%p" est (void*) (cast obligatoire) "
 
je sais absolument pas de quoi tu parles.
g déclaré p en tant ke pointeur sur short  
 

n°1055797
++fab
victime du syndrome IH
Posté le 21-04-2005 à 21:58:19  profilanswer
 

Citation :

il suffit de mettre l'étoile pour que le programme fonctionne..c tout ski manquait.


 :sarcastic:  
Emmanuel va apprécier ...
 
il faut voir le fait que la taille d'un int varie selon l'implémentation comme un avantage pour la performance.  
 

Citation :

mon prof préfere qu'on employe un short


au lieu de vous inciter au tourisme, ton prof ferait mieux de se poser cette question existencielle : sizeof(short) = ???

n°1055813
fullnight
Posté le 21-04-2005 à 22:14:25  profilanswer
 

j'avais dit no comment a propos du sizeof please..

mood
Publicité
Posté le 21-04-2005 à 22:14:25  profilanswer
 

n°1055835
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-04-2005 à 22:26:26  profilanswer
 

fullnight a écrit :

même si elle va trop loin


Si ça va trop loin, le comportement est indéfini, c'est tout.

Citation :


il suffit de mettre l'étoile pour que le programme fonctionne..c tout ski manquait.


Il ne suffit pas qu'un programme ait l'air de fonctionner pour qu'il soit correct.

Citation :


pq un short et pas un int? bein paske la taille d'un int est variable selon le compilo et mon prof préfere qu'on employe un short comme ca on sait directement combien de bytes on manipule(meme si un sizeof aura vite fait de nous dire de combien de bytes retourne le int...)


Mauvais prof, changer de prof. Seule la taille minimale des types sont définis par le langage C. Le type short n'echappe pas à cette regle. J'ai déjà vu des short de 32 bits (DSP Motorola 56156).
 
En fait, les types sont définis par des plages de valeurs, dont les limites pour ton compilateur se trouvent dans ... <limits.h>.

Citation :


"le type pour "%p" est (void*) (cast obligatoire) "
 
je sais absolument pas de quoi tu parles.
g déclaré p en tant ke pointeur sur short

printf("%p\n",p);




doit être modfié en:

printf("%p\n",(void *) p);


pour être conforme.


---------------
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°1055934
fullnight
Posté le 21-04-2005 à 23:02:58  profilanswer
 

pour mon prof un short vaut 2 bytes :)
 
et cette histoire de printf("%p\n",(void *) p);
 
me laisse perplexe !
 
je ne comprend pas du tout cette conformité
jamais mon prof n'a parlé de ca.
 
selon le prof le printf a besoin d'une adresse .
 
je pige pas pq il faut changer le type du pointeur en void * pour l'afficher
 
ca marche bien sans :|
 
on en apprend ici :) merci les pros


Message édité par fullnight le 21-04-2005 à 23:22:20
n°1055958
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-04-2005 à 23:16:58  profilanswer
 

fullnight a écrit :

pour mon prof un short vaut 2 bytes :)


C'est possible, mais c'est pas garanti. Le C dit 16 bit minimum. Point (et encore ce n'est pas exprimé comme ça, mais en plage de valeurs : -32767..32767)

Citation :


et cette histoire de printf("%p\n",(void *) p);
 
me laisse perplexe !
 
je ne comprend pas du tout cette conformité
jamais mon prof n'a parlé de ca.


Bah, il ne connait pas la norme. Normal, il ne bosse pas dans l'industrie...

Citation :

selon le prof le printf a besoin d'une adresse .


Exact.

Citation :

je pige pas pq il faut changer le type du pointeur en void * pour l'afficher


C'est exigé par la norme.

Citation :

ca marche bien sans :|


Ca ne prouve rien. "Ca marche bien" != "c'est conforme".

Citation :

on en apprend ici :)


On est là pour ça...


---------------
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/

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

  qui peut dire ce qui cloche dans mon mini prog ?? [ RESOLU ]

 

Sujets relatifs
Arrondir un filesize [RESOLU][Java] [Resolu] Erreur ODBC État de curseur non valide
JScrollBar: mais tu va demarrer en haut , oui!!!![resolu]Style sur un Button l'aligne en bas ? [résolu]
[Résolu] Comment accèder à une variable d'une autre librarie ASMAfficher une image dont le nom est enregistré dans 1 table [resolu]
test création objet [Résolu]créer un loading[résolu]
passage à la ligne ds textbox[RESOLU][Résolu]Changement de style, cookie, path
Plus de sujets relatifs à : qui peut dire ce qui cloche dans mon mini prog ?? [ RESOLU ]


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