Найти индексы первого и последнего вхождения заданного целого числа N в последовательность - C (СИ)
Формулировка задачи:
Найти индексы первого и последнего вхождения заданного целого числа N в последовательность целых чисел, которая сохраняется в динамическом массиве. Количество элементов и их значения вводятся с клавиатуры. Ввода и вывода массива реализовать отдельными функциями.
Решение задачи: «Найти индексы первого и последнего вхождения заданного целого числа N в последовательность»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
void vvod(int* array, int size)
{
int i;
for ( i = 0; i < size; ++i)
{
printf("Inter elememt ");
scanf("%d", &array[i]);
}
}
void vivod(int* array, int size)
{
int i;
for ( i = 0; i < size; ++i)
printf("%d ", array[i]);
printf("\n");
}
int main(void)
{
int N, size, index_f = -1, index_l = -1, i;
int* array;
printf("Inter size of array\n");
scanf("%d",&size);
array = (int*) malloc(size+1);
vvod(array, size);
vivod(array, size);
printf("Inter N ");
scanf("%d",&N);
for ( i = 0; i < size; ++i)
if(array[i] == N)
{
index_f = i;
break;
}
for ( i = size; i >= 0; i--)
if(array[i] == N)
{
index_l = i;
break;
}
if(index_f == -1 || index_l == -1)
printf("No number\n");
else
{
printf("first index %d\n", index_f);
printf("last index %d\n", index_l);
}
}
Объяснение кода листинга программы
Код начинается с подключения двух библиотек: stdio.h и stdlib.h. Далее следуют четыре функции:
- *vvod(int array, int size)** - ввод элементов массива с помощью функции scanf.
- *vivod(int array, int size)** - вывод элементов массива с помощью цикла for и функции printf.
- main(void) - главная функция программы, в которой происходит основная логика.
- free(array) - освобождение памяти, выделенной под массив.
В функции main после ввода размера массива и самого массива, вводится искомое число N.
Далее, в два прохода, ищутся индексы первого и последнего вхождения числа N в массив.
Если оба индекса найдены, выводится сообщение с найденными индексами.
Если не найден один из индексов, выводится сообщение
No number. Примечание: код не проверяет на достаточность памяти при выделении массива, а также не проверяет корректность ввода размера массива и числа N.