Oppure

Loading
31/08/09 19:13
gtedeski
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[i]) {
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;
}
aaa
31/08/09 20:46
manvb.net
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ì:

#include <iostream>
#include <sstream>
#include <string.h>

using namespace std;

int main ()
{
char valore[100];
int i; //Contatore
int risultato;
char chr = 0x0; //Per comodità
printf("Inserisci la parola:\n");
scanf ("%s", valore);

for(i=0; i<100; i++){
	if (valore[i] == 0){
       break;
	}
	chr = valore[i];//Prendo il carattere corrente
    chr = toupper(chr); //Rendo il carattere miuscolo
	risultato = (int)chr - 64; //partendo dall'ascii tolgo 64 per ottenere il numero della lettera nell'alfabeto(controlla una tabella ascii per capire)
    printf("%i", risultato);
}
printf("\n");
system("pause");
return 0;
}

aaa
31/08/09 20:51
gtedeski
e volendo farlo con lo switch??
aaa
31/08/09 20:53
manvb.net
#include <iostream>
#include <sstream>
#include <string.h>

using namespace std;

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

for(c=0; c<100; c++){
	if (valore[c] == 0){
       break;
	}
	switch (valore[c] ) {
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;
} 
    printf("%i", risultato);
}
printf("\n");
system("pause");
return 0;
}


Ho dovuto cambiare la variabile i in c perchè il forum non la visualizzava!
Ultima modifica effettuata da manvb.net 31/08/09 20:58
aaa
31/08/09 20:58
gtedeski
grazie mille
aaa
31/08/09 21:03
manvb.net
Di niente!
aaa