» Mehrdimensionale Felder

Informatik 1+2 KlausurNeuen Thread eröffnenNeue Antwort erstellenTicTacToe in C
AutorNachricht
Beobachter 
Anmeldedatum: 20.03.2021
Beiträge: 1
24.03.2021, 17:42
zitieren

Ich sollte ein Programm schreiben das ein zweidimensionales Array mit 26
Spalten und 2 Zeilen enthält. Die 1. Zeile soll die Zeichen A - Z, die 2. Zeile - das
Code-Alphabet, d. h. das um einen bestimmten Wert verschobene "normale" Alphabet
aus der 1. Zeile - z. B.: 2. Zeile: C D E F G H I J K L M N O P Q R S T U V W X Y Z A B.
Nun soll ein beliebiger Text eingegeben werden (Eingabeende mit ";"), wobei nur
Kleinbuchstaben, Großbuchstaben und das Sonderzeichen ";" als Eingabezeichen erlaubt sind,
alle anderen Zeichen sollen ignoriert werden. Wenn das Zeichen ";" eingegeben wird, soll das Programm den kodierten (ausgetauschten) Text ausgeben und sich beenden.

Ich hab jetzt nen array [2][26] so wie er es wollte...

mit den Zeichen A-Z drin und D-C also ebend versetzt.

Ich werde jetzt eben die eingabe einscanen.
Mein Plan ist es:

Pseudocode:

do {
  • Die zeichen einzelnen einscannen und direkt zu überprüfen ob Groß oder kleines alphabet, (es in groß buchstaben umwandeln??? wird das so verlangt in der übung? da ich ja nur großbuchstaben definiert habe)
  • danach würde ich dem sagen, suche dieses zeichen im 1. Array und speichere das neue passende zeichen (aus dem 2. Array) in einer variablen.
    [Nur wie mach ich das??? 😕 😕 ]
- dann zeichen++
}
while (zeichen != ";")

und dann würde ich printf mit der variable wo alles gespeichert ist...

So ist der Plan...

Ich könnte natürlich auch erst den kompletten string einlesen und dann den kompletten string aufeinmal "austauschen" nur hab ich auch da keine Ahnung wie ich das mache 😕

Ich wäre euch sehr dankbar über hilfestellungen. Mir scheiterts an der umsetzung.. 😕


pn
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
30.03.2021, 08:36
zitieren

Hallo Maxim mm

Für die Eingabe mit Limitierung der Eingabe auf bestimmte Zeichen nimm eine Positivliste:
#include <stdio.h>
#include <stdlib.h>

void clpuf(void)
 {
 while (getc(stdin) != '\n')
    ;
 }

int main()
{
 int i;
 char c_posi[200],  c_nega[200];

 for (i = 0; i < 200; i++)
      c_posi[i] = c_nega[i] = 0;

 printf("Example Positiv- and negativ Liste with scanf\n");

 printf("\nPlease for example enter a String like \nexample.....: 123430abc  \nEnter string:  ");

/**  reads only characters where between the braces, and finishes the input when the first character was read in where not in this list */
 scanf("%[0123456789+-*/=]", c_posi);
 printf("The Input was:: %s \n\n", c_posi);

 /** clears keyboard buffer */
 clpuf();

 printf("\nPlease for example enter a String like \nexample.....: asdfgh123  \nEnter string:  ");
  scanf("%[^1234567890]", c_nega);
 printf("The Input was: %s \n\n", c_nega);

 clpuf(); /** clears keyboard buffer*/

 printf("\nPlease enter a string witch includes space-character\nEnter:  ");
 /** reads all characters, but not the newline-sign(Enter)*/
 scanf("%199[^\n]", c_nega);
 printf("The Input was: %s \n\n", c_nega);

 printf("End of Program\n");
return EXIT_SUCCESS;
}


Für die Umwandlung in Groß- bzw. Kleinbuchstaben nimm toupper und tolower:
/* toupper example */
#include <stdio.h>
#include <ctype.h>
int main ()
{
  int i=0;
  char str[]="Test String.\n";
  char c;
  while (str[i])
  {
    c=str[i];
    putchar (toupper(c));
    i++;
  }
  return 0;
}

Das einzige Beispiel wo ich denke das es einigermaßen passen könnte ist aber in c++ geschrieben:
#include <iostream>
#include <cstring>

//Umwandlung von signed char zu int
int atoint(char letter)
{
 int rewer;
 if ( letter < 0)
  rewer = letter + 256;
   else rewer = (int)letter;
 return rewer;
}

/*
  char codiert[] = {"VCS YPAPKFTUKESZCBNUS BIEBZCZIZCPA CBZ SCAS DSQESBBSQIAG VSB NKSBKQ—"
"KFGPQCZUYIB, VK SB YSUQ YPSGFCNUS BNUFISBBSF GCEZ. FSCVSQ HKAA YKA YCZ"
"VSQ UKSIMCGHSCJBKAKFWBS CVYSQ APNU VSA HFKQZSJZ SQYCZZSFA. YKA UKZ"
"KESQ KINU UCSQMISQ XSCZSQSAZXCNHFIAGSA, VCS VI HSAASAFSQABZ, XSAA V"
"XSCZSQ CAMPQYKZCH CA VSQ BNUIFS YKNUBZ, SB GCEZ R‘E. VCS DCGSASQS-"
"DSQBNUFISBBSFlAG, VKB KlZPHSW-DSQMKUQSA PVSQ VKB PASZCYS TKV. VKB"
"FSZRZS DSQMKUQSA CBZ RXKQ IATQKHZCBNU, KESQ ECSZSZ TSQMSHZS"
"BCNUSQUSCZ. SB XIQVS R‘E. MISQ VCS KEBCNUSQIAG VSQ HPYYIACHKZCPA"
"RXCBNUSA KYSQCHKACBNUSA TQKSBCVSAZSA IAV QIBBCBNUSA TQKSBCVSAZSA"
"DSQXSAVSZ."}; 
 * */

int main(int argc, char **argv)
{
 int zeichen = -1;
 int i, j, k;
 int menge[26] = {0};
 char codiert[] = {"VCS YPAPKFTUKESZCBNUS BIEBZCZIZCPA CBZ SCAS DSQESBBSQIAG VSB NKSBKQ—"
"KFGPQCZUYIB, VK SB YSUQ YPSGFCNUS BNUFISBBSF GCEZ. FSCVSQ HKAA YKA YCZ"
"VSQ UKSIMCGHSCZBKAKFWBS CYYSQ APNU VSA HFKQZSJZ SQYCZZSFA. YKA UKZ"
"KESQ KINU UCSQMISQ XSCZSQSAZXCNHFIAGSA, VCS VI HSAASAFSQABZ, XSAA V"
"XSCZSQ CAMPQYKZCH CA VSQ BNUIFS YKNUBZ, SB GCEZ R'E. VCS DCGSASQS-"
"DSQBNUFISBBSFlAG, VKB KIZPHSW-DSQMKUQSA PVSQ VKB PASZCYS TKV. VKB"
"FSZRZS DSQMKUQSA CBZ RXKQ IATQKHZCBNU, KESQ ECSZSZ TSQMSHZS"
"BCNUSQUSCZ. SB XIQVS R'E. MISQ VCS KEBCNUSQIAG VSQ HPYYIACHKZCPA"
"RXCBNUSA KYSQCHKACBNUSA TQKSBCVSAZSA IAV QIBBCBNUSA TQKSBCVSAZSA"
"DSQXSAVSZ."};

 char abc[29] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z', ' ', '|',
 '\''};
char cabc[29] = {'N','S','I','V','B','L','G','K','U','X','A','J','F','C','Z','O','R','Z','E','P','H','D','Y','W','M','T', ' ', 'U',
 '.'}; // Q

char ucd;
std::cout << "caesar test" << std::endl;

//std::string tst ="‘";

//std::cout << atoint(tst[0]) << "    lge= "  << tst.length() <<"\n";

std::cin >>k;

zeichen = strlen(codiert);

std::cout << "Textlaenge" <<  zeichen << std::endl << std::endl;

std::cout << "Haeufigkeitsanalyse Testalphabet" << std::endl; 
 

 for (i = 0; i < 26; i++)
  {
   for (j = 0; j < 26; j++)
    if(cabc[i] == abc[j])
     menge[j]++; 
  }   
 
for (i = 0; i < 26; i++)
{
 std::cout << abc[i] << " = " << menge[i] << std::endl;   
}   
std::cout << "--------------------" << std::endl; 

std::cout << "Haeufigkeitsanalyse" << std::endl; 
 

 for (i = 0; i < zeichen; i++)
  {
   for (j = 0; j < 26; j++)
    if(codiert[i] == abc[j])
     menge[j]++; 
  }   

 
std::cout << "--------------------" << std::endl; 
 
for (i = 0; i < 26; i++)
{
 std::cout << abc[i] << " = " << menge[i] << std::endl;   
}     

std::cout << "--------------------'" << std::endl;
std::cout << "Text:" << std::endl << codiert << std::endl << std::endl;
std::cout << "--------------------'" << std::endl; 
   
for (i = 0; i < zeichen; i++)
{
 for (j = 0; j < 29; j++)
  if(codiert[i] == abc[j])
   {
    ucd = cabc[j];   
    break;   
   }
   else ucd = codiert[i];
 
    std::cout << ucd;   
}   
std::cout << std::endl << std::endl;

 return 0;
}


pn
Gast 
30.03.2021, 08:36
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Mehrdimensionale Felder" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Verzweigungen, Schleifen und Felder in C++
Schreiben Sie das folgende C++-Programm „AusgabeGeradeZahlen“: Der Nutzer wird auffordert, eine Zahl zwischen 4 und 12 einzugeben. Wenn die eingegebene Zahl nicht zwischen 4 und 12 liegt, wird der Nutzer aufgefordert, diese Zahl erneut einzugeben....
Seite 2 [C++]von Ana448
15
1.156
12.12.2019, 19:40
Ana448
© 2004 - 2024 www.programmierer-forum.de | Communities | Impressum |