probleme de débutant

probleme de débutant - C - Programmation

Marsh Posté le 20-05-2006 à 11:15:17    

je suis vraiment débutant en langage C ; c'est mon premier langage informatique et je voudrai savoir pourquoi mon  programme ne reste pas quand je le compile pourtant je met systeme pause  j'utile comme IDE dev c++  
voici mon programme  
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
long suite( long a ,long b ,long nombreEntre )
{
     return a / b = nombreEntre
}
int main ( int argc, char** argv )
{
    long n, nombreEntre = 0;
   
 
       do {
       
        printf("que vaut Un+1 " );
        scanf("%ld", &a);
 
        printf("que vaut Un" );    
        scanf("ld", &b
         
        if ( nombreEntre> 1)
            printf("suite décroissante\n\n" );
        else if (nombreEntre < 1)
            printf("la suite est décroissante\n\n" );
}  
 
    system("PAUSE" );
}
 
 
merci de bien vouloir me répondre et peut etre me dire mes erreur si il y en a :jap:

Reply

Marsh Posté le 20-05-2006 à 11:15:17   

Reply

Marsh Posté le 20-05-2006 à 11:29:33    

Deja poste le code dans des balises code stp, et rajoute les morceaux qui manquent, car ce que tu as poste ne compilera pas

Reply

Marsh Posté le 20-05-2006 à 11:45:06    

- system pas super, utilise un scanf pour appui sur une touche entrée par exemple.
- utilise code::blocks qui est plus récent et mis à jour.


Message édité par _darkalt3_ le 23-05-2006 à 10:46:49
Reply

Marsh Posté le 20-05-2006 à 11:49:54    

C'est moi ou il te manque la fin de tes lignes o_0 ?
 

Citation :

system super

euh... l'inverse plutôt :-/


---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Marsh Posté le 20-05-2006 à 12:13:53    

woard a écrit :

je suis vraiment débutant en langage C ; c'est mon premier langage informatique
<...>
merci de bien vouloir me répondre et peut etre me dire mes erreur si il y en a :jap:


Il y a plein d'erreurs. Je te conseille de suivre une formation en C sérieuse, parce que visiblement, tu codes au hasard sans maitriser les bases. D'autre part, le C comme premier langage, faut oser...
 
http://mapage.noos.fr/emdel/images/c_warn.png
 
Des références sur mon site.
 


---------------
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 20-05-2006 à 12:33:42    

woard a écrit :

merci de bien vouloir me répondre et peut etre me dire mes erreur si il y en a :jap:


Il me semble en distinguer ptet une ou deux (mais rien de bien certain) [:ddr555]
 
Bon, on y va
 

woard a écrit :

#include <time.h>


A quoi va te servir cet include vu que tu n'utilises aucune fonction de gestion de l'heure ???
 

woard a écrit :

return a / b = nombreEntre


Ici, tu veux assigner à "a/b" (une opération) une valeur particulière "nombreEntre". Es-tu certain d'avoir bien transcris ton algo ???
 

woard a écrit :


      printf("que vaut Un+1 " );
        scanf("%ld", &a);
 
        printf("que vaut Un" );    
        scanf("ld", &b


Mis à part que la fin du 2° scanf est manquante, où sont déclarées les variables "a" et "b" ???
Rappel: les variables d'une fonction doivent être déclarées dans la fonction ou bien en dehors de toute fonction si ce sont des globales
 

woard a écrit :


       if ( nombreEntre> 1)
            printf("suite décroissante\n\n" );
        else if (nombreEntre < 1)
            printf("la suite est décroissante\n\n" );


Mis à part qu'on ne sait pas comment est la suite si "nombreEntre" vaut "1", par quel miracle cette variable (elle-aussi non définie) récupère-t-elle une valeur ???
 
Dernière remarque: je suis étonné que "dev-c++" arrive à compiler ton code (il doit être vachement évolué)  :sol:


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

Marsh Posté le 20-05-2006 à 12:56:35    

merci pour tout vos conseil  
Emmanuel D elahaye  
si tu as de quoi maider pour faire une formation C sérieuse je suis tres tres prenant sa me donne hyper envie mais hélas je suis qu'en premiere et j'ai personne qui peut m'aider et j'ai du mal

Reply

Marsh Posté le 20-05-2006 à 13:14:54    

woard a écrit :

si tu as de quoi maider pour faire une formation C sérieuse je suis tres tres prenant sa me donne hyper envie mais hélas je suis qu'en premiere et j'ai personne qui peut m'aider et j'ai du mal


- Ludique : http://www.siteduzero.com/tuto-3-8 [...] -en-c.html (Tutoriel C, malgré son nom...)
- Formel : http://www-clips.imag.fr/commun/be [...] NSI_C.html


Message édité par Emmanuel Delahaye le 20-05-2006 à 13:15:29

---------------
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 20-05-2006 à 13:31:45    

Emmanuel Delahaye a écrit :

Il y a plein d'erreurs. Je te conseille de suivre une formation en C sérieuse, parce que visiblement, tu codes au hasard sans maitriser les bases. D'autre part, le C comme premier langage, faut oser...
 
http://mapage.noos.fr/emdel/images/c_warn.png
 
Des références sur mon site.


 
Ben j'ai commence par le C aussi [:spamafote]


---------------
Mon feedback
Reply

Marsh Posté le 20-05-2006 à 16:29:25    

woard a écrit :

merci pour tout vos conseil  
Emmanuel D elahaye  
si tu as de quoi maider pour faire une formation C sérieuse je suis tres tres prenant sa me donne hyper envie mais hélas je suis qu'en premiere et j'ai personne qui peut m'aider et j'ai du mal


http://fr.lang.free.fr/cours/Langa [...] e_v2.0.pdf


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

Marsh Posté le 20-05-2006 à 16:29:25   

Reply

Marsh Posté le 20-05-2006 à 17:51:10    


J'ai bien aimé l'intro  !

  • Un peu trop orienté Unix (taille des données, confusion byte/octet, ).
  • Confusion entre fonctions standards et fonctions POSIX (fpurge(), strdup()...)
  • Parle de long long (chic, du C99), c'est bien, mais ne met pas de int à ses main(). Çaÿ mal...

Bref, Yet Another Crappy Tutorial...

Message cité 2 fois
Message édité par Emmanuel Delahaye le 20-05-2006 à 17:56:40

---------------
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 20-05-2006 à 20:18:51    

Emmanuel Delahaye a écrit :

J'ai bien aimé l'intro  !


Yes... :bounce:  

Emmanuel Delahaye a écrit :

  • Un peu trop orienté Unix (taille des données, confusion byte/octet, ).

Ben oui, vu que le C a longtemps été associé à Unix (et que j'ai appris les 2 en même temps)...

Emmanuel Delahaye a écrit :

  • Confusion entre fonctions standards et fonctions POSIX (fpurge(), strdup()...)

Euh, oui. Je fais pas trop le distinguo...

Emmanuel Delahaye a écrit :

  • Parle de long long (chic, du C99), c'est bien, mais ne met pas de int à ses main(). Çaÿ mal...

Oui, il y a effectivement des refontes à faire. Ce tuto a été commencé il y a longtemps, à l'époque où le "int" était mis par défaut...

Emmanuel Delahaye a écrit :

Bref, Yet Another Crappy Tutorial...


 :cry:


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

Marsh Posté le 20-05-2006 à 20:38:47    


http://www.developpez.net/forums/images/smilies/calin.gif
 


---------------
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 23-05-2006 à 10:10:36    

le problème, c'est qu'on ne choisi pas de faire du C en premier langage, c'est la formation qui nous l'impose et quand il nous demande de faire un projet en 2 mois, on n'a pas le temps de faire un formation de 1 an...
 
faudrai en parler a l'éducation national...

Reply

Marsh Posté le 23-05-2006 à 10:46:22    

MS-DOS_1991 a écrit :


Citation :

system super

euh... l'inverse plutôt :-/


 
euh oui :D
j'ai oublié un mot :D (édité)


Message édité par _darkalt3_ le 23-05-2006 à 10:46:33
Reply

Marsh Posté le 23-05-2006 à 10:54:44    

Emmanuel Delahaye a écrit :


  • Un peu trop orienté Unix (taille des données, confusion byte/octet, ).



 

Sve@r a écrit :


Ben oui, vu que le C a longtemps été associé à Unix (et que j'ai appris les 2 en même temps)...


 
j'ai du mal a voir le rapport avec unix, en fait vous affirmez qu'on ne peut pas porter unix sur une machine ne pouvant pas adresser des octets ? alors que c'est un peu la raison d'etre du c ?
 
A propos de c99, c'est vraiment utile d'apprendre toute les nouveautées  apportées par ce standard qu'aucun compilateur ne supporte totalement ?

Reply

Marsh Posté le 23-05-2006 à 13:42:28    

skelter a écrit :

j'ai du mal a voir le rapport avec unix,


http://mapage.noos.fr/emdel/notes.htm#posix

Citation :

en fait vous affirmez qu'on ne peut pas porter unix sur une machine ne pouvant pas adresser des octets ?


 :ouch: Jamais dit ça. Ce que je dis c'est qu'en C, un char  (donc un byte) doit faire 8 bits minimum. Confondre byte et octet dans le contexte du langage C est une erreur fréquente, mais ça reste une erreur. Sur TMS320C54, les 'octets' font 16-bit. Sur DSP 56156, ils font 32-bit. Ca fait désordre...

Citation :

alors que c'est un peu la raison d'etre du c ?


La portabilité ? Oui.

Citation :

A propos de c99, c'est vraiment utile d'apprendre toute les nouveautées  apportées par ce standard qu'aucun compilateur ne supporte totalement ?


Je crains malheureusement que soit arrivé un peu tard. Les ténors (Microsoft, Borland) ne soutiennent plus le langage C comme ils l'ont fait dans le passé, Microsoft a même crée sa propre 'safe C library' assorties de menaces des pires maux si on utilise les fonctions standards du C, le tout hors C99.
 
http://www.microsoft.com/france/ms [...] urity.mspx
 
Je dirais que rien ne presse et qu'il vaut mieux apprendre à bien utiliser C90.
 
Mais ce n'est que mon avis...

Message cité 1 fois
Message édité par Emmanuel Delahaye le 23-05-2006 à 13:44:02

---------------
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 23-05-2006 à 20:39:11    

Emmanuel Delahaye a écrit :


 :ouch: Jamais dit ça.


 
tu as dit
 

Citation :

Un peu trop orienté Unix [...] confusion byte/octet


 
la je comprends que sous unix byte = octet

Reply

Marsh Posté le 23-05-2006 à 20:49:15    

skelter a écrit :

tu as dit
 

Citation :

Un peu trop orienté Unix [...] confusion byte/octet


 
la je comprends que sous unix byte = octet


Je ne pourrais pas l'affirmer. C'est ce que laisse croire le site en question et j'ai rappelelé que vu du C, c'était une erreur...


---------------
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 23-05-2006 à 21:00:55    

ouai, en fait je pensais que unix etait aussi portable que le C (le C a été créé pour réécrire unix, c'est à ca qu'il doit sa portabilité ??), mais si c'etait vrai j'imagine que tout ce qui est POSIX pourrait faire partie de la bibliotheque standard et ce n'est pas le cas.
Pour revenir à C99, il ne serait pas plus restrictif au niveau de l'architecture cible vu que l'entete standard stdint.h fournit des types entier de 8 bits (meme 8,16,32,64 alors que sur certaine machine les tailles des mots ne sont pas forcement des multiple de 8), ca rend c99 moin portable du coup ? (et peut etre meme pour d'autre raisons)

Reply

Marsh Posté le 23-05-2006 à 21:26:45    

skelter a écrit :

ouai, en fait je pensais que unix etait aussi portable que le C (le C a été créé pour réécrire unix, c'est à ca qu'il doit sa portabilité ??), mais si c'etait vrai j'imagine que tout ce qui est POSIX pourrait faire partie de la bibliotheque standard et ce n'est pas le cas.


J'ai cru comprendre que pour qu'une architecture soit POSIX (La norme qui défini UNIX canal Véritable :) ), il y a des contraintes matérielles minimales, à commencer par une MMU...
 
Il faut fouiller là-dedans si ça t'interesse... http://www.unix.org/version3/overview.html

Citation :


Pour revenir à C99, il ne serait pas plus restrictif au niveau de l'architecture cible vu que l'entete standard stdint.h fournit des types entier de 8 bits (meme 8,16,32,64 alors que sur certaine machine les tailles des mots ne sont pas forcement des multiple de 8), ca rend c99 moin portable du coup ? (et peut etre meme pour d'autre raisons)


Il faut bien lire la norme. Les types de taille fixes, et c'est logique, ne sont pas pas portables. Ils sont spécifiés pour les architectures qui les supporte. Sinon, on trouve les types connus avec des noms plus explicites comme
uint_least8_t etc.

Citation :


ISO/IEC 9899:TC2 Committee Draft — May 6, 2005 WG14/N1124
7.18.1.1 Exact-width integer types
1 The typedef name intN_t designates a signed integer type with width N, no padding
bits, and a two’s complement representation. Thus, int8_t denotes a signed integer
type with a width of exactly 8 bits.
2 The typedef name uintN_t designates an unsigned integer type with width N. Thus,
uint24_t denotes an unsigned integer type with a width of exactly 24 bits.
3 These types are optional. However, if an implementation provides integer types with
widths of 8, 16, 32, or 64 bits, no padding bits, and (for the signed types) that have a
two’s complement representation, it shall define the corresponding typedef names.
7.18.1.2 Minimum-width integer types
1 The typedef name int_leastN_t designates a signed integer type with a width of at
least N, such that no signed integer type with lesser size has at least the specified width.
Thus, int_least32_t denotes a signed integer type with a width of at least 32 bits.
2 The typedef name uint_leastN_t designates an unsigned integer type with a width
of at least N, such that no unsigned integer type with lesser size has at least the specified
width. Thus, uint_least16_t denotes an unsigned integer type with a width of at
least 16 bits.
3 The following types are required:
int_least8_t
int_least16_t
int_least32_t
int_least64_t
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
All other types of this form are optional.



---------------
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 23-05-2006 à 21:46:11    

Tient en parlant de portabilité, y'a beaucoup de plateformes ou l'on ne trouve pas les variadic macro ? (soit dans la forme gnu, soit dans la forme c99, soit dans une autre forme ...)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 23-05-2006 à 22:25:06    

0x90 a écrit :

Tient en parlant de portabilité, y'a beaucoup de plateformes ou l'on ne trouve pas les variadic macro ? (soit dans la forme gnu, soit dans la forme c99, soit dans une autre forme ...)


Toutes les plateformes non GNU C et non C99. Je suis trop fort !

Message cité 2 fois
Message édité par Emmanuel Delahaye le 23-05-2006 à 22:58:57

---------------
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 23-05-2006 à 22:36:34    

Emmanuel Delahaye a écrit :

Toutes les plateformes non GNU C et non C90. Je suis trop fort !


 
et non C99 [:aloy]

Reply

Marsh Posté le 23-05-2006 à 22:46:34    

Emmanuel Delahaye a écrit :

Toutes les plateformes non GNU C et non C90. Je suis trop fort !


 
J'aurais imaginé que sur des plateformes non GNU, d'autres personnes ait eu besoin de variadic macro et aient implémenté quelque chose de simmilaire ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 23-05-2006 à 22:58:28    

0x90 a écrit :

J'aurais imaginé que sur des plateformes non GNU, d'autres personnes ait eu besoin de variadic macro et aient implémenté quelque chose de simmilaire ...


Le truc connu et portable est  

Code :
  1. #define PRINTF(a) a


qui s'utilise

Code :
  1. PRINTF (("x = %d\n", x));



---------------
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 23-05-2006 à 22:59:13    

:cry:  


---------------
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 23-05-2006 à 23:06:09    

Emmanuel Delahaye a écrit :

Le truc connu et portable est  

Code :
  1. #define PRINTF(a) a


qui s'utilise

Code :
  1. PRINTF (("x = %d\n", x));



 
Ah ouais ... [:pingouino]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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