Se connecter avec
S'enregistrer | Connectez-vous

probleme urgent prog c++ conversion vers morse

Dernière réponse : dans Programmation

bonjour jai besoin d'aide car je doit fair un prog qui consiste a demanderque l'utilisateur entre un caractere via le calvier(alphabetique ou numerique), puis afficher son equivalent en morse, on veut egalement que quand on apuuie sur * le prog se finalize en nous montrant nom , groupe , annee, etc...

Voici ce que g fait g du mal a comprendre les erreurs et c pas tout a fait ca , soyer indulgant je viens de commencer la prog

#include <stdio.h>
#include <math.h>


// practica 2 de informatica, por Juan Palomo
main(){

char AlfaNum,fin;

while(fin!='*'){

printf("Introduzca un caracter alfa-numerico por teclado\n");
AlfaNum=getchar();

switch(AlfaNum)
{
case '0':
printf("\n%c -> -----",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case '1':
printf("\n%c -> .----",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case '2':
printf("\n%c -> ..---",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case '3':
printf("\n%c -> ...--",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case '4':
printf("\n%c -> ....-",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case '5':
printf("\n%c -> -....",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case '6':
printf("\n%c -> --...",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case '7':
printf("\n%c -> ---..",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case '8':
printf("\n%c -> ---..",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case '9':
printf("\n%c -> ----.",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'a':
printf("\n%c -> .-",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'b':
printf("\n%c -> -...",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'c':
printf("\n%c -> -.-.",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'd':
printf("\n%c -> -..",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'e':
printf("\n%c -> .",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'f':
printf("\n%c -> ..-.",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;

case 'g':
printf("\n%c -> --.",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'h':
printf("\n%c -> ....",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'i':
printf("\n%c -> ..",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'j':
printf("\n%c -> .---",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'k':
printf("\n%c -> -.-",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'l':
printf("\n%c -> .-..",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'm':
printf("\n%c -> --",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'n':
printf("\n%c -> -.",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'ñ':
printf("\n%c -> --.--",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'o':
printf("\n%c -> ---",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'p':
printf("\n%c -> .--.",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'q':
printf("\n%c -> --.-",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'r':
printf("\n%c -> .-.",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 's':
printf("\n%c -> ...",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 't':
printf("\n%c -> -",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'u':
printf("\n%c -> ..-",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'v':
printf("\n%c -> ...-",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'w':
printf("\n%c -> .--",AlfaNum);
printf("\nPara finalizar pulse *");

break;
case 'x':
printf("\n%c -> -..-",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'y':
printf("\n%c -> -.--",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
case 'z':
printf("\n%c -> --..",AlfaNum);
printf("\nPara finalizar pulse *");
fin=getchar();
break;
default:
printf("\nEL progama fue realisado por:")
printf("\n Juan Palomo");
printf("\ngrupo 1");
}
}
}





j'optiens les messages d'erreur suivant:
a:\rec-pr~2.c: In function `main':
a:\rec-pr~2.c:205: parse error before `printf'
Et je ne sais pas quoi faire pour les resoudres,donner moi une piste ou quelque chose
Merci, pour aide !
Lassé par la pub ? Créez un compte

Merci! et bien vu, en realite maintenant le prog fonctionne plus ou moin mais je voudrait que quant on appuie sur'*' les operations anterieurs disparaissent et que l'on voit mon nom sur un 'nouvel ecran en quelque sorte mais ds le meme prog, je sais pas si vous m'avez compris! bref
je croit qu'il y a une fonction au nom difficil a retenir qui fait en quelque sorte un 'refresh et efface tout! enfin c vous qui voyer si vous avez une autre solutions je suis tout ouie.

Au risque de me faire un ennemi...

Ton programme est vraiment très mal conçu.
Plutôt qu'un enorme switch/case, tu devrais utiliser un tableau contenant tout les codes morse et acceder aux éléments par leur index.
Un exemple (uniquement pour les chiffres):

  1. #include <stdio.h>
  2.  
  3. static char *numbers[] =
  4. {
  5. "-----", ".----", "..---",
  6. "...--", "....-", ".....",
  7. "-....", "--...", "---..",
  8. "----."
  9. };
  10.  
  11. int main(int argc, char **argv, char **environ)
  12. {
  13. char AlfaNum = 'a';
  14.  
  15. while(AlfaNum != '*')
  16. {
  17. AlfaNum = getchar();
  18. if(AlfaNum >= '0' && AlfaNum <= '9')
  19. printf("%c -> %s\n",AlfaNum, numbers[AlfaNum - '0']);
  20. }
  21. }


En plus je ne suis pas spécialiste du morse mais je ne pense pas que 7 et 8 ai le même code (copier/coller malheureux probablement)

Pour l'effacement de l'écran :

Méthode porc - system("clear");
Méthode élégante - Utiliser termcap

adams@IDN a dit :
Au risque de me faire un ennemi...

Ton programme est vraiment très mal conçu.
Plutôt qu'un enorme switch/case, tu devrais utiliser un tableau contenant tout les codes morse et acceder aux éléments par leur index.
Un exemple (uniquement pour les chiffres):

  1. #include <stdio.h>
  2.  
  3. static char *numbers[] =
  4. {
  5. "-----", ".----", "..---",
  6. "...--", "....-", ".....",
  7. "-....", "--...", "---..",
  8. "----."
  9. };
  10.  
  11. int main(int argc, char **argv, char **environ)
  12. {
  13. char AlfaNum = 'a';
  14.  
  15. while(AlfaNum != '*')
  16. {
  17. AlfaNum = getchar();
  18. if(AlfaNum >= '0' && AlfaNum <= '9')
  19. printf("%c -> %s\n",AlfaNum, numbers[AlfaNum - '0']);
  20. }
  21. }


En plus je ne suis pas spécialiste du morse mais je ne pense pas que 7 et 8 ai le même code (copier/coller malheureux probablement)

Pour l'effacement de l'écran :

Méthode porc - system("clear");
Méthode élégante - Utiliser termcap


Et bien, comment faut-il faire pour pouvoir faire la manipulation avec les lettres de A à Z en majuscules ? Puis comment faut-il faire pour pouvoir convertir les minuscules en majuscules ?
Expert Programmation

Les gens qui répondent sur ce forum le font gracieusement sur leur temps libre (ou pas) et certains estiment que les questions qui nécessitent juste une consultation du manuel ou de google (1ère ligne) ne méritent aucune attention.

En plus KangOl fait l'effort de faire une phrase ! Un simple RTFM aurait dû suffire.

Ton problème de morse est intéressant, ta façon de le résoudre est naïve. Ce sont deux bonnes raisons pour obtenir de l'aide ici.

Le titre du sujet est agressif , ton manque d'investissement personnel inadmissible, tes exigences odieuses et déplacées. Voilà d'autres raisons pour ne rien obtenir du tout.

Allons, occultons les plus mauvaises.... Puisque il semble que ce soit un exercice scolaire d'une part, et que tu programmes en C d'autre part, explore les fonctions de <ctype.h>. Tu y trouveras tout ce que tu as besoin pour comparer, transformer et traiter ton caractère. Effacer l'écran est un problème tellement récurrent que d'autres discutions sur ce forum, ou ailleurs (google) te permettrons de trouver LA solution qui te conviendra. Je reste persuadé que c'est un exercice noté, alors mérite un peu ta note :

- Comprends l'exemple de Rodolphe
- Adapte-le à ton problème
- Cherche comment effacer ton écran. Tu as deux pistes, system et ANSI.
Lassé par la pub ? Créez un compte