Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Problem mit Programm

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
15.05.2006, 22:52 Uhr
~anna
Gast


Hallo, hier ein kleines Programm, ob es von der logischen Seite her richtig ist, weiß ich nciht, aber wenn ich compiliere dann erscheint eine Fehlermeldung, woraufhin das Programm beendet werden muss.
Könnte bitte mal jemand nachschaun, ob er auch diese Fehlermeldung bekommt bei diesem Programm bzw. ob ich irgeneinen Fehler gemacht habe, der dies bewirkt ?
thx


C++:
#include <iomanip>
#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;
int main()
{


int x, i, vektora[i],vektorb[i], vektorc[i];  
cout <<"Wie viele Werte soll der Vektor beinhalten?";
cin >>x;

    
for(i=0;i<=x;i++)
{
cout <<"Geben sie die Werte des 1.Vektors ein:";
cin >>vektora[i];                
                
}

for(i=0;i<=x;i++)
{
cout <<"Geben sie die Werte des 2.Vektors ein:";
cin >>vektora[i];                
                
}

for(i=0;i<=x;i++)
{
vektorc[i]= vektora[i]-vektorb[i] ;  
cout <<"Vektorc"<<vektorc[i];            
}
                                        
return 0;
getch();
}



mod edit: BENUTZE DIE CPP TAGS SELBER

Dieser Post wurde am 15.05.2006 um 23:20 Uhr von J-jayz-Z editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.05.2006, 23:18 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Wenn du es schon Vector nennst, dann nutz doch auch Vektoren.
Und benutze bitte die CPP Tags, damit man den Code besser lesen kann.
Hier mein Vorschlag:

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

int main(int argc, const char* argv[])
{

        int x, i, vect, tmp;
        vect = 1;
        std::vector<int>* vecta = new std::vector<int>();
        std::vector<int>* vectb = new std::vector<int>();
        std::vector<int>* vectc = new std::vector<int>();

        std::cout << "Wie viele Werte soll der Vektor beinhalten?";
        std::cin >> x;

        for( i = 0; i < x*2 ; i++)
        {
                std::cout <<"Geben sie die Werte des "<< vect <<".Vektors ein:";
                std::cin >> tmp;
                if(vect == 1)
                        vecta->push_back(tmp);
                else
                        vectb->push_back(tmp);
                if(i == x-1)
                        vect = 2;

        }

        for( i = 0 ; i< x; i++)
        {
                vectc->push_back( vecta->at(i) - vectb->at(i) );
                std::cout << "Vektorc = " << vectc->at(i) << std::endl;
        }

        return EXIT_SUCCESS;
}


Wobei ich vorhin auch keine Fehlermeldung bekam. Du weißt, dass du mit deinem Code nur Zahlen eingeben darfst (mit meinem auch, nur int(ganze Zahlen)). Wegen der Rechnung am Ende !
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.05.2006, 23:26 Uhr
~gast
Gast


Hier ist Dein Programm, mit einigen notwendigen Änderungen!


C++:
#include <iomanip>
#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;
int main()
{
   int x, i, *vektora, *vektorb, *vektorc;
   cout <<"Wie viele Werte soll der Vektor beinhalten?";
   cin >>x;
   vektora = new int [x];
   vektorb = new int [x];
   vektorc = new int [x];
   for(i=0;i<x;i++)
   {
      cout <<"Geben sie die Werte des 1.Vektors ein:";
      cin >>vektora[i];
   }

   for(i=0;i<x;i++)
   {
      cout <<"Geben sie die Werte des 2.Vektors ein:";
      cin >>vektorb[i];
   }

   for(i=0;i<x;i++)
   {
      vektorc[i]= vektora[i]-vektorb[i] ;
      cout <<"Vektorc "<<vektorc[i]<< endl;
   }
   delete[] vektora;
   delete[] vektorb;
   delete[] vektorc;

   return 0;
   getch();
}

mfg







 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.05.2006, 12:02 Uhr
0xdeadbeef
Gott
(Operator)


Der Hintergrund - zur Erklärung - ist, dass

C++:
int x, i, vektora[i],vektorb[i], vektorc[i];


das hier nicht funktionieren kann. Der Compiler versucht zu erkennen, wieviel Speicher er denn jetzt für die Vektoren anfordern soll, und scheitert natürlich, weil nicht bekannt ist, was nachher in i drinstehen soll. Das ist ja an der Stelle noch nicht mal zur Laufzeit bekannt. Jetzt gibt es zwei Möglichkeiten - entweder, du forderst zur Laufzeit dynamisch von Hand Speicher an, das ist das, was ~gast gemacht hat:

C++:
int i;

// i mit einem Wert füllen, z.B.
i = 20;

int *vektora = new int[i];

// vektor benutzen, z.B.

for(int j = 0; j < i; ++j) vektora[j] = j;

// Speicher wieder freigeben, damit kein Speicherleck entsteht:
delete[] vektora;


oder du benutzt eine Klasse aus der C++-Standardbibliothek (STL), die das für dich erledigt, z.B.

C++:
#include <vector>

using namespace std; // das hier kann man auch weglassen, man muss dann halt vor alle STL-Bezeichner std:: schreiben

// ...

int i;
i = 20;
vector<int> vektora(i);
for(j = 0; j < i; ++j) vektora[j] = j;

// vektora wird am Ende des Blocks zerstört, der angeforderte Speicher wird dabei automatisch freigegeben


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.05.2006, 12:04 Uhr
mischa
Fragender


@gast
man sollte getch() vor return benutzten nacher nützt das nichts
und meiner meinung nach sollte man std::cin.get() benutzten wenn man schon mit c++ arbeitet
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.05.2006, 12:07 Uhr
0xdeadbeef
Gott
(Operator)


Eigentlich sollte man sich nach Möglichkeit ne IDE zulegen, die mit Konsolenprogrammen vernünftig umgehen kann.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.05.2006, 12:49 Uhr
~anna
Gast


vielen dank euch allen

@J-jayz-Z
es ging nicht primär um vektoren, sondern einfach um arrays.


@gast
vielen dank für deine Lösung, nun funktioniert es bei, mir,aber ich muss mir das heute abend mal genauer ansehen, wo mein Fehler lag.

anna
 
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: