WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Brauche dringent hilfe!!!!!!!!!!!11111 (http://www.wcm.at/forum/showthread.php?t=134391)

Markus0011 15.05.2004 17:10

Brauche dringent hilfe!!!!!!!!!!!11111
 
Hi Leute!
Ich bräuchte hilfe zu folgender Problemstellung:
Es sollen n Zahlen eingelesen werden und bei der Eingabe von e soll die Eingabe stoppen und die eigegebenen Werte in ein Feld speichern und ausgeben.

Sourcetext wäre hilfreich.

Danke!

wbendl 15.05.2004 17:16

Hi!

Falls nicht zufällig ein Hellseher im Forum ist, wird wohl keine brauchbare Antwort kommen.

Zumindest solltest du sagen, von welcher Sprache die Rede ist. Eine genauere Beschreibung der Problemstellung wäre auch recht hilfreich.

mfg


WB

heli2sky 15.05.2004 17:44

Re: Brauche dringent hilfe!!!!!!!!!!!11111
 
Zitat:

Original geschrieben von Markus0011
Es sollen n Zahlen eingelesen werden und bei der Eingabe von e soll die Eingabe stoppen und die eigegebenen Werte in ein Feld speichern und ausgeben.
Das ist wirklich sehr schwammig formuliert! n Zahlen werden eingelesen - woher? Muss man die eingeben? Aus einer Datei? Bei der eingabe von e (wenn man "e" am Keyboard drückt, oder wie? Oder wo soll man das "e" eingeben?) soll die Eingabe stoppen... :confused: :confused: :confused:

Welche Sprache ist natürlich das Wichtigste, was du uns sagen solltest ;)

Markus0011 15.05.2004 18:02

Die Sprache ist c++
 
Ja es stimmt die Angabe ist sehr schwammig!
Also:

Es sollen n Zahlen eingebeben werden mit dem Keyboard.
Bei der Eingabe des Buchstaben e soll die Eingabe Ausgegeben werden!

LeComte 15.05.2004 18:44

Is net C++, aber der Algorithmus sollte verständlich sein:

const n=100; {Maximal mögliche Eingaben}
var a,c:integer;
w:array[1..n] of integer; {Feld, auf dem die Eingaben gespeichert werden}
{Maximalgröße der eingegebenen Zahl ca 32000}
st:string; {Dient zur Aufnahme der Eingabe}

begin
a:=1;
repeat
write(a,'. Wert eingeben');
readln(st);
val(st,w[a],c); {Transformiert die Zeichenkette st in einen Wert, sofern
eine sinnvolle (numerische) Eingabe erfolgt ist}
if c = 0 then inc(a); {c ist null, wenn eine numerische Eingabe erfolgte
in diesem Falle wird die Zählvariable erhöht}
until (a=100) or (st='e'); {Schleifenende, wenn maximale Eingaben erreicht
sind oder "e" eingegeben wurde}
for c:=1 to a do writeln(w[c]); {Gibt die eingegebenen Zahlen aus}
end.

heli2sky 15.05.2004 18:49

Mit C++ kann ich dir zwar leider nicht helfen, aber ich bezweifle, dass das nach der Beschreibung irgendwer anderer kann...

Fang mit der Erklärung von 0 an - etwa so: Ich habe/brauche ein Textfeld, einen Button. In das Textfeld soll der User Zahlen/Text (e) eingeben können, die bei Klick auf den Button übernommen und (wo?) gespeichert werden. Wenn der User "e" in das Textfeld schreibt und auf den Button klickt, sollen die gespeicherten Werte (wieder: wo?) ausgegeben werden.
Mein Problem ist, dass ich nicht weiß, wie man ein Textfeld erstellt, einen Button erstellt, die Werte aus dem Textfeld auslesen kann, wie ich die Werte erst dann ausgebe, wenn "e" eingegeben wurde, usw., usw...

Willst du, dass wir dir das komplette Programm schreiben? ;)

Und immer daran denken: Je genauer die Frage, desto besser die Antwort ;)

Viel Glück mit deinem Problem.

edit: Ok, bissl zu spät... anscheinend bin ich etwas begriffsstützig und die Frage war doch nicht so unklar... egel :rolleyes: :D

werner_q 15.05.2004 20:46

Gibt's eigentlich auch Foren für Schriftsteller, wo dann einer postet: "Heiy Leutz, ich brauch dringent oire Hilffe !! Ich musss 'nen Roman schrieben über so eine Tuss, die trifft einen, wo sie sich verlieben tut und dann Happy Änd wär coool - ok, kann mir einer helfen, Danke !!!"

Klar, wir haben alle mal programmieren gelernt (viele von uns), aber das WCM-Forum wird trotzdem immmer tiefer ...

Markus0011 15.05.2004 21:03

Ich versteh ur net was su mit deinen artikel erreichen willst oder meinst?
Es gibt eben Leute die erst Programmieren lenen müssen!

werner_q 15.05.2004 21:56

Zitat:

Original geschrieben von Markus0011
Ich versteh ur net was su mit deinen artikel erreichen willst oder meinst?
Es gibt eben Leute die erst Programmieren lenen müssen!

Entweder war das ein krasser Fall von Gegen-Ironie, oder Du machst es mir echt leicht ...

khamul 15.05.2004 22:34

Re: Brauche dringent hilfe!!!!!!!!!!!11111
 
Zitat:

Original geschrieben von Markus0011
Brauche dringent hilfe!!!!!!!!!!!11111
Zitat:

Original geschrieben von Markus0011
Ich versteh ur net was su mit deinen artikel erreichen willst oder meinst?
Es gibt eben Leute die erst Programmieren lenen müssen!

Aber scheinbar müssen die Leute nicht nur das Programmieren, sondern auch das Rechtschreiben erlernen.
Tut mir Leid, aber bei deinem Problem kann ich Dir nicht weiterhelfen.

mfg khamul

pong 16.05.2004 08:45

Zitat:

Ja es stimmt die Angabe ist sehr schwammig!
Also:

Es sollen n Zahlen eingebeben werden mit dem Keyboard.
Bei der Eingabe des Buchstaben e soll die Eingabe Ausgegeben werden!
Dann frag doch einfach genauer nach, denn normalerweise sind Aufgaben da, um einen gelernten Stoff zu festigen, sprich du solltest die Mittel, welche du zur Lösung benötigst bereits erlernt haben


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();
}

pong

exafish 16.05.2004 12:06

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;
}

das sollte vorerst helfen...

_m3 16.05.2004 15:36

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.

pong 16.05.2004 15:48

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.

pong

_m3 16.05.2004 15:57

Grazie :D

Who-T 16.05.2004 16:13

five exclamation marks, the sure sign of an insane mind.

Terry Pratchett, Reaper Man

Biri 16.05.2004 16:31

@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 ! :lol:

fg
-hannes

ps: kann bei bedarf noch eine lösung in C# nachliefern.

pong 16.05.2004 17:04

Sag nix gegen mein cobol...

pong

exafish 16.05.2004 20:58

>@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.

Biri 16.05.2004 21:44

@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:

using System;
using System.Text;

namespace ConsoleApplication1
{
    class 
Class1
    
{
        [
STAThread]
        static 
void Main(string[] args)
        {
            
StringBuilder output = new StringBuilder();
            
char zeichen ' ';

            while (
char.ToUpper(zeichen) != 'E')
            {
                
zeichen = (charConsole.Read ();
                
output.Append(zeichen);
            }

            
Console.WriteLine(output.ToString());
            
Console.ReadLine();  // warten
        
}
    }


ps: find das ganze deshalb lustig, weil ich die programmieraufgaben auch immer am letzten tag gemacht hab - damals war internet+foren aber noch nicht gerade "verbreitet". :)
(zeit von win 3.11, wo man noch eigenen tcpip prozess starten musste)

fg
-hannes


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag