• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Создать Функции Для Вычисления Среднего Значения И Определения Простог

  • Автор темы Ruslan737
  • Дата начала
R

Ruslan737

Помогите пожалуйста написать программу на С++)
Из положительных значений двух целочисленных массивов различной размерно-
сти сформировать общий массив. Найти среднее арифметическое элементов, рас-
положенных в массиве до первого простого числа. Создать функции для вычисле-
ния среднего значения и определения простого числа.
 
R

Ruslan737

Сделал)))Может кому-нибудь пригодится)
C++:
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <cmath>

using namespace std;

//Инициализация массива
void arrInit(int* arr, int size){
for(int i = 0; i < size; i++){
*arr = rand()%19-9;
arr++;
}
return;
}

// Проверка является ли число простым
bool simpleCheck(int x){
bool flag = true;
for(int i = 2; i < x-1; i++){
if(x % i == 0){
flag = false;
break;
}
}
return flag;
}

// Подсчёт среднего
double arrAverage(int* arr, int size){
int summ = 0;
double avg = 0;
for(int i = 0; i < size; i++){
if(simpleCheck(*arr))
break;
summ += *arr;
avg = summ/(i+1.0);
arr++;
}
return avg;
}

int main(int argc, char* argv[]){
srand((unsigned)time(0));
int size1 = 4, size2 = 6;
int* arr1 = new int[size1];
int* arr2 = new int[size2];
// Инициализация массивов случайными значениями
arrInit(arr1, size1);
arrInit(arr2, size2);
// Вычисление размера результирующего массива
int posCount = 0;
for(int i = 0; i < size1; i++)
if(arr1[i] > 0)
posCount++;			 
for(int i = 0; i < size2; i++)
if(arr2[i] > 0)
posCount++;
// Заполнение рез. массива положительными значениями из первых двух массивов
int* resArr = new int[posCount];
int* ptr = resArr;
for(int i = 0; i < size1; i++)
if(arr1[i] > 0){
*ptr = arr1[i];
ptr++;
}
for(int i = 0; i < size2; i++)
if(arr2[i] > 0){
*ptr = arr2[i];
ptr++;
}
cout << arrAverage(resArr, posCount) << endl;
system("pause");
return 0;
}
 
R

Ruslan737

Помогите пожалуйста немного переделать эту программу)Мне нужна с динамическими массивами,и можно её написать как-нибудь попроще,на начальном уровне?
 
W

Whatka

у тебя и так динамически выделяется рамять под массивы
можно сделать чтобы размерности первых 2ух массивов
вводилось с клавиатуры
 
R

rrrFer

Ruslan737
создавать море одинаковых тем не обязательно, Вам уже ответили, притом правильно.
Не хватает лишь освобождения памяти в программе.
 
R

Ruslan737

Форум тормозил,я создавал тему,он выдавал ошибку при попытке сохранения темы,так и получилось что написано их очень много

Добавлено:
у тебя и так динамически выделяется рамять под массивы
можно сделать чтобы размерности первых 2ух массивов
вводилось с клавиатуры
переделайте пожалуйста программу)Чтобы размерности первых двух массивов вводились с клавы
 
W

Whatka

C++:
//
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <cmath>

using namespace std;

//Инициализация массива
void arrInit(int* arr, int size){
for(int i = 0; i < size; i++){
*arr = rand()%19-9;
arr++;
}
return;
}

// Проверка является ли число простым
bool simpleCheck(int x){
bool flag = true;
for(int i = 2; i < x-1; i++){
if(x % i == 0){
flag = false;
break;
}
}
return flag;
}

// Подсчёт среднего
double arrAverage(int* arr, int size){
int summ = 0;
double avg = 0;
for(int i = 0; i < size; i++){
if(simpleCheck(*arr))
break;
summ += *arr;
avg = summ/(i+1.0);
arr++;
}
return avg;
}

int main(int argc, char* argv[]){
srand((unsigned)time(0));
int size1, size2;
cout<<"Введите размерности двух массивов:";
cin>>size1>>size2;
int* arr1 = new int[size1];
int* arr2 = new int[size2];
// Инициализация массивов случайными значениями
arrInit(arr1, size1);
arrInit(arr2, size2);
// Вычисление размера результирующего массива
int posCount = 0;
for(int i = 0; i < size1; i++)
if(arr1[i] > 0)
posCount++;			 
for(int i = 0; i < size2; i++)
if(arr2[i] > 0)
posCount++;
// Заполнение рез. массива положительными значениями из первых двух массивов
int* resArr = new int[posCount];
int* ptr = resArr;
for(int i = 0; i < size1; i++)
if(arr1[i] > 0){
*ptr = arr1[i];
ptr++;
}
for(int i = 0; i < size2; i++)
if(arr2[i] > 0){
*ptr = arr2[i];
ptr++;
}
cout << arrAverage(resArr, posCount) << endl;
system("pause");
return 0;
}
//
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!