![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#11 | |
Inventar
![]() |
![]() Zitat:
Lösung für Konsolenanwendung am Beispiel für C: Code:
char eingabe[N]; int i=0; int j=0; eingabe[0]=' '; for(i=0;eingabe[i] != 'e' && eingabe[i] != 'E';i++) { for(j=0;j < i; j++) display eingabe[j] eingabe[i]=getchar(); clrscr(); }
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
|
![]() |
![]() |
![]() |
#12 |
Newbie
![]() Registriert seit: 22.09.2001
Beiträge: 5
|
![]() obiges codesnip funktioniert mit sicherheit nicht.
folgender code aber schon (nicht sauber, aber es wird reichen): Code:
#include <stdio.h> #define MAX 50 int main(void) { int i=0; char eingabe[MAX]; char c; while(1) { if((c=fgetc(stdin))==NULL) { fprintf(stderr,"%s","error reading from stdin"); exit(1); } if(c=='e'||c=='E') break; eingabe[i++]=c; } // kontrolle for(i=0;i<sizeof(eingabe);i++) { printf("%c",eingabe[i]); } return 0; } |
![]() |
![]() |
![]() |
#13 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() Geh postet ihm wer eine Loesung in
a) Smalltalk b) Cobol c) PL/1 ? Was anderes hat er nicht verdient. Wahrscheinlich hat er am Montag Abgabe und ist noch immer so blunzenfett, dass er hier nicht einmal eine ordentliche Frage posten, noch die Antworten verstehen kann.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
#14 |
Inventar
![]() |
![]() b)
Code:
........ Working-Storage Section. 05 zeichenkette occurs 9999 indexed by eing-i. 10 eingabe pic x(1). ....... Procedure Division. hauptprogramm section. display 'geben sie ihren numerischen zeichenkette ein' perform with test before varying eing-i from 1 by 1 until eingabe(eing-i) = 'e' accept eingabe(eing-i) from terminal if eingabe(eing-i) is numeric then display eingabe(eing-i) upon terminal else continue end-if end-perform move . end-section. exit.
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#15 |
Inventar
![]() Registriert seit: 24.09.2001
Beiträge: 7.335
|
![]() Grazie
![]()
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org . |
![]() |
![]() |
![]() |
#16 |
Elite
![]() |
![]() five exclamation marks, the sure sign of an insane mind.
Terry Pratchett, Reaper Man
____________________________________
Whoever built humanity left in a major design flaw: it was the tendency to bend at the knees. |
![]() |
![]() |
![]() |
#17 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() @exafish: ich würde eher sagen, dein codeausschnitt funktioniert nicht.
du verwendest hier eine etwas eigenartige methode, um einzelne zeichen einzulesen - liest ja mal alles von stdin ein und teilst es dann zeichenweise dem ausgabepuffer zu. leider hast du vergessen, den ausgabepuffe rmit ascii 0 abzuschließen. sizeof(eingabe) liefert daher einen zufallswert. solltest den ausgabepuffer mit '\0' initialisieren. besser ist imho. die lösung von pong. ist aber alles in allem ein lustiger thread ! ![]() fg -hannes ps: kann bei bedarf noch eine lösung in C# nachliefern. |
![]() |
![]() |
![]() |
#18 |
Inventar
![]() |
![]() Sag nix gegen mein cobol...
pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug Nicht klicken! Erstposteralarm/Beschwerde/Kummerkasten Verplattet |
![]() |
![]() |
![]() |
#19 |
Newbie
![]() Registriert seit: 22.09.2001
Beiträge: 5
|
![]() >@exafish: ich würde eher sagen, dein codeausschnitt funktioniert nicht.
@Biri: wundersamerweise laesst er sich compilieren und liefert korrekte ergebnisse. >du verwendest hier eine etwas eigenartige methode, um einzelne zeichen einzulesen - liest ja mal alles von stdin ein und teilst es dann zeichenweise dem ausgabepuffer zu. bitte den sourcecode genau ansehen und erst dann konkrete verbesserungen dazu abgeben. >leider hast du vergessen, den ausgabepuffe rmit ascii 0 abzuschließen. ja, richtig, da aber der ganze array ausgegeben wird(printf %c ->RTFM) und der c-string nicht weiterverarbeitet wird, spielt das keine rolle(ist eben wie oben erwaehnt schmutzig). >sizeof(eingabe) liefert daher einen zufallswert. dem ist nicht so. als rueckgabewert wird die groesse des arrays geliefert. wenn du darauf anspielst, dass somit unnoetigerweise der ganze array unabh. von der eingabelaenge am ende ausgegeben wird, stimmt das. >solltest den ausgabepuffer mit '\0' initialisieren. danke, das habe ich verschlafen. nicht initialisierter speicher fuehrt zu unerwartetem verhalten. >ist aber alles in allem ein lustiger thread ! das ist er! >ps: kann bei bedarf noch eine lösung in C# nachliefern. ich bitte darum, da du dich augenscheinlich mit programmieren beschaeftigst, wuerde mich jener interessieren, sowie als auch die C-version von dir, da ich meinen stil verbessern moechte. |
![]() |
![]() |
![]() |
#20 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() @exafish:
ich halte es wie gesagt in diesem fall besser, den ausgabestring zu initialisieren (mit Acsii 0) und statt sizeof dann strlen() zu verwenden - wenn man es auf die von dir beschriebene weise löst. ad. C#: sollte so gehen: PHP-Code:
![]() (zeit von win 3.11, wo man noch eigenen tcpip prozess starten musste) fg -hannes |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|