Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.03.2011
Сообщений: 6
1

Выходит за диапазон

27.06.2011, 18:59. Показов 515. Ответов 2
Метки нет (Все метки)

ошибка появляется после компиляции при запуске, предыдущее всё работает, до места где нужно вводить с клавиатуры район(самое последнее), пишет :Run-Time Check Failure #2 - Stack around the variable 'd' was corrupted.
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
FILE *y;
struct school 
{int nomber;
char raion[20];
char famdir[20];
int ch_uchen;
int smeni_obuch;
int prof_klass;
char inos[30];}a[11],c,z;
void main()
{int i,j,p;
char *d;
int n;
y=fopen("f.txt", "r" );
printf("\n vvedite n:\n");
scanf("%d",&n);
for (i=0;i<=n;i++)
{
fscanf(y, "%d", &a[i].nomber);
fscanf(y, "%s", &a[i].raion);
fscanf(y, "%s", &a[i].famdir);
fscanf(y, "%d", &a[i].ch_uchen);
fscanf(y, "%d", &a[i].smeni_obuch);
fscanf(y, "%d", &a[i].prof_klass);
}
for (i=0;i<n;i++)
for(j=n;j>i;--j)
if (a[j-1].ch_uchen<a[j].ch_uchen)
{
z=a[j-1];
a[j-1]=a[j];
a[j]=z;
}
printf("\n uporyadocheno po chislu uchenikov\n\n");
for(i=0;i<=n;i++)
{
printf("%d\n", a[i].nomber);
printf("%s\n", a[i].raion);
printf("%s\n", a[i].famdir);
printf("%d\n", a[i].ch_uchen);
printf("%d\n", a[i].smeni_obuch);
printf("%d\n", a[i].prof_klass);
}
//наибольшее число учеников
p=a[1].ch_uchen;
for (i=2;i<=n;i++)
{
if (p<=a[i].ch_uchen)
p=a[i].ch_uchen;
}
for (i=0;i<=n;i++)
if (a[i].ch_uchen==p)
{
printf("%d\n", a[i].nomber);
printf("%s\n", a[i].raion);
printf("%s\n", a[i].famdir);
printf("%d\n", a[i].ch_uchen);
printf("%d\n", a[i].smeni_obuch);
printf("%d\n", a[i].prof_klass);
}
printf("vvedite nazvanie raiona \n");
scanf("%s",&d);
for (i=0;i<=n;i++)
if (a[i].raion==d)
{
printf("%d\n", a[i].nomber);
printf("%s\n", a[i].raion);
printf("%s\n", a[i].famdir);
printf("%d\n", a[i].ch_uchen);
printf("%d\n", a[i].smeni_obuch);
printf("%d\n", a[i].prof_klass);
}
fclose(y);
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2011, 18:59
Ответы с готовыми решениями:

Rand() выходит за диапазон
Две функции: inline void Playing_card::set_random_suit() { std::srand(time(NULL)); suit_ =...

Вектор выходит за диапазон
Здравствуйте. :) Как сделать так чтобы вектор не выходил за диапазон? #include &lt;iostream&gt;...

Обработать выделенный диапазон ячеек, результат записать в смежный диапазон
Напишите в среде Excel макрос, который в выделенном диапазоне ячеек должен выполнять заданные...

Найти диапазон который соответствует дате и данный диапазон имеет более старшую дату
Добрый день! Подскажите как лучше решить данную задачу - Задача - найти диапазон который...

2
Эксперт С++
2327 / 1625 / 264
Регистрация: 29.05.2011
Сообщений: 3,330
27.06.2011, 19:29 2
C
1
scanf("%s",&d);
на
C
1
scanf("%s",d);
Кстати, сравнение в строке 68 тоже не должно правильно работать.
0
Эксперт С++
4710 / 2535 / 753
Регистрация: 18.08.2009
Сообщений: 4,550
27.06.2011, 19:29 3
SilentGuard,
То что сразу кинулось в глаза:
строка 31:
Цитата Сообщение от SilentGuard Посмотреть сообщение
for(j=n;j>i;--j)
Нужно:
C
1
for(j=n-1;j>i;--j)
Строка 21:
Цитата Сообщение от SilentGuard Посмотреть сообщение
for (i=0;i<=n;i++)
Нужно:
C
1
for (i=0;i<n;i++)
то же самое в строках ниже. Хотя если Вы будете вводить n меньше 11, то выхода за пределы массива не будет.

Дальше:
строка 66:
Цитата Сообщение от SilentGuard Посмотреть сообщение
scanf("%s",&d);
прежде чем считывать строку в char *d, нужно воспользоваться : new char[].

Строка 49:
Цитата Сообщение от SilentGuard Посмотреть сообщение
p=a[1].ch_uchen;
а ведь Вы данные по самой первой школе записали в a[0]
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2011, 19:29

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Диапазон чисел - какой диапазон у каждой переменной
все int, можете написать какой диапазон у каждой переменной типа а1= a1 = rand()%7; b1 =...

Вставить диапазон с 1-го листа на 2-ой и удалить диапазон
Добрый день, всем. Посоветуйте каким образом сделать своеобразную кнопку отмены после вставки...

Будет ли корректно вычисление random если не указать в скобках диапазон и какой диапазон будет по умолчанию?
Ребят , что будет , если написать s:=random не указывая в скобках диапазона , будет ли корректно...

СМА Ariston AWM129EU не выходит на отжим, СМА AWM129 не выходит на отжим после замены проги
После замены электронного модуля на СМА Ariston AWM129EU 08054830(к сожалению, остальная часть цифр...

Диапазон
Привет. Как можно задать диапазон выбора чисел с помощью оператора case? ввести Х, а y= формулы....

Диапазон ip
Не кидайте камни,администрирование 3 день только изучаю. Есть диапазон ip адресов...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.