Porównanie długości wektorów

Awatar użytkownika
Harry Xin
Użytkownik
Użytkownik
Posty: 545
Rejestracja: 9 sie 2007, o 19:15
Płeć: Mężczyzna
Podziękował: 148 razy
Pomógł: 83 razy

Porównanie długości wektorów

Post autor: Harry Xin »

Witam!
Mam problem ze skompilowaniem czegoś takiego (w kodzie pisze o co chodzi):

Kod: Zaznacz cały

#include<iostream.h>
#include<conio.h>

bool jest_rowny(const vector<int> &w1, const vector<int> &w2);

void main()
{
 clrscr();

 const vector<int> w1={0,1,1,2},w2={0,1,1,2,3,5,8};

 cout << "To jest program porownujacy dlugosc wektorow:" << endl;
 cout << w1 << endl;
 cout << "oraz" << endl;
 cout << w2 << endl;
 cout << "Jezeli maja rozne dlugosci to porownana zostanie liczba elementow" << endl;
 cout << "mniejszego wektora." << endl;

 if(jest_rowny()) cout << "Wektory sa rowne." << endl;
 else cout << "Wektory nie sa rowne." << endl;

 cout << "Nacisnij 'ENTER', zeby zakonczyc dzialanie programu.";

 cin.ignore(cin.rdbuf()->in_avail());
 cin.get();
 clrscr();
}

bool jest_rowny(const vector<int> &w1, const vector<int> &w2)
{
 if(w1.size()==w2.size) return true;
 else for(int i=0;i<4;i++) if(w1[i]!=w2[i]) return false;

 return true;
}
Kompilator wskazuje mi na prototyp funkcji (informuje o następujących problemach w 4. linii):
expression syntax
) expected
Wprawdzie pojawia się później parę innych errorów, ale z doświadczenia wiem, że po usunięciu jednej literówki dzieją się cuda. :P
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

Porównanie długości wektorów

Post autor: Szemek »

bez głębszej analizy kodu

zamiast

Kod: Zaznacz cały

if(w1.size()==w2.size) return true; 
powinno być:

Kod: Zaznacz cały

if(w1.size()==w2.size()) return true; 
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

Porównanie długości wektorów

Post autor: spajder »

a z trochę głębszą analizą kodu dałbym:

Kod: Zaznacz cały

if(w1.size()!=w2.size()) return false; 
Awatar użytkownika
Harry Xin
Użytkownik
Użytkownik
Posty: 545
Rejestracja: 9 sie 2007, o 19:15
Płeć: Mężczyzna
Podziękował: 148 razy
Pomógł: 83 razy

Porównanie długości wektorów

Post autor: Harry Xin »

Aha. No faktycznie. No dzięki ale to nie zmienia faktu, że nadal nie daje się skompilować. Wciąż wskazuje tę samą i linię i te same błedy. ;/
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

Porównanie długości wektorów

Post autor: Szemek »

osobiście napisałbym to tak:

Kod: Zaznacz cały

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

bool jest_rowny(vector<int> a1, vector<int> a2);

void main()
{
 vector<int> w1;
 vector<int> w2;
 w1.push_back(0); w1.push_back(1); w1.push_back(1); w1.push_back(2);

 w2.push_back(0); w2.push_back(1); w2.push_back(1); w2.push_back(2);
 w2.push_back(3); w2.push_back(5); w2.push_back(8);

 cout << "To jest program porownujacy dlugosc wektorow:" << endl;
 for(int i=0;i<w1.size();i++)
	 cout<<w1.at(i)<<' ';
 cout <<endl << "oraz" << endl;
 for(int i=0;i<w2.size();i++)
	 cout<<w2.at(i)<<' ';
 cout <<endl << "Jezeli maja rozne dlugosci to porownana zostanie liczba elementow" << endl;
 cout << "mniejszego wektora." << endl;

 if(jest_rowny(w1,w2)) cout << "Wektory sa rowne." << endl;
 else cout << "Wektory nie sa rowne." << endl;

 cout << "Nacisnij 'ENTER', zeby zakonczyc dzialanie programu.";

 cin.ignore(cin.rdbuf()->in_avail());
 cin.get();
}

bool jest_rowny(vector<int> a1, vector<int> a2)
{
 if(a1.size()==a2.size()) return true;
 else for(int i=0;i<min(a1.size(),a2.size());i++) if(a1[i]!=a2[i]) return false;

 return true;
} 
Awatar użytkownika
Harry Xin
Użytkownik
Użytkownik
Posty: 545
Rejestracja: 9 sie 2007, o 19:15
Płeć: Mężczyzna
Podziękował: 148 razy
Pomógł: 83 razy

Porównanie długości wektorów

Post autor: Harry Xin »

Dzięki za pomoc. :D
Ostateczna i działająca wersja:

Kod: Zaznacz cały

#include<iostream.h>
#include<conio.h>
#include<vector.h>

bool jest_rowny(vector<int> w1, vector<int> w2);

void main()
{
 clrscr();

 vector<int> w1,w2;
 w1.push_back(0); w1.push_back(1); w1.push_back(1); w1.push_back(2);

 w2.push_back(0); w2.push_back(1); w2.push_back(1); w2.push_back(2);
 w2.push_back(3); w2.push_back(5); w2.push_back(8);

 cout << "To jest program porownujacy dlugosc wektorow:" << endl;
 for(int i=0;i<w1.size();i++) cout << w1.at(i) << ' ';
 cout << endl << "oraz" << endl;
 for(int i=0;i<w2.size();i++) cout << w2.at(i) << ' ';
 cout << endl << "Jezeli maja rozne dlugosci to porownana zostanie liczba elementow" << endl;
 cout << "mniejszego wektora." << endl;

 if(jest_rowny(w1,w2)) cout << "Wektory sa rowne." << endl;
 else cout << "Wektory nie sa rowne." << endl;

 cout << "Nacisnij 'ENTER', zeby zakonczyc dzialanie programu.";

 cin.ignore(cin.rdbuf()->in_avail());
 cin.get();
 clrscr();
}

bool jest_rowny(vector<int> w1, vector<int> w2)
{
 if(w1.size()==w2.size()) return true;
 else for(int i=0;i<4;i++) if(w1[i]!=w2[i]) return false;

 return true;
}
Wklejam jakby ktoś kiedyś szukał a nie odkopywał niepotrzebnie topicu. ;)
ODPOWIEDZ