Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C (C89 und C99) ::  Längste Zeile ausgeben...     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
XDVD
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 1932
Beitrag XDVD Mitglied 21:58:30 11.03.2010   Titel:   Längste Zeile ausgeben...            Zitieren

Hallo,

ich bin gerade dabei "The C Programming Language" durchzuarbeiten und hänge bei einer der ersten Übungen (1-16):
Man soll ein Programm erstellen, das die längste Zeile aus dem Standard-Input ausgeben soll. Im Beispiel davor im Buch wird ein Char-Array mit einer Länge von 1000 angelegt, in den dann mit getchar() nacheinander alle Zeichen einer Zeile eingelesen werden. In der Aufgabe wird jetzt allerdings verlangt, dass beliebig lange Zeilen eingelesen werden sollen.

Mir fällt gerade mit den Mitteln, die bis dahin gegeben sind (Schleifen, Funktionen, Char-Arrays) einfach kein Weg ein um das umzusetzen... Man könnte zwar den Input einmal nach der größten Zeile abgrasen und dann - zumindest mit gcc - einen Array mit der herausgefundenen Länge erstellen, aber dann wäre der Input ja weg und ich könnte nicht mehr diesen Array mit der längsten Länge nicht mehr befüllen...

Hat jemand eine Idee? Oder "The C Answer Book" :p ?
Danke schonmal,
Michael
namespace invader
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.12.2008
Beiträge: 365
Beitrag namespace invader Mitglied 22:34:40 11.03.2010   Titel:              Zitieren

Das geht gar nicht. Jedenfalls nicht ohne dynamischen Speicher (malloc...), aber die Aufgabe ist ja auch nur:
Zitat:
Revise the main routine of the longest-line program so it will correctly print the length of arbitrary long input lines, and as much as possible of the text.

Also nur die Länge der längsten Zeile ausgeben, nicht die komplette längste Zeile selber.

Edit: Ok, es würde vielleicht doch gehen, wenn man das Einlesen als rekursive Funktion macht die den Stack als dynamischen Speicher missbraucht, also immer, wenn der Zeilenpuffer zu knapp wird, einen neuen rekursiven Ausruf macht...


Zuletzt bearbeitet von namespace invader am 22:41:21 11.03.2010, insgesamt 1-mal bearbeitet
XDVD
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 1932
Beitrag XDVD Mitglied 01:21:19 15.03.2010   Titel:              Zitieren

Ah, machmal hilft es die Sachen etwas genauer zu lesen ... :D

Danke für den Hinweis!

Grüße,
Michael
C/C++ Forum :: C (C89 und C99) ::  Längste Zeile ausgeben...   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.