Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Was mache ich falsch?

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
03.03.2007, 12:43 Uhr
~Guest
Gast


Hallo, in diesem code der den wert vom user an die von user bestimmte stelle einsetzen soll, und die anderen element nach rechts verschieben soll(der letzte fliegt aus) tritt ein fehler auf. Es wird immer das letzte element an die stelle kopiert und nicht der eingegeben wert vom user.

???

Danke

C++:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

class arr
{
private:
    int a[10];
    int Vr;
public:
    arr(void)
    {
        for(int i=0;i<10;i++)
        {
            cout << i+1<<". element array!"<<endl;
            cin >> a[i];
        }
        cout << "wert der in das array soll!"<<endl;
        cin >> Vr;
        
    }
    int index(void)
    {
        int i;
        cout << "Index vom array(wo der wert rein soll)   Vr="<<Vr<<endl;
        cin >>i;
        i--;
        return i;
    }
    void rep(int i)
    {
//hier ist Vr das was der user eingibt
        int n;
        for(n=10;n>i;n--)
        {
            a[n]=a[n-1];
        }
//hier ist er das letzte element vom array
        a[n]=Vr;
    }
    void print(string s)
    {
            
        cout << s<<endl;
        for(int i=0;i<10;i++)
            cout<<a[i]<<endl;
        cout <<endl;
    }
    
};

int _tmain(int argc, _TCHAR* argVr[])
{
    string s1("array bevor");
    string s2("array danach");

    arr a;
    a.print(s1);
    a.rep(a.index());
    a.print(s2);
    system("pause");
    return 0;
}




Bearbeitung:
Syntax highlighting

Dieser Post wurde am 03.03.2007 um 12:53 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.03.2007, 12:57 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!

Ein paar kleine Sachen:
* using namespace std is nit gut
* Array Index mit size_t

Was du suchst ist eine doppelt verkettete STL list
www.sgi.com/tech/stl/List.html

lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.03.2007, 13:02 Uhr
~Guest
Gast


Hm, ich bin C++ anfaenger ,im C kenne ich mich aus aber jetzt versuche ich OOP zu erlernen!

Kanssst du es mir besser erklearen?

Zitat:

Ein paar kleine Sachen:
* using namespace std is nit gut
* Array Index mit size_t



Es ist ein kleines einfaches program deswegen will ich nicht ne list benutzen es dient nur zu uebungszwecken.
Aber ich bin der meinung das das Program eigentlich gehen musste?

Dank dir
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.03.2007, 13:11 Uhr
Blubber2063



Wenn du std::string benutzt, dann brauchst du für die Ausgabe nicht tricksen, einfach den string auf den Stream schieben, der Operator ist überladen.
Und was soll das mit dem Index den du nur dekrementierst ? Die Struktur von deinem Programm ist schon leicht merkwürdig.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.03.2007, 14:13 Uhr
mike
Pinguinhüpfer
(Operator)


Sicher net schön
aber vl. alla

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

using std::string;
using std::cin;
using std::cout;
using std::endl;

class Test
{
  public:
    Test(string *myString) { myString_ = myString; }
    static void Print(const string &);
    void Ask();
    void Rep();
  private:
    string *myString_;
    char myChar_;
    size_t myPos_;
};

void Test::Print(const string &myString)
{
  cout << ">>" << myString << "<<" << endl;
}

void Test::Ask()
{
  cout << "Buchstabe: "; cin >> myChar_;
  cout << "Position: "; cin >> myPos_;
}

void Test::Rep()
{
  myString_->insert(myPos_, &myChar_);
  myString_->erase( myString_->end() - 1 );
}

int main (int argc, char * const argv[]) {
  string strTest("Das ist ein Test");
  
  Test instTest(&strTest);
  
  Test::Print(strTest);
  instTest.Ask();
  instTest.Rep();
  Test::Print(strTest);

  return 0;
}


--

Dieser Post wurde am 03.03.2007 um 14:16 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.03.2007, 13:25 Uhr
Th



Und einen Index-Fehler hast du auch bei:

C++:
        int n;
        for(n=10;n>i;n--)
        {
            a[n]=a[n-1];
        }


Das Array ist bei dir nur 10 Werte groß, also kannst du nur in die Indizes 0 - 9 schreiben.
 
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: