Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Aiuto programma C: data una parola,stampa numero corrispondente?
Forum - C/C++ - Aiuto programma C: data una parola,stampa numero corrispondente?

Avatar
gtedeski (Normal User)
Rookie


Messaggi: 21
Iscritto: 02/11/2008

Segnala al moderatore
Postato alle 21:13
Lunedì, 31/08/2009
ciao a tutti,potreste aiutarmi a svolgere questo programma in C? (esempio: ciao =>39113).io ho provato a farlo nel modo seguente ma nn mi esce..dove ho sbagliato?grazie mille

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

main ()
{
char valore[100];
int i;
int risultato;
printf("Inserisci la parola:\n");
scanf ("%s", valore);

switch (valore) {
case 'A': case 'a':
risultato = '1';
break;
case 'B': case 'b':
risultato = '2';
break;
case 'C': case 'c':
risultato = '3';
break;
case 'D': case 'd':
risultato = '4';
break;
case 'E': case 'e':
risultato = '5';
break;
case 'F': case 'f':
risultato = '6';
break;
case 'G': case 'g':
risultato = '7';
break;
case 'H': case 'h':
risultato = '8';
break;
case 'I': case 'i':
risultato = '9';
break;
case 'L': case 'l':
risultato = '10';
break;
case 'M': case 'm':
risultato = '11';
break;
case 'N': case 'n':
risultato = '12';
break;
case 'O': case 'o':
risultato = '13';
break;
case 'P': case 'p':
risultato = '14';
break;
case 'Q': case 'q':
risultato = '15';
break;
case 'R': case 'r':
risultato = '16';
break;
case 'S': case 's':
risultato = '17';
break;
case 'T': case 't':
risultato = '18';
break;
case 'U': case 'u':
risultato = '19';
break;
case 'V': case 'v':
risultato = '20';
break;
case 'Z': case 'z':
risultato = '21';
break;

default:
risultato = -1;
break;
}

system("pause");
return 0;
}

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 22:46
Lunedì, 31/08/2009
No, la logica è del tutto sbagliata, se hai cento caratteri devo controllare tutti e 100 e non il loro puntatore(che non ha senso) e poi si può risolvere il tutto senza lo switch, grazie ad una semplice sottrazione tra codici ASCII, fai così:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <sstream>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. int main ()
  8. {
  9. char valore[100];
  10. int i; //Contatore
  11. int risultato;
  12. char chr = 0x0; //Per comodità
  13. printf("Inserisci la parola:\n");
  14. scanf ("%s", valore);
  15.  
  16. for(i=0; i<100; i++){
  17.         if (valore[i] == 0){
  18.        break;
  19.         }
  20.         chr = valore[i];//Prendo il carattere corrente
  21.     chr = toupper(chr); //Rendo il carattere miuscolo
  22.         risultato = (int)chr - 64; //partendo dall'ascii tolgo 64 per ottenere il numero della lettera nell'alfabeto(controlla una tabella ascii per capire)
  23.     printf("%i", risultato);
  24. }
  25. printf("\n");
  26. system("pause");
  27. return 0;
  28. }


PM Quote
Avatar
gtedeski (Normal User)
Rookie


Messaggi: 21
Iscritto: 02/11/2008

Segnala al moderatore
Postato alle 22:51
Lunedì, 31/08/2009
e volendo farlo con lo switch??

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 22:53
Lunedì, 31/08/2009
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <sstream>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. int main ()
  8. {
  9. char valore[100];
  10. int c; //Contatore
  11. int risultato;
  12. printf("Inserisci la parola:\n");
  13. scanf ("%s", valore);
  14.  
  15. for(c=0; c<100; c++){
  16.         if (valore[c] == 0){
  17.        break;
  18.         }
  19.         switch (valore[c] ) {
  20. case 'A': case 'a':
  21. risultato = '1';
  22. break;
  23. case 'B': case 'b':
  24. risultato = '2';
  25. break;
  26. case 'C': case 'c':
  27. risultato = '3';
  28. break;
  29. case 'D': case 'd':
  30. risultato = '4';
  31. break;
  32. case 'E': case 'e':
  33. risultato = '5';
  34. break;
  35. case 'F': case 'f':
  36. risultato = '6';
  37. break;
  38. case 'G': case 'g':
  39. risultato = '7';
  40. break;
  41. case 'H': case 'h':
  42. risultato = '8';
  43. break;
  44. case 'I': case 'i':
  45. risultato = '9';
  46. break;
  47. case 'L': case 'l':
  48. risultato = '10';
  49. break;
  50. case 'M': case 'm':
  51. risultato = '11';
  52. break;
  53. case 'N': case 'n':
  54. risultato = '12';
  55. break;
  56. case 'O': case 'o':
  57. risultato = '13';
  58. break;
  59. case 'P': case 'p':
  60. risultato = '14';
  61. break;
  62. case 'Q': case 'q':
  63. risultato = '15';
  64. break;
  65. case 'R': case 'r':
  66. risultato = '16';
  67. break;
  68. case 'S': case 's':
  69. risultato = '17';
  70. break;
  71. case 'T': case 't':
  72. risultato = '18';
  73. break;
  74. case 'U': case 'u':
  75. risultato = '19';
  76. break;
  77. case 'V': case 'v':
  78. risultato = '20';
  79. break;
  80. case 'Z': case 'z':
  81. risultato = '21';
  82. break;
  83.  
  84. default:
  85. risultato = -1;
  86. break;
  87. }
  88.     printf("%i", risultato);
  89. }
  90. printf("\n");
  91. system("pause");
  92. return 0;
  93. }



Ho dovuto cambiare la variabile i in c perchè il forum non la visualizzava!

Ultima modifica effettuata da manvb.net il 31/08/2009 alle 22:58
PM Quote
Avatar
gtedeski (Normal User)
Rookie


Messaggi: 21
Iscritto: 02/11/2008

Segnala al moderatore
Postato alle 22:58
Lunedì, 31/08/2009
grazie mille

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 23:03
Lunedì, 31/08/2009
Di niente!

PM Quote