Exercice a resoudre - langage c

salut

j’ai un exercice a résoudre. avec des # define.
mais borland (mon prog de c) m’indique plein d’erreur que je ne comprend pas

voici l’enoncé suivi de mon prog qui va pas

Ecrivez le programme qui, à partir de la valeur de DPI transmise par l’utilisateur au clavier, affiche le type de résolution de l’imprimante à savoir « Imprimante de basse résolution », « Imprimante de moyenne résolution» ou « Imprimante Haute résolution ».
Les cas d’erreur sont à envisager.

  • Les constantes 200, 500 et 4500 doivent définies sous forme symbolique.
  • L’utilisateur peut introduire plusieurs valeurs de DPI.
    Basez le test d’arrêt sur une variable de type char valant ‘O’ ou ‘o’ si on souhaite arrêter.

#include <conio.h>
#include <stdio.h>
#define A (dpi<=200)
#define B (dpi<=500)
#define C (dpi<=4500)

void main (void){

char dpi;

printf ("veuillez entrer la resolution de votre imprimante: ");
scanf ("%c",&dpi);
fflush(stdin);

if (A||B) {

while ((dpi!=‘O’) || (dpi!=‘o’)) {

switch (dpi)
{
case A: printf("votre imprimante est de basse resolution");
break;

  case B: printf(&quot;votre imprimante est de moyenne resolution&quot;);
           break;

  case C: printf(&quot;votre imprimante est de haute resolution&quot;);
               break;

  default: printf (&quot;erreur11&quot;);

}

printf ("\nveuillez entrer la resolution de votre imprimante:");
scanf ("%c",&dpi);
fflush(stdin);
}
printf ("fin du programme");}

else

printf ("erreur");

getch();}

pouvez vous me dire ou sont mes erreur?
merci

Bonjour,

Je te prierai de mettre le langage informatique dans le titre, tel que requis par la charte du forum programmation - pour une meilleure compréhension les uns des autres.

A lire :
http://www.clubic.com/forum/charte-du-foru…on-t306797.html

Pour éditer:
Suffit de cliquer sur ce bouton, dans ton message : http://www.clubic.com/forum/style_images/persoclubic/editer.gif

(note : ce message est un gros copier coller, ne pas répliquer derrière)

Et pour ton erreur, c’est normal. Révise un peu la syntaxe du switch, et n’oublie pas que les #define ce n’est que du remplacement. Donc remplace A, B, et C par leurs vraies valeurs, et tu trouveras l’erreur.

Sinon c’est int main(void) ou int main(int argc, char*argv[])

Et au passage, dpi contient une valeur t’indiquant si tu veux continuer, pas les dpi de ta machine.

Ca devrait plutôt être : (- : à rechercher puis à remplacer par le +)

- char dpi
+ int dpi
-scanf("%c", &dpi);
+scanf("%d", &dpi);

etc.

j’ai corriger la syntax de switch.
mais le prob c’est que il rentre que dans le default du switch, il ne respect aucune des condition

Et ça donne quoi le nouveau code?

ben j’ai modifier mon 1 e post et j’ai mit le nouveau code dedans enfait.
mais je me suis renseigner. on ma dit qu’il ne fallait aps chipoter avec des switch dans ce cas si

salut
j’ai un exercice a résoudre. avec des # define.
voici l’enoncé suivi de mon prog qui va pas

Ecrivez le programme qui, à partir de la valeur de DPI transmise par l’utilisateur au clavier, affiche le type de résolution de l’imprimante à savoir « Imprimante de basse résolution », « Imprimante de moyenne résolution» ou « Imprimante Haute résolution ».
Les cas d’erreur sont à envisager.

  • Les constantes 200, 500 et 4500 doivent définies sous forme symbolique.
  • L’utilisateur peut introduire plusieurs valeurs de DPI.
    Basez le test d’arrêt sur une variable de type char valant ‘O’ ou ‘o’ si on souhaite arrêter.

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

#define A (dpi<=200)
#define B (dpi<=500)
#define C (dpi<=4500)
#define D (dpi<=0)
void main (void){
int dpi;
char rec;
printf ("veuillez entrer la resolution de votre imprimante: ");
scanf ("%d",&dpi);
fflush(stdin);

do
{ if D {
printf ("erreur 1111");}
else
if A {
printf ("imprimante de basse resolution");}
else
if B {
printf ("imprimante de moyenne resolution resolution");}
else
if C {
printf ("imprimante de haute resolution");}

else
printf ("erreur 12");

printf ("\ncontinuez???");
scanf ("%c",&rec);
fflush(stdin);

printf ("\nveuillez entrer la resolution de votre imprimante:");
scanf ("%d",&dpi);
fflush(stdin); }

while ((rec!=‘O’) || (rec!=‘o’)) ;

printf ("fin du programme");

getch();}

enfet quand je tape O ou o il devrait mettre fi du promgramme mais il ne le fait pas.


do{
//du code
rec = getch() //fonctionqui remplace scanf() , présente dans conio.h
if(rec != '0' && rec != 'o')
{
 printf ("\nveuillez entrer la resolution de votre imprimante:");
 scanf ("%d",&dpi);
 fflush(stdin);
}
while(rec != '0' && rec != 'o');

eh si ca ne va pas mieu on fait quoi.
:confused: lol
je me demandais quel est la différence entre getchar et scanf et puchar et prinft.

merci

ca marche merci, a tout les 2.

Heu.

A mon avis, tu devrais arrêter tout de suite les frais et programmer sans #define pour le moment. Tu as des gros problèmes de syntaxe qui viendront derrière, et aussi de logique.

Ca se corrige certes, mais bref. Essaye au hasard de faire int dpi1 au lieu de int dpi (en corrigeant la variable là où elle est utilisée, sauf dans #define puisque c’est l’exemple).

ben en tout ca smtnt il marche lol

Ce n’est pas parce qu’un programme fonctionne que cela montre que ton code est de qualité donc tout comme Sans-Nom, je t’invite à soit acheter un bouquin, soit à faire le tour des sites qui proposent des cours car ton code est plus que crade.

ok merci du conseil
je sui sun peu dessus de moi parce que je pensais vraiment bien faire :??: :??: :??:
quan dvous dites qu’il est crade c parce que j’ecrit beaucoup de chose pour pas grand chose?? et qu’il y a moyen de faire ca en plus consci??

En fait, ce que l’on te reproche c’est d’apprendre sans avoir de support donc du coup, tu alignes des lignes sans te préocuper du reste comme la qualité du code, le nom des variables, l’indentation, modularisation etc … achete un livre et/ou consulte les sites, tu verras qu’avoir les bons réflexes dès le départ influe grandement sur ta façon de programmer par la suite.

ok
un grand merci de ce conseil précieux,
je vais essayer de l’appliquer , car il est vrai que comme c’est des exercice je les fait sans vrmt tenire compte de l’indentation,
sans mettre des message d’erreur comprehensible d’ailleur j’ai seulement mit erreur 1111 et erreur 12. enfin merci bien du conseil

Ouip :slight_smile: désolé de la façon dont je l’ai dis, je suis pas diplomate :slight_smile: (plutôt barbare niv 17)