Zum Inhalt springen

Einfaches Programm c ! Bitte um Hilfe


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe als Aufgabe bekommen ein einfaches C Programm zu schreiben ( nicht c++! ). Nun komme ich aber nicht wirklich weiter. Ich hoffe es kann mir jemand helfen.

1. Aufgabe:

Innerhalb von main() wird ein text eingegeben. Der text wird an eine funktion übergeben. Die funktion soll die textlänge ermitteln und anzeigen.

Nun habe ich das ganze so gemacht, was aber falsch ist, da wir keine arays nutzen sollen.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(int argc, char *argv[])

{

char satz[80];

printf("\nBitte geben sie einen Satz ein\n");

gets(satz);

printf("\n%s",satz);

printf("\nDer satz besteht aus %i Zeichen.",strlen(satz));

system("PAUSE");

return 0;

}

Die 2. aufgabe ist wie in der 1. aufgabe nur das die textöänge an main() zurückgegeben und auch dort angezeigt werden soll.

Und die 3. aufgabe ist innerhalb einer funktion wird ein text eingeben. Dieser text wird an main() zurückgegeben und hier angezeigt.

Kann mir bei diesen 3 Aufgaben irgendjemand helfen ?

Geschrieben

Mein Problem ist ganz einfach, dass ich nicht wirklich den "befehl" weis, den ich fuer die Funktion brauche. Ich hab versucht über google was zu finden aber dort hab ich auch keine Hilfe gefunden.

Geschrieben

hallo luii,

um das problem zu begreifen, ist das alles etwas sehr schwammig, was du schreibst.

-Zitat-

1. Aufgabe:

Innerhalb von main() wird ein text eingegeben. Der text wird an eine funktion übergeben. Die funktion soll die textlänge ermitteln und anzeigen.

-/Zitat-

in deiner lösung wird in main() ein text von der standardeingabe in ein zuvor definiertes character-array eingelesen. der pointer auf das array wird an eine funktion (strlen()) übergeben, die die anzahl der zeichen zurück liefert. der rückgabewert (die anzahl der zeichen) wird in main() mit printf() ausgegeben.

-Zitat-

Die 2. aufgabe ist wie in der 1. aufgabe nur das die textöänge an main() zurückgegeben und auch dort angezeigt werden soll.

-/Zitat-

wo ist der unterschied?

-Zitat-

Und die 3. aufgabe ist innerhalb einer funktion wird ein text eingeben. Dieser text wird an main() zurückgegeben und hier angezeigt.

-/Zitat-

falls ich das richtig verstanden habe, wäre das eine möglichkeit:

du definierst (wie gehabt) in main() ein char-array und gibst deiner zu definierenden funktion den pointer auf dieses array als argument mit, sodass in dieser funktion per gets() in dieses array hineinkopiert werden kann.

/* code */

/* ..*/

char* myGets(char * cstr)

{

printf("Bitte geben sie einen Satz ein: \t");

gets(cstr);

return cstr;

}

/* ..*/

int main(void)

{

char satz[80];

printf("\nDer satz \"%s\" besteht aus %i Zeichen.\n", myGets(satz), strlen(satz));

return 0;

}

/* end code */

hth

ms

Geschrieben

ups, hatte seiteneffekt nicht berücksichtigt; hier der korrekte vorschlag:

char* myGets(char * cstr)

{

printf("Bitte geben sie einen Satz ein: \t");

gets(cstr);

sprintf(cstr,"Der satz besteht aus %i Zeichen.", strlen(cstr));

return cstr;

}

/* ..*/

int main(void)

{

char satz[80];

printf("%s\n", myGets(satz));

return 0;

}

Geschrieben

ich glaube mal nicht das hier die funktion strlen benutzt werden darf, wenn das eine aufgabe aus dem unterricht ist.

ich verstehe es so das von aufgabe 1 eine eigen funktion definiert werden muss, welche den string bearbeite und die zeichen darin zählt.

es geht bei den aufgaben darum, dass das prinzp der funktionsparameter verstanden wird.

wie empfängt eine fumktion werte

wie kann ich werte zurückgeben

so seh ich das.

berichtigt mich wenn ich was falsch verstehe.

Geschrieben

wenn strlen() nicht benutzt werden soll,formuliere doch in der funktion einfach eine schleife, die das zählen der zeichen übernimmt. ersetze strlen() durch die variable, die durch die vorangegangene schleife die anzahl der zeichen in dem c-string enthält. einen c-string kannst du ganz einfach durchiterieren und mitzählen bis ein zeichen mit dem wert 0 kommt ( char ende=0; ) - dann hast du in der zählvariable die anzahl der zeichen im string (vorausgesetzt, die zählvariable wurde korrekt initialisiert).

was das andere angeht, scheine ich nicht zu verstehen, worums überhaupt geht. am besten, du postest deine aufgabe direkt hier herein.

Geschrieben
wenn strlen() nicht benutzt werden soll,formuliere doch in der funktion einfach eine schleife, die das zählen der zeichen übernimmt. ersetze strlen() durch die variable, die durch die vorangegangene schleife die anzahl der zeichen in dem c-string enthält. einen c-string kannst du ganz einfach durchiterieren und mitzählen bis ein zeichen mit dem wert 0 kommt ( char ende=0; ) - dann hast du in der zählvariable die anzahl der zeichen im string (vorausgesetzt, die zählvariable wurde korrekt initialisiert).

was das andere angeht, scheine ich nicht zu verstehen, worums überhaupt geht. am besten, du postest deine aufgabe direkt hier herein.

es geht doch nicht um mich. ich kann das. es geht um den, der den thread eröffnet hat.

da hast du glaub ich was falsch verstanden.

ich wollte damit nur sagen, dass ich die aufgaben die OBEN aufgeführt sind so verstanden habe.

Geschrieben

da geb ich dir recht.

aber ich glaube schon das es so ist wie ich schrieb. weil das haben wir auch gemacht in ae. einfach diese funktionen nachprogrammieren um zu verstehen was da passiert. denn erst dann kann ich sie auch richtig anwenden.

Geschrieben

Ok, danke erstmal. Eine andere Aufgabenstellung als die oben habe ich auch nicht auf meinem Blatt stehen. Wir machen C nun erst seit ein paar Wochen und ich weis wirklich nicht wie ich an die Aufgaben gehen soll.

Entweder unser Lehrer erklaert schlecht oder ich bin einfach zu blöd dafür.

Wenn ihr es könnt und es nicht schwer ist, könnt ihr mir nicht schnell den code für das bzw die Programme geben ?

Ich werd den Lehrer dann nochmal drauf ansprechen und ihn bitten die Sachen nocheinmal durchzusprechen.

Geschrieben
Ok, danke erstmal. Eine andere Aufgabenstellung als die oben habe ich auch nicht auf meinem Blatt stehen. Wir machen C nun erst seit ein paar Wochen und ich weis wirklich nicht wie ich an die Aufgaben gehen soll.

Entweder unser Lehrer erklaert schlecht oder ich bin einfach zu blöd dafür.

Wenn ihr es könnt und es nicht schwer ist, könnt ihr mir nicht schnell den code für das bzw die Programme geben ?

Ich werd den Lehrer dann nochmal drauf ansprechen und ihn bitten die Sachen nocheinmal durchzusprechen.

du wirst hier keine fertigen programm bekommen.

wichtig ist das du weisst was du machen willst und hier dein problem konkretisierst. dein lehrer wird nicht schlecht erklären, er wird nur etwas eigeninitiative erwarten.

es geht letztendlich nicht um die programmiersprache, als vielmehr um die logik die dahinter steckt.

ihr werdet doch wohl paps oder dtruktogramme besprochen haben, dann mach dir dazu erst mal ne logik. denn erst wenn du weisst wie es aussehen soll kannst du das auch in einen prgrammiersprache umsetzten.

1. Aufgabe:

Innerhalb von main() wird ein text eingegeben. Der text wird an eine funktion übergeben. Die funktion soll die textlänge ermitteln und anzeigen.

vieleicht lösen wir erst mal aufgabe 1:

in aufgabe 1 soll ein string eingelesen werden. dieser soll an eine funktion übergeben werden. in der funktion soll die länge ermittelt werden UND auch angezeigt werden(alles in der funktion). das macht die strlen funtion definitiv nicht, deshalb ist dein ansatz falsch.

du musst eine funtion definieren, welche einen string (char[] Array) empfängt, dieses array durch suchts du bis du das ende findest(ein char array endet immer mitt dem wer '\0').

danch gibst du einfach den wert der zähl variable-1 aus.

so jetzt google mal nach wie man werte an funktionen übergiebt und dann versuchs noch mal und poste deine ergebnisse. hier im forum findet man auch sehr viel dazu, benutz mal die erweiterte suche.

grüße

pit

Geschrieben

vorausgesetzt, man hätte hier eine klare aufgabenstellung, würde ich gerne hilfestellung geben.

auch wenn ich weiter oben konkreten code gepostet habe, wäre mit einer komplettlösung hier eigentlich keinem geholfen.

wenn es ein teil dieser aufgabe ist, zeichen in einem c-string zu zählen, dann implementiere doch einmal eine solche funktion (hinweise dazu sind weiter oben). eine funktion, die die länge eines strings ermitteln soll (analog zu strlen()), braucht als argument zb. einen zeiger auf diesen string (das ist im obigen fall der bezeichner des char-arrays) und als rückgabewert zB einen integer; dies ist vermutl. 2) und die signatur/prototyp würde zB so aussehen:

int myStrlen(const char *);

zur 3) soll diese funktion vermutlich derart erweitert werden, dass sie auch für das einlesen von der standardeingabe zuständig ist und anstelle der anzahl der zeichen eine zeichenkette mit dem ausgabetext beinhaltet. hierzu siehe mein codebeispiel oben. bei dieser variante wird das char-array in main() definiert und der zeiger dieses arrays wird der funktion übergeben, sodass diese auf den ihnhalt zugreifen kann (modifizieren in dem fall). eigentlich müsste diese funktion garnichts zurück geben, da mit dem übergeben der _referenz_ der inhalt, der durch das char-array bezeichnet ist, direkt manipulierbar ist (call by reference); mögliche signatur:

void myStrlen(const char*);

in dem fall würde beim aufruf aus main() heraus als argument das deklarierte array angegeben werden. in der funktion würde dieses array dann mit dem ergebnistext (der vermutlich in main() ausgegeben werden soll) beschrieben werden (siehe auch hierzu codebeisp. oben).

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...