Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Großes?

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
15.08.2010, 06:20 Uhr
~olli3
Gast


Ich hab folgende Aufgabe zu bewältigen und die zeit sitzt mir im Nacken. Theoretisch müsste das Programm heute um 00:00 Uhr fertig sein und ohne Hilfe werd ich es bestimmt nicht schaffen.

also:
Schreiben Sie ein Programm, das wiederholt einen Text (Wort) einliest, jedes Zeichen durch das um N Positionen versetzte ersetzt (-25<= N<=25) und das Ergebnis ausgibt

Es werden nur die Großbuchstaben des deutschen Alphabets verwendet, keine Umlaute und kein ß.

Das hab ich bisher geschrieben:


C++:
#include "stdafx.h"
#include <iostream>

#define NEUEZEILE printf("\n")

using namespace std;

int main ()
{
  // Deklarationen

  int schrittweite, i=0;
  char eingabe[250], ausgabe[250], alphabet[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

  // Schrittweite eingeben um die verschoben werden soll

  cout << "Bitte die Schrittweite eingeben um die verschoben werden soll: ";
  cin >> schrittweite;

  NEUEZEILE;

  // Wort eingeben das codiert werden soll

  cout << "Bitte das Wort eingeben (max. 250 Zeichen)\n" ;
  cin >> eingabe;

  NEUEZEILE;

  // Kontrollstrukturen zur Codierung

  while (eingabe[i] != 0)
    {
      ausgabe[i]=eingabe[i];

      for (int w=0; w<schrittweite; w++)
        {
          ausgabe[i]++;
          if (ausgabe[i] < 0x61) // größer wie z
            ausgabe[i]= 0x7A; // bei a wieder anfangen
        }
      i++;
    }
  cout << ausgabe << endl;

  NEUEZEILE;

  return 0;
}




Kann leider keine direkteren Fragen stellen weil ich nur ein sehr begrenztes Verständnis für c++ habe. Auf jedenfall klappt das mit den Großbuchstaben nicht weil ich das mit dem ASCII Code nicht richtig am laufen habe, ich weiss leider auch nicht wie ich es hinbekommen soll mehrfach texte einzugeben die dann codiert werden und bei meinem Programm wie es jetzt da steht kann ich nur in positiver Richtung die Buchstaben versetzen. Wär super wenn ihr ein par Tipps für mich habt oder konkrete Hilfestellung geben könnt. Wenn ihr mir nicht helfen könnt oder ich damit hier fehl am Platze bin dann sag ich mal sorry aber den versuch wars mir trotdem werd.

Mod edit: Code tags hinzugefügt

Bearbeitung von Hans:
Quelltext neu formatiert

Dieser Post wurde am 15.08.2010 um 20:07 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.08.2010, 16:54 Uhr
Pablo
Supertux
(Operator)


hat absolut gar nichts mit "Ideen & Projekte" zu tun. -->
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.08.2010, 20:29 Uhr
Hans
Library Walker
(Operator)


Hi,

als erstes solltest du den eingegebenen Text mal darauf überprüfen, ob da auch nur GROSSBUCHSTABEN drin stehen. Wenn Keilnbuchstaben dabei sind, solltest Du die vorher in GROSSBUCHSTABEN umwandeln. Das erleichtert die Arbeit nämlich ungemein, wenn es ans verschieben, bzw. austauschen geht. Das ist dann ein bisschen Rechnerei mit Indices, z.B. so:


C++:
wort[] = "RFEPY ELR"
for (int i=0; wort[i]!='\0'; i++)
    cout << wort[i]-11;


Das ist jetzt nicht optimal, weil es den Anfang und das Ende der Grossbuchstaben in der ASCII-Tabelle nicht berücksichtigt, zeigt aber das was ich meine.

Ach ja und so nebenbei noch:
das hier:

C++:
printf("\n")


ist kein C++ sondern C (ohne ++). Das schreibt man in C++ so:

C++:
cout << endl;


Damit kannst du Dir diese Zeile:

C++:
#define NEUEZEILE printf("\n")


schenken und das NEUEZEILE jeweils durch cout << endl; erstezen.

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

Dieser Post wurde am 15.08.2010 um 22:02 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.08.2010, 22:01 Uhr
Hans
Library Walker
(Operator)


Nachtrag: Möglicherweise ist das hier auch noch nützlich...

Code:
         1         2      
12345678901234567890123456
ABCDEFGHIJKLMNOPQRSTUVWXYZ
LMNOPQRSTUVWXYZABCDEFGHIJK
                            
GUTEN TAG
RFEPY ELR



Hans


P.S. Falls es auch weiter hilft: das ganze ist nichts anderes, als ein modifizierter rot13 Algorithmus.
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 15.08.2010 um 22:13 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.08.2010, 23:52 Uhr
0xdeadbeef
Gott
(Operator)


Wir hatten sowas doch mal in einem alten Rästel ausklamüsert:

C++:
isalpha(c) ? c & 96 | (c % 32 + step - 1) % 26 + 1 : c


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


Oh, schön!
So ähnliche Lösungen sind auch unter den Weblinks in dem Wikipediaartikel angegeben, den ich da oben verlinkt habe. Also etwa:

Zitat:


C++:
main(a){while(a=~getchar())putchar(~a-1/(~(a|32)/13*2-11)*13);}


oder

C++:
main(){char b,c;for(;read(0,&b,1);) {c=b&32;b&=~c;b=((b>='A')&&(b<='Z')?((b-'A'+13)%26+'A'):b)|c;write(1,&b,1);}}




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

Dieser Post wurde am 16.08.2010 um 01:17 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.08.2010, 02:37 Uhr
0xdeadbeef
Gott
(Operator)


Ich hab hier noch

C++:
main(c){while(read(0,&c,1))putchar(isalpha(c)?c&96|(c%32+12)%26+1:c);}


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


Auch nicht schlecht.
Aber bevor wir den Frager hier weiter mit Einzeilern ärgern, die er höchst wahrscheinlich eh nicht versteht, und auch sein Problem nicht lösen, sollte er sich mal melden, und berichten, ob er mit meinen Hinweisen aus den Postings 002 und 003 was anfangen konnte. - Und dann evtl. mal versuchen, seine Probleme genauer zu beschreiben.

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
008
16.08.2010, 17:59 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:

Theoretisch müsste das Programm heute um 00:00 Uhr fertig sein und ohne Hilfe werd ich es bestimmt nicht schaffen.



Naja ich nehm mal an das der sich nicht mehr meldet
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: