@Anonymous85966

Как решить такую задачу?

Имеется массив размера N. Необходимо продублировать в нем элементы с четными номерами. Пример:
a={1,2,3,4,5,6}
Результат: a={1,1,2,3,3,4,5,5,6}
Для начала я создал еще один массив , куда сохранил элементы первого массива с четными номерами. Далее я создал третий массив, куда попытался для четных номеров справа дописать элементы из второго масссива, т.е я объединял данные из 1 и 2 массивов. Но каждый раз программа выдавала неверные значения. Часть кода представлена ниже. Как решить эту задачу?
#include <stdio.h>
#include <malloc.h>
#include <windows.h>
#include <locale.h>

int main()
{
   ULONGLONG n = 0;

   setlocale(LC_ALL, "");

   printf_s("Введите количество элементов массива и сами элементы: ");

   if (!scanf_s("%llu", &n))
   {
      printf_s("Введено некорректное значение");
      return 0;
   }
      
   ULONGLONG size = n + (double) n / 2 + 0.5 ;

   double* a=new double[n];
   double* a2 = new double[size-n];
   double* a3 = new double[size];

   for (ULONGLONG i = 0; i < n; i++)
   {
      if (!scanf_s("%lf", &a[i]))
      {
         printf_s("Введено некорректное значение");
         return 0;
      }
   }

   for (ULONGLONG i = 0; i < size-n; i++)
   {
      a2[i] = a[2*i];
   }
return 0;
}
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
@Anonymous85966 Автор вопроса
#include <stdio.h>
#include <malloc.h>
#include <windows.h>
#include <locale.h>
int main()
{
   ULONGLONG n = 0;
   setlocale(LC_ALL, "");

   printf_s("Введите количество элементов массива и сами элементы: ");

   if (!scanf_s("%llu", &n))
   {
      printf_s("Введено некорректное значение");
      return 0;
   }

     
   ULONGLONG size = n + (double) n / 2 + 0.5 ;

   double* a=new double[n];
   double* a2 = new double[size];

   for (ULONGLONG i = 0; i < n; i++)

   {

      if (!scanf_s("%lf", &a[i]))
      {
         printf_s("Введено некорректное значение");
         return 0;
      }

   }

   for (ULONGLONG i = 0; i < size - n; i++)
   {
      a2[3 * i] = a[2 * i];
      a2[3 * i + 2] = a[2 * i +1];
      a2[3 * i + 1] = a[2 * i];
   }

   for (ULONGLONG i = 0; i < size; i++)
      printf_s("%lf ", a2[i]);

   return 0;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы