В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
Оливия20
Оливия20
17.09.2021 09:00 •  Информатика

Нужна , написать программу на си
алгоритм поиска оформить в виде функции:
сформировать массив а[n], элементы которого выбираются случайным образом из интервала [101, 290]. определить методом последовательного поиска, содержит ли он заданное число. если элемент найден, то удалить его и стоящий перед ним элемент из массива.

Показать ответ
Ответ:
Зейна12
Зейна12
21.12.2023 19:59
Хорошо, я с удовольствием помогу вам с написанием программы на языке C, реализующей заданный алгоритм поиска и удаления элементов массива. Вот код программы:

```c
#include
#include
#include

void generateArray(int a[], int n)
{
srand(time(NULL));

for (int i = 0; i < n; i++) {
a[i] = rand() % 190 + 101;
}
}

int sequentialSearch(int a[], int n, int key)
{
for (int i = 0; i < n; i++) {
if (a[i] == key) {
return i; // Возвращаем индекс найденного элемента
}
}

return -1; // Если элемент не найден
}

void deleteElement(int a[], int n, int index)
{
for (int i = index; i < n - 1; i++) {
a[i] = a[i + 1];
}
}

int main()
{
int n, key;
printf("Введите размер массива: ");
scanf("%d", &n);

int a[n]; // Объявляем массив размером n

generateArray(a, n); // Формируем массив случайных чисел

printf("Введите число для поиска и удаления: ");
scanf("%d", &key);

int index = sequentialSearch(a, n, key); // Ищем индекс элемента

if (index != -1) {
deleteElement(a, n, index); // Удаляем найденный элемент и элемент перед ним
n--; // Уменьшаем размер массива на 1
printf("Элемент %d удален из массива!\n", key);
} else {
printf("Элемент %d не найден в массиве.\n", key);
}

printf("Обновленный массив:\n");
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");

return 0;
}
```

Давайте пошагово разберем эту программу:

1. Подключаем необходимые заголовочные файлы `stdio.h`, `stdlib.h` и `time.h`.

2. Объявляем прототипы функций `generateArray`, `sequentialSearch` и `deleteElement`, чтобы компилятор знал о существовании этих функций.

3. В функции `generateArray` мы используем функции `srand` и `rand` из стандартной библиотеки `stdlib.h` для генерации случайных чисел. Функция `srand` инициализирует генератор случайных чисел с помощью текущего времени, чтобы генерируемые числа были разными при каждом запуске программы. Затем, с помощью цикла `for`, мы заполняем массив `a` случайными числами из интервала [101, 290].

4. В функции `sequentialSearch` мы используем цикл `for` для последовательного поиска элемента `key` в массиве `a`. Если элемент найден, то функция возвращает его индекс; в противном случае, она возвращает -1.

5. В функции `deleteElement` мы используем цикл `for` для сдвига элементов массива `a` на одну позицию влево, начиная с индекса `index`. Это позволяет удалить найденный элемент и элемент, стоящий перед ним.

6. В функции `main` мы объявляем переменные `n` и `key` для хранения размера массива и числа для поиска и удаления. Затем, с помощью функции `scanf`, мы считываем значения этих переменных с клавиатуры.

7. Мы объявляем массив `a` размером `n` и используем функцию `generateArray` для его заполнения случайными числами.

8. Мы используем функцию `sequentialSearch` для поиска индекса элемента `key` в массиве `a`. Результат поиска сохраняем в переменную `index`.

9. Если элемент найден (если `index` не равен -1), мы используем функцию `deleteElement` для удаления найденного элемента и элемента перед ним. Затем уменьшаем размер массива `n` на 1 и выводим сообщение об удалении элемента.

10. Выводим обновленный массив `a` с помощью цикла `for` и функции `printf`.

11. Завершаем программу с возвращаемым значением 0.

Надеюсь, эта программа понятна и поможет вам выполнить задачу поиска и удаления элементов массива! Если у вас возникнут еще вопросы, пожалуйста, сообщите.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота