Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Arrays in C/C++ sind 0 basiert, d.h. das 1. Element ist array[0] usw. Wenn ein Array die Größe 5 hat, also 5 Elemente enthält, dann ist das letzte gültige Arrayelement array[4]!nein er gibt immer noch mehr als 5 zeichen aus und ignoriert nicht das 6te zeichen
char c[6];
c[0] = 'a';
c[1] = 'b';
c[2] = 'c';
c[3] = 'd';
c[4] = 'e';
c[5] = '\0'; // String terminieren
puts(c);
Laut C99 Standard und in C++ darf man in der main Funktion (und nur in der main Funktion) die return Anweisung weglassen.Und nochmal ganz kurz zu return, er gibt immer 0 als rückgabewert raus wenn return undefiniert ist,r ichtig? es muss nicht unbedingt return 0 sein
#include <iostream>
//#include "poly2.h"
using namespace std;
int chartyp1(char c)
{
if (c-'0'>=0 && c-'0' <=9)
return (c-'0');
else if (c-'A' >=0 && c-'A' <=26)
return(c-'A'+10);
else return -1; ich meine diesen Fehler, warum funktioniert das trotzdem(weil return nicht definiert ist?
}
char chartyp2(int value)
{
if (value >= 10)
return(value-10+'A');
else
return(value+'0');
}
void littletobig(char* c)
{
while (*c!=0)
{
if (*c >='a' && *c <= 'z')
*c = *c -'a' + 'A';
++c;
}
}
int Dezipart1(char* c, int basis)
{
char* beginn = c;
int b=1;
int erg=0;
while( *c!=0)
++c;
do
{
--c;
erg = erg+ chartyp1(*c)*b;
b=b*basis;
}while (c != beginn);
return erg;
}
void dezipart2(char* outbuffer, int value, int basis)
{
char btwPuffer[32];
int buffPos=0;
int erg;
while (value != 0)
{
erg = value % basis;
value = value / basis;
btwPuffer[buffPos]=chartyp2(erg);
++buffPos;
}
for (int i=buffPos-1; i>=0; i--)
{
*outbuffer=btwPuffer[i];
++outbuffer;
}
*outbuffer=0;
}
bool pruefText(char *c )
{
while (*c !=0 ) {
if ((*c >= '0' && *c <='9') || (*c >= 'A' && *c <= 'Z'))
++c;
else
return false;
}
return true;
}
int main ()
{
char c[32];
char co[32];
int basStart, basZiel, i;
i=c[32];
do
{
cout << "Geben Sie eine beliebige Zahl ein!" << endl << "Oder beenden Sie das Programm mit einer negativen Zahl! " << endl;
cin >> c;
littletobig(c);
if (pruefText(c))
{
cout << "Geben Sie die Basis ihrer Zahl ein! "<< endl;
cin >> basStart;
if (basStart<2 || basStart>36){
cout<< "Basis muss zwischen 2 und 36 liegen!" <<endl;
system("pause");
return 0;
}
cout << "Geben Sie nun die neue Basis ein! "<< endl;
cin >> basZiel;
if (basZiel<2 || basZiel>36){
cout<< "Basis muss zwischen 2 und 36 liegen!" <<endl;
system("pause");
return 1;
}
int erg=Dezipart1(c,basStart);
// cout << "Ergebnis: " << erg << endl;
dezipart2(co,erg,basZiel);
cout << "Die Zahl in der neuen Basis lautet: " << co << endl;
system("pause");
}
else
{
cout << "Durch diese Eingabe wird das Programm automatisch beendet!" << endl;
system("pause");
return 1;
}
}
while(c!=0);
return 0;
}
Warum soll "es" nicht gehen? Was meinst du mit "es"? Das es kompiliert werden sollte ist klar, oder? Meinst du das das Programm nicht abstürzt? Oder wird trotz deines Programmierfehlers richtig gerechnet?Nein, an sich ist das kein Fehler, bloß soviel ich weiss damit man einen 0 Rückgabewert erhält schreibt man return 0 und ich habe ausversehen return -1 hingeschrieben, nun interessiert es mich warum es trotzdem geht!
bool pruefText(char *c )
{
while (*c !=0 ) {
if ((*c >= '0' && *c <='9') || (*c >= 'A' && *c <= 'Z'))
++c;
else
return false;
}
return true;
int main ()
{
char c[32];
char co[32];
int basStart, basZiel, i;
i=c[32];
do
{
cout << "Geben Sie eine beliebige Zahl ein!" << endl << "Oder beenden Sie das Programm mit einer negativen Zahl! " << endl;
cin >> c;
littletobig(c);
if(*c >= '0' && *c <='9')
{
cout << "Geben Sie die Basis ihrer Zahl ein! "<< endl;
cin >> basStart;
if (basStart<2 || basStart>36){
cout<< "Basis muss zwischen 2 und 36 liegen!" <<endl;
system("pause");
return 0;
}
cout << "Geben Sie nun die neue Basis ein! "<< endl;
cin >> basZiel;
if (basZiel<2 || basZiel>36){
cout<< "Basis muss zwischen 2 und 36 liegen!" <<endl;
system("pause");
return 1;
}
int erg=Dezipart1(c,basStart);
// cout << "Ergebnis: " << erg << endl;
dezipart2(co,erg,basZiel);
cout << "Die Zahl in der neuen Basis lautet: " << co << endl;
system("pause");
}
else if(*c >= 'A' && *c <= 'Z')
{
cout << "Geben Sie die Basis ihrer Zahl ein! "<< endl;
cin >> basStart;
if (basStart<2 || basStart>36){
cout<< "Basis muss zwischen 2 und 36 liegen!" <<endl;
system("pause");
return 0;
}
cout << "Geben Sie nun die neue Basis ein! "<< endl;
cin >> basZiel;
if (basZiel<2 || basZiel>36){
cout<< "Basis muss zwischen 2 und 36 liegen!" <<endl;
system("pause");
return 1;
}
int erg=Dezipart1(c,basStart);
// cout << "Ergebnis: " << erg << endl;
dezipart2(co,erg,basZiel);
cout << "Die Zahl in der neuen Basis lautet: " << co << endl;
system("pause");
}
else
{
cout << "Durch diese Eingabe wird das Programm automatisch beendet!" << endl;
system("pause");
return 1;
}
}
while(c!=0);
return 0;
}
Für welche meiner Fragen ist dieses "jap" denn jetzt gedacht? Evtl. solltest du mal zitieren.
Nein. Eine Funktion muss in jedem Fall einen Wert zurückgeben. Einen Rückgabewert gibt man mit einer return-Anweisung zurück. (einzige Ausnahme: main())habe es so verstanden, wenn return keinen Rückgabewert abgibt, dann hast du halt 0 als Rückgabewert
Wieso ist -1 kein Rückgabewert? Wenn du "return -1" schreibst ist -1 der Rückgabewert. Wovon redest du?da -1 in dem Falle ja auch kein Rückgabewert ist
Ja. Jede Funktion ist zur Modularisierung eines Programmes gedacht. Theoretisch könnte man auch alles in die main Funktion schreiben und statt Schleifen gotos verwenden.ich habe einmal versuchsweise weise die boolfunktion durch eine wenn dann funktion im Main ersetzt und sah keinen unterschied. Das einzige Problem darin bestand das das int main() unnötig groß war und ich halt sau viele zeilen hatte, darum denk ich das man das ganze kürzer gefasst mit der bool funktion macht. Liege ich richtig?
Du hast den Aufruf der pruefText Funktion (wo eine Schleife drin ist) in dem Programm aus Beitrag 25 in Zeile 101jetzt bin ich irritiert, durch while!=0 prüft er doch von links bis rechts mit ++c bis zum stringende, er prüft erst das erste, dann kommt ++c und er rückt dann eine weiter nacht rechts und prüft wieder bis stringende
if (pruefText(c)) // Zeile 101
if (*c >= '0' && *c <='9')