Ошибка сегментирования - C (СИ) (70487)

Узнай цену своей работы

Формулировка задачи:

Никак не могу понять в чем же дело, выдает Ошибку сегментирования:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int* boob(int *len)
  4. {
  5. int *mas;
  6. int j,i,t;
  7. for (i =(*len)-1; i >= 0; i--)
  8. {
  9. for (j = 0; j < i; j++)
  10. {
  11. if (mas[j] > mas[j + 1])
  12. {
  13. t = mas[j];
  14. mas[j] = mas[j + 1];
  15. mas[j + 1] = t;
  16. }
  17. }
  18. }
  19. for (i=0;i<(*len);i++)
  20. {
  21. printf("%d ",mas[i]);
  22. }
  23. }
  24.  
  25. int main()
  26. {
  27. int *len;
  28. int *mas;
  29. int i;
  30. mas = 0;
  31. printf("Введите число элементов\n");
  32. scanf("%d",len);
  33. mas = (int*)malloc((*len)*sizeof(int));
  34. for(i=0;i<(*len);++i)
  35. {
  36. printf("Введите элемент № %d ",i+1);
  37. scanf("%d",(mas+i));
  38. }
  39. int *p;
  40. p=boob(len);
  41. free(p);
  42.  
  43. }
Забыл написать: Программа сортировки чисел по возрастанию. Операции над массивом должны быть вынести в отдельную функцию, в которую передается указатель на массив. И ещё вопрос: как можно вынести задание массива в отдельную функцию и использовать её? Никак не могу понять в чем же дело, выдает Ошибку сегментирования, помогите, пожалуйста, разобраться.

Решение задачи: «Ошибка сегментирования»

textual
Листинг программы
  1. void array_input(int * mas, int len)
  2. {
  3.     for(int i=0; i<len; ++i)
  4.     {
  5.         printf("Введите элемент № %d ",i+1);
  6.         scanf("%d", &mas[i]);
  7.     }
  8.    
  9. }
  10. // использовать так
  11. array_input(mas, len);

Объяснение кода листинга программы

В данном коде реализована функция array_input, которая считывает элементы массива с помощью функции scanf.

  1. Входные параметры функции:
    • mas - указатель на первый элемент массива
    • len - длина массива, т.е. количество элементов в нем
  2. Тело функции:
    • Цикл for, который выполняется для каждого элемента массива
      • Вывод сообщения с просьбой ввести элемент под номером i+1
      • Считывание значения i-го элемента массива с помощью функции scanf
      • Считывание значения в переменную mas[i]
  3. Код, который вызывает функцию array_input:
    • mas - указатель на массив
    • len - длина массива Ошибка сегментирования может возникнуть, если пользователь введет некорректное значение (например, букву вместо числа), которое не может быть помещено в переменную типа int.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы