Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2017, 08:54   #1
user707
 
Регистрация: 01.06.2017
Сообщений: 6
По умолчанию Глюки Turbo C++

Добрый день!

Помогаю племяннику с задачками в колледже по C. Изучают они его по Turbo C++.
Скачал с codeplex, запускаю, пишу простенькую программку:
Код:
#include <stdio.h>
#include <conio.h>

void main()
{
    float a, func;

    clrscr();
    printf("Vvedine parametr a=");
    scanf("%f", &a);
    if (a>=2)
       func=4;
    else if (a>=1)
       func=a*a;
    else if (a==0)
       printf("f(a) NEOPREDELENA");
    else
       func=1/a;

    if (a!=0) printf("f(a)=%f", func);
    getch();
}
Программа какое-то время работает нормально, а через 5-10 запусков у нее "слетает крыша" (я хз, может переполнение какое-то или еще что-то) и она начинает выдавать неверные результаты, например:
Код:
Vvedite parametr a=3
f(a)=3.0000
Пробовал на 3х разных компах.
Гуглил на предмет таких же проблем, ничего не нашел...
Как решать проблему - тоже непонятно.
user707 вне форума Ответить с цитированием
Старый 01.06.2017, 09:54   #2
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Где-то сорван стек походу..проверяйте, особенно scanf, оно самое тут подозрительное.
турбо-С - это ДОС, а в ДОСе по выходу программы, ресурсы не освобождаются. Т.о. где-то накапливается ресурс занятый. Попробуйте убрать вызовы системы типа clrscr/getch

Последний раз редактировалось alexzk; 01.06.2017 в 09:57.
alexzk вне форума Ответить с цитированием
Старый 01.06.2017, 12:37   #3
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Если я правильно понимаю - этот Турбо Си, который Вы скачали, из-под досбокса стартует. С учётом сказанного выше

Цитата:
Сообщение от alexzk Посмотреть сообщение
турбо-С - это ДОС, а в ДОСе по выходу программы, ресурсы не освобождаются.
можно поковыряться в конфиге досбокса и увеличить ему памяти.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 01.06.2017, 12:52   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
который Вы скачали
Откуда вы знаете что он скачал?

Есть и не досовские версии вроде.

Цитата:
Сообщение от user707 Посмотреть сообщение
Помогаю племяннику с задачками в колледже по C
То есть решаете за него?)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.06.2017, 12:58   #5
user707
 
Регистрация: 01.06.2017
Сообщений: 6
По умолчанию

Все верно, запуск из-под DOS. В колледже используется именно эта версия.
В конфиге выставил максимум памяти (63Мб). Было 32.

Пишет так:
Код:
Maximum memory size is 63 MB
Memory sizes above 31 MB are NOT recommended.
Ничего не изменилось.
Замена операторов scanf и printf на cin и на cout не решает проблему.
Закомменчивание системных функций очищения экрана и ввода символа тоже.

Alex11223, да, решаю за него. Сути проблемы не меняет.
user707 вне форума Ответить с цитированием
Старый 01.06.2017, 13:07   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Откуда вы знаете что он скачал?
Цитата:
Сообщение от user707 Посмотреть сообщение
Скачал с codeplex
Там этих Турбо-Си не так уж и много, я тоже себе скачал как раритет

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Есть и не досовские версии вроде.
Вот это она и есть Вся её недосовость заключается в запуске из-под эмулятора того же ДОСа.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 01.06.2017, 13:12   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Насколько я понимаю, у DOSBOX свой FPU эмулятор.
Кто его знает как он работает.
Перезапуск DOSBOX-а решает проблему?
waleri вне форума Ответить с цитированием
Старый 01.06.2017, 13:39   #8
user707
 
Регистрация: 01.06.2017
Сообщений: 6
По умолчанию

Да, перезапуск DosBox решает проблему, через 5-10 запусков программы ситуация повторяется.
user707 вне форума Ответить с цитированием
Старый 01.06.2017, 14:14   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что-то странное у Вас творится.

у меня Windows 7 64 бита.
я скачал я Turbo C++ (поиском в гугле)


распаковал в папку. запустил из под DosBox 0.74 (конфиг могу предоставить), открыл программку с вашим кодом:
tc_001.png

после компиляции получил такой EXE файл:
T1_EXE.rar


папка с TURBOC:TURBOC3.rar

запускал T1.EXE раз 20-25 (сбился со счёта).
всё работает.

попробуйте у себя позапускать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.06.2017, 14:24   #10
user707
 
Регистрация: 01.06.2017
Сообщений: 6
По умолчанию

Serge_Bliznykov, скачал Ваш архив, заменил все файлы. Проверил - опять то же самое, глюк присутствует.
Вы запускали сам ехе-файл? Если я в DOSBOX выхожу и запускаю его там - да, проблемы нет.
Она проявляется у меня только при запуске из-под оболочки TC, с помощью Ctrl+F9.
user707 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глюки с strpos() SoldSoul PHP 11 04.01.2011 17:06
USB глюки Dormidon Помощь студентам 1 16.06.2010 14:44
FireFox: глюки Arigato Софт 5 10.12.2009 04:25
Глюки с указателями _Инженер_ Общие вопросы Delphi 1 17.09.2008 20:20
Глюки Делфи Killbrum Помощь студентам 9 20.05.2008 20:31