Avatar billede hartvig1984 Nybegynder
30. april 2006 - 14:16 Der er 2 kommentarer

Switch fra ord til tal svarende til tal på en mobil tlf.

hej eksperter!!
vi sidder og leger med en switch funktion der skal konvertere bogstaver til tal svarende til mobiltelefon nr. dvs a,b,c=2 d,e,f=3 etc.
vi har lavet det vedlagte program stykke som indtil videre henter et tilfældigt ord fra en fil hvilket virker fint. Nu mangler vi så bare at fådet konverteret til tal vha. en switch funktion!
vi er MEGET ringe til det her så det skal gerne holdes simpelt. det er også et MEGET rodet program stykke som vi har fået lavet ind til videre som det fremgår af det vedlagte.
mvh.
Lars Hartvig Kristisansen

int main(void)
char    c, ordgadebog[40], ch;   
int    i=0, line, ordconverter, tal;

FILE    *ifp;
ifp = fopen"ordgaade.txt", "r"); 
srand (time(NULL));   
line = rand() % 15 +1; 

printf("vis hvilket nummer er valgt %d\n", line);
 
           

for(i=15-line+1; i<=15; i++)
  fgets(ordgadebog,40,ifp);
printf("%s\n", ordgadebog);
fclose(ifp);

/*hertil virker tingene meget godt, men switchen herefter er HEL gal!!!*/
for(i = 0; i != '\0', i++ ){
switch(ordconverter) {     
        case 'a':
        case 'b':
        case 'c':
        tal=2;
        break;
        case 'd':
        case 'e':
        case 'f':
        tal=3';   
        break;
        case 'g':
        case 'h':
        case 'i':
        tal=4;   
        break;
        case 'j':
        case 'k':
        case 'l':
        tal=5;   
        break;
        case 'm':
        case 'n':
        case 'o':
        tal=6;   
        break;
        case 'p':
        case 'q':
        case 'r':
        case 's':
        tal=7;   
        break;
        case 't':
        case 'u':
        case 'v':
        tal=8;   
        break;
        case 'w':
        case 'x':
        case 'y':
        case 'z':
        tal=9;
        default:   
        break;
}
    return tal;
}     
system("pause");
    return 0;

Hvad skal vi gøre for at få dette til at virke?
mvh.
meget desperat gruppe for hjælp:)
Avatar billede definition Nybegynder
30. april 2006 - 15:04 #1
Jeg har skrevet jeres switch i C#, men princippet er det samme. Jeg har ikke skrevet jeres del, der henter tekst ind fra fil.

string tekstFraFil = "hejmeddig";
string talStreng = "";

for( int i = 0; i < tekstFraFil.Length; i++ )
{
  switch( tekstFraFil[ i ] )
  {
    case 'a':
      talStreng += "2";
      break;
    case 'b':
      talStreng += "2";
      break;
    case 'c':
      talStreng += "2";
      break;
    case 'd':
      talStreng += "3";
      break;
    case 'e':
      talStreng += "3";
      break;
    case 'f':
      talStreng += "3";
      break;
    case 'g':
      talStreng += "4";
      break;
    case 'h':
      talStreng += "4";
      break;
    case 'i':
      talStreng += "4";
      break;
    case 'j':
      talStreng += "5";
      break;
    case 'k':
      talStreng += "5";
      break;
    case 'l':
      talStreng += "5";
      break;
    case 'm':
      talStreng += "6";
      break;
    case 'n':
      talStreng += "6";
      break;

//osv osv....

    default:
      break;
  }
  }

  Console.WriteLine( talStreng );

outputtet bliver: "435633344"
Avatar billede bertelbrander Novice
30. april 2006 - 17:14 #2
I C må det blive til:

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

int main(void)
{
  char    c, ordgadebog[40], ch, OrdOut[40];
  int    i=0, line, ordconverter, tal;

  FILE *ifp;
    ifp = fopen("ordgaade.txt", "r");
  srand (time(NULL));
  line = rand() % 15 +1;

  printf("vis hvilket nummer er valgt %d\n", line);



  for(i=15-line+1; i<=15; i++)
    fgets(ordgadebog,40,ifp);
  printf("%s\n", ordgadebog);
  fclose(ifp);

  /*hertil virker tingene meget godt, men switchen herefter er HEL gal!!!*/
  for(i = 0; ordgadebog[i] != '\0'; i++ )
  {
  switch(ordgadebog[i]) {
          case 'a':
          case 'b':
          case 'c':
          OrdOut[i] = '2';
          break;
          case 'd':
          case 'e':
          case 'f':
          OrdOut[i] = '3';
          break;
          case 'g':
          case 'h':
          case 'i':
          OrdOut[i] = '4';
          break;
          case 'j':
          case 'k':
          case 'l':
          OrdOut[i] = '5';
          break;
          case 'm':
          case 'n':
          case 'o':
          OrdOut[i] = '6';
          break;
          case 'p':
          case 'q':
          case 'r':
          case 's':
          OrdOut[i] = '7';
          break;
          case 't':
          case 'u':
          case 'v':
          OrdOut[i] = '8';
          break;
          case 'w':
          case 'x':
          case 'y':
          case 'z':
          OrdOut[i] = '9';
            break;
          case '\n':  // det sidste tegn i linien er et '\n', ignorer denne
            OrdOut[i] = 0;
            break;
          default:
          break;
  }
  }
  OrdOut[i] = 0;
  printf("Nyt: %s\n", OrdOut);
  system("pause");
  return 0;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester