Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: AZA_N
Дата сообщения: 03.11.2008 20:29
xdude, спасибо. Мне как раз и надо отучиться от фортрана, т.к. в gant4 надо будет создавать классы и разбираться в тех, которые они там насоздавали. Какую, на Ваш взгляд, книгу по ООП Вы бы могли порекомендовать для начала (желательно, чтобы ее в сети можно было найти).
Автор: xdude
Дата сообщения: 03.11.2008 20:52
AZA_N
Честно сказать, даже не знаю. Я сам уже очень давно этим занимаюсь, ООП начинал изучать очень давно с Object Pascal и Делфи, и читал отрывками всё, что находил на дисках с софтом и в интернете. А сейчас вот читаю "Объектно-ориентированный анализ и проектирование с примерами приложений" (3-е издание, Буч, Янг, Хьюстон и другие). Кстати, первая _бумажная_ книга, которую я читаю по этой теме . Там в первых главах идёт краткий обзор эволюции различных подходов к программированию, и преимущества объектно-ориентированного подхода, по сравнению с остальными. Не знаю, как Вам покажется по сложности, но мне эта книга очень нравится. Я пока не дошел до этого, но в конце там приводятся примеры объектно-ориентированного проектирования на примере конкретных приложений и задач. Хотя, должен сказать, о синтаксисе и грамматике С++ там ничего не говорится, эта книга посвящена самому методу, и после прочтения этот метод можно применять вкупе с любым объектно-ориентированным языком, будь то Java, SmallTalk или C++.
Автор: TeXpert
Дата сообщения: 04.11.2008 04:53
AZA_N
Есть ещё книга немецкого автора (на аглицком), называется примерно "C++ для математиков", вообще, думаю, для хорошо знающих математику въехать в ООП -- ноу ай проблема)
Автор: Travolta25
Дата сообщения: 04.11.2008 13:33
Приветствую.
Подскажите, пожалуйста, по шагам от запуска Visual C++, что надо сделать
чтобы заработала Hello word.
И получить релиз *.exe
У меня Microsoft Visual Studio .Net 2003
При работе выбираю Visual C++
Заранее спасибо
Cкрин — http://forum.codeby.net/ipb.html?act=attach&type=post&id=1986
Автор: Stitchi16
Дата сообщения: 04.11.2008 15:36
Как на Visual C++ сделать вывод в консоли на русском языке? Скачал уже русский VC всё равно кракозябры выводит.
Автор: akaGM
Дата сообщения: 04.11.2008 15:56
Stitchi16
1. писать все тексты в дос-кодировке 866

2.
Код: #include <stdio.h>
#include <windows.h>

void main() {
{
SetConsoleOutputCP(1251);
printf("\nя плохо гаварю па руски...\n");
}
Автор: Stitchi16
Дата сообщения: 04.11.2008 16:17
1. Это как?
2. Не работает.
Автор: akaGM
Дата сообщения: 04.11.2008 16:31
Stitchi16
1. ну тогда тебе это и не надо...
2. что не работает?
Автор: Stitchi16
Дата сообщения: 04.11.2008 16:40
2. Ну как что может не работать? Вывод русских букаф на консоль.
Автор: akaGM
Дата сообщения: 04.11.2008 16:43
Stitchi16
у всех работает...
у тебя, небось, винда русская гы-гы

ну попробуй вот так:

SetConsoleOutputCP(1251);
SetConsoleCP(1251);
Автор: Stitchi16
Дата сообщения: 04.11.2008 16:52
Всё равно не хочет работать.
В VC++ есть что нибудь похожее как на C++ Builder - clrs() очистка экрана?
Автор: akaGM
Дата сообщения: 04.11.2008 17:12
Stitchi16
значит, у тебя в консоли установлен растровый фонт, поставь truetype (например, Lucida Console) и попробуй ещё раз...
Автор: akaGM
Дата сообщения: 04.11.2008 22:16
AZA_N

Цитата:
Бывшие фортранщики...

глас вопиющего в пустыне из-за неверного обращения...
Автор: AZA_N
Дата сообщения: 04.11.2008 22:57
akaGM, посыпаю голову пеплом. - " ... использующие два этих язка с учетом их особенностей" - так лучше? Вы бы лучше подсказали, как надо.
Пока решила остановиться на ремендованной выше книге по ООП и учебнике Стивена Прата. Может быть, не так и страшен Geant4, как кажется с первого взгляда?
Автор: Stitchi16
Дата сообщения: 05.11.2008 00:19
akaGM Спасибо заработало...
Автор: akaGM
Дата сообщения: 05.11.2008 13:42
AZA_N
так хуже...
да и кто ж себя захочет признать "бывшим"?
бывший фортранщик вряд ли сегодня является научником, скорее всего (%%95) он -- переквалифицировавшийся программист с совершенно другим кругом задач... исключения из этого -- именно что исключения...

лично я могу что-либо посоветовать, только зная класс решаемых задач и прочих "wanted" особенностей...
С++ -- могучий язык, но почему-то мне кажется, что для научников его роль -- вторична...
например...
графика, ГУИ, системные вещи -- это да...
оч. хорошо на нём смотрится main() (т.е. ведущая программа) со счётом непременно на Ф
и, так или иначе, обычно приходится _использовать/модифицировать_ готовые классы, редко -- создавать...
попробуй (в качестве упражнения) напиши умножение комплексных матриц (классы, переопределение операторов -- по-взрослому, в общем), а потом сравни с той же MATMUL()
(каковая, кстати, является частью _стандарта языка_, не расширением или какой-то реализацией)
ну и тд...

если твоя Geant4 -- научная библиотека, то (для _нормальных_ библиотек) неважно на чём она пИсана, доступ к ней можно получить на любом языке...

собственно вот...
Автор: AZA_N
Дата сообщения: 05.11.2008 14:18
akaGM, c «нормальностью» у Geant4 плохо (она бесплатная со всеми вытекающими). И работает под WinXP+Cygwin+CLHEP+VS2005 с командной строки, причем, если промахнуться с номерами версий для всего этого, то вообще ничего не заработает (родной для нее Linux, но сотрудник уже несколько месяцев бьется, чтобы хотя бы examples запустить), так что, как уверяют сами разработчики, писать надо на С++. Задача самая простая – проводить в помощью этой библиотеки расчеты (для чего надо просто разобраться в тех классах, которые там уже есть, и научиться создавать свои производные классы; расчетную часть писать почти не придется - основное уже внутри библиотеки, и, надеюсь, на фортране (все таки cern, и предыдущая geant3 была на фортране, но она, к сожалению, не подходит для нашего круга задач). Я тут книжки посмотрела – вроде, ситуация стала проясняться. Надеялась, что кто-нибудь тут эту библиотеку использует. Просто для меня это новая область физики, новый мат. аппарат, новое ПО - вот и решила хотя бы о С++ поспрашивать, и, кстати, xdude очень удачно меня направил.

А насчет упражнения по умножению комплексных матриц, то предпочитаю другой подход, который, imho, более действенный при нехватке времени и конкретных поставленных задачах. Разобраться в физике, придумать тестовые задачи, имеющие аналитическое решение, продумать простую модель, написать программу , оттестировать, а дальше постепенно усложнять модель, сравнивая результаты с экспериментальными данными.

Travolta25, скрин у Вас не работает, но набралась наглости ответить:
[more=подробнее]
Наглости, т.к. С++ изучаю аж второй день, и, кроме того, у меня не 2003, а VS2008Pro, но суть, я думаю, одна. В сети есть куча книг по VisualStudio, в т.ч. на книгообменнике Ссылка (к примеру, Джонсон Б. и др. Основы Visual Studio .NET 2003, там все подробно описано)
Скопируйте интересующие вас примеры в отдельную директорию, откройте файл проекта *.sln (File-Open-Project/Solution ), затем Build-Build Solution, если ошибок нет, то Debug-Start Without Debugging.
Ошибки могу возникнуть, если у Вас стоит Windows x64, тогда при открытии sln по умолчанию идет платформа Itanium, надо просто заменить ее на Win32.
Прилагаю инструкцию в картинках, которую сняла у себя с экрана для приложений «Hello World!» для Win32 Console Application и MFC Application - Ссылка
[/more]
Большая просьба к знатокам – не пинать, а просто исправить, если что не так.

Автор: timlsscott
Дата сообщения: 05.11.2008 14:48
Очень нужна помощь. Кому не сложно. Программа - 1. Дан текст из строчных русских букв, за которым следует точка. Напечатать этот текст заглавными буквами.
И еще обьяснить часть программы.
FILE *f;
if( (f = fopen(file_name, "w+" )) == NULL )
{
printf( "The file %c was not opened\n",file_name );
return -1;
}
int i=0;
fprintf(f,"%i\n",n);
for(int x=0;x<n;x++)
{
for(int y=0;y<n;y++)
{
i= m[x][y];
fprintf(f,"%8i ",i);

}
fprintf(f,"\n");
}

fclose(f);
free(m);
return 0;
}

int err(int errno)
{
switch (errno)
{
case 1: printf("Incorrect file!\n");break;
case 2: printf("Incorrect matrix!\n");break;
}
_getch();
return 0;
}

int** input(char file_name[255],int* size)
{
int n=0;
FILE *f;
if( (f = fopen(file_name, "r" )) == NULL )
{
printf( "The file %c was not opened\n",file_name );
return 0;
}
int i=0;
if(fscanf(f,"%i\n",&n)==0) err(1);
int** matrix = mattrAlloc(n*n);
for(int x=0;x<n;x++)
{
for(int y=0;y<n;y++)
{
if(f->_cnt==0){
fclose(f);
return 0;
}
if(fscanf(f,"%i ",&i)==0)
{
fclose(f);
return 0;
} else matrix[x][y] = i;
}
fscanf(f,"\n");
}
if(f->_cnt!=0) err(2);
fclose(f);
*size = n;
return matrix;
}

int** a_plus_a2(int **m,int size)
{

int** m1 = mattrAlloc(size*size);
for(int x = 0; x < size; x++)
{
for(int y = 0; y < size; y++)
{
m1[x][y] = 0;
for(int l = 0; l < size; l++)
{
m1[x][y] = m1[x][y]+m[x][l]*m[l][y];
}
//m1[x][y]+=m[x][y];
}
}
return m1;
Автор: akaGM
Дата сообщения: 05.11.2008 14:53
AZA_N

Цитата:
c «нормальностью» у Geant4 плохо (она бесплатная со всеми вытекающими). И работает под WinXP+Cygwin+CLHEP+VS2005

Цитата:
Pre-compiled Libraries
compiled using VC++ 8.0 on Windows/XP - ( 53Mbytes, 55595518 bytes )

взято с их сайта...
и на фига вам самим собирать, да ещё под Cygwin?
да и CLHEP очень даже с VC дружит:

Цитата:
2.0.4.0
Windows with VC++ 9.0
Windows with VC++ 7.1

качайте бинарники и юзайте на здоровье...

а вот это

Цитата:
И работает ... с командной строки

мне не совсем понятно...
это кто работает, библиотека, или всё же Geant4 -- автономное приложение?
Автор: AZA_N
Дата сообщения: 05.11.2008 15:18
akaGM, Geant4 - набор библиотек (согласно первоисточнику "Geant4 is a toolkit for the simulation of the passage of particles through matter."), но не dll или lib, а набор исходных текстов, скриптов SH и еще не пойми чего в текстовом и не текстовом виде, и для работы должна собираться (в инструкции по установке даже предлагают перед этим глубоко дышать, а во время этого пойти попить кофе на пару часов, а после сборки только сам geant4 (без cygwin и clhep) занимает около 1.2Гб). Кстати, инструкций там несколько, и они слегка друг с другом не состыковываются. Так что скачать бинарники не получиться.
Автор: akaGM
Дата сообщения: 05.11.2008 15:48
AZA_N
что же они имеют ввиду под "Pre-compiled Libraries"?
ну тогда не знаю...
Автор: AZA_N
Дата сообщения: 05.11.2008 16:22
akaGM, спасибо за участие. А что они имеют ввиду, вообще сложно понять. Так что начальство посчитало большим достижением то, что мне удалось просто это все установить и заставить работать examples, причем вся эта "кухня" еще и на виртуалке, чтобы исключить все не связанные с этим пакетом накладки. Когда-нибудь разберусь, ведь люди же работают.
Автор: akaGM
Дата сообщения: 05.11.2008 16:29
AZA_N
не за что...
дерзай, удачи!
Автор: timlsscott
Дата сообщения: 05.11.2008 18:41
Может кто нибудь все же поможет?
Дан текст из строчных русских букв, за которым следует точка. Напечатать этот текст заглавными буквами.
Автор: akaGM
Дата сообщения: 05.11.2008 19:00
timlsscott

Код: #include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char rustext[] = "русский текст маленькими буквами.";
int i;

int main(void) {
i = 0;
while (rustext[i] != '.') {
printf("%c", toupper(rustext[i++]));
}
printf(".\nthe end\n");
getch();
return 0;
}
Автор: Travolta25
Дата сообщения: 07.11.2008 13:35
Добрый день!
Подскажите пожалуйста:

не знаю как заставить мышь двигаться по экрану.
не знаю как эмулировать клик мыши.
Visaual C.NET 2003 раздел Visual C++

Добавлено:
AZA_N
Спасибо за ответ.
это не совсем то.
но очень радует, что Ты смогла уделить мне столько времени.
Ещё раз спасибо.
Автор: lichnosti
Дата сообщения: 11.11.2008 21:06

Масивы. Матрицы.

Цель работы: Выучить работу с массивами и матрицами.

Массив - это структура данных, что представляет собой набор, совокупность элементов одного типа.
В инструкции объявления массива указывается количество элементов массива. Элементы массива нумеруются из нуля.
Доступ к элементу массива осуществляется путем указания индекса (номера) элемента. Как индекс можно использовать выражение целого типа - константу или переменную. Индекс может меняться от 0 к п-1 - количество элементов массива. Доступ к элементам массива осуществляется с помощью указания.
В инструкции объявления массива удобно использовать именуемую константу, объявленную в директиве #define
Для введения, вывода и обработки массивов удобно использовать инструкции циклов (for, while).

Объявление одномерного массива:
Тип Имя [Количество элементов];

Объявление двумерного массива:
Тип Имя [Количество элементов 1] [Количество элементов 2].









Помогите мне пожалуйста,как ее делать???

ЗАдание:

15. Данная целочисленная матрица. Определить сумму элементов в тех строках, которые содержат хотя бы один ненулевой элемент
Автор: ksodi
Дата сообщения: 12.11.2008 11:35
Здравствуйте! Подскажите, как можно отсортировать двухмерный вектор, по одному из столбцов. Если можно как можно отсортировать с помощью методов самого вектора и с использованием итераторов и алгоритмов.
Вектор обяьявляю как:     
vector< vector <int> > a(n);
Заполняю обращаясь а[i][j]
Автор: distance
Дата сообщения: 12.11.2008 12:07
ksodi
Подскажите, как можно отсортировать двухмерный вектор, по одному из столбцов
написать специальный итератор, который бегает по столбцам. я не в курсе, можно ли создать такой итератор исключительно штатными средствами (да и не интересовался, честно говоря),
в boost для этого есть класс iterator_facade
Автор: lichnosti
Дата сообщения: 12.11.2008 13:06
Лабораторная работа№7
Масивы. Матрицы.

Цель работы: Выучить работу с массивами и матрицами.

Массив - это структура данных, что представляет собой набор, совокупность элементов одного типа.
В инструкции объявления массива указывается количество элементов массива. Элементы массива нумеруются из нуля.
Доступ к элементу массива осуществляется путем указания индекса (номера) элемента. Как индекс можно использовать выражение целого типа - константу или переменную. Индекс может меняться от 0 к п-1 - количество элементов массива. Доступ к элементам массива осуществляется с помощью указания.
В инструкции объявления массива удобно использовать именуемую константу, объявленную в директиве #define
Для введения, вывода и обработки массивов удобно использовать инструкции циклов (for, while).

Объявление одномерного массива:
Тип Имя [Количество элементов];

Объявление двумерного массива:
Тип Имя [Количество элементов 1] [Количество элементов 2].



Помогите мне пожалуйста,как ее делать???

ЗАдание: №15

Данная целочисленная матрица. Определить сумму элементов в тех строках,
которые содержат хотя бы один ненулевой элемент

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.