Консультация № 198737
25.05.2020, 17:19
0.00 руб.
0 1 1
Здравствуйте! Прошу помощи в следующем вопросе:

Как следует изменить код программы (которая меняет массив по правилу: сначала нечетные, потом четные элементы), чтобы элементы переставлялись местами вмести с их индексами, т.е. например вводим массив:
а[1]=1
a[2]=2
a[3]=19
a[4]=12
a[5]=5
*а программа сортировала его таким образом*
a[1]=1
a[3]=19
a[5]=5
a[2]=2
a[4]=12



Приложение:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main()
{
setlocale(LC_ALL,"rus");
int *a;
int *b;
int n;
int i;
printf("Программа меняет массив по правилу: сначала нечетные элементы, затем четные.");
a = (int *)malloc(n*sizeof(int));
printf ("\nВведите количество элементов в массиве n: ");
scanf("%d",&n);
for ( i=0 ; i<n ; i++)
{
printf("a[%d]=", i+1);
scanf("%d" , &a[i]);
}
for (i = 0; i <= n - 1; i++) //вывод нечетных элементов
{
if (i % 2 == 0)
{
printf(" %d ",a[i]);
}
}
for (i = 0; i <= n - 1; i++) //вывод четных элементов
{
if (i % 2 != 0)
{
printf(" %d ",a[i]);
}
}
getch();
system("PAUSE");
return 0;
}

Обсуждение

давно
Советник
400484
472
28.05.2020, 10:05
общий
это ответ
Здравствуйте, niktop1!
Вот примерный вариант:
Код:

int main()
{
setlocale(LC_ALL, "rus");
int *a;
int *b; // временный массив
int n;
int i;
printf("Программа меняет массив по правилу: сначала нечетные элементы, затем четные.");
printf("\nВведите количество элементов в массиве n: ");
scanf("%d", &n);
a = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; i++)
{
printf("a[%d]=", i + 1);
scanf("%d", &a[i]);
}
b = (int *)malloc(n * sizeof(int)); // выделяем память под временный массив
int index = 0; // для временного массива
printf("\nnechet\n");
for (i = 0; i < n; i++) //вывод нечетных элементов
{
if (a[i] % 2 != 0)
{
printf(" %d ", a[i]);
b[index++] = a[i];
}
}
printf("\nchet\n");
for (i = 0; i < n; i++) //вывод четных элементов
{
if (a[i] % 2 == 0)
{
printf(" %d ", a[i]);
b[index++] = a[i];
}
}
printf("\n");
// переписываем массив а
for (i = 0; i < n; i++)
{
a[i] = b[i];
printf(" %d ", a[i]);
}
free(b); // удаляем временный массив
getch();
system("PAUSE");
return 0;
}
Форма ответа