Присвоить массиву те элементы, у которых следующий элемент больше - C (СИ)
Формулировка задачи:
Вводится ряд чисел, присвоить массиву те числа, у которых следующий элемент больше.
Например: 2, 3, 1, 6, 7, 3, 2, 5.
Переписываем: 2, 1, 6, 2
array[i] выводит верно, но newArray[j] те же значения не присваиваются.
Получается найти нужные элементы, но как переписать их в другой массив?
#pragma hdrstop
#pragma argsused
#include <stdio.h>
#include <conio.h>
int main() {
int x = 0, i = 0;
int array[100];
char ans;
do {
printf("Array size: ");
scanf("%d", &x);
printf("\nFill the array: \n");
for (i = 0; i < x; i++) {
printf("%d. element: ", i);
scanf("%d", &array[i]);
}
for (i = 0; i < x; i++) {
printf("Array[%d]: %d\n", i, array[i]);
}
for (i = 0; i < x; i++)
if (array[i] < array[i + 1])
printf("%d", i);
printf("\nRepeat? Yes - y ");
flushall();
scanf("%c", &ans);
clrscr();
}
while (ans == 'y' || ans == 'Y');
}
Пробую писать так:
for (i = 0; i < x; i++)
if (array[i] < array[i + 1])
printf("%d", array[i]);
array[i] = newArray[j];
printf("\n%d", newArray[j]);Решение задачи: «Присвоить массиву те элементы, у которых следующий элемент больше»
textual
Листинг программы
#include <stdio.h>
#define X 100
int v[X];
int *v1[X];
int i, a, b = 0;
int main(void)
{
printf("Array size: ");
scanf("%d", &a);
printf("\nFill the array: \n");
for ( i = 0; i < a; i++)
{
printf(" %4d element: ", i);
scanf("%d", &v[i]);
}
printf("\n");
for (i = 0; i < a; i++)
printf(" %4d ", v[i]);
printf("\n\n");
for (i = 0; i < a - 1; i++)
{
if (v[i] < v[i + 1])
{
v1[b] = &v[i];
printf(" %4d ", *v1[b]);
b++;
}
}
printf("\n");
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены массив v и указатель на массив v1. Размер массива v1 равен размерности массива v.
- Задаются переменные i, a, b, которые будут использоваться в программе.
- В цикле for происходит заполнение массива v. Пользователю предлагается ввести элемент массива, и он вводится с клавиатуры.
- В цикле for происходит вывод элементов массива v.
- В цикле for происходит проверка каждого элемента массива v. Если текущий элемент меньше следующего, то в массив v1 записывается адрес следующего элемента, и этот элемент выводится на экран.
- Программа заканчивается, и ее результат определяется как 0.