Форум программистов, компьютерный форум CyberForum.ru

Задачи для тренировки и лучшего понимания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возможно переписать программу? http://www.cyberforum.ru/cpp/thread153534.html
Есть программа Upgrade UA.exe хочу запустить ее на windows mobile 6. Возможно ли ее переписать.
C++ scanf Пусть нужно читать из текста слова, пропуская все символы, кроме a-z и A-Z. То есть из текста Hello, world! ololo O_o получить только Hello world ololo O o Меня интересует, можно ли это сделать с помощью одной лишь только функции scanf. Она, насколько я понял, позволяет немного использовать регулярные выражения (точно не знаю, они ли это). Так вот, можно ли сделать так, чтобы к примеру... http://www.cyberforum.ru/cpp/thread153153.html
C++ Вернуть stdin в консоль
Допустим я перенаправил поток stdin/stdout в файл с помощью функции freopen. Как заставить его снова работать с консолью? Добавлено через 9 минут Нашел. #include <cstdlib> #include <stdio.h> #include <conio.h> using namespace std;
Прошу помочь.Подключение dll на неуправляемом С/С++ C++
Возникла проблема.Есть рабочая dll, необходимо подключить к CLR приложению. Подключение происходит нормально. Все функции работают нормально кроме одной(хотя dll проверял все работает в обычных Win32 приложениях).Данная функция производит загрузку из файла если файл не найден-возвращает код ошибки,т.е. все нормально.Но если файл находит(путь указан точный) то происходит ошибка исключение...
C++ Не сразу закрывающаяся программа http://www.cyberforum.ru/cpp/thread152799.html
Есть команды в терминале.. вроде telnet или sql, эти программы запускаешь и они остаются открытыми пока не дашь команду, например, quit. Во время работы программы она показывает знак приглашения новой команды ">". Как это можно осуществить в C++?
C++ Парсер на С вопшем есть файл с текстом..... в етом файле есть какие даные(мусор)...и есть дни: Понедельник,Вторник,среда......с етого файла нада вывести ети дни в порядке нахождениэ... ето походу несложная задача,но для новичка сложно.... нужно именно на С а не С++ ... я пока только думал считывать каждую строку в масив и проверять каждый елемент по буквам... подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17539 / 5777 / 370
Регистрация: 30.03.2009
Сообщений: 15,909
Записей в блоге: 26
02.12.2010, 13:14     Задачи для тренировки и лучшего понимания
Сразу предупреждаю, что задача сложная.

Имеется тест. Тест явился результатом разбора на большой задаче, с ошибкой в которой мы столкнулись на работе. Конструкция __attribute__((noinline)) запрещает компилятору делать подстановку функции (чтобы на оптимизациях там что-нибудь не схлопнулось). Это самый простой способ, чтобы оптимизации гарантированно не убили интересную ситуацию (чтобы не нужно было бы писать более сложные примеры).

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
#include <stdio.h>
 
double d = 5436277361664796672.000000;
long long ll = 5436277361664796253LL;
 
int __attribute__((noinline))
func1 (void)
{
  double d1 = (double)ll;
 
  if (d > d1)
    return 1;
  else
    return 0;
}
 
int __attribute__((noinline))
func2 (void)
{
  if (d > (double)ll)
    return 1;
  else
    return 0;
}
 
int
main (void)
{
  printf ("%d %d\n", func1(), func2());
  return 0;
}
Этот тест я запускал на intel'е и на sparc'е. Использовал gcc в режиме с оптимизациями и без оптимизаций. Получил следующие результаты:

sparc: "gcc" напечатал "0 0"
sparc: "gcc -O2" напечатал "0 0"
intel: "gcc" напечатал "0 1"
intel: "gcc -O2" напечатал "1 1"

Объяснить расхождение. Так или иначе при разборе ситуации полезно было бы иметь возможность повторить всё это самому, но, понятное дело, практически ни у кого нет возможности запустить этот код на sparc'е. Вместо sparc'а можно попробовать запустить под виндой при помощи microsoft'овского или borland'овского комплятора. Я не знаю, какие они выдадут результаты, но в любом случае что-то с чем-то не совпадёт (потому как мы уже видим три разных результата)

Поскольку задача слишком сложная для начинающего, то оставляю подсказку. Задачу помещаю в первую очередь для того, чтобы на весьма коротком примере, можно было бы пронаблюдать проблему переноса программы с одной архитектуры на другую

Подсказка
SPARC'овский gcc работает правильно. Intel'овский gcc косячит и выдаёт неправильный результат (без оптимизаций он ошибается только в одном примере, с оптимизациями - в обоих)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru