Промяна на размера на масив
Здравейте ,
Мъча се над 1 задача от 2ри урок на C++ Fundamentials. Искам да направя въвеждането на данни за масивите като функция .
Въпросът ми е следния , в долуописания код как да "разширя" масива във функцията след като потребителя подаде стойност от конзолата?
За момента този код във функцията "реже" големината на array-a защото му се подават нулеви стойности преди това.
#include<iostream>
using namespace std;
void arrayInput(int num, int arr[], int arrSize ){
cout << "Please enter the length of Array" << num << ": ";
cin >> arrSize;
//Тук искам да сменя размера на масива arr[arrSize] и накрая функцията да върне в length1 стойността въведена от потребителя arrSize.
cout << "Please enter "<< arrSize << " numbers, separated by spaces: " ;
for ( int i = 0; i < arrSize ; i++) {
cin >> arr[i];
}
}
void checkEqual(int arr1[], int len1, int arr2[], int len2){
int eqIndex = 0;
if (len1 != len2) {
cout << "Not equal" << endl;
return;
}
else {
for (int i = 0 ; i <= len1 ; i++ ){
if (arr1[i] == arr2[i]){
eqIndex++;
}
}
}
if ( eqIndex == len1 ){
cout << "Equal" << endl;
}
else{
cout << "Not equal" << endl;
}
}
int main() {
int length1,length2;
int array1[]{};
int array2[]{};
arrayInput(1,array1,length1);
for ( int i =0; i < length1 ; i++){
cout << array1[i];
}
arrayInput(2,array2,length2);
for ( int i =0; i < length2 ; i++){
cout << array2[i];
}
checkEqual(array1,length1,array2,length2);
return 0;
}
Благодаря !
Благодаря !
Да , след като догледах лекцията на запис , стигнах и до векторите :).
Пак съм аз :)
Този код крашва когато въведа първо число , разгледах го , но не разбирам защо се чупи?
#include<iostream>
#include<vector>
using namespace std;
vector<int> arrayInput(int num){
vector<int> arr;
int arrSize;
cout << "Please enter the length of Array" << num << ": ";
cin >> arrSize;
cout << "Please enter "<< arrSize << " numbers, separated by spaces: " ;
for ( int i = 0; i < arrSize ; i++) {
cin >> arr[i];
}
return arr;
}
void checkEqual(vector<int> arr1, int len1, vector<int> arr2, int len2){
int eqIndex = 0;
if (len1 != len2) {
cout << "Not equal" << endl;
return;
}
else {
for (int i = 0 ; i <= len1 ; i++ ){
if (arr1[i] == arr2[i]){
eqIndex++;
}
}
}
if ( eqIndex == len1 ){
cout << "Equal" << endl;
}
else{
cout << "Not equal" << endl;
}
}
int main() {
vector<int> array1 = arrayInput(1);
vector<int> array2 = arrayInput(2);
checkEqual(array1,array1.size(),array2,array2.size());
return 0;
}
Oops... кодът, който съм ти дал е грешен.
vector-ът няма никакви елементи първоначално, тоест няма как да му се прави cin >> array[i], защото array.size() == 0, съответно няма елементи 0, 1, 2...
Във вектор за да се появят елементи се ползва .push_back(), като съответно първия път се добавя 0-я елемент, следващия път 1-я и т.н.
Тоест в този цикъл не трябва да правиш cin >> array[i], а трябва да правиш int number; cin >> number; array.push_back(number);
Сега ще го редактирам в първоначалния отговор
Благодаря !