Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2020, 20:45   #1
vavucho
Пользователь
 
Регистрация: 12.03.2020
Сообщений: 12
По умолчанию Помогите пожалуйста доработать код

#include <iostream>
#include <ctime>
#include <iomanip> //для форматирования вывода
#include <cstdlib>
using namespace std;
//инициирует массив
int* initA(int n, int mn, int mx)
{
int* a = new int[n];//массив
for (int i = 0; i < n; i++)
a[i] = rand() % (mx - mn + 1) + mn;//заполняем массив
return a;
}
//выводит массив
void printA(int* a, int n)
{
for (int i = 0; i < n; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
//вычисляет среднее арифметическое
int srA(int* a, int n)
{
int s = 0;//сумма элементов
for (int i = 0; i < n; i++)
{
s += a[i];//суммирует
}
return s;//среднее арифметическое
}
int* del_mas(int* a, int& n)
{

int n;
cout << "Размер массива N=";
cin >> n;
srand((unsigned)time(0));//инициирует генератор сл.чисел
int mn, mx;
cout << "Интервал значений min max: ";
cin >> mn >> mx;
if (mn > mx) swap(mn, mx);//если неправильно поменяли
int* a = initA(n, mn, mx);//создали массив
cout << "Массив:\n";
printA(a, n);//вывели массив
int med = srA(a, n);//среднее
int nmed = 0;//к-во средних
for (int i = 0; i < n; i++)
if (a[i] == med)//нашли
{
for (int j = i; j < n - 1; j++)
{
a[j] = a[j + 1];//"сжали" массив
}
i--;//на то же место
n--;//уменьшили размер
nmed++;//к-во+1
}
cout << "Среднее значение: " << med << " ,к-во: " << nmed << endl;
cout << "Измененный массив:\n";
printA(a, n);//вывели массив
delete[] a;//удалили массив

system("pause");
}
int** initB(int n, int m, int mn, int mx)
{
int** b = new int* [n];//массив под указателей строк
for (int i = 0; i < n; i++)
{
b[i] = new int[m];//создали строку
for (int j = 0; j < m; j++)
b[i][j] = rand() % (mx - mn + 1) + mn;//заполнили строку
}
return b;
}
//выводит массив
void printB(int** b, int n, int m)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << setw(3) << b[i][j];
cout << endl;
}
}
int** add_mass(int** b, int& i, int j);
{
int n, m;
cout << "Размеры массива N M: ";
cin >> n >> m;
srand((unsigned)time(0));//инициирует генератор случ.чисел
int mn, mx;
cout << "Интревал значений min max: ";
cin >> mn >> mx;
if (mn > mx) swap(mn, mx);//поменяли
int** b = initB(n, m, mn, mx);//массив
cout << "Массив:\n";
printB(b, n, m);//вывели
for (int i = 0; i < n; i++)
{
int* c = new int[m + 1];//строка большего размера
for (int j = 0; j < m; j++)
c[j] = b[i][j];//скопировали старое
c[m] = rand() % (mx - mn + 1) + mn;//последнее значение
delete[] b[i];//удалили старую строку
b[i] = c;//установили новую
}
m++;//длина строк увеличилась
cout << "Измененный массив:\n";
printB(b, n, m);//вывели

for (int i = 0; i < n; i++)//удаляем строки
delete[] b[i];
delete[] b;//удалили массив указателей строк

system("pause");
}
int main()
{
int k;
setlocale(LC_ALL, "rus");
srand(time(0));

int* mas;
int** mas2;
int q;
int n = 10;
cout << "С каким массивом работать (1 - одномерный, 2 - двумерный) ";
cin >> q;
if (q == 1) {
do
{
cout << "1.Формирование массива\n";
cout << "2.Печать массива\n";
cout << "3.Удаление из массива\n";
cout << "4.Выход\n";
cin >> k;
switch (k)
{
case 1: mas = initA(n, 10, 20); break;
case 2: printA(mas, n); break;
case 3: //del_mas(a, n);
break;
}
} while (k != 4);
}
else {
do {
cout << "1.Формирование массива\n";
cout << "2.Печать массива\n";
cout << "3.Добавление в массив\n";
cout << "4.Выход\n";
cin >> k;
switch (k)
{

case 1: mas2 = initB(n, 10, 10, 50); break;
case 2: printB(mas2, n, 10); break;
case 3: //add_mas(b, n, m);
break;
}
} while (k != 4);
}
return 0;
}
vavucho вне форума Ответить с цитированием
Старый 16.03.2020, 21:20   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Нормально. Помогите доработать неизвестно откуда взятый код, который неизвестно что должен делать и что он делает не так.
digitalis вне форума Ответить с цитированием
Старый 21.03.2020, 00:36   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Нормально
Человек только учится. Например, в новых темах он уже научился оформлять код с помощью тега CODE
Arigato вне форума Ответить с цитированием
Старый 23.03.2020, 09:43   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Следующим шагом будет - правильно сформулировать вопрос. Правда, сначала для самого себя: а чего я, собственно, хочу?
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста, помогите доработать программу на С! Вулф Общие вопросы C/C++ 7 05.07.2017 12:45
Помогите доработать программу jipumex@cartelera. Паскаль, Turbo Pascal, PascalABC.NET 5 05.10.2016 20:49
Помогите доработать код C++ max.sokol Помощь студентам 5 18.12.2015 19:18
Помогите доработать чат BakX Работа с сетью в Delphi 8 06.10.2008 19:30
Помогите Пожалуйста доработать тест!!! dimi_87 Помощь студентам 4 23.07.2008 02:07