Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » alphabet mit c++ ausgeben lassen

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 < [ 2 ]
000
18.11.2008, 20:56 Uhr
chnafort



hallo @alle ,habe ein c++ aufgabe bekommen . das programm soll das alphabet ausgeben .
ich habe es versucht ,aber ich schaffe es nicht die buchstabe : Ä,ä,Ö,ö,Ü,ü ausgeben zu lassen . könnte man mir bitte helfen . Danke im vorraus.

das ist mein quellcode:



/*Patric Chanfort*/
/* 18.11.2008 */

#include<iostream>
#include<windows.h>
using namespace std;
int main(void)
{ int x,y;
char a,A,q,w,e,r,t,z;
a=97;
A=65;
y=0;
q='Ä';
w='ä',e='Ö',r='ö',t='Ü',z='ü';
cout<<" -------------------------------"<<endl;
cout<<"Das Programm gibt das Alphabet aus "<<endl;
cout<<" -------------------------------"<<endl;
cout<<" "<<endl;
cout<<"================================="<<endl;
cout<<"Menue: Geben bitte ein:"<<endl;
cout<<"1 fuer Programm starten"<<endl;
cout<<"2 fuer Programm schlieesen:"<<endl;
cout<<"================================="<<endl;

cin>>x;

//* Ausgabe von a bis z (gross und klein Buchstabe)

switch(x)
{

case(1):
while ( y<26)
{
cout<<A<<" ";
cout<<a<<" ";
cout<<" "<<endl;
Sleep(100);
A++;
a++;
y++;
}
break;
case(2):
cout<<" Ciaos"<<endl;
break;
default:
cout<<"Eingabefehler: Sie haben 1 oder 2 eingeben sollen. Danke!"<<endl;
break;
}
//* Ausgebe von Ä,ä,Ö,ö,Ü,ü;

cout<<q<<" "<<w;
cout<<e<<" "<<r;
cout<<t<<" "<<z;

cout<<" "<<endl;
cout<<" "<<endl;
system("pause");
}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.11.2008, 21:40 Uhr
0xdeadbeef
Gott
(Operator)


Äh...

C++:
#include <iostream>

int main() {
  std::cout << "AÄBCDEFGHIJKLMNOÖPQRSTUÜVWXYZ\n"
               "aäbcdefghijklmnoöpqrstuüvwxyz" << std::endl;
}


?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.11.2008, 21:55 Uhr
chnafort



ich habe vergesse zu sagen , dass ich (char ) nutzen muss,
und die ausgabe sollte so aussehen :
A a
B b
C c
...
...
...
A ä
Ö ö
Ü ü
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.11.2008, 22:35 Uhr
Hans
Library Walker
(Operator)


Hi,

ist die Abfrage wirklich nötig? - Wenn nicht, kannst Du sie weg lassen. Und

C++:
include <windows.h>

kannst du auch weg lassen. Das brauchst Du für dieses Programm nicht. (Das brauch man, wenn die Programme auch mit der grafischen Benutzeroberfläche, d.h. mit Fenstern arbeiten.)

Was die Aufgabe angeht: du schreibst eine Schleife, die von 1 bis 26 zählt, und gibst bei jedem durchlauf den entsprechenden Buchstabe in Gross- und Kleinschreibung aus. Die Umlaute musst du extra behandeln, weil die an anderer Stelle im Zeichensatz stehen. Zeichentabelle z.B. hier.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 18.11.2008 um 22:41 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.11.2008, 15:39 Uhr
xXx
Devil


hmm ...

C++:
#include <iostream>
#include <cctype>
#include <cstring>

const char* ptr_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ";
const char* ptr_alphabet_end(ptr_alphabet + std::strlen(ptr_alphabet));

int main()
{
    for const char* ptr_it(ptr_alphabet); ptr_it != ptr_alphabet_end; ++ptr_it)
        std::cout << *ptr_it << " " << std::tolower(*ptr_it) << "\n";
}
mach's doch einfach so

Dieser Post wurde am 19.11.2008 um 15:40 Uhr von xXx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.11.2008, 15:58 Uhr
Hans
Library Walker
(Operator)



--
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
006
19.11.2008, 22:17 Uhr
0xdeadbeef
Gott
(Operator)


Ich bin immer noch der Ansicht, dass sich eine algorithmische Behandlung zur Laufzeit hier nicht lohnt. Aber wenn wir schon mal dabei sind,

C++:
#include <iostream>

template<int offset> struct print_loop {
  static char const line[];
  static void run() {
    std::cout << line;
    print_loop<offset + 1>::run();
  }
};

template<int offset> char const print_loop<offset>::line[] = { 'A' + offset, ' ', 'a' + offset, '\n', '\0' };

template<> struct print_loop<26> {
  static void run() {
    std::cout << "Ä ä\nÖ ö\nÜ ü" << std::endl;
  }
};

int main() {
  print_loop<0>::run();
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.11.2008, 23:42 Uhr
Hans
Library Walker
(Operator)


Boah Beefy!

Du bist ja noch schlimmer, wenn es darum geht, für simple Aufgaben komplizierte Lösungen zu liefern. Das sind, soweit ich das beurteilen kann, ja schon keine Kanonen mehr, mit denen Du da auf Spatzen schiesst, das sind ja schon Bomben, die Du auf die Spatzen wirfst.

@chnafort: Ich hoffe, Dir ist klar was die Jungs mit den Programmen oben bezwecken wollen? Zum Einen wollen Sie Dich ein wenig Provozieren, klar. ABER, und das ist der wichtigere Punkt: Sie wollen Dir damit klar machen, das die Aufgabe im Grunde eine leichte Übung ist, sofern man über die Sache eine Weile nachgedacht hat. Und natürlich auch ausprobiert.
Nur sind wir kein Hausaufgabenservice. Wir geben keine Lösungen vor, sondern verlangen Eigeninitiative. Die hast Du mit Deinem Programm ja schon gezeigt, das ist auch gut. Leider hast Du jetzt noch keine Rückmeldungen geliefert, ob Du weiter gekommen bist, und damit der Provokation die Tore geöffnet.

Doch jetzt noch mal im Einzelnen zu Deinem Programm:

C++:
/*Patric Chanfort*/
/* 18.11.2008 */

/* Kommentare sind immer gut!
   Aber mehrzeilige Kommentare kann man auch so
   schreiben wie ich hier.
   Das ist letztlich eine Frage des persönlichen Geschmacks.
*/


#include<iostream>
#include<windows.h>  // Brauchst Du hier nicht, - Streichen!

using namespace std;

int main(void)
{
  int x,y;
  char a,A,q,w,e,r,t,z;

  a=97;   // Der Ansatz ist schon mal in Ordnung
  A=65;
  y=0;

  q='Ä';   // Die Variablennamen sind ungünstig gewählt,
  w='ä',e='Ö',r='ö',t='Ü',z='ü';   // weil sie keinen Hinweis
                                   // auf ihre Bedeutung liefern

/* Dieser Teil, bis zu meinem nächsten Kommentar... */
cout<<" -------------------------------"<<endl;
cout<<"Das Programm gibt das Alphabet aus "<<endl;
cout<<" -------------------------------"<<endl;
cout<<" "<<endl;
cout<<"================================="<<endl;
cout<<"Menue: Geben bitte ein:"<<endl;
cout<<"1 fuer Programm starten"<<endl;
cout<<"2 fuer Programm schlieesen:"<<endl;
cout<<"================================="<<endl;

cin>>x;

/* ... ist zwar ganz nett, weil er vielleicht gut aussieht,
   aber auch völlig überflüssig, weil er nichts
   mit der Lösung der Aufgabe zu tun hat, und auch
   nichts dazu beiträgt.
*/


//* Ausgabe von a bis z (gross und klein Buchstabe)

/* Hier ist ein Fehler!! mit der Zeichenfolge /* werden Kommentare
   eingeleitet, die sich über mehr als eine Zeile erstrecken. Genau
   das tust Du hier mit der Zeichenfolge //*
  
   mehrzeilige Kommentare müssen so beendet werden: */


switch(x)   /* Dem entsprechend kannst Du Dir */
{        /* diese switch-abfrage auch sparen. */

case(1):
while ( y<26)   // Die Schleife ist dagegen ein korrekter Ansatz.
{
  cout<<A<<" ";
  cout<<a<<" ";
  cout<<" "<<endl;
  Sleep(100);  // Wozu das ?
  A++;
  a++;
  y++;
}
// Dieser Zweig ist wiederum überflüssig, und zwar ...
break;
case(2):
cout<<" Ciaos"<<endl;
break;
default:
cout<<"Eingabefehler: Sie haben 1 oder 2 eingeben sollen. Danke!"<<endl;
break;
}
// ... bis hier her.

//* Ausgebe von Ä,ä,Ö,ö,Ü,ü;
/* Hier der gleiche Fehler mit den Kommentarzeichen */


cout<<q<<" "<<w;  // Wenn hier wirre Zeichen erscheinen, dann
cout<<e<<" "<<r;  // solltest du Dich mal mit den Unterschieden
cout<<t<<" "<<z;  // der Zeichensätze Windows-1252 und
                  /* der in Eingabeaufforderungen benutzen
                     Codepage 437, bzw. 850 beschäftigen.
                     Siehe unten. */


cout<<" "<<endl;
cout<<" "<<endl;

system("pause");   // warum man das nicht benutzen sollte,
                   // steht in den FAQs ausführlich
                   // beschrieben.
}




In der Wikipedia steht zum Thema Zeichensätze unter anderem:

Zitat von Wikipedia:
Deutschsprachige Versionen von Windows (außer DOS-Fenster) verwenden die auf ISO 8859-1 aufbauende Kodierung Windows-1252 – daher sehen z. B. bei unter DOS erstellten Textdateien die deutschen Umlaute falsch aus, wenn man sie unter Windows ansieht.

Das gilt auch anders herum, d.h. in Textdateien, die unter Windows erstellt wurden, sehen die Umlaute auch falsch aus, wenn man sie im DOS-Fenster (Eingabeaufforderung) betrachtet. (Zitierter Artikel.)

Nebenbei Bemerkt: Das Programm von 0xdeadbeef im Posting 006 versteh ich auch nicht, weil ich mich mit den Templates, die er da verwendet noch nicht beschäftigt habe. Das sind Konstrukte, die man für Zwecke braucht, deren Anforderungen weit über die Aufgabe hinaus ragen, die Dir gestellt wurde.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 20.11.2008 um 00:02 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
10.12.2008, 16:01 Uhr
xXx
Devil


@Hans: Hm Rekursion im Template, dadurch das er die dann für 26 spezifiziert, bricht er da die Rekursion ab
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
10.12.2008, 16:13 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


und wenn man ne Zahl>26 übergibt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: