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
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
A voir également:
- Programmer en c
- Programmer sms - Guide
- Programmer mail gmail - Guide
- Programmer en basic sous windows 10 - Télécharger - Édition & Programmation
- Programmer un mail outlook - Guide
- Mettre en veille un programme - Guide
32 réponses
Sisiniya
Messages postés
142
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
24 mars 2010
19
26 sept. 2008 à 17:53
26 sept. 2008 à 17:53
Explixcation de cette Boucle :
Dans cette ligne l'utilisateur saisit la totalite de sa phrase . d'accord ?!
printf("ENTRER UNE PHRASE:\n");
Lors du 1er passage dans cette boucle , getchar ne prend en compte que le 1er caractère et il le recupere par getchar , et ceci se répéte lors des autres passages . Ici j'ai mis la condition (c=getchar())!='\n' c'est à dire je m'arrêtte de compter lorsque le caractère pris par getchar est un << \n >> ( Autrement dit , lorsque l'utilisateur tape un retour à la ligne ) .
Et pour ne pas oublier , getchar() est la fonction qui lit un seul caractère . ce caractère là , est récupéré dans notre exemple par la variable c .
while((c=getchar())!='\n') /* lors du 1er passage, getchar ne prend en compte que le 1er caractere */
{ /* les autres sont ranges dans le tampon */
if(c=='e')compt_e++; /* et recuperes par getchar lors des autres passages */
if(c==' ')compt_espace++;
}
Sisiniya .
Dans cette ligne l'utilisateur saisit la totalite de sa phrase . d'accord ?!
printf("ENTRER UNE PHRASE:\n");
Lors du 1er passage dans cette boucle , getchar ne prend en compte que le 1er caractère et il le recupere par getchar , et ceci se répéte lors des autres passages . Ici j'ai mis la condition (c=getchar())!='\n' c'est à dire je m'arrêtte de compter lorsque le caractère pris par getchar est un << \n >> ( Autrement dit , lorsque l'utilisateur tape un retour à la ligne ) .
Et pour ne pas oublier , getchar() est la fonction qui lit un seul caractère . ce caractère là , est récupéré dans notre exemple par la variable c .
while((c=getchar())!='\n') /* lors du 1er passage, getchar ne prend en compte que le 1er caractere */
{ /* les autres sont ranges dans le tampon */
if(c=='e')compt_e++; /* et recuperes par getchar lors des autres passages */
if(c==' ')compt_espace++;
}
Sisiniya .
Sisiniya
Messages postés
142
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
24 mars 2010
19
26 sept. 2008 à 18:36
26 sept. 2008 à 18:36
J'espère que vous avez arrivé à comprendre .
Bonne Chance .
Sisiniya .
Bonne Chance .
Sisiniya .
Avec les iexplications que vous m'avez donné et si je debrouille bien j'espers que je comprendriai.Merci encore
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 à 18:42
26 sept. 2008 à 18:42
traduit autrement, regardes mon poste 26
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sisiniya
Messages postés
142
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
24 mars 2010
19
26 sept. 2008 à 19:16
26 sept. 2008 à 19:16
Le Membre oupsman vous a expliquez la boucle while de mon programme , et vous demande d'aller le consulter .
voire la fin de cette page , et vous trouverez son message :
http://www.commentcamarche.net/forum/affich 8546746 programmer en c#0
Sisiniya .
voire la fin de cette page , et vous trouverez son message :
http://www.commentcamarche.net/forum/affich 8546746 programmer en c#0
Sisiniya .
Bonjour
pouvez vous me ciorige ce programme car si le 4eme nombre est max il l'affiche sinon si le 2eme ou 1eme ou 3eme nombre est le max il ne l'affiche pas le voici:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int nombre1,nombre2,nombre3,nombre4;
printf("Entrez peremier nombre:\n", nombre1);
scanf("%d", &nombre1);
printf("Entrez deuxieme nombre:\n", nombre2);
scanf("%d", &nombre2);
printf("Entrez troisieme nombre:\n", nombre3);
scanf("%d", &nombre3);
printf("Entrez quatrieme nombre:\n", nombre4);
scanf("%d", &nombre4);
if(nombre1 < nombre2 && nombre2 < nombre3 && nombre3 < nombre4)
{
printf("Le maximum de ces nombres est:%d", nombre4);
}
if(nombre2 <nombre3 && nombre3<nombre4 && nombre4<nombre1){
printf("Le maximum de ces nombres est:%d", nombre1);
}
if(nombre3 <nombre4 && nombre4<nombre1 && nombre1<nombre2){
printf("Le maximum de ces nombres est:%d", nombre2);
}
if(nombre4 <nombre1 && nombre1<nombre2 && nombre2<nombre3){
printf("Le maximum de ces nombres est:%d", nombre3);
}
system("PAUSE");
}
.Merci de me corriger
pouvez vous me ciorige ce programme car si le 4eme nombre est max il l'affiche sinon si le 2eme ou 1eme ou 3eme nombre est le max il ne l'affiche pas le voici:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int nombre1,nombre2,nombre3,nombre4;
printf("Entrez peremier nombre:\n", nombre1);
scanf("%d", &nombre1);
printf("Entrez deuxieme nombre:\n", nombre2);
scanf("%d", &nombre2);
printf("Entrez troisieme nombre:\n", nombre3);
scanf("%d", &nombre3);
printf("Entrez quatrieme nombre:\n", nombre4);
scanf("%d", &nombre4);
if(nombre1 < nombre2 && nombre2 < nombre3 && nombre3 < nombre4)
{
printf("Le maximum de ces nombres est:%d", nombre4);
}
if(nombre2 <nombre3 && nombre3<nombre4 && nombre4<nombre1){
printf("Le maximum de ces nombres est:%d", nombre1);
}
if(nombre3 <nombre4 && nombre4<nombre1 && nombre1<nombre2){
printf("Le maximum de ces nombres est:%d", nombre2);
}
if(nombre4 <nombre1 && nombre1<nombre2 && nombre2<nombre3){
printf("Le maximum de ces nombres est:%d", nombre3);
}
system("PAUSE");
}
.Merci de me corriger
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 à 20:51
26 sept. 2008 à 20:51
en terme plus simple, le but de ton programme c'est d'afficher le max des 4 nombres n'est-ce pas ?
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 à 21:15
26 sept. 2008 à 21:15
Si c'est pour afficher le maximum des 4 nombres, voici un code plus lisible : mais ATTENTION , ici on suppose que les quatres nombres sont strictements différents, càd qu'il n'y
pas de doublons !!!
#include<stdio.h>
/***une fonction au dessus de ton main*/
int Maximum(int a, int b){
if(a > b) return a;
return b;
}
/**************************************/
/**************************************/
/** fonction main ********************/
int main(){
int nombre1,nombre2,nombre3,nombre4;
int max;
printf("Entrez premier nombre:\n");
scanf(" %d", &nombre1);
printf("Entrez deuxieme nombre:\n");
scanf(" %d", &nombre2);
printf("Entrez troisieme nombre:\n");
scanf(" %d", &nombre3);
printf("Entrez quatrieme nombre:\n");
scanf(" %d", &nombre4);
max = nombre1;
max = Maximum(nombre2, max);
max = Maximum(nombre3, max);
max = Maximum(nombre4, max);
printf("\nLe maximun de %d, %d, %d, et %d est : %d\n", nombre1, nombre2, nombre3, nombre4, max);
system("PAUSE");
return 0;
}
voilà, j'espère que ça répond à ta question.
pas de doublons !!!
#include<stdio.h>
/***une fonction au dessus de ton main*/
int Maximum(int a, int b){
if(a > b) return a;
return b;
}
/**************************************/
/**************************************/
/** fonction main ********************/
int main(){
int nombre1,nombre2,nombre3,nombre4;
int max;
printf("Entrez premier nombre:\n");
scanf(" %d", &nombre1);
printf("Entrez deuxieme nombre:\n");
scanf(" %d", &nombre2);
printf("Entrez troisieme nombre:\n");
scanf(" %d", &nombre3);
printf("Entrez quatrieme nombre:\n");
scanf(" %d", &nombre4);
max = nombre1;
max = Maximum(nombre2, max);
max = Maximum(nombre3, max);
max = Maximum(nombre4, max);
printf("\nLe maximun de %d, %d, %d, et %d est : %d\n", nombre1, nombre2, nombre3, nombre4, max);
system("PAUSE");
return 0;
}
voilà, j'espère que ça répond à ta question.
Sisiniya
Messages postés
142
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
24 mars 2010
19
29 sept. 2008 à 21:52
29 sept. 2008 à 21:52
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 .
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 .
Bonjour,
pouvez vous me corrigez ce programme qui n'affiche pas 'ce caracter ' est minuscule l'orsque je tape un minuscule car dans ce cas il m'affiche la derniere boucle c'est à dire le else
#include<stdio.h>
#include<stdlib.h>
int main()
{
char uncaractere;
printf("entrer un caractere:\n", uncaractere);
scanf("%c", &uncaractere);
if(uncaractere <'A' && uncaractere > 'Z')
printf("ce caractere est une lettre minuscule\n");
else if(uncaractere>='A' && uncaractere<='Z')
printf("ce caractere est une lettre majuscule\n");
else if('0'<=uncaractere && uncaractere <='9')
printf("ce caractere est un chiffre\n");
else
printf("ce caractere n'est ni chiffre,ni lettre\n");
system("PAUSE");
return 0;
}
pouvez vous me corrigez ce programme qui n'affiche pas 'ce caracter ' est minuscule l'orsque je tape un minuscule car dans ce cas il m'affiche la derniere boucle c'est à dire le else
#include<stdio.h>
#include<stdlib.h>
int main()
{
char uncaractere;
printf("entrer un caractere:\n", uncaractere);
scanf("%c", &uncaractere);
if(uncaractere <'A' && uncaractere > 'Z')
printf("ce caractere est une lettre minuscule\n");
else if(uncaractere>='A' && uncaractere<='Z')
printf("ce caractere est une lettre majuscule\n");
else if('0'<=uncaractere && uncaractere <='9')
printf("ce caractere est un chiffre\n");
else
printf("ce caractere n'est ni chiffre,ni lettre\n");
system("PAUSE");
return 0;
}
oupsman
Messages postés
316
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
22 octobre 2008
10
1 oct. 2008 à 09:44
1 oct. 2008 à 09:44
salut, pas besoin de mettre des else. Des if successifs suffisent,voici une version que je propose :
int main()
{
char uncaractere;
printf("entrer un caractere:\n", uncaractere);
scanf(" %c", &uncaractere);/*mettre un espace avant le %c*/
if(uncaractere >='a' && uncaractere <= 'z')
{
printf("ce caractere est une lettre minuscule\n");
return 0;
}
if(uncaractere>='A' && uncaractere<='Z')
{
printf("ce caractere est une lettre majuscule\n");
return 0;
}
if(uncaractere>='0' && uncaractere <='9')
{
printf("ce caractere est un chiffre\n");
return 0;
}
printf("ce caractere n'est ni chiffre,ni lettre\n");
system("PAUSE");
return 0;
}
ce programme est plus long que le tiens mais il est plus clair à comprendre dès que tu y jettes un coup d'oeil
int main()
{
char uncaractere;
printf("entrer un caractere:\n", uncaractere);
scanf(" %c", &uncaractere);/*mettre un espace avant le %c*/
if(uncaractere >='a' && uncaractere <= 'z')
{
printf("ce caractere est une lettre minuscule\n");
return 0;
}
if(uncaractere>='A' && uncaractere<='Z')
{
printf("ce caractere est une lettre majuscule\n");
return 0;
}
if(uncaractere>='0' && uncaractere <='9')
{
printf("ce caractere est un chiffre\n");
return 0;
}
printf("ce caractere n'est ni chiffre,ni lettre\n");
system("PAUSE");
return 0;
}
ce programme est plus long que le tiens mais il est plus clair à comprendre dès que tu y jettes un coup d'oeil
Sisiniya
Messages postés
142
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
24 mars 2010
19
1 oct. 2008 à 16:39
1 oct. 2008 à 16:39
On peut aussi tester la casse d'un caractère en vérifiant son Code d'ASCII en Décimal . ( C'est pour aproffondir un petit peu )
Comment ? :
La mémoire de l'ordinateur conserve toutes les données sous forme numérique. Il n'existe pas de méthode pour stocker directement les caractères En effet , Chaque caractère (soit chiffre,lettre ou caractère spéciaux ) possède son équivalent en code numérique (C'est le code ASCII) , il y a code asscii en Décimal , en Héxadécimal et en d'autre base .
Bref : Code ASCII En Décimal
les majuscules sont représentés par Les codes 65 à 90 :
* 65 correspond à A
* 66 correspond à B
................ etc
* 89 correspond à Y
jusqu' à la dernière lettre en Majuscule
* 90 correspond à Z
les minuscules spnt représentés par Les codes 97 à 122 :
* 97 correspond à a
................ etc
* 122 correspond à z
Les chiffres sont représentés par les codes 48 à 57 :
* 48 correspond à 0
......................etc
* 57 correspond à 9
En gardant la même structure de " oupsman " en modifiant juste les conditions à l'intérieures des If . ( D'accord !!)
------------------- Tester la casse d'un caractère via son Code ASCII en Décimal ----------------
int main()
{
char uncaractere;
printf("entrer un caractere:\n", uncaractere);
scanf("%c", &uncaractere);
if(uncaractere >=97 && uncaractere <= 122)
{
printf("ce caractere est une lettre minuscule\n");
return 0;
}
if(uncaractere>=65 && uncaractere<=90)
{
printf("ce caractere est une lettre majuscule\n");
return 0;
}
if(uncaractere>= 48 && uncaractere <= 57)
{
printf("ce caractere est un chiffre\n");
return 0;
}
printf("ce caractere n'est ni chiffre,ni lettre\n");
system("PAUSE");
return 0;
}
**********************************************************************
Question à Oupsman : Pourquoi vous avez dit ?
printf("entrer un caractere:\n", uncaractere);
scanf(" %c", &uncaractere);/*mettre un espace avant le %c*/
A mon avis , je vois que ça ne reflétte pas si on la met ou non ! il se peut que vous avez une cause ! Laquelle SVP ?
Sisiniya .
Comment ? :
La mémoire de l'ordinateur conserve toutes les données sous forme numérique. Il n'existe pas de méthode pour stocker directement les caractères En effet , Chaque caractère (soit chiffre,lettre ou caractère spéciaux ) possède son équivalent en code numérique (C'est le code ASCII) , il y a code asscii en Décimal , en Héxadécimal et en d'autre base .
Bref : Code ASCII En Décimal
les majuscules sont représentés par Les codes 65 à 90 :
* 65 correspond à A
* 66 correspond à B
................ etc
* 89 correspond à Y
jusqu' à la dernière lettre en Majuscule
* 90 correspond à Z
les minuscules spnt représentés par Les codes 97 à 122 :
* 97 correspond à a
................ etc
* 122 correspond à z
Les chiffres sont représentés par les codes 48 à 57 :
* 48 correspond à 0
......................etc
* 57 correspond à 9
En gardant la même structure de " oupsman " en modifiant juste les conditions à l'intérieures des If . ( D'accord !!)
------------------- Tester la casse d'un caractère via son Code ASCII en Décimal ----------------
int main()
{
char uncaractere;
printf("entrer un caractere:\n", uncaractere);
scanf("%c", &uncaractere);
if(uncaractere >=97 && uncaractere <= 122)
{
printf("ce caractere est une lettre minuscule\n");
return 0;
}
if(uncaractere>=65 && uncaractere<=90)
{
printf("ce caractere est une lettre majuscule\n");
return 0;
}
if(uncaractere>= 48 && uncaractere <= 57)
{
printf("ce caractere est un chiffre\n");
return 0;
}
printf("ce caractere n'est ni chiffre,ni lettre\n");
system("PAUSE");
return 0;
}
**********************************************************************
Question à Oupsman : Pourquoi vous avez dit ?
printf("entrer un caractere:\n", uncaractere);
scanf(" %c", &uncaractere);/*mettre un espace avant le %c*/
A mon avis , je vois que ça ne reflétte pas si on la met ou non ! il se peut que vous avez une cause ! Laquelle SVP ?
Sisiniya .
oupsman
Messages postés
316
Date d'inscription
mercredi 26 décembre 2007
Statut
Membre
Dernière intervention
22 octobre 2008
10
1 oct. 2008 à 18:05
1 oct. 2008 à 18:05
dans " %d" j'ai mis un espace parce que je me rappelle qu'il y a un bout de temps, ça m'a fait un bug lors de l'execution de mon programme. Un prof me l'a expliqué mais je ne m'en souviens plus de ce qu'il a dit, mais depuis ce jour là c'est devenu automatique pour moi de mettre l'espace ...
désolé si je n'ai pas l'explication ;-) à +
désolé si je n'ai pas l'explication ;-) à +
Sisiniya
Messages postés
142
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
24 mars 2010
19
1 oct. 2008 à 19:01
1 oct. 2008 à 19:01
En fait , un jour mon programme ne s'est éxécuté pas bien à cause d'un espace dans " %d" .C'est pourcela je vous ai demandé de m'expliquer . C'est pas grave , mais une autre fois , il faut faire tèèès attention à Vos Profs ! :-)
Sisiniya .
Sisiniya .
Bonjour pouvez vous me corriger cette fonction
void sommematrice(int tab1[][],int tab2[][],int tab3[][])
{
int i, j;
for (i=0 ; i<dim ; i++)
{
for (j=0 ; j<dim ; j++)
{
tab1[i][j]=tab2[i][j]+tab3[i][j];
}
}
printf("La somme est:%d",tab1[i][j]);
}
l'orsque je compile le compilateur m'affiche cet errur
"invalide use of array with unspecfied bounds"
mais j'ai fait l'appeil dans le main().Merci de m'aider
void sommematrice(int tab1[][],int tab2[][],int tab3[][])
{
int i, j;
for (i=0 ; i<dim ; i++)
{
for (j=0 ; j<dim ; j++)
{
tab1[i][j]=tab2[i][j]+tab3[i][j];
}
}
printf("La somme est:%d",tab1[i][j]);
}
l'orsque je compile le compilateur m'affiche cet errur
"invalide use of array with unspecfied bounds"
mais j'ai fait l'appeil dans le main().Merci de m'aider
Sisiniya
Messages postés
142
Date d'inscription
jeudi 1 novembre 2007
Statut
Membre
Dernière intervention
24 mars 2010
19
25 janv. 2009 à 23:15
25 janv. 2009 à 23:15
Salam sisimohamed,
Problème :
Je crois que ce message "invalide use of array with unspecfied bounds" est dû à la non spécification de la taille de tes 3 matrices ( qui sont sous forme de tableau) . Cette non spécification est traduite par l'utilisation de la variable Dim dans vos boucles For : for (i=0 ; i<dim ; i++)
Solution :
Soit tu remplace dim par une valeur qui exprime la taille de vos tableaux qui est bien évidemment la même pour chaque tableau.
Soit tu laisse le corps de votre fonction comme il est , et vous ajoutez un paramétre dans la fonction appellé dim , et lors de l'appel dans main , vous précisez la valeur de la dimension, comme ça vous avez désigné la limite de la dimension de vos Matrices :
Exemple
void sommematrice(int tab1[][],int tab2[][],int tab3[][],int dim)
{
//laissez vos même instructions
}
et dans main() voilà le type d'appel en supposant que dim = 4 :
sommematrice(tab1[][],tab2[][],tab3[][],4) ;
Sisiniya.
Problème :
Je crois que ce message "invalide use of array with unspecfied bounds" est dû à la non spécification de la taille de tes 3 matrices ( qui sont sous forme de tableau) . Cette non spécification est traduite par l'utilisation de la variable Dim dans vos boucles For : for (i=0 ; i<dim ; i++)
Solution :
Soit tu remplace dim par une valeur qui exprime la taille de vos tableaux qui est bien évidemment la même pour chaque tableau.
Soit tu laisse le corps de votre fonction comme il est , et vous ajoutez un paramétre dans la fonction appellé dim , et lors de l'appel dans main , vous précisez la valeur de la dimension, comme ça vous avez désigné la limite de la dimension de vos Matrices :
Exemple
void sommematrice(int tab1[][],int tab2[][],int tab3[][],int dim)
{
//laissez vos même instructions
}
et dans main() voilà le type d'appel en supposant que dim = 4 :
sommematrice(tab1[][],tab2[][],tab3[][],4) ;
Sisiniya.