Ошибка сегментирования - C (СИ) (70487)
Формулировка задачи:
Никак не могу понять в чем же дело, выдает Ошибку сегментирования:
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int* boob(int *len)
- {
- int *mas;
- int j,i,t;
- for (i =(*len)-1; i >= 0; i--)
- {
- for (j = 0; j < i; j++)
- {
- if (mas[j] > mas[j + 1])
- {
- t = mas[j];
- mas[j] = mas[j + 1];
- mas[j + 1] = t;
- }
- }
- }
- for (i=0;i<(*len);i++)
- {
- printf("%d ",mas[i]);
- }
- }
- int main()
- {
- int *len;
- int *mas;
- int i;
- mas = 0;
- printf("Введите число элементов\n");
- scanf("%d",len);
- mas = (int*)malloc((*len)*sizeof(int));
- for(i=0;i<(*len);++i)
- {
- printf("Введите элемент № %d ",i+1);
- scanf("%d",(mas+i));
- }
- int *p;
- p=boob(len);
- free(p);
- }
Забыл написать:
Программа сортировки чисел по возрастанию.
Операции над массивом должны быть вынести в отдельную функцию, в которую передается указатель на массив.
И ещё вопрос: как можно вынести задание массива в отдельную функцию и использовать её?
Никак не могу понять в чем же дело, выдает Ошибку сегментирования, помогите, пожалуйста, разобраться.
Решение задачи: «Ошибка сегментирования»
textual
Листинг программы
- void array_input(int * mas, int len)
- {
- for(int i=0; i<len; ++i)
- {
- printf("Введите элемент № %d ",i+1);
- scanf("%d", &mas[i]);
- }
- }
- // использовать так
- array_input(mas, len);
Объяснение кода листинга программы
В данном коде реализована функция array_input
, которая считывает элементы массива с помощью функции scanf.
- Входные параметры функции:
- mas - указатель на первый элемент массива
- len - длина массива, т.е. количество элементов в нем
- Тело функции:
- Цикл for, который выполняется для каждого элемента массива
- Вывод сообщения с просьбой ввести элемент под номером i+1
- Считывание значения i-го элемента массива с помощью функции scanf
- Считывание значения в переменную mas[i]
- Цикл for, который выполняется для каждого элемента массива
- Код, который вызывает функцию array_input:
- mas - указатель на массив
- len - длина массива Ошибка сегментирования может возникнуть, если пользователь введет некорректное значение (например, букву вместо числа), которое не может быть помещено в переменную типа int.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д