Afficher un caractere suivant

Bonjour

a tous zé a toutes :crazy_face: :crazy_face: :crazy_face:

Je realise un programme qui doit afficher le caractere alphabetique suivant .

je saisi « a » il doit afficher b en minuscule et en majuscule.
le probleme avec le mien est qu il affiche le troisieme caractere apres exemple j entre « a » j obtiens « c »


int main ()
{
char  c;
c=c+1;
printf  ("veuillez inserer un caractere :\n",c);
scanf  ("%c,"&c);

if (c>=65 && c<= 121)
{ c=c+1;
printf  ("Le caractere suivant en miniscule est:%c\n",c);

}
else (c>=65  &&  c<=89);
{
printf  ("Le caractere suivant en majuscule est :%c\n",c);
}
return 0;
}




}

Quelqu un peux me dire ce qui vas pas ?

Bonjour

Warning ! Je n’y connais rien en Java ou en C ^^
Comme tu replaces une condition dans ton « else », ça devrait plutôt être un « else if ». et comme ton « if » a déjà traité les cas où c est inclus entre 65 et 121, tu dois pouvoir partir d’un démarrage d’intervalle à 121 pour ta condition suivante (celle du « else if ») [et le « ; » après la condition a l’air de trop], mais du coup comme tu t’arrêtes à 89 … ça coince puisque déjà inclus dans l’intervalle d’appartenance testé par la 1ère condition

bref, « else » devrait être « else if », le « ; » est en trop dans cette ligne et tu retestes sur un intervalle que ton « if » a déjà isolé

Applique ton programme à la main pour voir ce qui ne va pas.
Ensuite, voici les erreurs que j’obtiens dans ideone (j’ai ajouté un #include avant) :

* Compilation error [#stdin](https://ideone.com/8eSylt#stdin) [compilation error](https://ideone.com/8eSylt#cmperr) [#stdout](https://ideone.com/8eSylt#stdout) 0s 0KB

prog.c: In function ‘main’:
prog.c:7:10: warning: too many arguments for format [-Wformat-extra-args]
  printf ("veuillez inserer un caractere :\n",c);
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prog.c:8:14: error: invalid operands to binary & (have ‘char *’ and ‘int’)
  scanf ("%c,"&c);
         ~~~~~^
prog.c:15:14: warning: statement with no effect [-Wunused-value]
  else (c>=65 && c<=89);
      ~~~~~~~~^~~~~~~~~~
prog.c:18:1: error: expected declaration or statement at end of input
 }
 ^

Note que j’ai supposé que c’est du C.

merci de me repondre ce n est pas du java mais du C

en effet ce st du C

Regarde déjà les lignes 6 et 7.
Il y a une erreur ligne 7 et la ligne 6 est inutile.

Merci nicola

else ne s’utilise pas comme ça.
Il faut bien lire la syntaxe de ce genre de fonctions ou mots clé. Sinon boum. :grin:

Et une fois retouché pour qu’il compile, il y a encore du travail pour qu’il fasse ce que tu veux.
Par exemple, je te déconseille de modifier la valeur de c, puisque tu l’utilises ensuite.
Il se passe quoi si tu entres "z" ?

nicola tu parles de ligne 6 et 7 je suis sur nano et a la ligne 6 et 7 j ai les declarations de variables

quand j entre la lettre « z » le programme s arrete j ai supprime c=c+1; a present quand j entre un caractere il m est renvoye

Reprends ton code depuis le début, de la déclaration au scanf (tout le reste part à la benne, càd ailleurs).
Là tu affiches la variable. Si ça marche, passe à la suite.
Au fait, tu peux remplacer 65 par 'A', ton code sera plus lisible.

Voici un exemple de code:

#include<stdio.h>
void main ()
{
    char  x;
    printf("veuillez inserer un caractere :\n");
    scanf("%c",&x);

    // lettres de "A" à "Z" = code ASCII 65 à 90
    // lettres de "a" à "z" = code ASCII 97 à 122 (65+32 à 90+32)
    if (x>='A' && x<'Z'){
        x++; // plus compacte que x=x+1
        printf  ("Le caractere suivant en minuscule est %c\n",x+32);
        printf  ("Le caractere suivant en majuscule est %c\n",x);
    } else if (x>='a' && x<'z'){
        x++;
        printf  ("Le caractere suivant en minuscule est %c\n",x);
        printf  ("Le caractere suivant en majuscule est %c\n",x-32);
    }
}

Je repose ma question : on fait quoi si x=='Z' ?

Bonjour nicola,
Le plus simple est d’afficher un message indiquant qu’il n’y a pas de lettres de l’alphabet après la lettre Z !
On peut éventuellement indiquer les lettres ‹ a › et ‹ A › dans le cas ou l’on souhaiterait travailler de manière circulaire comme on le fait par exemple dans la consultation en boucle d’un jeu d’enregistrements; dans ce cas il convient d’adapter pour la circonstance le texte en français car d’un point de vue linguistique il n’existe pas de lettre après la lettre z.
Ce qui est vrai pour un mathématicien ne l’est pas forcément pour un informaticien ou une personne littéraire et la réciproque se vérifie souvent aussi. Etant donné que l’utilisateur final n’est pas forcément un scientifique, il convient de choisir les bonnes phrases pour les messages lui évitant toute ambiguïté ou incompréhension. Le langage des informaticiens est à bannir autant que possible pour les messages (à l’exception éventuelle dans certains cas des applications spécifiques aux administrateurs, aux devops, aux techniciciens). Il faut toujours tenter de se mettre à la place de l’utilisateur final et si cela te parait difficile alors il est toujours sage de faire tester ton programme par quelques personnes de ton entourage. Il y en aura bien une qui sera suffisamment attentive et critique pour te remonter des informations pertinentes qu’il conviendra alors de prendre en considération. Au cas où tu adopterais la solution avec un affichage en boucle par la lettre A alors il conviendrait de compléter l’énoncé en indiquant par exemple que le programme fonctionne en boucle: s’il n’existe pas de lettre suivante, le programme doit le préciser et afficher alors la première lettre.
Mais comme l’énoncé ne le précise pas et que cela ne semble pas critique pour le bon fonctionnement du programme, je resterai sur ma première phrase :slightly_smiling_face:
Lors d’une revue de code, tu peux soumettre la problématique au risque de t’entendre dire que ça n’a pas été demandé ou bien au contraire que la remarque est pertinente et doit être traitée. Il y a indéniablement une part de psychologie dans toute revue d’avancement du code… De là à en faire le stricte minimum, non: il convient au moins de remonter les problématiques assez rapidement (mais pas immédiatement s’il sagit d’un tout petit problème et que la réunion est houleuse)
Je t’ai répondu dans un axe plus orienté entreprise car c’est ce qui fait cruellement défaut dans le système scolaire, d’où l’importance des stages en entreprises. Côté entreprise, c’est la formation qui est souvent mise de côté où traitée de façon bien trop superficielle. En d’autres termes et dans une certaine mesure les deux se complètent.

Bonne programmation et n’hésite pas à revenir ici si nécessaire pour de la prog dans l’environnement Debian ou sur une autre rubrique pour des questions relatives à Debian. :wink:

Je ne posais pas la question pour moi mais pour l’ouvreur du fil. :wink:

Ok, "je repose la question à @Pat66 " au lieu de « je me repose la question » convient beaucoup mieux car avec « me » cela indique que c’est toi qui te pose la question et non pas @Pat66 ouvreur du fil de discussion. Il ne faut pas hésiter à citer la personne en la faisant précéder du symbole @ pour qu’elle soit informée qu’elle a été citée.

Oui, je sais mais je déteste précéder un pseudonyme d’une arobase, ça fait croire qu’on est dans Touitère.
Et en plus, ça veut dire at, donc écrire « Salut, at Pat66 ! », ça fait un peu gland et la sainte taxe est défaillante.

Pour, mais si tu utilises avec le @, la personne est notifiée. Personnellement, je trouve pertinent de savoir quand on parle de moi, ne serait-ce que pour corriger mes propos au regard de ce qu’on en dit (il m’arrive souvent de mal me faire comprendre) ou de corriger la façon dont on parle de moi (coucou le mégenrage !).
Alors, effectivement, utiliser le caractère @ fait très Twitter, le but est quand même que ce soit pratique, il faut donc utiliser un caractère qu’il est possible de produire facilement avec le clavier, que son sens soit clair. Si tu veux de l’original sur cette fonction, Google+ utilise le caractère + pour les personnes, mais c’est juste une originalité par rapport au nom du réseau social. On pourrait aussi faire correspondre directement le nom tel quel, genre il suffit que j’écrive nicola pour que tu aies la notification, mais l’éditeur de texte de saurait pas quand il faut chercher une correspondance avec un nom et le ferait donc tout le temps (imagine avoir tout le temps une liste des noms qui corresponde au mot que tu viens de commencer à taper).

Pour revenir au sujet, je mieux reste toujours de poser la question à @Pat66, quid du Z, que doit faire le programme ? Retourner une erreur ? Mettre le caractère suivant dans la table de caractères ? Reboucler l’alphabet dans la même casse ou dans l’autre casse ? Donner une valeur générée procéduralement ?

1 J'aime

Feu Google +. :wink:
Ou tout simplement utiliser une commande comme {truc}… et personnellement, je n’aime pas recevoir ouate mille notifications. Quand je suis une discussion, je vois bien si on me cause ou non. Comme quoi, chacun son truc.