Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Array erechnet "müll"

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 <
000
06.10.2003, 20:53 Uhr
~DieRuhevordemSturm
Gast


Guten Abend Freak's ! :-) nene is lieb gemeint

und zwar ich hab wieder mal Probleme mit den Arrays
ich schreib zur Array-übung einen Personalausweissnummern Creator nix besonderes die gibts ja eh schon zu masse aber blos als Lerneffekt.
Ich steh jetze also vor folgendem Problem wenn der Geburtstagsblock und Seriennummernblock beide ablaufen kommt beim Geburtstagsblock scheisse raus wenn ich der andere funktinoniert aber wunderbar und einzeln klappts auch super woran liegt das blos ? steht vielleicht noch irgend ein Mist vom ersten Array im Speicher ich versteh das nicht


C++:
int a,b,c,d,z;  
// Prüfziffer a = Seriennummer, Prüfziffer b = Geburtstag,
// Prüfziffer c = Ablaufdatum , Prüfziffer d = Gesammtprüfziffer,

char Seriennummer[8];
char Geburtstag[5];
//char Ablaufdatum[5];
//char Gesammt[24];


int main()

{
// Behördenkennziffer / Seriennummer !
        cin.get(Seriennummer[0]);
        cin.get(Seriennummer[1]);
        cin.get(Seriennummer[2]);
        cin.get(Seriennummer[3]);
        cin.get(Seriennummer[4]);
        cin.get(Seriennummer[5]);
        cin.get(Seriennummer[6]);
        cin.get(Seriennummer[7]);
        cin.get(Seriennummer[8]);
        
    a = ((int) Seriennummer[0] - '0') * 7 + ((int) Seriennummer[1] - '0') * 3 + ((int) Seriennummer[2] - '0') * 1 +
        ((int) Seriennummer[3] - '0') * 7 + ((int) Seriennummer[4] - '0') * 3 + ((int) Seriennummer[5] - '0') * 1 +
        ((int) Seriennummer[6] - '0') * 7 + ((int) Seriennummer[7] - '0') * 3 + ((int) Seriennummer[8] - '0') * 1 ;
        cout << a % 10 ;


// Geburtstagsblock !
    
        cin.get(Geburtstag[0]);
        cin.get(Geburtstag[1]);
        cin.get(Geburtstag[2]);
        cin.get(Geburtstag[3]);
        cin.get(Geburtstag[4]);
        cin.get(Geburtstag[5]);
        
    
        
    b = ((int) Geburtstag[0] - '0') *7 + ((int) Geburtstag[1] - '0') *3  + ((int) Geburtstag[2] - '0') *1 +
        ((int) Geburtstag[3] - '0') *7 + ((int) Geburtstag[4] - '0') *3  + ((int) Geburtstag[5] - '0') *1 ;
    
        cout<< b % 10 ;
return 0;
}



is vielleicht bissel viel aber da ich überhaupt nicht weiss an was es liegt und der Compiler halt keinen Fehler ausgibt muss das wohl sein !

Dieser Post wurde am 06.10.2003 um 21:32 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.10.2003, 21:37 Uhr
Pablo
Supertux
(Operator)



C++:
cin.get(Seriennummer[8]);


Wie soll das gehen, wenn Seriennumer nur 8 Felder hat?; D.h. Seriennummer[7] ist das letzte feld. Da es sich um ein Array von char, sollte es auch ein \0 Feld geben. ich würde Seriennummer mit 9 initialisieren und Seriennummer[8]='\0'; setzen.


C++:
((int) Seriennummer[8] - '0') * 1 ;



Gleicher Fehler.

C++:
cin.get(Geburtstag[5]);



Gleicher Fehler

C++:
((int) Geburtstag[5] - '0') *1;


Gleicher Fehler

Wieso fragst du Zeichen für Zeichen und nicht als ganze Zeichenkette?
--
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
06.10.2003, 22:47 Uhr
~DieRuhevordemSturm
Gast


Wieso fragst du Zeichen für Zeichen und nicht als ganze Zeichenkette? ...

ee weil ich zu blöd bin und nicht weiss wie ich sonst an jedes Zeichen einzeln rankomme ? :-)

haste ne bessere Lösung !?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.10.2003, 22:52 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
~DieRuhevordemSturm postete
Wieso fragst du Zeichen für Zeichen und nicht als ganze Zeichenkette? ...

ee weil ich zu blöd bin und nicht weiss wie ich sonst an jedes Zeichen einzeln rankomme ? :-)

haste ne bessere Lösung !?



C++:
for(int i=0; i<9; ++i) cin.get(Seriennummer[i]));


sollte das hier ersetzen:

C++:
       cin.get(Seriennummer[0]);
        cin.get(Seriennummer[1]);
        cin.get(Seriennummer[2]);
        cin.get(Seriennummer[3]);
        cin.get(Seriennummer[4]);
        cin.get(Seriennummer[5]);
        cin.get(Seriennummer[6]);
        cin.get(Seriennummer[7]);
        cin.get(Seriennummer[8]);


Ausserdem muß es

C++:
char Seriennummer[[b]9[/b]];


heissen.
--
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
004
06.10.2003, 22:56 Uhr
Pablo
Supertux
(Operator)



Zitat:
~DieRuhevordemSturm postete
Wieso fragst du Zeichen für Zeichen und nicht als ganze Zeichenkette? ...

ee weil ich zu blöd bin und nicht weiss wie ich sonst an jedes Zeichen einzeln rankomme ? :-)

haste ne bessere Lösung !?



Ja
wir äre als string oder als char* ? Du kannst sowieso auf die Buchsatben zugreifen
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.10.2003, 00:16 Uhr
Pablo
Supertux
(Operator)


Wie wäre es damit?

C++:
#include <iostream>
int main()
{
        char Seriennnumer[8];
        char Geburtstag[9];

        std::cout << "Geben Sie die Seriennumer ein: (Höchstens 7 Zahlen) ";
        std::cin >> Seriennnumer;
        std::cout << "Geben Sie Ihren Geburstatgsdatum ein: (Format tt:mm:jj) ";
        std::cin >> Geburtstag;


        for(int i=0; i<8; ++i)
                std::cout << "Seriennnumer[" << i << "] = " << Seriennnumer[i] << std::endl;
        for(int i=0; i<9; ++i)
                std::cout << "Geburtstag[" << i << "] = " << Geburtstag[i] << std::endl;

        return 0;
}



Wenn du das ausführst und
folgendes Eingibst:

Code:
Geben Sie die Seriennumer ein: (Höchstens 7 Zahlen) [b]0541237[/b]
Geben Sie Ihren Geburstatgsdatum ein: (Format tt:mm:jj) [b]12:01:89[/b]
([b]Fettgedruckt: [/b] Eingabe)


Dann bekommst du

Code:
Seriennnumer[0] = 0
Seriennnumer[1] = 5
Seriennnumer[2] = 4
Seriennnumer[3] = 1
Seriennnumer[4] = 2
Seriennnumer[5] = 3
Seriennnumer[6] = 7
Seriennnumer[7] =
Geburtstag[0] = 1
Geburtstag[1] = 2
Geburtstag[2] = :
Geburtstag[3] = 0
Geburtstag[4] = 1
Geburtstag[5] = :
Geburtstag[6] = 8
Geburtstag[7] = 9
Geburtstag[8] =    


Seriennnumer[7] == Geburtstag[8] == '\0' deshalb wird als leer ausgegeben. Siehst du, wie ich auf die einzelne Buchstaben zugreifen konnte?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.10.2003, 07:24 Uhr
~DieRuhevordemSturm
Gast


Juhu danke aber virtual hat sich verzählt die letzte is Prüfziffer

so und nu muss ich zur schule
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
07.10.2003, 08:34 Uhr
Pablo
Supertux
(Operator)


Nein, virtaul hat sich nicht verzählzt. Er hat dasselbe gesgat, wie ich. Ich hab die Anzahl der Elemente des Array behalten, deshlab hab ich gesagt, man kann nur bis zur Seriennummer[7] zugreifen. @Virtual hat aber "cin.get(Seriennummer[8] ) ; " behalten und damit das stimmt, muss das Array 9 Elemente haben. Aber das ist im Prinzip egal, was wir sagen wollten ist folgendes:

Sei arr ein Array, dessen Länge bei der Deklaration bestimmt/bekannt wird/ist.

C++:
typ arr[n];


wobei n keine Variable, sondern eine feste Zahl wie 20 ist. Dann ist das letzte Element, auf das man zugreifen kann das n-1. Element, weil man von 0 anfängt zu zählen. n sagt nur, wie viele Elemente das Array haben muss, also ist der Bereich [0,1,2,...,n-1]
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 07.10.2003 um 08:37 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
07.10.2003, 08:38 Uhr
0xdeadbeef
Gott
(Operator)


Das hat übrigens ne ganze Reihe guter Gründe. Zum Beispiel kannst du ohne große Probleme das Array zyklisch durchlaufen (per modulo), was zum Beispiel bei auf Arrays basierenden Queues sehr praktisch ist.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: