Страницы (3): [1] 2 3 » Показать все 35 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- переписать на С? (https://hlfx.ru/forum/showthread.php?threadid=3886)
переписать на С?
в связи с тем что в gfortran обнаружился на редкость идиотский баг, g95 не хочет линковать модули от plplot'а, а триал ifort'а требует анальной регистрации, уже подумываю переписать свои наработки на C (не смотря на боль). в общем, посоветуйте справочник по переходу.
ну и сразу задам вопросы, что бы знать стоит ли игра свеч:
1)производные типы данных есть только в ++ или и в чистом C?
2)массивы всегда начинаются с нуля, или можно зааллокатить произвольные границы?
3)есть ли такое понятие как вырезка массива?
4)в фортране есть такая удобная штука -- contains блок: размещённые внутри этого блока функции и подпрограммы имеют доступ ко всей памяти родительского блока. в C что ни будь аналогичное есть?
5)как работать со строками, есть какой ни будь аналог write или format'а?
__________________
http://www.moddb.com/mods/monorail-quest
для строк есть sprintf
массивы всегда начинаются с нуля.
производные типы данных только в С++
что такое вырезка массива?
contains block? не, не слышал
Следует понимать, что чистый Си минимально отрывается от реального положения дел: что напишешь, то и будет выполняться.
Практически во всех остальных языках полно неочевидных конструкций, существующих только на этапе компиляции. В других языках этот слой абстракции за каким-то чортом существует и в исполняемой программе, но это скорее удел виртуальных машинок, а таковыми я считаю все языки, со встроенным сборщиком мусора, хоть Ксерокс и Тот Кого Я Учил Брить со мной не согласятся
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ничерта не понял, удачи тебе мужик!
__________________
ㅤ
А хотя. Я тут терминологию перечитал. Есть производные типы данных в Си, кроме классов, разумеется. Но практически любой класс может быть описан структурой и неким набором функций, с заранее обговоренным нейм-спейсом.
Т.е. в С++ мы бы писали
1 | MyClass :: Set( int value ) |
2 | { |
3 | m_iValue = value; |
4 | } |
1 | MyClass_Set( mystruct_t *p, int value ) |
2 | { |
3 | p->m_iValue = value; |
4 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
>что такое вырезка массива?
ну например M(1:9:3) -- будет выглядеть как массив из элементов массива M от начиная с 1го, до 9 с шагом 3
>[i]contains block? не, не слышал
хмм ну это так
program main
[описание переменных]
[тело программы]
contains
[subroutine()]
[function[]] -- все функции и подпрограммы внутри этогоо contains'а имеют доступ ко всем переменным из main
endprogram
>минимально отрывается от реального положения дел
ну вот фортран тоже, но блин такая беда с компилятором просто угнетает
__________________
http://www.moddb.com/mods/monorail-quest
>Но практически любой класс может быть описан структурой и неким набором функций, с заранее обговоренным нейм-спейсом.
ага, вроде понял. т.е. это аналог интерфейсного блока.
__________________
http://www.moddb.com/mods/monorail-quest
Есть мнение (и не только моё), что нужно переписать на си весь код, написанный на фортране, после чего стереть все существующие в мире копии g77/g95/ifort, включая исходники и мануалы, сжечь книги по ним и пристрелить наиболее йаростных адептов этого языка.
__________________
Нафиг тройные масивы тебе, оберни все класами в плюсах и все быстро сделаешь.
__________________
vk.com/skullcapstudios
thambs если я правильно понял, вырезку массивов можно сделать через for:
1 | int[10] array1; |
2 | int[5] array2; |
3 |
4 | for (int i = 0; i < 10; i += 2) { |
5 | array2[i >> 1] = array1[i]; |
6 | } |
__________________
-Brain is dead-
KiQ
Если не секрет, кто научил тебя строить циклы таким образом?
Почему не цикл от 0 до 5 с адресацией вида array1[i*2]?
__________________
XaeroX да это я в лоб сделал эмуляцию этой вырезки
__________________
-Brain is dead-
KiQ
Просто странно, решение "в лоб" через операторы сдвига.
__________________
XaeroX для скорости же. Умножение тоже можно заменить на <<1
__________________
-Brain is dead-
KiQ
Я не спрашиваю, зачем заменять деление на сдвиг, это знает даже ребёнок.
Я спрашиваю, зачем строить цикл так, что при адресации нужно выполнять сдвиг (или деление) вместо потенциального "бесплатного" умножения, выполняемого самой командой mov?
Ладно, это риторический вопрос. В очередной раз убедился, до чего ява и сишарп довели народ. Никто уже и не задумывается, как компьютер выполняет программу. Зато как заменить умножение на сдвиг - это все бегом делают. Двойные стандарты...
__________________
Временная зона GMT. Текущее время 04:36. | Страницы (3): [1] 2 3 » Показать все 35 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024