Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: cheops (03.12.2011 в 15:03) Можно поступить следующим образом
#include <stdio.h> #include <iostream> using namespace std; // Прототипы функций int is_prime_number(int number); int max_element(int *arr, int number); void fullfill_array(int *arr, int number); // Два варианта среднего арифметического: с исключением // максимального значения и без него int arithmetic_mean(int *arr, int number, int max); int arithmetic_mean(int *arr, int number); // Главная функция int main(void) { // Объявляем переменные int *fstarr, *sndarr, result; int fstn, sndn, i, maxfst, maxsnd, count; // Формируем и заполняем первый массив cout << "Количество элементов в первом массиве = "; cin >> fstn; fstarr = new int[fstn]; fullfill_array(fstarr, fstn); // Формируем и заполняем второй массив cout << "Количество элементов во втором массиве = "; cin >> sndn; sndarr = new int[sndn]; fullfill_array(sndarr, sndn); // Ищем максимальный элемент первого массива maxfst = max_element(fstarr, fstn); // В зависимости от того является ли максимальное // значение простым числом, выводим результат if(is_prime_number(fstarr[maxfst])) { // Максимальное значение является простым числом cout << "Среднее арифметическое первого массива = " << arithmetic_mean(fstarr, fstn, fstarr[maxfst]) << endl; } else { // Максимальное значение не является простым числом cout << "Среднее арифметическое первого массива = " << arithmetic_mean(fstarr, fstn) << endl; } // Ищем максимальный элемент второго массива maxsnd = max_element(sndarr, sndn); // В зависимости от того является ли максимальное // значение простым числом, выводим результат if(is_prime_number(sndarr[maxsnd])) { // Максимальное значение является простым числом cout << "Среднее арифметическое первого массива = " << arithmetic_mean(sndarr, sndn, sndarr[maxsnd]) << endl; } else { // Максимальное значение не является простым числом cout << "Среднее арифметическое первого массива = " << arithmetic_mean(fstarr, fstn) << endl; } // Освобождаем динамически выделенную память delete [] fstarr; delete [] sndarr; // Остановка перед закрытием окна system("PAUSE"); return 0; } // Является ли число простым int is_prime_number(int number) { int i = 0; if(number <= 2) return 1; for(i = 2; i < number; i++) { if(!(number % i)) return 0; } return 1; } // Заполняем элементы массива void fullfill_array(int *arr, int number) { int i; for(i = 0; i < number; i++) { cout << "MASSIV X/" << i + 1 << " = "; cin >> arr[i]; } } // Ищем максимальный элемент массива int max_element(int *arr, int number) { int max = arr[0]; int Nmax = 0, i = 0; for(i = 0; i < number; i++) { if(max < arr[i]) { max = arr[i]; Nmax = i; } } return Nmax; } // Среднее арифметическое положительных чисел int arithmetic_mean(int *arr, int number, int max) { int result = 0; int count = 0, i = 0; for(i = 0; i < number; i++) { if(arr[i] > 0 && max != arr[i]) { result += arr[i]; count++; } } if(count) return result / count; else return 0; } // Среднее арифметическое положительных чисел int arithmetic_mean(int *arr, int number) { int result = 0; int count = 0, i = 0; for(i = 0; i < number; i++) { if(arr[i] > 0) { result += arr[i]; count++; } } if(count) return result / count; else return 0; }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: