U
also entweder, es war wirklich c, oder:
sonicknight schrieb:
#include <stdio.h> //unnötig
#include <stdlib.h> //printf (), scanf ()
#include <limits.h> //unnötig
Also:
#include <cstdlib> //für C++, für C wäre deine Variante richtig
sonicknight schrieb:
int main()
{
//Variablen
char Text [151]; //ok...
int Zeichen [256], i; //hmm... würde signed int nehmen und i noch nicht hier deklarieren
//Ausgabe auf Bildschirm
do
{
printf ("========================\n");
printf (":: ::\n");
printf (":: Zeichenzaehler ::\n");
printf (":: ::\n");
printf ("========================\n");
printf ("\n");
printf ("Bitte geben Sie den Text ein <max. 150 Zeichen>, dessen Zeichen gezaehlt werden\n");
printf("sollen:"), scanf("%c", &Zeichen);
//was willst du da? lt msdn: c == "Single-byte character with scanf", nimm halt d
// for (i=0; i<=256; i++)
for (size_t i=0; i != 255; ++i)
{
scanf("%f", &Text[i]); /*f == "double", nimm halt
scanf("%150s", Text, 151);*/
}
printf ("Anzahl der Zeichen:\n"), Text;
return 0; //das darf hier nicht hin, weil das programm hier sonst immer abgebrochen wird
}while (); //Hier die Ja / Nein Bedingung um das Programm zu beenden
// oder zu wiederholen
return 0; //kannst du auch weglassen
}
//die header waren 1. veraltet und 2. hast du sie gar ne gebraucht
#include <iostream>
int main()
{
std::string eingabe; //geht auch mit char aber string ist einfacher denke ich - vor allem sicherer bei der eingabe
size_t Zeichen[255]; /*1. warum 256? eigtl könnte man ja sehr viel weniger nehmen, aber ich nehm einfach ma nur 255, weil 0 eh nicht vorkommen kann
2. in C++ nimmt man eigtl immer size_t zum zählen (ist nen signed int)*/
printf ("========================\n");
printf (":: ::\n");
printf (":: Zeichenzaehler ::\n");
printf (":: ::\n");
printf ("========================\n");
printf ("\n");
//was hältst du von:
std::cout << "==================================\n"
<< "==========ZEICHEN-ZAEHLER=========\n"
<< "==================================\n" << std::endl;
char again ('y');
do
{
std::cout << "Bitte geben Sie den Text ein, dessen Zeichen gezaehlt werden sollen. Beachten Sie dabei, dass nur die ersten 150 Zeichen berücksichtigt werden" << std::endl;
//das geht auch direkt
std::cin >> eingabe;
char temp[151];
strcpy_s (temp, 151, eingabe.substr (1, 150).c_str ()); //151 weil das meineswissen das terminierungsbyte-einschließt
while (*temp != '\0') //kannst auch != 0 schreiben, ist das gleiche
{
++zeichen[*temp++ -1];//weil ich ja nur 255 hab noch die -1
};
for (size_t i (0); i != 255; ++i)
{
std::cout << i << ": " << zeichen[i] << std::endl;
}
std::cout << "noch mal? [y/n]" << std::endl;
std::cin >> again;
} while (again == 'y');
}
bb
edit: schade, zu langsam ^^