matematykaszkolna.pl
programowanie c++ matrix: vector<double> Tab1(20), Tab2(Tab1.size()), Tab3(Tab1.size()); for (int i = 0; i < Tab1.size(); i++) Tab1[i] = Tab2[i] = Tab3[i] = 4; Tab3.front() = Tab3.back() = 5; Tab3.at(4) = 5; // Dostep z kontrola zasiegu. if (Tab2 < Tab3) { cout << "Ta nierownosc jest spelniona." << endl;} Dlaczego wykonuje się ten if ? Rozmiary tych wektorów są przecież takie same(czy chodzi, że nazwa wektora to jak w tablicy wskaźnik do pierwszego elementu), Bardzo proszę o pomoc
10 wrz 13:26
Dziadek Mróz: https://ideone.com/FYeeXu #include <iostream> #include <iomanip> #include <vector> void debug_vector(std::vector<double> v) { std::cout << std::setw(4) << v.size() << "|"; for (std::vector<double>::iterator it=v.begin(); it!=v.end(); it++) { std::cout << " " << *it; } std::cout << "|" << std::endl; } int main() { std::vector<double> Tab1(20), Tab2(Tab1.size()), Tab3(Tab1.size()); for (int i=0; i<Tab1.size(); i++) { Tab1[i] = Tab2[i] = Tab3[i] = 4; } Tab3.front() = Tab3.back() = 5; Tab3.at(4) = 5; std::cout << std::setw(4) << "size|" << std::endl; debug_vector(Tab1); debug_vector(Tab2); debug_vector(Tab3); if (Tab2 < Tab3) { std::cout << "Ta nierownosc jest spelniona." << std::endl; } return 0; } Szukasz w googlach: "c++ vector comparison" i dostajesz link do strony http://www.cplusplus.com/reference/vector/vector/operators/ Tu masz wyjaśnione jak są porównywane vector'y operatoram <: The less−than comparison (operator<) behaves as if using algorithm lexicographical_compare, which compares the elements sequentially using operator< in a reciprocal manner (i.e., checking both a<b and b<a) and stopping at the first occurrence. Porównuje logicznie elementy z dwóch vector'ów i przerywa działanie na pierwszym wystąpieniu nierówności. Zapisz sobie tą stronę w zakładkach: http://www.cplusplus.com/reference
10 wrz 14:11
matrix : Dzięki
10 wrz 23:41