Привет парни. Такой вопрос: ебал я в рот указатели. Помогите пожалуйста с задачкой <3. Создать функцию, возвращающую указатель на первый элемент массива >10. Вывести все элементы до, после него. Вот что есть у меня на данный момент (ток заполнение массива): #include <iostream> #include <ctime> using namespace std; void fillArray(int* arr, int const size) { for (int i = 0; i < size; i++) { *(arr + i) = rand() % 20; } } void showArray(int* arr, int const size) { for (int i = 0; i < size; i++) { cout << *(arr + i) << " "; } cout << endl; } int main() { srand(time(NULL)); setlocale(LC_ALL, "Russian"); int size; cout << "Введите размер массива: "; cin >> size; int* arr = new int[size]; fillArray(arr, size); showArray(arr, size); delete[] arr; }
#include <iostream> #include <ctime> using namespace std; int* firstGreaterThanTen(int* arr, const int size) { int i = 0; for (; i < size; i++) { if (*(arr + i) > 10) { return (arr + i); } } return nullptr; } void showArray(int* arr, const int size) { for (int i = 0; i < size; i++) { cout << *(arr + i) << " "; } cout << endl; } int main() { srand(time(NULL)); setlocale(LC_ALL, "Russian"); int size; cout << "Введите размер массива: "; cin >> size; int* arr = new int[size]; for (int i = 0; i < size; i++) { *(arr + i) = rand() % 20; } showArray(arr, size); int* greaterThanTen = firstGreaterThanTen(arr, size); if (greaterThanTen != nullptr) { cout << "Первый элемент >10: " << *greaterThanTen << endl; cout << "Элементы до: "; for (int* p = arr; p < greaterThanTen; p++) { cout << *p << " "; } cout << endl << "Элементы после: "; for (int* p = greaterThanTen + 1; p < arr + size; p++) { cout << *p << " "; } } else { cout << "Нет элементов >10" << endl; } delete[] arr; return 0; } C #include <iostream> #include <ctime> using namespace std; int* firstGreaterThanTen(int* arr, const int size) { int i = 0; for (; i < size; i++) { if (*(arr + i) > 10) { return (arr + i); } } return nullptr; } void showArray(int* arr, const int size) { for (int i = 0; i < size; i++) { cout << *(arr + i) << " "; } cout << endl; } int main() { srand(time(NULL)); setlocale(LC_ALL, "Russian"); int size; cout << "Введите размер массива: "; cin >> size; int* arr = new int[size]; for (int i = 0; i < size; i++) { *(arr + i) = rand() % 20; } showArray(arr, size); int* greaterThanTen = firstGreaterThanTen(arr, size); if (greaterThanTen != nullptr) { cout << "Первый элемент >10: " << *greaterThanTen << endl; cout << "Элементы до: "; for (int* p = arr; p < greaterThanTen; p++) { cout << *p << " "; } cout << endl << "Элементы после: "; for (int* p = greaterThanTen + 1; p < arr + size; p++) { cout << *p << " "; } } else { cout << "Нет элементов >10" << endl; } delete[] arr; return 0; }
#include <iostream> // Поиск адреса первого элемента > 10 int* f1(int arr[], const int size){ int i = 0; while(arr[i]<=10 && i < size) ++i; return (arr+i); } // Вывод: 1 строка ДО, 2 ПОСЛЕ void f2(int arr[], int* el, const int size){ for(int i = 0; i < size; ++i) if(arr+i != el) std::cout << arr[i] << ' '; else std::cout << '\n'; } int main() { int mas[] = {5,6,11,4,5,11,7}; f2(mas, f1(mas, 7), 7); } C #include <iostream> // Поиск адреса первого элемента > 10 int* f1(int arr[], const int size){ int i = 0; while(arr[i]<=10 && i < size) ++i; return (arr+i); } // Вывод: 1 строка ДО, 2 ПОСЛЕ void f2(int arr[], int* el, const int size){ for(int i = 0; i < size; ++i) if(arr+i != el) std::cout << arr[i] << ' '; else std::cout << '\n'; } int main() { int mas[] = {5,6,11,4,5,11,7}; f2(mas, f1(mas, 7), 7); }