Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » 2D-Array

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 < [ 3 ]
010
30.05.2004, 13:30 Uhr
(un)wissender
Niveauwart


Ich weiß nichts über den Standard, aber ich behaupte hier mal, dass es keinen einzigen Komplier gibt, bei den char nicht ein signed byte ist.
Und ich habe drei C++ Bücher in denen der Wertebreich von char mit -127 bis +127 angegeben ist.
Ich denke, da kann man sich drauf verlassen.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
30.05.2004, 13:37 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


supi jetzt kann ich mich ja auch mal klugscheissen beteiligen
wird wohl eher -128 bis 127 sein
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
30.05.2004, 13:41 Uhr
0xdeadbeef
Gott
(Operator)


Genau genommen ist char ein sowohl von signed char als auch von unsigned char verschiedener Typ, verhält sich aber wie einer der beiden. Welcher der beiden das ist, ist nirgendwo festgeschrieben und kann von Maschine zu Maschine variieren.

Der gcc liefert aus diesem Grund die C-Optionen -funsigned-char und -fsigned-char mit. Ich zitiere die Manpage:

Zitat:

-funsigned-char
Let the type "char" be unsigned, like "unsigned char".

Each kind of machine has a default for what "char" should be. It
is either like "unsigned char" by default or like "signed char" by
default.

Ideally, a portable program should always use "signed char" or
"unsigned char" when it depends on the signedness of an object.
But many programs have been written to use plain "char" and expect
it to be signed, or expect it to be unsigned, depending on the
machines they were written for. This option, and its inverse, let
you make such a program work with the opposite default.

The type "char" is always a distinct type from each of "signed
char" or "unsigned char", even though its behavior is always just
like one of those two.

-fsigned-char
Let the type "char" be signed, like "signed char".

Note that this is equivalent to -fno-unsigned-char, which is the
negative form of -funsigned-char. Likewise, the option
-fno-signed-char is equivalent to -funsigned-char.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
30.05.2004, 13:54 Uhr
Spacelord
Hoffnungsloser Fall



Zitat:
(un)wissender postete
Ich weiß nichts über den Standard, aber ich behaupte hier mal, dass es keinen einzigen Komplier gibt, bei den char nicht ein signed byte ist.
Und ich habe drei C++ Bücher in denen der Wertebreich von char mit -127 bis +127 angegeben ist.
Ich denke, da kann man sich drauf verlassen.


Du benutzt doch VC++,oder?
Guck dir doch mal die Compileroption /J an....
Im Grossen und Ganzen gebe ich schon Recht aber man darf sich nicht darauf verlassen dass char ein signed Byte ist.

MfG Spacelord

Oh,da war deadbeef schon schneller,ist beim gcc also auch nicht anders.
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 30.05.2004 um 13:57 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
30.05.2004, 15:27 Uhr
(un)wissender
Niveauwart


Wenn ihr meint, dann gebe ich euch recht.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
30.05.2004, 21:26 Uhr
~hansli
Gast


Das ist ja alles schön und gut, es bringt mir nur leider gar nichts, das auslesen des Textfile funktioniert einwandfrei, der Fehler passiert beim abfüllen in die Matrix... kann mir vielleicht da einer helfen???
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
31.05.2004, 07:25 Uhr
Tommix



Hallo,
eventuell sind anzInd / anzTopf falsch oder vertauscht?

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
31.05.2004, 13:14 Uhr
(un)wissender
Niveauwart


Ich finde deinen Code sehr verwirrend, darum habe ich hier mal eine alternative Variante aufgeschrieben (Ohne viel Sicherheitsabfragen, dass ist deine Sache).
Wen du testen willst: Als "test.txt" kopierst du einfach die Daten, die du hier gepostet hast.


C++:
#include <algorithm>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

const int ROWS = 10;
const int COLS = 15;

bool loadPopulation(int twoDMatrix[][COLS], const char * fileName);

int main()
{
    int twoDMatrix[ROWS][COLS];
    
    if(!loadPopulation(twoDMatrix, "test.txt"))
    {
        std::cout << "Error" << std::endl;
        return 0;
    }
    
    
    for(int i = 0; i < ROWS; ++i)
    {
        for(int j = 0; j < COLS; ++j)
        {
            std::cout << twoDMatrix[i][j] << " ";
        }      
        std::cout << std::endl;
    }
    
    return 0;
}

bool loadPopulation(int twoDMatrix[][COLS], const char * fileName)
{
    std::ifstream in(fileName);
    if(!in) return false;
    
    std::string line;
    std::stringstream formater;
    
    for(int i = 0; i < ROWS; ++i)
    {
        //Bis newline lesen
        getline(in, line);
        //Uns interessiert nur alles nach dem =-Zeichen    
        line = line.substr(line.find('=') + 1,line.size());
        //Komma durch Leerzeichen ersetzen, damit Formatierung funzt
        std::replace(line.begin(), line.end(), ',', ' ');
        //line formatieren
        formater << line;
      
        for(int j = 0; j < COLS; ++j)
        {            
             //Die formatierte Eingabe in der Matrix speichern      
            formater >> twoDMatrix[i][j];
        }
        //EOF löschen
        formater.clear();
        //Stream leeren
        formater.str("");
    }
    return true;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
31.05.2004, 21:09 Uhr
~hansli
Gast


Viele dank für deine Mühe, dass Problem ist nur, dass der Speicherplatz für die Matrix im main dynamisch allokiert wird... deshalb muss ich doch der Funktion einen Pointer auf die Adresse [0][0]ten Elementes übergeben oder geht es auch anders? Hier noch mals meine Frage, werden die einzelnen Zeilen einer Matrix im Speicher direckt hinter einander angeordnet? wenn ja müsste mein Code doch eigentlich funktionieren...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
01.06.2004, 00:26 Uhr
(un)wissender
Niveauwart


Der Speicher ist immer sequenziell angeordnet.
Mein Beispiel ist auch ganz leicht auf dynamische Allokierung umzustellen, ich denke, dass bekommst du hin.
Tipp: twoDMatrix[ i ][j] kann man als *(twoDMatrix + i * ROWS + j) schreiben.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ 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: