С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
7 / 6 / 1
Регистрация: 24.11.2017
Сообщений: 124
1

При вводе данных в программу выходит ошибка Segmentation fault

28.03.2019, 16:24. Показов 1231. Ответов 13

Author24 — интернет-сервис помощи студентам
В чем может быть ошибка? Заранее спасибо!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <string>
using namespace std;
 
class MARSH
{
  public:
    string name1, name2;
    int num;
    void enter()
    {
        cout << "Начало: ";
        cin >> name1;
        cout << "Конец: ";
        cin >> name2;
        cout << "Номер: ";
        cin >> num;
    }
};
 
int main()
{
    int n, i;
    MARSH arr[n];
    cout << "Кол-во маршрутов: ";
    cin >> n;
    for (i = 1; i <= n; i++)
        arr[n].enter();
    for (i = 0; i <= n; i++)
    {
        if (n == arr[i].num)
        {
            cout << "Начальный маршрут: " << arr[i].name1 << endl;
            cout << "Конечный маршрут: " << arr[i].name2 << endl;
        }
 
        return 0;
    }
}
Миниатюры
При вводе данных в программу выходит ошибка Segmentation fault  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2019, 16:24
Ответы с готовыми решениями:

Segmentation fault (core dumped): ошибка при любом вводе после компиляции
Всем доброго времени суток. Не могли бы посмотреть программу и подсказать ошибку. При компиляции...

Ошибка при запуске скриптов: Segmentation fault
Пакет node.js v0.12.9 (знаю, что старая версия, но для работы достаточно v0.12.x версии) собирался...

Ошибка выполнения Segmentation fault при открытии файла
Привет всем! почему не открывается файл, не понимаю что такое? ubuntu 16, qt creator 3.6.1...

C++ ошибка кода Segmentation fault при динамической памяти
помогите пожалуйста. задание такое: нужна программа которая хранит название страны с медалями и...

13
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
28.03.2019, 17:15 2
не i<=n, а i<n
0
7 / 6 / 1
Регистрация: 24.11.2017
Сообщений: 124
28.03.2019, 17:17  [ТС] 3
Цитата Сообщение от zayats80888 Посмотреть сообщение
не i<=n, а i<n
Все равно не работает
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
28.03.2019, 17:25 4
starpower,
C++
1
2
3
4
5
6
constexpr int n = 12345; // размер массива выделенного статически должен имет константное значение
int i;
MARSH arr[n];
 
 
for (i = 1; i <= n; i++) // индексы в массиве начинаются с нуля значит i <= n - 1 или i < n
Добавлено через 1 минуту
C++
1
2
for (i = 1; i <= n; i++) // почему тут i = 1
        arr[n].enter(); //почему тут arr[n]
0
7 / 6 / 1
Регистрация: 24.11.2017
Сообщений: 124
28.03.2019, 19:41  [ТС] 5
Цитата Сообщение от _stanislav Посмотреть сообщение
constexpr int n = 12345; // размер массива выделенного статически должен имет константное значение
int i;
MARSH arr[n];
for (i = 1; i <= n; i++) // индексы в массиве начинаются с нуля значит i <= n - 1 или i < n
Ок я доработал прогу, только теперь при вводе номера маршрута он выводит только первый, а когда я ввожу другие, он показывает пустоту. Может в условии нужно что-то поменять?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
 
class MARSH
{
  public:
    string name1, name2;
    int num;
    void enter()
    {
        cout << "Начало: ";
        cin >> name1;
        cout << "Конец: ";
        cin >> name2;
        cout << "Номер: ";
        cin >> num;
    }
};
 
int main()
{
    int i, n;
    MARSH arr[3];
    for (i = 0; i < 3; i++)
    arr[i].enter();
    cout << "Номер маршрута: ";
    cin >> n;
    for (i = 0; i < 3; i++)
    {
        if (n == arr[i].num)
        {
            cout << "Начальный маршрут: " << arr[i].name1 << endl;
            cout << "Конечный маршрут: " << arr[i].name2 << endl;
        }
 
        return 0;
    }
}
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,884
Записей в блоге: 1
28.03.2019, 19:54 6
starpower,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
 
class MARSH
{
  public:
    string name1, name2;
    int num;
    void enter()
    {
        cout << "Начало: ";
        cin >> name1;
        cout << "Конец: ";
        cin >> name2;
        cout << "Номер: ";
        cin >> num;
    }
};
 
int main()
{
    int i, n;
    MARSH arr[3];
    for (i = 0; i < 3; i++)
    arr[i].enter();
    cout << "Номер маршрута: ";
    cin >> n;
    while(true)
    {
        if (n >= 0 && n < 3)
        {
            cout << "Начальный маршрут: " << arr[n].name1 << endl;
            cout << "Конечный маршрут: " << arr[n].name2 << endl;
        }
        else
        {
            cout << "Error";
            break;
        }
    }
 
    return 0;
}
0
7 / 6 / 1
Регистрация: 24.11.2017
Сообщений: 124
28.03.2019, 21:20  [ТС] 7
Цитата Сообщение от _stanislav Посмотреть сообщение
#include <iostream>
{
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
 
class MARSH
{
  public:
    string name1, name2;
    int num;
    void enter()
    {
        cout << "Начало: ";
        cin >> name1;
        cout << "Конец: ";
        cin >> name2;
        cout << "Номер: ";
        cin >> num;
    }
};
 
int main()
{
    int i, n;
    MARSH arr[3];
    for (i = 0; i < 3; i++)
    arr[i].enter();
    cout << "Номер маршрута: ";
    cin >> n;
    while(true)
    {
        if (n >= 0 && n < 3)
        {
            cout << "Начальный маршрут: " << arr[n].name1 << endl;
            cout << "Конечный маршрут: " << arr[n].name2 << endl;
        }
        else
        {
            cout << "Error";
            break;
        }
    }
 
    return 0;
}
}
Постоянно выдает error, а если как-то пытаюсь изменить вводимые данные, то получается бесконечный цикл
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
28.03.2019, 21:24 8
Цитата Сообщение от starpower Посмотреть сообщение
бесконечный цикл
Цитата Сообщение от _stanislav Посмотреть сообщение
while(true)
Естественно он будет, мне кажется, что _stanislav забыл в цикл cin закинуть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while(true)
    {
        if (n >= 0 && n < 3)
        {
            cout << "Начальный маршрут: " << arr[n].name1 << endl;
            cout << "Конечный маршрут: " << arr[n].name2 << endl;
        }
        else
        {
            cout << "Error";
            break;
        }
      cin>>n;
    }
Ну а если хотите, чтобы программа отработала единожды, то удалите while(true)
0
7 / 6 / 1
Регистрация: 24.11.2017
Сообщений: 124
28.03.2019, 21:29  [ТС] 9
Цитата Сообщение от Pashka Durov Посмотреть сообщение
бесконечный цикл
Сообщение от _stanislav
while(true)
Естественно он будет, мне кажется, что _stanislav забыл в цикл cin закинуть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while(true)
    {
        if (n >= 0 && n < 3)
        {
            cout << "Начальный маршрут: " << arr[n].name1 << endl;
            cout << "Конечный маршрут: " << arr[n].name2 << endl;
        }
        else
        {
            cout << "Error";
            break;
        }
      cin>>n;
    }
Он показывает в конце не нужный маршрут, а следующий после него (например надо 2, а он показывает 3, или надо 1, а показывает 2 и т.д.)
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
28.03.2019, 21:34 10
Цитата Сообщение от starpower Посмотреть сообщение
Он показывает в конце не нужный маршрут, а следующий после него (например надо 2, а он показывает 3, или надо 1, а показывает 2 и т.д.)
Потому что массивы с нуля индексируются. Так будет работать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while(true)
    {
 
        if (n >= 1 && n < 4)
        {
            cout << "Начальный маршрут: " << arr[n-1].name1 << endl;
            cout << "Конечный маршрут: " << arr[n-1].name2 << endl;
        }
        else
        {
            cout << "Error";
            break;
        }
      cin>>n;
    }
0
4256 / 2952 / 688
Регистрация: 08.06.2007
Сообщений: 9,860
Записей в блоге: 4
28.03.2019, 21:36 11
А почему нет #include <string> ? Какой-то компилятор это допускает?
0
143 / 92 / 34
Регистрация: 30.01.2018
Сообщений: 469
28.03.2019, 23:14 12
Цитата Сообщение от _stanislav Посмотреть сообщение
#include <string.h>
palva, есть же
0
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
28.03.2019, 23:21 13
Цитата Сообщение от Pashka Durov Посмотреть сообщение
есть же
Это либа из стандартной библиотеки Си, ее С++ аналог это <cstring>.
Цитата Сообщение от palva Посмотреть сообщение
Какой-то компилятор это допускает?
Студия вместе с #include <iostream>, тащит за собой еще парочку вторую либ, но не уверен что string тоже.
0
7 / 6 / 1
Регистрация: 24.11.2017
Сообщений: 124
04.04.2019, 16:03  [ТС] 14
Почти получилось, только при вводе
Цитата Сообщение от Pashka Durov Посмотреть сообщение
Потому что массивы с нуля индексируются. Так будет работать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while(true)
{
if (n >= 1 && n < 4)
while(true)
    {
 
        if (n >= 1 && n < 4)
        {
            cout << "Начальный маршрут: " << arr[n-1].name1 << endl;
            cout << "Конечный маршрут: " << arr[n-1].name2 << endl;
        }
        else
        {
            cout << "Error";
            break;
        }
      cin>>n;
    }
А можно ли статический массив заменить динамическим, чтобы можно было самому выбирать число маршрутов? Если да, то как?
0
04.04.2019, 16:03
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2019, 16:03
Помогаю со студенческими работами здесь

Ошибка Segmentation fault: 11 при реализации функции GCD
Добрый день! делаю задание на одном известном образовательном ресурсе, вот само задание: ...

При компиляции происходит ошибка - raised exception class segmentation fault (11)
Я начал недавно изучать программирование на андройд . Чтобы проверять работоспособность программы я...

При получения пакета возникает ошибка "Segmentation Fault"
Добрый день! Учился отправлять структуру по сети, натолкнулся на глюк. Если комментирую/удаляю...

Ошибка "Segmentation fault" при организации дерева
Есть следующие функции Three сreateThree(Node **q) { if((*q)-&gt;p) { Three...

Ошибка "Segmentation fault" при выполнении программы
Почему такой код работает, __strlen: // result - %rdx, argument - %rsi movq %rsi, %rdx ...

Ошибка "Segmentation fault" при вызове метода erase() контейнера vector
Хочу убрать изолированные вершины в графе. На строке 75 выдает &quot;Segmentation fault&quot;. #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru