Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Arrays einlesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
28.09.2003, 23:24 Uhr
~DieRuhevordemSturm
Gast


Hi ho :-)

kann mir jmd helfen ? wie mach ich es das ich eun Array hinternanderweg auf einer Zeile einlese ? Also das das Programm am ende sozusagen dies macht



C++:
short Zahl[1];

cin>>  Zahl[0]  Zahl[1];  //  15
cout<< Zahl[1];           // 5


thx im vorraus

edit-- Pablo: [ cpp ] tags benutzt --

Dieser Post wurde am 28.09.2003 um 23:29 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.09.2003, 23:53 Uhr
Pablo
Supertux
(Operator)


1. Wenn du Zahl[] als short Zahl[1] deklarierst, dann kannst du nicht auh Zahl[1] zugreifen, also ist cout << Zahl[1]; ungültig.

2. Was bedeutet // 15 und // 5 ???
Soll das etwas heißen, dass du 15 eingibst und dass Zahl[ i ] die verschiedene Ziffern speichern muss?

Da sgeht jedenfalls nicht so, du musst dann die Eingabe in einem char* oder string und die Zeichen einzeln lesen.

Du musst dann so machen:

C++:
#include <iostream>
#include <string>

int main()
{
        std::string a;
        std::cin >> a;
        int* zahl = new int[a.size()];
        for(int i=0; i<a.size(); ++i)
                zahl[i] = ((int) a[i])-48;

        for(int j=0; j<a.size(); ++j)
                std::cout << "zahl[" << j << "] = " << zahl[j] << std::endl;

        delete [] zahl;

}



--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.09.2003, 00:52 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
Pablo Yanez Trujillo postete

C++:
...
                zahl[i] = ((int) a[i])-48;
...

[/i]

Gemeint ist sicherlich

C++:
...
                zahl[i] = ((int) a[i])-'0';
...


Was ich bis heut nicht verstehe, daß es eine Menge Leute wie Pablo machen. Warum? Ich meine, erstens ist es weniger Portabler, zweitens weniger intuitiv und dirttens muß man immer schreiben "Ach ja, falls Du nicht weißt, was die 48 ist: Das ist eigentlich '0'!".
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.09.2003, 02:56 Uhr
Pablo
Supertux
(Operator)


@virtual: meinst du, dass wenn ich 48 benutze nicht mehr portabel ist, oder was ist nicht mehr portabel? Soll ich dann lieber '0' schreiben statt den Ascii-Code von 0?

Was meinst du mit [i]immer schreiben?[/b]
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.09.2003, 07:38 Uhr
virtual
Sexiest Bit alive
(Operator)


Wenn Du die Ziffer '0' meinst, aber 48 schreibst, dann ist das unportabel, ja.
Wenn Du die Ziffer '0' meinst, aber 48 schreibst, dann ist das schwerer zu lesen, ja.
Wenn Du die Ziffer '0' meinst, aber 48 schreibst, dann ist das schlechter Code, ja.
Dazu kann man nämlich nur sagen:

C++:
int main()
{
    const char s[] = {84, 104, 97, 116, 32, 105, 115, 32, 98, 117, 108, 108, 115, 104, 105, 116, 10, 0 };
    printf(s);
}


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.09.2003, 10:10 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


42 108 111 108 42
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.09.2003, 10:27 Uhr
~(un)wissender
Gast


@virtual
Warum so energisch?
Du hast sicherlich recht, aber Pablo ist auch nur ein Mensch und kein virtual.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.09.2003, 11:13 Uhr
virtual
Sexiest Bit alive
(Operator)


@(un)wissender

Oh, auch ich bin nur ein Mensch.
Was fandest Du denn energisch? - Den Quellcode, der eigentlich in überzeichneter Form die Problematik darstellt? - Ersetze ihn bei Bedarf durch eine Zahlenkmbination, die "Hello World" ausgibt.

Die Tendenz, solche Sache zu machen, sehe ich ja nicht nur bei Pablo, sondern auch bei anderen. Sollte ich mich im Ton vergriffen haben, tut mir das leid. Nur wenn ich sowas sehe, wird mir einfach schlecht.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.09.2003, 11:47 Uhr
ao

(Operator)



Zitat:
Pablo Yanez Trujillo postete
@virtual: meinst du, dass wenn ich 48 benutze nicht mehr portabel ist, oder was ist nicht mehr portabel? Soll ich dann lieber '0' schreiben statt den Ascii-Code von 0?

Was meinst du mit immer schreiben?[/b]

Es ist nicht portabel, wenn man sich darauf verlässt, dass die '0' immer den Code 48 hat. Das ist eine weit verbreitete Konvention, aber es muss nicht so sein.

Gegenbeispiel: EBCDIC.

Was ist EBCDIC? Guckst du hier. Da steht zwar was von "anachronism", aber solange es noch Stellenanzeigen gibt, in denen AS/400-Programmierer gesucht werden, bleibt EBCDIC ein Thema, denke ich.

Was ist anders an EBCDIC? Hier gibts eine Vergleichstabelle.

Außerdem ist es beim Programmieren extrem wichtig, dass man so klar wie möglich schreibt, was man meint. Mit Verklausulierungen wie

C++:
a[i] - 48


macht man es seinen Lesern nur unnötig schwer, weil die nämlich auf einmal wissen sollen, dass 48 und '0' auf deinem System dasselbe ist.

C++:
nZahl >> 4 // anstelle von nZahl / 16


fällt in dieselbe Kategorie, das ist zwar noch portabel, aber genauso unverständlich.

ao

[edit by ao: überzähliges Kursiv-Tag entfernt]

Dieser Post wurde am 29.09.2003 um 11:49 Uhr von ao editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.09.2003, 12:14 Uhr
Pablo
Supertux
(Operator)


Ich hab wirklich nicht gewusst, dass das kein offizieler Standard war und das es Systeme gibt, bei denen 48 nicht '0' ist. Gut, dass ich jetzt es weiß, weil ich dann es nicht mehr machen werden.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: