Основы программирования на С++ для начинающих

Задачи: Одномерные массивы C++

Приступая к решению задач, ознакомьтесь со статьями Массивы в C++  и Генератор случайных чисел rand(), если еще не читали их.   Постарайтесь решать предложенные задачи самостоятельно и смотреть наши решения только в крайнем случае.

1. Создать массив типа int на 10 элементов и заполнить его случайными числами от 7 до 14. После заполнения перезаписать все числа, которые больше  десяти:  от хранимого значение отнять 10.  Например  в  ячейке хранится число 12: 12 – 10 = 2. Записать в эту ячейку 2 Записывая новое значение, используйте составные (комбинированные) операторы.

2. Заполнить массив из 50-ти элементов нечётными числами от 1 до 99. (используйте операцию остаток от деления, чтобы проверить число на чётность)

3. Объявить три массива. Первые два заполнить случайными значениями  от 10 до 30. В элементы третьего массива записать сумму соответствующих элементов первых двух массивов. (в нулевую ячейку третьего – сумму нулевых ячеек первого и второго массивов и так далее). Затем найти среднее арифметическое элементов третьего массива, максимальное значение и минимальное значение, которые он хранит.

113 thoughts on “Задачи: Одномерные массивы C++

  1. И еще раз не зачет. На этот раз еще и тому, кто задание придумывал. Откуда накапали термин “комбинированные операторы” – не сами случайно придумали? – ни в одной книжке я такого не встречал.

    ourArr[i] = 7 + rand() % 8;
    Это плохо, вы ведь недавно писали статью про правильное оформление кода. 100% соглашений о кодировании которые я читал запрещают использование “магических констант”, ваши 7 и 8 являются именно ими. Если 7 встречается в условии, то можно оставить, но 8 надо переписать.

    const int lower_limit = 7;
    const int upper_limit = 14;

    … % (const int upper_limit – const int lower_limit + 1)
    И комментарий в этот фрагмент можно дописать, т.к. все равно не очевидно почему +1.

    ourArr[i] -= 10; // отнимаем 10
    А вот тут комментарий можно (нужно) не писать. По многим соглашениям о кодировании комментарии вообще не поощряются, т.к. устаревают (код вы измените, а комментарий не забудете?). Комментарий не должен быть лишним, не должен повторять код и должен пояснять лишь не очевидные моменты. Это спорный момент для всяких javadoc/doxygen, но в вашем случае он очевидно лишний.

    В третьей задаче замени “аналогичных элементов ” на “соответствующих элементов” (можно попробовать более подходящее слово придумать)

  2. в условии задачи 2 не сказано что числа должны быть случайными)) у меня получилось так:

    int main(){
    int aMass[50], p=0;
    for(int i=1; i<100; i++) {
    if(i%2 != 0) {
    aMass[p] = i;
    p++;
    }
    }
    for(int i=0; i<50; i++) cout <<aMass[i] <<' ';
    cout <<endl;

    system("pause");
    return 0;
    }

  3. int massiv1[30]={};
    int massiv2[30]={};
    int massiv3[30]={};
    int max=1, min=0,sum=0,count=0;
    float sredarifm=0;

    srand(time(NULL));

    for (int i = 0; i 0)
    {
    if (massiv3[i]>max)
    {
    max=massiv3[i];
    }
    if (massiv3[i]<min)
    {
    min=massiv3[i];
    }
    }
    }
    sredarifm=static_cast(sum)/count;
    cout<<"Maksimalnoe znachenie = "<<max<<'\n';
    cout<<"Minimalnoe znachenie = "<<min<<'\n';
    cout<<"Sredne-arifmeticheskoe znachenie = "<<sredarifm;

  4. Легкие, но интересные задачки, а ваши решения ещи и очень элегантны. Не знаю, чего тот чувак до вас докапался, мне лично очень понравилось. Пасибо)

  5. Задача №1
    #include
    #include

    using namespace std;

    int main(){
    setlocale(LC_ALL, “Russian”);
    int const size = 10;
    int array[size];
    int random_value, first_value, last_value;
    cout << "Задайте начальное значение и ширину диапазона: " <> first_value >> last_value;
    for (int i = 0; i = 10){
    random_value -= 10;
    }
    array[i] = random_value;
    }
    for (int i = 0; i < size; i++) {
    cout << array[i] << " ";
    }
    system("pause");
    return 0;
    }

    1. не весь код скопировался(

      #include
      #include
      #include

      using namespace std;

      int main(){
      setlocale(LC_ALL, "Russian");
      int const size = 10;
      int array[size];
      int random_value, first_value, last_value;
      cout << "Задайте начальное значение и ширину диапазона: " <> first_value >> last_value;
      for (int i = 0; i = 10){
      random_value -= 10;
      }
      array[i] = random_value;
      }
      for (int i = 0; i < size; i++) {
      cout << array[i] << " ";
      }
      system("pause");
      return 0;
      }

  6. Задача №3
    #include
    #include
    #include
    #include

    using namespace std;

    int main(){
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    bool exit = true;
    bool exit1 = true;
    int const size = 15;
    int minNum = 100;
    int maxNum = 0;
    int sum = 0;
    int change;
    int average;
    int array1[size], array2[size], array3[size];
    int first_value, last_value;
    cout <> first_value >> last_value;
    if (last_value > first_value)
    exit = false;
    if (last_value < first_value)
    cout << "Введите првильно диапазон: ";
    } while (exit);
    for (int i = 0; i maxNum)
    maxNum = array3[i];
    if (array3[i] < minNum)
    minNum = array3[i];
    sum += array3[i];
    }
    do {
    cout << "\nХотите вывести массив на экран?(1-3)\nВыход(4)" <> change;
    switch (change) {
    case 1:cout << "Первый массив:" << endl;
    for (int i = 0; i < size; i++) {
    cout << array1[i] << " | ";
    }
    break;
    case 2:cout << "\nВторой массив:" << endl;
    for (int i = 0; i < size; i++) {
    cout << array2[i] << " | ";
    }
    break;
    case 3:cout << "\nТретий массив:" << endl;
    for (int i = 0; i < size; i++) {
    cout << array3[i] << " | ";
    }
    break;
    case 4:
    exit1 = false;
    break;
    default:
    cout << "Введите правильный номр массива(1-3)" << endl;
    break;
    }

    } while (exit1);
    average = sum / size;
    cout << "\nСреднее арефметическое: " << average << endl;
    cout << "Минимальное значение: " << minNum << endl;
    cout << "Максимальное значение: " << maxNum << endl;
    system("pause");
    return 0;
    }

  7. Задача №3.
    У меня получилось вот так:
    #include
    #include
    using namespace std;
    int main()
    {
    setlocale(LC_ALL, “”);
    srand(time(NULL));
    int iArray1[10] = {}, iArray2[10] = {}, iArray3[10] = {};
    int iMaxArray3 = 0, iMinArray3 = 31, iSumma = 0;
    for (int j = 0; j < 10; j++)
    {
    iArray1[j] = 10 + rand() % 21;
    cout << iArray1[j] << " ";
    }
    cout << endl << endl;
    for (int j = 0; j < 10; j++)
    {
    iArray2[j] = 10 + rand() % 21;
    cout << iArray2[j] << " ";
    }
    cout << endl << endl;
    for (int i = 0; i < 10; i++)
    {
    iArray3[i] = iArray1[i] +iArray2[i];
    cout << iArray3[i] << " ";
    }
    cout << endl << endl;
    for (int i = 0; i < 10; i++)
    {
    iSumma += iArray3[i];
    if (iArray3[i] iMaxArray3)
    iMaxArray3 = iArray3[i];
    }
    cout << " Среднее арифметическое = " << iSumma / 10 << endl;
    cout << " Максимум = " << iMaxArray3 << endl;
    cout << " Минимум = " << iMinArray3 << endl;
    system("pause");
    return 0;
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *