а) for, так как наша переменная, которая будет управлять циклом(как принято i ) будет принимать значения от 0 до 9, если начинать цикл с 0. Мы создаем переменную result и помещаем внутри цикла следующее выражение: result += 1/(i + 1). На выходе получим результат данного выражения.
б) В данном случае, можно использовать либо for range based, где выражение цикла выглядит так for (const auto & grade : grades), либо while с условием пока не дойдем до конца списка, зависит какой вид списка мы используем. Я считаю больше подходит for.
в) Думаю for range-based, либо обычный for.
г) ответ как и в б, можно использовать либо for ranged base, либо while, если значения аргументов содержатся в массиве, то тогда for range-based. Если например, тестирование происходит с пользовательского ввода, то тогда удобнее было бы использовать while.
Объяснение:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
setlocale(LC_ALL, "RU");
int N;
cin >> N;//массив на N элементов
vector<int>a;
for (int i = 0; i < N; i++)
a.push_back(rand()%100);// заполнение массива числами от 0 до 100
for (int i = 0; i < N; i++)
cout << a[i] << " ";
cout << endl;
bool flag=false;
int number;
for (int i = 0; i < N; i++) {
auto r = find(a.begin(), a.end(),a[i]);// функция стандартной библиотеки для поиска
if (r != a.end()&&r-a.begin()!=i)
{
number = r - a.begin();// номер элемента массива с одинаковым значением
flag = true;
break;
}
}
if (flag)
cout <<"В массиве присутствуют элементы с одинаковыми значениями. Одним из равных значений является: "<<a[number];
else
cout << "В массиве не присутствуют элементы с одинаковыми значениями";
}