Programmer en c

Fermé
sisimouhamed - 22 sept. 2008 à 20:21
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 - 25 janv. 2009 à 23:15
Bonjour,
j'ai essayé avec un petit programme mais ça na pas marché le voici:
#include<stdio.h>
int main (){
int a,b,s;
char reponse;
do{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d", s);
scanf("%d", &s);
printf("continuez(o\n)");
scanf("%c", &reponse);
}
while (reponse=='o');
}
A voir également:

32 réponses

the_hawk_1 Messages postés 4 Date d'inscription vendredi 29 août 2008 Statut Membre Dernière intervention 22 septembre 2008 1
22 sept. 2008 à 20:25
Bonjour,

quel est le résultat quand tu roule ton ou compile ton code?

Vite comme ça, en partant, tu déclare ton main comme retournant un INT, alors que tu ne retourne rien (VOID).

Je tenterais le void main (void) {
en premier...
0
sisimouhamed
25 sept. 2008 à 17:34
Bonjour,
le void main (void) est definie dans quelle bibliothéque? car a chaque fois que je le met un message d'erreur s'affiche.Mreci de m'expliquer
0
sisimouhamed
22 sept. 2008 à 20:40
j'ai remplacé int main par void main (void) et le voici:
#include<stdio.h>
void main (void){
int a,b,s;
char reponse;
do{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d", s);
scanf("%d", &s);
printf("continuez(o\n)");
scanf("%c", &reponse);
}
while (reponse=='o');
}
dans ce cas il m'affiche cet erreur:'main'must return 'int'
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
23 sept. 2008 à 00:47
Voilà le programme corrigé , je l'ai testé chez - moi avant de vous le communique :

-------------------------------------------------*****************************---------------------------------------------
================================================================

#include<stdio.h>
#include<conio.h>
#include<string.h>

int main ()
{
int a,b,s;
char reponse ;

do
{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d \n", s);
do
{
printf("continuez o ou n \n");
reponse = getchar();
scanf("%c", &reponse);
}while(reponse != 'o' && reponse != 'n');

}while (reponse == 'o');

printf("A tres bient tot ... ! ");

getch();
return 0 ;
}

-------------------------------------------------*****************************---------------------------------------------
================================================================

J'utlilise Comme compilateur dev-C++ .


Sisiniya .--
 Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul. 
                                      --->> auteur : Jules Renard <<---
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
23 sept. 2008 à 01:07
1ér erreur : vous n'avez pas besoin d'un scanf dans ces deux lignes puisque vous avez pas demandez à l'utilisateur de saisir une donnée :
s=a+b;
printf("le resultat est:%d", s);
scanf("%d", &s);


Sisiniya .

0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
22 sept. 2008 à 20:49
je vois pas a qoi te sert le
 scanf("%d", &s);

puisque tu calcules s
essaye ça
#include<stdio.h>
void main (void){
int a,b,s;
char reponse;
do{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d", s);
fgetc(stdin);
printf("continuez(o\n)");
scanf("%c", &reponse);
}
while (reponse=='o');
}
0
Un pti retrun EXIT_SUCCESS; ?
0

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

Posez votre question
sisimouhamed
23 sept. 2008 à 18:17
Bonjour,
si je ne met pas le scanf dans ce cas je n'arrive pas à voire les solutions l'orsque je compile.Merci
0
rufa Messages postés 160 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 14 juillet 2014 4
23 sept. 2008 à 18:33
salut voila ce code marche en dev c++.
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int a,b,s;
char reponse;
do{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d", s);
printf("\n");
printf("continuez(o/n)");
scanf("%c",&reponse);
printf("\n");
}
while (reponse=='o');
/*faire un traitement*/
system("pause");
}
0
sisimouhamed
23 sept. 2008 à 18:35
Bonjour Sisinya,
votre programme marche comme je preferé mais si vous m'exxpliquez pourquoi les bibliothéque <conio.h> et <string.h> aussi si je comprend bien cet boucle
{
printf("continuez o ou n \n");
reponse = getchar();
scanf("%c", &reponse);
}while(reponse != 'o' && reponse != 'n');
se trouve dans ce boucle
do
{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d \n", s);
do
{
printf("continuez o ou n \n");
reponse = getchar();
scanf("%c", &reponse);
}while(reponse != 'o' && reponse != 'n');

}while (reponse == 'o');
en plus pouvez vous bien m'expliquez pourquoi reponse = getchar(); et scanf("%c", &reponse); .Merci de m'expliquez car actuellement vous etes la seul personne qui ma donner une reponse exacte à ma question et s'il vous plait continuons la discussion a+
0
sisimouhamed
23 sept. 2008 à 18:56
Bonjour si je ne met pas du scanf je ne voit pas les solutions en plus

votre programme marche comme je preferé mais si vous m'exxpliquez bien pourquoi les bibliothéque <conio.h> et <string.h> aussi si je comprend bien cet boucle
{
printf("continuez o ou n \n");
reponse = getchar();
scanf("%c", &reponse);
}

se trouve dans ce boucle
do
{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d \n", s);
do
{
printf("continuez o ou n \n");
reponse = getchar();
scanf("%c", &reponse);
}while(reponse != 'o' && reponse != 'n');

}while (reponse == 'o');
en plus pouvez vous bien m'expliquez pourquoi reponse = getchar(); et scanf("%c", &reponse); .Merci de m'expliquez car actuellement vous etes la seul personne qui ma donner une reponse exacte à ma question et s'il vous plait continuons la discussion a+
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
24 sept. 2008 à 14:00
Question1 : votre programme marche comme je preferé mais si vous m'exxpliquez bien pourquoi les bibliothéque <conio.h> et <string.h>

**a** La bibliothèque String est obligatoire pour utliser un Type char , c-à-d à chaque fois vous voulez utilisre une variable contenant soit un caractère soit une chaîne de caractère il faut déclarer sa bibliothèque qui est #include<stdio.h>.
On dit que que le type char est un type prè-défini .

**b** La fonction " getch() " écrite à la fin de progrmme est définie dans sa bibliothèque <conio.h> . Essayez d'enlever getch() et #include<conio.h> si ton progrmme s'éxécute bien et il vous affiche à la fin le message " A tres bien tot " si vous avez répondu avec n , alors vous pouvez l'enlever . Parceque chez moi , si je les enlève , la fenêtre d'éxécution se disparaître avant de m'afficher ce message . Bref, pour l'attente d'appuie d'une touche, vous utilisez la fonction getch() .


Question2 : reponse = getchar(c) ; La fonction de getchar() permet de saisir un seul caractère sur le flux d'entrée standard.


Question 3 : pour la boucle intérieure :
do
{
printf("continuez o ou n \n");
reponse = getchar();
scanf("%c", &reponse);
}while(reponse != 'o' && reponse != 'n');

Permet de répéter cette phrase << continuez o ou n \n >> tant que l'utilisateur saisie un caractère différent de "n" et "o" , d'où la condition ---> while(reponse != 'o' && reponse != 'n'); <--- . Une fois l'utilisateur saisie "o" , le programme sera répéter d'où la condition ---> while (reponse == 'o'); <--- . Et si la saisie était "n" on sort de la boucle mère do --- while , et on affiche << A tres bien tot >> .


J'espère que j'ai répondu à Votre Question :-) .


Sisiniya .
0
bonjour

essayes comme ca : ca marche.

#include <stdio.h>
#include <stdlib.h>


int main ()
{
int a,b,s;
int un = 1;
int reponse;


do{
printf("a:\n");
scanf("%d", &a);
printf("b:\n");
scanf("%d", &b);
s=a+b;
printf("le resultat est:%d \n", s);
printf("pour continuez taper le chiffre 1 :"); // un
scanf("%d",&reponse);
printf("reponse %d\n",reponse);
}while (reponse == un);
system("PAUSE");

}
0
sisimouhamed
24 sept. 2008 à 18:58
Merci beaucoup votre code marche bien.A +
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
24 sept. 2008 à 20:03
Bonne Chance .

Sisiniya .--
 Au travail, le plus difficile, c'est d'allumer la petite lampe du cerveau. Après, ça brûle tout seul. 
                                      --->> auteur : Jules Renard <<---
0
sisimouhamed
24 sept. 2008 à 20:34
Bonjour sisinya,
pouvez vous me corriger ce programme qui affiche en méme temps tout les resultats et je veut que ça affiche que le resultat de l'operation choisit :
#include<stdio.h>
#include<conio.h>
int main()
{
float a,b,s;
char oper;
do while (oper!='e'){
printf("choisissez un operation(+,-,*,/,e pour arreter)\n");
fflush(stdin);
scanf ("%c", &oper);
printf("entrer premier nommbre:\n", a);
scanf("%f", &a);
printf("entrer deuxieme nommbre:\n", b);
scanf("%f", &b);
if (oper=='+');
s=a+b;
printf("la somme est:%f\n", s);
if (oper=='-');
s=a-b;
printf("la difference est:%f\n", s);
if (oper=='*');
s=a*b;
printf("le resulta est:%f\n", s);
if (oper=='/');
s=a/b;
printf("le resultat est:%f\n", s);
do{
printf("voulez vous continuez(o ou n)\n");
oper = getchar();
scanf("%c", &oper);
}
while (oper!= 'o' && oper != 'n');
}while(oper == 'o');
printf("A bientot");
getch();

return 0;

}

Merci de m'aider je coompte sur vous
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
24 sept. 2008 à 23:33
Il faut prendre l'habitude à ne pas oublier #include<string.h> lors d'une utilisation des variables de Type char !

----------------------------------------------------------////*******////---------------------------------------------------------------------------
========================== Votre Programme ===============================

#include<stdio.h>
#include<string.h>
#include<conio.h>
int main()
{
float a,b,s;
char oper; // le type char est défini dans la bibliothèque #include<string.h>
do // Boucle répéte votre programme tant que vous avez répondu par o
{
do // boucle se répéte tant que vous n' avez pas tapé le bon caractère correspondant l'opération
{
printf("choisissez un operation(+,-,*,/ \n");
fflush(stdin);
scanf ("%c", &oper);
}while(oper != '*' && oper != '-' && oper != '+' && oper != '/');

printf("entrer premier nommbre:\n", a);
scanf("%f", &a);
printf("entrer deuxieme nommbre:\n", b);
scanf("%f", &b);
// ici , on étudie les cas de la variable oper à l'aide des fameux conditions if......else if .....else
if (oper=='+')
{
s=a+b;
printf("la somme est:%f\n", s);
}
else if(oper=='-')
{
s=a-b;
printf("la difference est:%f\n", s);
}
else if (oper=='*')
{
s=a*b;
printf("le resulta est:%f\n", s);
}

else
{
s=a/b;
printf("le resultat est:%0.2f\n", s);
}

do// boucle déjà vu dans votre ancien programme
{
printf("voulez vous continuez(o ou n)\n");
oper = getchar();
scanf("%c", &oper);
}while (oper!= 'o' && oper != 'n' );

}while(oper != 'n');

printf("A bientot");
getch();
return 0;
}


En fait , je l'ai testé chez - moi avant de le poster .
Souhaitant que j'ai répondu à votre question .

Sisiniya .
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
24 sept. 2008 à 23:44
J'ai oublié de vous dire : Considérons par exemple la somme s = 9 .

Vous remarquez lorsque vous utilisez printf("le resultat est:%f\n", s); cette ligne envoie 9.000000 ( C'est pas jolie )

Alors , pour contôler le nombre de chiffres après la virgule , je vous donne ceux que je connais :

En utilisant %0.f au lieu %f :printf("le resultat est:%0.f\n", s); cette ligne m'envoie 9
En utilisant %0.2f au lieu %f printf("le resultat est:%0.2f\n", s); cette ligne m'envoie 9.00

En général , on met %0.Xf avec X = nbr de chiffre après la virgule .


Sisiniya .

0
sisimouhamed
25 sept. 2008 à 17:20
Bonjour,
votre programme marche bien mais pouvez vous m'expliquez pourquoi le (%0.2f) dans ce cas.
printf("le resultat est:%0.2f\n", s).Merci de m'expliquer
0
sisimouhamed
25 sept. 2008 à 17:25
je m'excuse j'avais pas vue l'autre message mais merci de me l'expliquer j'avais pas vus que tu m'avais deja repondu.Merci
0
sisimouhamed
25 sept. 2008 à 19:53
Bonjour pouvez vous m'indiquez à savoire le code source pour traiter cet exercice:
ecrire un programme qui lit son entrée au clavier et qui calcule le nombre de caractére et le nombre de mots lus.S'il vous plait je veux comprendre le procedure je compte sur vous
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
26 sept. 2008 à 02:09
Bonsoir ,

----------------------------------------------------------////*******////---------------------------------------------
========================== Exemple de Programme ====================

#include<stdio.h>
#include<conio.h>
#include<string.h>


int main()
{
int longueur , L = 0 , i , compt_espace= 0;
char c;

printf("Entrez un mot: \n");
while((c=getchar())!='\n')
{
if(c ==' ')compt_espace++;
else l ++ ;
i++ ;

}

longueur = L + compt_espace ;

printf("Nombre d'espace dans Votre phrase est : %d\n",compt_espace);

printf("Nombre de caracter en excluant l'espace est : %d\n", L);

printf("Nombre de caracter avec espace est : %d\n",longueur);

getch();

return 0 ;

}


----------------------------------------------------------////*******////---------------------------------------------

Remarque :

Il y a une Fonction appellée strlen qui permet de calculer le nombre de caractère d'une chaîne sasisie au clavier . Ce nombre de caractère obtenu par la Fonction strlen contient aussi le nombre d'espace.



Sisiniya .

0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19
26 sept. 2008 à 11:12
Dans la boucle while :
while((c=getchar())!='\n')
{
if(c ==' ')compt_espace++;
else l ++ ; // cette ligne , j'ai écrit l++ (l en miniscule ) au lieu d'écire L++ (L en majuscule)
// c'est une faute de frappe !
i++ ;

}

Alors , chez vous , remplacez dans la ligne de else l++ par L++


Sisiniya .

0
sisimouhamed
26 sept. 2008 à 17:35
Bonjour,
pouvez vous m'expliquez literairement ce boucle:
while((c=getchar())!='\n')
{
if(c ==' ')compt_espace++;
else L ++ ;
i++ ;

}
Merci de m'expliquez
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
26 sept. 2008 à 17:52
explication littérale :

tant qu'on ne rencontre pas le caractère '\n' (fin de ligne), on affecte le caractere dans la variable c.
Si c est un espace, on incrémente de 1 la valeur de compt_espace,
sinon on incrémente de 1 la valeur de L,
on incrémente de 1 la valeur de i

et on retourne au test de la boucle.
0
sisimouhamed > oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008
29 sept. 2008 à 20:28
Bonjour,
pouvez vous m'expliquez pourquoi cette fonction:
int Maximum(int a, int b){
if(a > b) return a;
return b;
}
Aussi pourqoi initialiser max a nombre1.En plus pouvez me dire ce qui ne marchais pas dans mon programme
Merci de m'expliquer
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10 > sisimouhamed
29 sept. 2008 à 21:19
La fonction :

int Maximum(int a, int b){
if(a > b) return a;
return b;
}


permet de recuperer le maximum entre a et b. Si a est le max, alors la fonction reourne la valeur de a, sinon c'est forcément b le max donc on retourne la valeur de b.

Dans le main, max est initialisé à nombre1, mais peu importe, tu peux l'initialiser à nombre2, nombre3 ou nombre4. L'essentiel c'est que tu l'initialise à l'un de ces nombres et qu'ensuite tu le compare à tour de rôle avec les trois autres.

Pour répondre à ta question sur le fait que ton programme ne marchait pas : en fait il marche mais ça ne fait pas ce que tu veux comme résultat. J'explique : tu teste à chaque fois des conditions avec "&&". Dans tes if, le test ne retourne vrai que dans un cas particulier, càd dans le cas où l'on est en présence d'une suite de nombres strictement croissants (exemple 5, 44, 50 et 57, ou encore 1, 23, 46 et 107 ... etc). Or quand la personne saisi un à un les 4 nombres, il peut saisir n'importe quoi dans le désordre. Bref, tes tests dans if ne retournera vrai que dans un cas sur des milliers.

Petit rappel quand tu utilise "&&" dans un test :

int main(void){
int a = 1; /*ou sinon initialise a=0, c'est pareil*/
if(a==0 && a==1){/*si a==0 "et" a==1 alors j'affiche que je suis con*/
printf("\nJe suis con\n");
}
else{/*sinon j'affiche que je ne suis pas con*/
printf("\nje ne suis pas con\n");
}

return 0;
}


Le "et" n'est vrai que si les 2 conditions sont remplies, il suffit qu'il y en a une qui n'est pas remplie, elle retourne faux.
Dans mon petit rappel ci-dessus, il t'affichera toujours "je ne suis pas con" car a ne peut jamais être à la fois égal à 0 et en même temps égal à 1.

J'espère que tu as compris mon explication.
0
Sisiniya Messages postés 142 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 24 mars 2010 19 > sisimouhamed
29 sept. 2008 à 21:53
oupsman vous a bien expilqué , Je vais seulement ajouter une petite explication :

int Maximum(int a, int b){
if(a > b) return a;
return b;
}

cette fonction appellée Maximum , elle prend comme paramétre deux int et elle retourne comme résultat un int .
cette fonction est bien expliquée , mais on va rien à perdre si je vous donne un équivalent pour bien comprendre :

int Maximum(int a, int b)
{
int max ; // max est le resultat que la fonction retourne
if ( a > b )
max = a ; // si a > b alors on affecte a à la variable max

else
max = b ; // si a < b on affecte b à la variable max

return max ; // on retourne max

}

Les deux fonctions ont le même mécanisme et donnent même résultat , sauf que la 1ére est plus courte et la 2ém est un peux détaillé car on a utilisé une variable auxilliaire pour mieux vous expliquer .


Conseil :

C'est vous avez pas encore apprendre les fonctions en C , je vous conseille de les bien maîtriser car elles sont important dans la Programmation , elles vous permet de bien structurer votre Code .



Sisiniya .
0
sisimouhamed
26 sept. 2008 à 17:36
En faite je veux dire l'algorithme de ce programme
0