Приступая к решению задач, ознакомьтесь со статьями Массивы в C++ и Генератор случайных чисел rand(), если еще не читали их. Постарайтесь решать предложенные задачи самостоятельно и смотреть наши решения только в крайнем случае.
1. Создать массив типа int на 10 элементов и заполнить его случайными числами от 7 до 14. После заполнения перезаписать все числа, которые больше десяти: от хранимого значение отнять 10. Например в ячейке хранится число 12: 12 – 10 = 2. Записать в эту ячейку 2 Записывая новое значение, используйте составные (комбинированные) операторы.
2. Заполнить массив из 50-ти элементов нечётными числами от 1 до 99. (используйте операцию остаток от деления, чтобы проверить число на чётность)
3. Объявить три массива. Первые два заполнить случайными значениями от 10 до 30. В элементы третьего массива записать сумму соответствующих элементов первых двух массивов. (в нулевую ячейку третьего – сумму нулевых ячеек первого и второго массивов и так далее). Затем найти среднее арифметическое элементов третьего массива, максимальное значение и минимальное значение, которые он хранит.
Хороший сайт, статьи написаны понятно и доступно. Но! Неудобно, что уроки идут в спутанной последовательности: я была на уроке цикл while, по стрелочке дальше попадаем на строки, ссылку на урок массивы видим прямо в статье, в следующей на random, а если пойти по стрелке далее попадаем опять на приветствие (1 статья). Достаточно путаная дорожка, мой совет сделать правильную последовательность статей по темам при переходе по активным стрелкам, что под статьей.
Екатерина, все уроки и в правильной последовательности расположены на главной странице: https://purecodecpp.com/
То что ты видишь в статьях – это перелинковка.
Спасибо за ответ. Да, я видела на главной. Просто привыкла урок прошла => жми на следующий :) А так приходиться возвращаться на главную.
Всем привет. Дело в том , что не правильно считает не только максимальное, минимальное и среднее, но и сумму каждого элемента 1-го и 2-го массива в 3-ем. В чем проблема?)
#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int Ar1 [30] = {};
int Ar2 [30] = {};
int Ar3 [30] = {};
const int lowerLimit = 10;
const int upperLimit = 30;
srand(time(NULL));
cout << "Массив Ar1: ";
for (int i = 0; i < 30; i++)
{
Ar1[i] = lowerLimit + rand() % (upperLimit - lowerLimit + 1);
cout << Ar1[i] << " | ";
}
cout << endl << endl;
cout << "Массив Ar2: ";
for (int i = 0; i < 30; i++)
{
Ar2[i] = lowerLimit + rand() % (upperLimit - lowerLimit + 1);
cout << Ar1[i] << " | ";
}
cout << endl << endl;
cout << "Массив Ar3: ";
for (int i = 0; i < 30; i++)
{
Ar3[i] = Ar1[i] + Ar2[i];
cout << Ar3[i] << " | ";
}
cout << endl << endl;
float sum = 0;
int srednee = 0;
int max = Ar3[0];
int min = Ar3[0];
for ( int i = 0; i < 30; i++)
{
sum += Ar3[i];
if (Ar3[30] > max)
{
max = Ar3[i];
}
}
srednee = sum / 30;
cout << "Макс = " << max << endl;
cout << "Мин = " << min << endl;
cout << "Среднее = " << srednee << endl;
system("pause");
return 0;
}
1) По поводу суммы элементов 1-го и 2-го массива и их записи в ячейки 3-го массива. Смотри внимательно на строку 29. В цикле ты заполняешь второй массив, а на экран выводишь данные первого.
2) Максимум. Смотри строку 47: Ar3[30] > max ? Замени на Ar3[i] > max
3) Поиск минимального значения в коде не прописан. Допиши и будет тебе минимальное :)
Спасибо ) невнимателен просто)
В третьем задании я постарался всё в одном for сделать, считая что у автора так и будет. Каково же было удивление, что в ответе их 4. Видимо, это было сделано, чтобы таким новичкам, как мы, было понятнее.
for (int i=0; i<max;i++)
{
arr[i]=1+rand()%100;
arr2[i]=1+rand()%100;
arr3[i]=arr[i]+arr2[i];
a+=arr3[i];
if (min<arr3[i])
{}
else {min=arr3[i];}
cout<<arr3[i]<<"|";
}
b=a/max;
cout<<"\nsred = "<<b<<endl;
cout<<"min = "<<min<<endl;
return 0;
}
Извиняюсь за малопонятный код, я писал его прямо в телефоне, в онлайн компиляторе.
Мне одному кажется, что задачи сложные? И при этом у меня ничего не получается.
Не беспокойся, просто я имею кое-какой опыт. Некоторым поначалу сложно понять, зачем вообще переменная нужна. В общем, побольше практики надо, каждый оператор разбирай в отдельности.
Задачи предельно простые.
Реально требуемые на практике задачи намного сложнее.
не могу никак от 7 до 14 заполнить рандомно … Сможет кто объсянить?
#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "rus");
int arr[10] = {};
srand(time(NULL));
for (int i = 0; i < 10; i++) { arr[i] = 7 + rand() % 8; cout << arr[i] << " || "; } cout << endl; }
rand() % 8 будет генерировать числа от 1 до 7
rand()%8 – не от 0 до 7?
Есть легкий способ справляться с генерированными числами (так называемые псевдо-числа)
[code]#include// у кого ctime
using namespace std;
void main()
{
setlocale(LC_ALL, “ru”);
srand(time(NULL));
for(int i=0; i<size; i++)
{
array[i]=rand()%(x-y)+(y) //x – наибольшее число задано нам
//y – наименьшее число задано нам
cout << " array[" << i << "] = " << array[i] << "\n"; // вывод на экран
}
//например заданы числа от 10 до 20
for(int i=0; i<size; i++)
{
array[i] = rand()%(20-10)+(10); //20 – наибольшее число задано нам
//10 – наименьшее число задано нам
cout << " array[" << i << "] = " << array[i] << "\n"; // вывод на экран
}
[/code]
Брать остатки от деления (%) rand() в любых формах и проявлениях – это дурная практика! При этом нарушается равномерный закон распределения rand(). В самых простейших случаях это проходит безнаказанно, но, например, при моделировании – это даёт совершенно искажённые результаты.
По поводу второй задачи, вроде вот так гораздо проще решить.
все понял, просто в условии должно быть написано : заполнить … рандомными нечётными числами от 1 до 99.
Да, это допущена ошибка в формулировке задачи.
А почему в коде первой задачи стоит условие больше или равно, если в условии сказано, что перезаписать необходимо те элементы массива, в которых числа строго БОЛЬШЕ десяти?
Это мелкий, незначительный недосмотр автора задачи.