Besoin d aide pour creer un programme en C

Fermé
Evanes - 15 juin 2003 à 15:46
 popo09 - 4 déc. 2007 à 09:58
bonjour!
je cherchais des cours sur le langage C pour m aider a faie un programme et je sui tomber sur ce site,comme j ai vu kil y av un forum, jme suis dis ke je pouvais demandé de l aide( je c pa si c le bonne endroit ni mm si on pe m aider, mé bon autan essayer:p)
il fo ke j ecrive un "programme ki demande a l utilisateur des nombres entre 0 et 200 000.si l utilisateur tape un nb strictemen plus grand ke 200 000,ce nb est tt simplemen ignoré.le progamme s arrete des ke l utilisateur donne un nb negatif en affichant au prealable le nb de nb compris entre 0 et 200 000,le nb de nb pairs et impairs."
je c pa si on va pouvoir m aider, mé merci par avance ( je sui en deug sv et c ma 1er anné de cours d info dc je sui pa encore tre douée :p)
A voir également:

9 réponses

batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
15 juin 2003 à 20:30

#include <stdio.h>

#define BUFSIZE 10
#define LIMIT 200000

int main(void)
{
int n=0;
unsigned int impair=0;
unsigned int pair=0;

char buf[BUFSIZE+1];
while(n>=0)
{
fprintf(stdout, "Saisissez votre nombre : ");
//attention finesse pour un débutant :
fgets(buf, BUFSIZE, stdin);
if(sscanf(buf, "%d", &n)!=1)
{
fprintf(stderr, "Erreur de formatage du nombre saisi !\n");
fprintf(stderr, "Vous devez saisir un nombre inférieur à 0 si vous souhaitez quitter!\n");
continue;
}
if(n<0)
{
break;
}

if(n>LIMIT)
{
continue;
}

if(n%2==0)
{
++pair;
}
else
{
++impair;
}
}

//affichage des résultats :
fprintf(stdout, "Il y a eu %d nombre(s) impair(s) et %d nombre(s) pair(s) saisis\n", impair, pair);

return 0;
}


@++

Poster, poster encore et toujours :-)
0
je te remercie batmat,mais les programmes que j ai appris a faire il ressemble pas a ca :s
ya plein de truc que tu as noté que je connais pa!deja nous on met pa "void" on commence toujours par" int main(){
moi les seuls "mots" que je connais et qui doivent surement intervenir dans le programme, c'est : printf, scanf, if, else, while
moi tout ce que tu as mis comme"unsigned""buf,bufsize""stdout"...etc, bref presque tt ca,j'ai jamais vu!
jte remercie bcp en tt cas!
biz
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
15 juin 2003 à 21:34
Va pas te plaindre en plus !
Si tu sais pas ce que signifie unsigned, soit ton prof est nul, soit tu as commencé hier...

int main(void) = int main(), la différence c'est que c'est plus rigide que de rien mettre (c plus propre koi)...

BUFSIZE est déclaré en define, c'est juste un moyen pour pas écrire plusieurs fois la meme chose comme un idiot => s'il y a une modif à faire, tu ne la fais qu'une seule fois.

fgets permet de "blinder" la saisie : scanf il faut oublier, c le meilleur moyen de faire planter ton programme s'il est destiné à qqn d'autre que toi...

Ce qui, je suppose, sera le cas dans l'avenir :-) Alors autant prendre de bonne habitude tout de suite.

Si t'aime pas, tu peux enlever la déclaration du tableau, à la place du fgets tu mets scanf("%d",&n)

tu vires le if qui suit avec le sscanf, tu vires le #define BUFSIZE en haut et tu seras contente.

Ah oui :-) Enleve aussi fprintf(stdout => mets printf( à la place...

Pour finir, sache que si on se limite à des phrases comme bref presque tt ca,j'ai jamais vu!, je crois que tu n'iras pas loin ;-p

Jamais ton prof ne t'engueulera si tu utilises autre chose (mieux, qui plus est) que ce qu'il vous a appris, du moment que tu en as compris le fonctionnement.

@++

Poster, poster encore et toujours :-)
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
15 juin 2003 à 21:35
Ah oui, aussi pour finir, ne crois SUROUT pas que ce que j'ai fait plus haut est d'un niveau élevé : c'est du niveau 2 à 3 semaines de cours de C (et encore chui large :-) ) en première année de DUT
@++

Poster, poster encore et toujours :-)
0
alors, je n est jamais di que je n etais pa contente, je t ai meme remercié 2 fois!j ai juste dit que ce n etait pa ce que j avais appris!et le prof attend quelque chose qu on a vu avec lui et pa un truc qu on a jamais vu!
je suis en 1er année de deug SV et non g pas vu, void et tt le reste !alors critique pas mes mot" bref presque tt ca, g jamais vu" je vais pas te dire ke je connais si c pa la cas! et dire qu on connais si on ne le sais pa je crois pa que ca fasse avancé davantage au contraire!le "bref tt ca" c'etait pour pa tout citer!c tout!
donc evite de porter des jugement"tu n iras pa loin come ca" surtout ke tu te base sur un seul msg pour dire ca!
bon et bien o lieu de te remercié d avoir essayer de m aider j aurai peut etre du rien dire!
merci quand meme!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
15 juin 2003 à 23:13
Je ne suis pas d'accord avec le raisonnement "on l'a pas vu avec le prof, donc on l'utilise pas"c'est tout...

Dans tous les domaines, on doit apprendre par soi-même, et là c'est un cas très simple : une gde partie du code que j'ai donné est "hyper simple", une petite partie est seulement "simple", pour cette partie tu cherches un peu de doc pour la comprendre et aucun prof au monde n'osera te reprocher d'avoir cherché à comprendre un peu plus que son cours... :-) Au contraire, ça montrera que tu t'y intéresse ;-p

@++

Poster, poster encore et toujours :-)
0
je comprend ce ke tu ve dire, mais le prof ve un prgramme a partir de ce qu on a appris avec lui!
c'est comme les controle de vocabulaire que je fais en anglais!on peut traduire par plusieur mot, mais le prof veut le mot kon a appri avec lui! donc si c est pa celuikil atten, c soi 0 soi 1/2 point.
sinon,j ai une copine ki a faite ce pg :
int main( ){

int n, p, i, t, z;

z=0;

n=1 ;

p=0 ;

i=0 ;

t=0 ;

while (n>0){

printf (" entrez un chiffre compris entre 0 et 200000: ") ;

scanf ( " %d",&n) ;

if (n>=0 && n<=200000){

t= t+1;

z=n%2;

if (z==0){

p=p+1;

}

else{

i=i+1;

}

}

}

printf ("t= %d\n , p= %d\n, i= %d", t, p, i);

}

je c pa du tt si c bon, mais c'est a ca ke ca ressemble avec le prof!
voila, bonne soirée a toi
0
Boss3 > Evanes
18 sept. 2004 à 20:13
tu fait ça en quel classe
0
Salut.

A part la condtion de continuation du while qui doit être >=0, ça a l'air de correspondre à ton énnoncé. Par contre ça manque un peu de commentaires.

Bonne continuation.
0
Petit oubli
Du coup tu peux initialiser n à 0.
0
Onde2Choc Messages postés 299 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 24 février 2006 4
19 sept. 2004 à 09:21
Le code de ta copine manque d'élégance ! Bon c'est vrai qu'il est difficile d'être élégant avec des instructions basiques, mais voila ce que j'aurais écrit :

#include <stdio.h>

int main()
{
int controle = 1, entree, pairs = 0, impairs = 0, total;

printf("Entrez des nombres de 0 à 200 000, en tapant sur Entree entre chacun. Tapez un nombre négatif pour quitter.");

while(controle)
{
scanf(" %d", entree);                              

if (entree < 0)                     
    controle = 0;                  

if (entree % 2 == 0 && entree <= 200000)         
    pairs++;                                        
else
    impairs++;                      /* si entree % 2 = 0, alors entree est
                                                      pair. Sinon il est impair. On
}                                                    incrémente le bon décompte.*/
total = pairs + impairs;
printf("Vous avez entré %d nombres en tout. Parmi eux, %d étaient pairs, et %d étaient impairs.", total, pairs, impairs);

return 0;
}


NOTE : int sera peut être trop petit pour supporter un nombre tel que 200000. Il faudra alors utiliser un long. "++" à la fin d'une variable signifie"variable += 1" ou "variable = variable +1". Quant à l'expression utilisée par le while, voila sa signification : lorsque While() calcule son expression (sa condition pour continuer), il attribue au résultat ou bien 1 (pour "vrai") ou bien 0 (pour "faux"). Ecrire While(1) signifie While(toujours) et écrire While(0) signifie While(jamais). Donc lorsque controle vaut 1, While continue, mais quand controle prend la valeur 0 (après l'entrée d'un nombre négatif), le While s'arrête. On fait alors le bilan dans le printf().

De plus, c'est quand même mieux d'employer des noms de variable en rapport avec l'utilisation de la variable, non ?

Tu nous dira quel code tu auras rendu à ton prof et quelle note t'auras eue, OK ?

BOOM !
Laissez se propager l'onde de choc...
0
Onde2Choc Messages postés 299 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 24 février 2006 4
19 sept. 2004 à 09:28
Je voudrais ajouter, essaye toujours d'écrire des codes conviviaux, par exemple en faisant des phrases plus agréables pour l'utilisateur. "Entrez des nombres de 0 à 200 000, en tapant sur Entree entre chacun. Tapez un nombre négatif pour quitter." est plus agrébale à lire que " entrez un chiffre compris entre 0 et 200000 : ". Et
printf("Vous avez entré %d nombres en tout. Parmi eux, %d étaient pairs, et %d étaient impairs.", total, pairs, impairs);
vaudra toujours plus de points (et sera toujours plus agréable) que
printf ("t= %d\n , p= %d\n, i= %d", t, p, i); 
franchement, sans le code avant, personne ne pourrais dire à quoi sert cette instruction ! Aucune phrase ni explication, les noms de variables opaques...


BOOM !
Laissez se propager l'onde de choc...
0
Salut, je m'appelle Lionel, j'ai 13 ans, j'adore l'informatique, mais il faudrait m'apprendre quelques petits "trucs & astuces"... Je dispose d'un amd barton box 2800+ et une carte mère asus a7n8x-e deluxe (je crois qu'il n'y a pas besoin d'en dire plus) ...
Donc est ce que l'un d'entre vous serait près à "former" un petit informatitien? En fait, je suis assez bon en informatique et j'ai vraiment envie d'apprendre... Mon but serait surement d'être dans la programmation, mais toute chose a un début, donc il me faudrait les bases donc eh bien merci de me venir en aide ;)
Lionel aka LEE

Ps: je ne suis p-e pas vraiment dans le bon forum, je m'en excuse ...
Ps²: mon msn: minilnl@hotmail.com
0
BONJOUR


Je veux faire une programmation c par port paralele pour un chenillard je suis debutant et je n'y arrive pas quelqu'un peut il m'aider
Je vous remercie paravance
0