0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 3
1

Непонятная ошибка сегментации

16.10.2013, 00:32. Показов 565. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
  • Задание 1: в таблице хранятся данные о баллах учеников участвовавших в олимпиаде. Распечатать фамилии тех, кто набрал больше 30 баллов.

Реализация:
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
#include  <stdio.h>
#include <iostream.h>
int main()
{
setlocale(LC_ALL, "Russian");    
const int N=3; int i,p;
struct student {char fam[15];   // описание структуры с именем студент с полями:  ФИО студента
               float stip; // счет
               };
student stud[N];  // массив из таких структур чтобы записать данные на  N студентов
for (i=0;i<N;i++)    // ввод данных о студентах
{   p=i+1;  
    printf ("%d-й студент",p);
printf ("\nФамилия:");scanf("%f",stud[i].fam);
printf ("\nБалл на олимпиаде:") ; scanf("%s",stud[i].stip);
}
 
 
{
int maxs=30;
for (i=0;i<N;i++)  
if (stud[i].stip>maxs)
printf("\n %f набрал более 30 баллов.",stud[i].fam);
}
 
}
Крашится при переходе на ввод балла, в отладке показывает ошибку сегментации. Где упущено?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2013, 00:32
Ответы с готовыми решениями:

Непонятная ошибка сегментации
В программе используется дерево, элементы которого описываются и создаются таким образом: struct...

Ошибка Сегментации
Всем привет! При выполнении кода вылетает ошибка: &quot;Ваша программа вызвала нарушение доступа(ошибку...

Ошибка сегментации
Здравствуйте. Скажите, почему так делать нельзя? class A { public: A* array; //массив ...

Ошибка сегментации
Здравствуйте, написал программу, запускаю- Windows пишет: &quot;обнаружена ошибка. Приложение будет...

7
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,259
Записей в блоге: 7
16.10.2013, 00:44 2
у вас заданы неправильные шаблоны ввода
поменяйте местами %f и %s

%f - ввод float
%s - ввод cstring
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 3
16.10.2013, 00:48  [ТС] 3
не нашел как отредактировать сообщение
это сам вспомнил.
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
#include  <stdio.h>
#include <iostream.h>
int main()
{
setlocale(LC_ALL, "Russian");    
const int N=3; int i,p;
struct student {char fam[15];   // îïèñàíèå ñòðóêòóðû ñ èìåíåì ñòóäåíò ñ ïîëÿìè:  ÔÈÎ ñòóäåíòà
               float stip; // ñ÷åò
               };
student stud[N];  // ìàññèâ èç òàêèõ ñòðóêòóð ÷òîáû çàïèñàòü äàííûå íà  N ñòóäåíòîâ
for (i=0;i<N;i++)    // ââîä äàííûõ î ñòóäåíòàõ
{
    
    p=i+1;  
    printf ("%d-é ñòóäåíò",p);
printf ("\nÔàìèëèÿ:");scanf("%s",stud[i].fam);
printf ("\nÁàëë íà îëèìïèàäå:");scanf("%f",stud[i].stip);
 
}
 
 
{
int maxs=30;
for (i=0;i<N;i++)  
if (stud[i].stip>maxs)
printf("\n %s íàáðàë áîëåå 30 áàëëîâ.",stud[i].fam);
}
 system("pause");
}
Но ведь все равно не работает...
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
16.10.2013, 01:08 4
поставьте & перед stud[i] в scanf
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,259
Записей в блоге: 7
16.10.2013, 01:23 5
Выставьте предупреждений от компилятора на макс уровень
Замените 17ю строку на
C
1
printf ("\nБалл на олимпиаде:");scanf("%f",&stud[i].stip);
0
25 / 25 / 2
Регистрация: 25.09.2013
Сообщений: 76
16.10.2013, 10:28 6
или stud + i)

Добавлено через 44 секунды
Цитата Сообщение от vua72 Посмотреть сообщение
поставьте & перед stud[i] в scanf
То же самое)
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
16.10.2013, 13:33 7
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
#include  <stdio.h>
#include <iostream>
struct student {
    char fam[15]; // описание структуры с именем студент с полями:  ФИО студента
    float stip; // счет
};
const int N = 3;
int main() {
    setlocale(LC_ALL, "Russian");
    int i, p;
    student stud[N]; // массив из таких структур чтобы записать данные на  N студентов
    // ввод данных о студентах
    for (i = 0; i < N; i++) {
        p = i + 1;
        printf("%d-й студент", p);
        printf("\nФамилия:");
        scanf("%15s", stud[i].fam);
        printf("\nБалл на олимпиаде:");
        scanf("%f", &stud[i].stip);
    }
    int maxs = 30;
    for (i = 0; i < N; i++)
        if (stud[i].stip > maxs)
            printf("\n %s набрал более 30 баллов.", stud[i].fam);
 
//  system("pause");
    return 0;
}
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
16.10.2013, 14:41 8
Цитата Сообщение от Rass7et Посмотреть сообщение
scanf("%s",stud[i].stip);
stip это не строка
C++
1
scanf("%f", &stud[i].stip);
0
16.10.2013, 14:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2013, 14:41
Помогаю со студенческими работами здесь

Ошибка сегментации.
Здравствуйте, дорогие форумчане! Тут такое дело, есть программа, код приведен ниже, там есть...

ошибка сегментации
где может быть ошибка?

Ошибка сегментации
int main() { int mas; } Объясните, почему такой код привод к ошибке? (компилятор VS 2012)

ошибка сегментации
Всем привет! Я никогда не программировал, а тут решил склепать небольшую программку. Да вот...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru