Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Brauche bitte Hilfe bei Werte-Substitution!

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
01.05.2007, 11:00 Uhr
Matthias Fischer



Hallo Leute!

Hab ein Problem bei meinem Programm und zwar soll ich zuerst ein Array (64 Elemente) mit Werten füllen, ich hab das so gemacht, dass bei array[0] = 63 steht ...... und bei array[63] = 0, also absteigend reingespeichert...mein Problem ist, dass eben nach der Substitution es genau verkehrt rum drinnen stehen soll, also array[0] = 63 steht ...... und bei array[63] = 0!

Hier mal mein Programm:


C++:

#include <iostream>

#define BUFFER 64

using std:: cout;
using std:: endl;

class SBox
{
    public:    
            int subst_[BUFFER];
            SBox::SBox (int subst[]);
        SBox::~SBox (void);
            int substitute (int n);
};

/* Konstruktor */
SBox::SBox (int subst[])
{
    for (int n = 0; n < BUFFER; n++)
      subst_[n] = subst[n];
}

/* Dekonstruktor */
SBox::~SBox (void){
}

/* Methode, welche Wert des Array an der Stelle n zurueckgibt */
int SBox::substitute (int n)
{
    return (subst_[n]);
}    

int main (int argc, char *argv[])
{    
    int subst[BUFFER];                /* SBox-Array */
    int temp;                                    /* Zwischenspeicher */
    int pos = 0;                            /* Position des Wertes = Index eines Array-Elementes */
        
    /* Fuellen des Arrays mit Werten */
  for (int n = 0; n < BUFFER; n++)
      subst[n] = BUFFER - 1 - n;
      
  /* Ausgabe des Original-Wertes an der Stelle n */
  cout << "Original Wert an der " << pos << ".Stelle: " <<  subst[pos] << endl;
  
  /* Erzeugen des Objektes */    
  SBox sb = SBox (subst);
  
  /* Tauschen zweier Werte (Substitution) */
  for (int n = 0; n < BUFFER; n++)
  {
      temp = subst[n];
      subst[n] = subst[BUFFER - 1 - n];
      subst[BUFFER - 1 - n] = temp;
  }

  /* Ausgabe des gefundenen Wertes an der Stelle n */
  cout << "Neuer Wert an der " << pos << ".Stelle: " <<  sb.substitute (pos) << endl;
  
    return (0);
}




Mein Problem ist also diese for-schleife, da sie meiner ansicht nach die werte vertauscht aber dann wieder rücktauscht und somit das anfangsergebnis wieder drinnen steht!


C++:

for (int n = 0; n < BUFFER; n++)
  {
      temp = subst[n];
      subst[n] = subst[BUFFER - 1 - n];
      subst[BUFFER - 1 - n] = temp;
  }




Ich hoffe, jemand kann mir weiterhelfen ...danke!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.05.2007, 11:45 Uhr
Pler
Einer von Vielen
(Operator)


Ohne jetzt alles genau anzuschaun.
Aber deine Vermutung ist bestimmt richtig. Du darfst die Schleife eben nur bis n/2 laufen lassen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.05.2007, 12:04 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, wenn du

in 0-63 63-0 drinstehen haben willst, warum machst du dann nicht (vereinfacht) sowas:


C++:
for(int i=0,j=63; i < 64; ++i,--j)
  buffer[i] = j;


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.05.2007, 12:08 Uhr
Pler
Einer von Vielen
(Operator)


aber es geht doch ums Tauschen, die konkreten Werte sind ja nur ein Beispiel, oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.05.2007, 12:52 Uhr
Matthias Fischer



Danke euch!

@Pler: genau das hab ich auch schon versucht -> selbe ausgabe!

@FloSoft: ja, es geht ums vertauschen - die werte hab ich jetzt einfach mal angenommen, es sollten aber auch zufallswerte zu tauschen gehen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.05.2007, 12:57 Uhr
Matthias Fischer



ich glaub ich weiß jetzt wo der hund begraben ist!!! das mit n/2 geht doch!!! das problem ist, dass in der methode substitute der alte wert an der stelle 0, nämlich 63 steht, während im main nach der for-schleife der neue wert steht. wie kann ich jetzt dem public array subst_ die neuen werte, die nach der for-schleife rausgekommen sind zuweisen??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.05.2007, 13:13 Uhr
Matthias Fischer



so, ich habs jetzt endlich geschafft und die for-schleife in den konstruktor reingegeben!!!! danke nochmal für die hilfe!!!!
 
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: