Aufgabe 1: Schreiben Sie ein C++ Programm, das eine Zeile einliest

Aufgabe 1:
Schreiben Sie ein C++ Programm, das eine Zeile einliest und jeden Buchstaben
testet, ob es der Buchstabe a ist. Wenn der Buchstabe a auftaucht, soll folgender
Text ausgegeben werden: „Buchstabe a gefunden“
#include <iostream>
int main() {
std::string str;
_______ << "Bitte geben Sie eine Zeile ein! >";
getline(_______, str);
for (int i = ________; i < str________; ______) {
if (__________ 'a') {
______ << "Buchstabe a gefunden " << _____
}
}
return 0;
}
Lösung:
#include <iostream>
int main() {
std::string str;
std::cout << "Bitte geben Sie eine Zeile ein! >";
getline(std::cin, str);
for (int i = 0; i < str.length(); i++) {
if (str.at(i) == 'a') {
std::cout << "Buchstabe a gefunden " <<
std::endl;
}
}
return 0;
}
Aufgabe 2:
Schreiben Sie ein C++ Programm, das eine deutsche Wortliste aus der Datei
wortliste.txt (utf-8Datei, pro Zeile ein Wort) liest und die einzelnen Wörter testet, ob
sie ein Palindrom sind. Schreiben Sie eine Funktion is_pali, die wahr zurückliefert,
wenn das Argument ein Palindrom ist. Geben Sie jedes eingelesene Wort aus und
falls das Wort ein Palindrom ist, dann geben Sie auch die Meldung „ ist ein
Palindrom“ aus.
#include <iostream>
#include <fstream>
#include <locale>
using _________
_________; //bitte denken
//Funktion zum Testen, ob w ein Palindrom ist
_______ is_pali(wstring w) {
_______ is_palindr = true;
int endIndex = _________;
for (________; ________; _________) {
//Vergleich vorne hinten
if (w[i] ____ w[__________]) {
is_palindr = ________;
}
}
return is_palindr;
}
int main() {
______ word; //Deklaration Variable mit Datentyp
______ inputFS; //Deklaration Filehandle mit Datentyp
//Locale besorgen und einstellen
setlocale(______, ________);
//Kanal zum Lesen öffnen
inputFS.______("wortliste.txt");
if (______) { //Test, ob Fileöffnen Fehler gemeldet hat
_____ << L"Fehler Dateioeffnen!" << endl; // auf
Fehlerkanal
______ << L"Aufruf" << "'wortliste.txt'" << L"=" <<
endl; // auf Fehlerkanal
return 1; //Rest wird nicht mehr ausgeführt
}
//Kanal einfärben
inputFS.________(locale(________));
//Einlesen eines Wortes aus der Datei
while (_________ >> word) {
wcout << L"Gelesenes Wort=" << word << endl;
//Aufruf und Test mit dem Wort word und der Funktion
is_pali
if (_________) {
wcout << L" ist ein Palindrom";
}
wcout << endl;
}
inputFS._______; //Kanal schliessen
}
Lösung:
#include <iostream>
#include <fstream>
#include <locale>
using namespace std; //bitte denken
//Funktion zum Testen, ob w ein Palindrom ist
bool is_pali(wstring w) {
bool is_palindr = true;
int endIndex = w.length() - 1;
for (int i = 0; i < endIndex; i++) { //Vergleich vorne
hinten
if (w[i] != w[endIndex-i]) {
is_palindr = false;
}
}
return is_palindr;
}
//Main
int main() {
wstring word; //Deklaration Variable mit Datentyp
wifstream inputFS; //Deklaration Filehandle mit Datentyp
//Locale besorgen und einstellen
setlocale(LC_ALL, "de_DE.utf-8");
//Kanal zum Lesen öffnen
inputFS.open("wortliste.txt");
if (!inputFS) { //Test, ob Fileöffnen Fehler gemeldet hat
wcerr << L"Fehler Dateioeffnen!" << endl; // auf
Fehlerkanal
wcerr << L"Aufruf" << "'wortliste.txt'" << L"=" <<
endl; // auf Fehlerkanal
return 1; //Rest wird nicht mehr ausgeführt
}
//Kanal einfärben
inputFS.imbue(locale("de_DE.UTF-8"));
//Einlesen eines Wortes aus der Datei
while (inputFS >> word) {
wcout << L"Gelesenes Wort=" << word << endl;
//Aufruf und Test mit dem Wort word und der Funktion
is_pali
if (is_pali(word)) {
wcout << L" ist ein Palindrom";
}
wcout << endl;
}
inputFS.close(); //Kanal schliessen
}