С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для mozg-bolit
4 / 4 / 5
Регистрация: 20.09.2014
Сообщений: 307

Почему вылетает программа при 32768, а при 20 все работает нормально?

05.04.2017, 19:34. Показов 1520. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите исправить, почему программа вылетает при больших числах, а если поставить маленькие то все норм.
то есть если 32768 заменить на 20, а 16384 на 10 то программа нормально работает.
А с такими числами нет, отладчик показал на atoi( mas2[q].c_str());
Помогите исправить, я использую компилятор GNU GCC

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
#include <iostream>
#include <stdio.h>
#include <cstring>
#include <string>
#include <fstream>
#include <stdlib.h>
#include <sstream>
using namespace std;
int main(){
char finame[ 25 ];
int gg;
printf( "Enter the name of file: \n" );
scanf( "%s", finame );
ifstream fin(finame);
if (!fin)
{
cout << "Error opening file!" << endl;
cin.get();
return 0;
}else{
char c; int i1=0,i0=0;
string mas2[32768];
size_t i = 1;
while ((fin >> c) && i < 32768)
{
if (c =='1')i1++; if((i1==16384)&&(i0==0)){cout<<"bad"; gg=1; break;}
if (c =='0')i0++; if((i0==16384)&&(i1==0)){cout<<"bad"; gg=1; break;}
mas2[i++] = c;
}
int sovpad=0;
int nosovpad=0;
for(int t=1; t<=16384; t++)
{
int sum=0;
for (int q = t; q >=1; q--) /*Считаем сумму на числе котором мы находимся*/
{
sum= sum + atoi( mas2[q].c_str());
}
int newt=t+1; int schet=0; int sums=0;
for(int t1=newt; t1<=32768; t1++)
{
/* разобьем все оставшиеся числа по t и посчитаем суммы и сравним кажное с sum*//* */
int schetchik=0;
/*берем по t значений и суммируем*/
schet++;
sums= sums + atoi( mas2[t1].c_str());
if(schet==t){schet=0; if(sum==sums){sovpad++;}else{nosovpad++;} sums=0;}
}
if((sovpad>=3)&&(nosovpad<=1)){cout<<"bad"; gg=1;
break;
}
sovpad=0;
nosovpad=0;
}
if(gg!=1){cout<<"good";}
fin.close(); // закрываем файл
}
cin.get();
return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.04.2017, 19:34
Ответы с готовыми решениями:

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout &lt;&lt; &quot;Введи число&quot; &lt;&lt; endl; cin &gt;&gt; choice; if (choice == 1) { cout &lt;&lt; &quot;Hello&quot; &lt;&lt; endl; } ...

Почему программа выдает ошибку при первом запуске, а дальше работает нормально? Код C
Подскажите почему программа выдает ошибку при первом запуске, а дальше работает нормально? #include &lt;iostream&gt; #include...

Почему вылетает программа при нажатии Enter?
Здравствуйте! Помогите, кто разбирается хорошо в ВАТ-анике )) Работает моя программа нормально, но! Если тут :LOCK cls echo...

8
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.04.2017, 22:04
Индексация массивов - с нуля.
0
 Аватар для mozg-bolit
4 / 4 / 5
Регистрация: 20.09.2014
Сообщений: 307
05.04.2017, 22:43  [ТС]
это понятно. но это ни на что не влияет в данном случае !
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.04.2017, 22:52
Цитата Сообщение от mozg-bolit Посмотреть сообщение
это ни на что не влияет
Ну значит ты плохо понял.
Вот здесь при t = 32768 будет q = 32768, а после mas2[32768].
C++
1
2
3
4
5
6
7
for(int t=1; t<=16384; t++)
{
int sum=0;
for (int q = t; q >=1; q--) /*Считаем сумму на числе котором мы находимся*/
{
sum= sum + atoi( mas2[q].c_str());
}
0
 Аватар для mozg-bolit
4 / 4 / 5
Регистрация: 20.09.2014
Сообщений: 307
05.04.2017, 23:02  [ТС]
И у меня объявлено mas2[32768]; того там 32768+1 нулевое значение которое я пропускаю, так и я же писал выше, что при замене 32768 на 20 и 16384 на 10, все работает нормально, файлы подаются соответсвующие на 32768 и 20 символов
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
05.04.2017, 23:15
Цитата Сообщение от mozg-bolit Посмотреть сообщение
И у меня объявлено mas2[32768]
Значит индекс, равный 32768 - это выход за пределы выделенной памяти.
Цитата Сообщение от mozg-bolit Посмотреть сообщение
C++
1
2
3
4
5
6
7
for(int t1=newt; t1<=32768; t1++)
{
/* разобьем все оставшиеся числа по t и посчитаем суммы и сравним кажное с sum*//* */
int schetchik=0;
/*берем по t значений и суммируем*/
schet++;
sums= sums + atoi( mas2[t1].c_str());
0
 Аватар для mozg-bolit
4 / 4 / 5
Регистрация: 20.09.2014
Сообщений: 307
05.04.2017, 23:49  [ТС]
И как тогда это исправить ?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
05.04.2017, 23:53
Лучший ответ Сообщение было отмечено mozg-bolit как решение

Решение

Цитата Сообщение от mozg-bolit Посмотреть сообщение
И как тогда это исправить ?
Не ставь <=, просто < .
1
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
06.04.2017, 08:59
И еще
Цитата Сообщение от mozg-bolit Посмотреть сообщение
string mas2[32768];
Такое количество строк может не поместится в стеке.
Сделайте этот массив глобальным.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.04.2017, 08:59
Помогаю со студенческими работами здесь

Почему программа вылетает при конкатенации строк?
Собственно код #ifndef __STRING #define __STRING #include &lt;ostream&gt; class String { public: String();

При отключение Ata винта все работает нормально, а с ним ком тормозит
Доброго времени суток! У меня такая проблема, в система два винта: Ata и Sata! Sata (wdc WD-2500AAjs), Ata(Hitachi)! При отключение Ata...

Программа не запускается, хотя при запуске из IDE работает нормально. В чём может быть проблема?
from tkinter import * def itog(): global summa global count global a armean = summa/a ans.configure(text='Среднее...

=Sum([BYN]) не работает под терминалом, если запустить нормально - все работает. ПОЧЕМУ ?
в общем разделил базу могу сидеть в lan сети и использовать таблицы по сети редактируя морду. Все работает нормально но привязка к...

Почему при матрице 19х19 считает, а при 20х20 вылетает?
Здравствуйте, искал решение задачи коммивояжера полным перебором нашел тут: ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru