Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Aufgabe fuer Anfaenger!! (Ein Programm auf 2 Sprachen)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.12.2005, 10:44 Uhr
Leopard



Hallo liebe Programmier,

ich hätte eine kleine Aufgabe zu dem unter geschriebenen Code, und zwar:
"Schreibe das Programm (The Secret Word) so um, dass Ein- und Ausgabe auf Deutsch und Englisch möglisch sind. Der Benutzer soll fähig sein, die Sprache zu wählen. Falls Deutsch gewählt wurde, soll das Geheimwort aus der folgeneden Liste sein:

- Cplusplusprogrammierung
- Benutzeroberflaeche
- Objektorientiert
- Funktionsaufruf
- Hauptprogramm
- Zeiger
- Script
- Variable
- Konstante
- Ausdruck

der Code lautet:

C++:
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
using namespace std;
#define N_KEYS 12
#define KEY_MAX_WIDTH 20        
#define FAILS_ALLOWED 7

char key [KEY_MAX_WIDTH];

char outstring [KEY_MAX_WIDTH];

int CheckLetter (char letter);

main ()
{
     char input;
     int valid;
     int fails = FAILS_ALLOWED;
     unsigned int discoverd = 0;
     unsigned n;
     char possiblekeys[KEY_MAX_WIDTH][N_KEYS];
    
    
     srand ( time (NULL) );
     int value = rand()%N_KEYS;
     strcpy (key, possiblekeys [value]);
    
     for (n=0; n<strlen (key); n++) outstring [n]='n';
     outstring [n]='\0';
    
     do {
        
         cout << "\n Discover the secret key; " << outstring << "\n";
         cout << "Enter a letter (You may fail " << fails << " times): ";
         cin  >> input; cin.ignore (100,'\n');
        
         valid = CheckLetter (input);
        
         if (valid!=0) discoverd+=valid;
         else fails --;
        
         } while (discoverd < strlen (key) && fails >0);
        
        
         if (discoverd == strlen(key)) cout << " CORRECT! ";
        
         cout << "Key was  \'" << key << "\'.\n";

         return 0;
          
         }
     int CheckLetter (char letter)
     {
         unsigned int n;
         int found=0;
         for (n=0; n<strlen (key); n++)
             if (key [n]==letter && outstring [n]=='-')
             {
                     found++;
                     outstring [n]=key[n];
             }
         return found;
         cin.get();
     }




hoffe, dass jemand sich was einfallen laesst!!

Leo
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.12.2005, 10:51 Uhr
hsp



Ich kann mich täuschen, aber hast du dieselbe "Frage" nicht schonmal vor kurzem in einem anderen Thread gestellt?
--
Actiones nostras, quaesumus, Domine, aspirando praeveni et adiuvando prosequere, ut cuncta nostra operatio a te semper incipiat, et per te coepta finiatur.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.12.2005, 11:01 Uhr
Leopard



Doch aber die Frage hieß am Anfang:
Was ist falsch an dem ersten Code?
aber nun muss man das Programm auf 2 Sprachen zeigen lassen!!

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.12.2005, 11:03 Uhr
hsp



Also das Programm auf zwei verschiedene Sprachen anzeigen zu lassen nach einer entsprechenden Auswahl sollte kein größeres Problem darstellen...
Ich für meinen Teil würde das mit zwei verschiedenen Funktionen lösen, eine Englisch, eine Deutsch...
Aber ich bin ja auch noch ein relativer Anfänger evtl gibt es noch eine elegantere Lösung, ich jedenfalls würde es stand meines momentanen Wissens so lösen
--
Actiones nostras, quaesumus, Domine, aspirando praeveni et adiuvando prosequere, ut cuncta nostra operatio a te semper incipiat, et per te coepta finiatur.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.12.2005, 11:08 Uhr
Leopard



Darauf bin ich auch gekommen, mein Freund !! aber wie sollte man die beiden Funktionen ueberhaupt durch eine 3. Funktion so verbinden, dass der Benutzer die Sprache am Anfang auswählt! man koente ja z.B. if-Schleife verwenden, aber die Frage ist halt wie??

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.12.2005, 11:10 Uhr
hsp



Naja ist doch super billig oder nicht...
Du machst ne Switch-Abfrage in main() die den User auswählen lässt welche Sprache er will und dann machst du eine Funktion Englisch() und eine Deutsch() und dann lässt du die Werte von der Funktion an main() zurückgeben
Also ich seh da eigentlich kein größeres Problem
--
Actiones nostras, quaesumus, Domine, aspirando praeveni et adiuvando prosequere, ut cuncta nostra operatio a te semper incipiat, et per te coepta finiatur.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.12.2005, 12:39 Uhr
Pler
Einer von Vielen
(Operator)



C++:
#include <stdio.h>

#define LANG_UNKNOWN -1
#define LANG_ENG 1
#define LANG_GER 2

int get_language( void )
{
  int language;

  printf( "1 -> deutsch\n2 -> englisch\n>" );
  scanf( "%d" , &language );

  if( ( language >= LANG_ENG ) && ( language <= LANG_GER ) )
  {
     return language;
  }
  else
  {
    return LANG_UNKNOWN;
  }
}

char* ausgabe( int language )
{
   if( LANG_ENG == language )
   {
      return "Hello World";
   }
   else if( LANG_GER == language )
   {
      return "Hallo Welt!\n";
   }
   else
   {
      return NULL;
   }
}

int main( )
{
  int language = LANG_UNKNOWN;

  while( ( language = get_language() ) == LANG_UNKNOWN )
  {
    printf( "unbekannte Sprache!!!\n" );
  }
  printf( "%s\n" , ausgabe(language) );

  return 0;
}


so oder so ungefähr ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
15.12.2005, 23:42 Uhr
Hans
Library Walker
(Operator)


Hi,

okay, die komplizierte Methode:
je nach ausgewählter Sprache lädst Du die Dialoge aus einer externen Datei nach. Der Ausgabefunktion übergibst Du dann beispielsweise nur eine Nummer, die ihr sagt, welcher Text ausgegeben werden soll, und sie sucht ihn sich heraus und gibt ihn aus. Das setzt dann natürlich voraus, das Du die Dialoge vorher entsprechend angeordnet hast.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: