xdude, спасибо. Мне как раз и надо отучиться от фортрана, т.к. в gant4 надо будет создавать классы и разбираться в тех, которые они там насоздавали. Какую, на Ваш взгляд, книгу по ООП Вы бы могли порекомендовать для начала (желательно, чтобы ее в сети можно было найти).
» Вопросы по программированию на C/С++
AZA_N
Честно сказать, даже не знаю. Я сам уже очень давно этим занимаюсь, ООП начинал изучать очень давно с Object Pascal и Делфи, и читал отрывками всё, что находил на дисках с софтом и в интернете. А сейчас вот читаю "Объектно-ориентированный анализ и проектирование с примерами приложений" (3-е издание, Буч, Янг, Хьюстон и другие). Кстати, первая _бумажная_ книга, которую я читаю по этой теме . Там в первых главах идёт краткий обзор эволюции различных подходов к программированию, и преимущества объектно-ориентированного подхода, по сравнению с остальными. Не знаю, как Вам покажется по сложности, но мне эта книга очень нравится. Я пока не дошел до этого, но в конце там приводятся примеры объектно-ориентированного проектирования на примере конкретных приложений и задач. Хотя, должен сказать, о синтаксисе и грамматике С++ там ничего не говорится, эта книга посвящена самому методу, и после прочтения этот метод можно применять вкупе с любым объектно-ориентированным языком, будь то Java, SmallTalk или C++.
Честно сказать, даже не знаю. Я сам уже очень давно этим занимаюсь, ООП начинал изучать очень давно с Object Pascal и Делфи, и читал отрывками всё, что находил на дисках с софтом и в интернете. А сейчас вот читаю "Объектно-ориентированный анализ и проектирование с примерами приложений" (3-е издание, Буч, Янг, Хьюстон и другие). Кстати, первая _бумажная_ книга, которую я читаю по этой теме . Там в первых главах идёт краткий обзор эволюции различных подходов к программированию, и преимущества объектно-ориентированного подхода, по сравнению с остальными. Не знаю, как Вам покажется по сложности, но мне эта книга очень нравится. Я пока не дошел до этого, но в конце там приводятся примеры объектно-ориентированного проектирования на примере конкретных приложений и задач. Хотя, должен сказать, о синтаксисе и грамматике С++ там ничего не говорится, эта книга посвящена самому методу, и после прочтения этот метод можно применять вкупе с любым объектно-ориентированным языком, будь то Java, SmallTalk или C++.
AZA_N
Есть ещё книга немецкого автора (на аглицком), называется примерно "C++ для математиков", вообще, думаю, для хорошо знающих математику въехать в ООП -- ноу ай проблема)
Есть ещё книга немецкого автора (на аглицком), называется примерно "C++ для математиков", вообще, думаю, для хорошо знающих математику въехать в ООП -- ноу ай проблема)
Приветствую.
Подскажите, пожалуйста, по шагам от запуска 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
Подскажите, пожалуйста, по шагам от запуска 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
Как на Visual C++ сделать вывод в консоли на русском языке? Скачал уже русский VC всё равно кракозябры выводит.
Stitchi16
1. писать все тексты в дос-кодировке 866
2.
Код: #include <stdio.h>
#include <windows.h>
void main() {
{
SetConsoleOutputCP(1251);
printf("\nя плохо гаварю па руски...\n");
}
1. писать все тексты в дос-кодировке 866
2.
Код: #include <stdio.h>
#include <windows.h>
void main() {
{
SetConsoleOutputCP(1251);
printf("\nя плохо гаварю па руски...\n");
}
1. Это как?
2. Не работает.
2. Не работает.
Stitchi16
1. ну тогда тебе это и не надо...
2. что не работает?
1. ну тогда тебе это и не надо...
2. что не работает?
2. Ну как что может не работать? Вывод русских букаф на консоль.
Stitchi16
у всех работает...
у тебя, небось, винда русская гы-гы
ну попробуй вот так:
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
у всех работает...
у тебя, небось, винда русская гы-гы
ну попробуй вот так:
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
Всё равно не хочет работать.
В VC++ есть что нибудь похожее как на C++ Builder - clrs() очистка экрана?
В VC++ есть что нибудь похожее как на C++ Builder - clrs() очистка экрана?
Stitchi16
значит, у тебя в консоли установлен растровый фонт, поставь truetype (например, Lucida Console) и попробуй ещё раз...
значит, у тебя в консоли установлен растровый фонт, поставь truetype (например, Lucida Console) и попробуй ещё раз...
AZA_N
Цитата:
глас вопиющего в пустыне из-за неверного обращения...
Цитата:
Бывшие фортранщики...
глас вопиющего в пустыне из-за неверного обращения...
akaGM, посыпаю голову пеплом. - " ... использующие два этих язка с учетом их особенностей" - так лучше? Вы бы лучше подсказали, как надо.
Пока решила остановиться на ремендованной выше книге по ООП и учебнике Стивена Прата. Может быть, не так и страшен Geant4, как кажется с первого взгляда?
Пока решила остановиться на ремендованной выше книге по ООП и учебнике Стивена Прата. Может быть, не так и страшен Geant4, как кажется с первого взгляда?
akaGM Спасибо заработало...
AZA_N
так хуже...
да и кто ж себя захочет признать "бывшим"?
бывший фортранщик вряд ли сегодня является научником, скорее всего (%%95) он -- переквалифицировавшийся программист с совершенно другим кругом задач... исключения из этого -- именно что исключения...
лично я могу что-либо посоветовать, только зная класс решаемых задач и прочих "wanted" особенностей...
С++ -- могучий язык, но почему-то мне кажется, что для научников его роль -- вторична...
например...
графика, ГУИ, системные вещи -- это да...
оч. хорошо на нём смотрится main() (т.е. ведущая программа) со счётом непременно на Ф
и, так или иначе, обычно приходится _использовать/модифицировать_ готовые классы, редко -- создавать...
попробуй (в качестве упражнения) напиши умножение комплексных матриц (классы, переопределение операторов -- по-взрослому, в общем), а потом сравни с той же MATMUL()
(каковая, кстати, является частью _стандарта языка_, не расширением или какой-то реализацией)
ну и тд...
если твоя Geant4 -- научная библиотека, то (для _нормальных_ библиотек) неважно на чём она пИсана, доступ к ней можно получить на любом языке...
собственно вот...
так хуже...
да и кто ж себя захочет признать "бывшим"?
бывший фортранщик вряд ли сегодня является научником, скорее всего (%%95) он -- переквалифицировавшийся программист с совершенно другим кругом задач... исключения из этого -- именно что исключения...
лично я могу что-либо посоветовать, только зная класс решаемых задач и прочих "wanted" особенностей...
С++ -- могучий язык, но почему-то мне кажется, что для научников его роль -- вторична...
например...
графика, ГУИ, системные вещи -- это да...
оч. хорошо на нём смотрится main() (т.е. ведущая программа) со счётом непременно на Ф
и, так или иначе, обычно приходится _использовать/модифицировать_ готовые классы, редко -- создавать...
попробуй (в качестве упражнения) напиши умножение комплексных матриц (классы, переопределение операторов -- по-взрослому, в общем), а потом сравни с той же MATMUL()
(каковая, кстати, является частью _стандарта языка_, не расширением или какой-то реализацией)
ну и тд...
если твоя Geant4 -- научная библиотека, то (для _нормальных_ библиотек) неважно на чём она пИсана, доступ к ней можно получить на любом языке...
собственно вот...
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]
Большая просьба к знатокам – не пинать, а просто исправить, если что не так.
А насчет упражнения по умножению комплексных матриц, то предпочитаю другой подход, который, 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]
Большая просьба к знатокам – не пинать, а просто исправить, если что не так.
Очень нужна помощь. Кому не сложно. Программа - 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;
И еще обьяснить часть программы.
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;
AZA_N
Цитата:
Цитата:
взято с их сайта...
и на фига вам самим собирать, да ещё под Cygwin?
да и CLHEP очень даже с VC дружит:
Цитата:
качайте бинарники и юзайте на здоровье...
а вот это
Цитата:
мне не совсем понятно...
это кто работает, библиотека, или всё же Geant4 -- автономное приложение?
Цитата:
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 -- автономное приложение?
akaGM, Geant4 - набор библиотек (согласно первоисточнику "Geant4 is a toolkit for the simulation of the passage of particles through matter."), но не dll или lib, а набор исходных текстов, скриптов SH и еще не пойми чего в текстовом и не текстовом виде, и для работы должна собираться (в инструкции по установке даже предлагают перед этим глубоко дышать, а во время этого пойти попить кофе на пару часов, а после сборки только сам geant4 (без cygwin и clhep) занимает около 1.2Гб). Кстати, инструкций там несколько, и они слегка друг с другом не состыковываются. Так что скачать бинарники не получиться.
AZA_N
что же они имеют ввиду под "Pre-compiled Libraries"?
ну тогда не знаю...
что же они имеют ввиду под "Pre-compiled Libraries"?
ну тогда не знаю...
akaGM, спасибо за участие. А что они имеют ввиду, вообще сложно понять. Так что начальство посчитало большим достижением то, что мне удалось просто это все установить и заставить работать examples, причем вся эта "кухня" еще и на виртуалке, чтобы исключить все не связанные с этим пакетом накладки. Когда-нибудь разберусь, ведь люди же работают.
AZA_N
не за что...
дерзай, удачи!
не за что...
дерзай, удачи!
Может кто нибудь все же поможет?
Дан текст из строчных русских букв, за которым следует точка. Напечатать этот текст заглавными буквами.
Дан текст из строчных русских букв, за которым следует точка. Напечатать этот текст заглавными буквами.
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;
}
Код: #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;
}
Добрый день!
Подскажите пожалуйста:
не знаю как заставить мышь двигаться по экрану.
не знаю как эмулировать клик мыши.
Visaual C.NET 2003 раздел Visual C++
Добавлено:
AZA_N
Спасибо за ответ.
это не совсем то.
но очень радует, что Ты смогла уделить мне столько времени.
Ещё раз спасибо.
Подскажите пожалуйста:
не знаю как заставить мышь двигаться по экрану.
не знаю как эмулировать клик мыши.
Visaual C.NET 2003 раздел Visual C++
Добавлено:
AZA_N
Спасибо за ответ.
это не совсем то.
но очень радует, что Ты смогла уделить мне столько времени.
Ещё раз спасибо.
Масивы. Матрицы.
Цель работы: Выучить работу с массивами и матрицами.
Массив - это структура данных, что представляет собой набор, совокупность элементов одного типа.
В инструкции объявления массива указывается количество элементов массива. Элементы массива нумеруются из нуля.
Доступ к элементу массива осуществляется путем указания индекса (номера) элемента. Как индекс можно использовать выражение целого типа - константу или переменную. Индекс может меняться от 0 к п-1 - количество элементов массива. Доступ к элементам массива осуществляется с помощью указания.
В инструкции объявления массива удобно использовать именуемую константу, объявленную в директиве #define
Для введения, вывода и обработки массивов удобно использовать инструкции циклов (for, while).
Объявление одномерного массива:
Тип Имя [Количество элементов];
Объявление двумерного массива:
Тип Имя [Количество элементов 1] [Количество элементов 2].
Помогите мне пожалуйста,как ее делать???
ЗАдание:
15. Данная целочисленная матрица. Определить сумму элементов в тех строках, которые содержат хотя бы один ненулевой элемент
Здравствуйте! Подскажите, как можно отсортировать двухмерный вектор, по одному из столбцов. Если можно как можно отсортировать с помощью методов самого вектора и с использованием итераторов и алгоритмов.
Вектор обяьявляю как:
vector< vector <int> > a(n);
Заполняю обращаясь а[i][j]
Вектор обяьявляю как:
vector< vector <int> > a(n);
Заполняю обращаясь а[i][j]
ksodi
Подскажите, как можно отсортировать двухмерный вектор, по одному из столбцов
написать специальный итератор, который бегает по столбцам. я не в курсе, можно ли создать такой итератор исключительно штатными средствами (да и не интересовался, честно говоря),
в boost для этого есть класс iterator_facade
Подскажите, как можно отсортировать двухмерный вектор, по одному из столбцов
написать специальный итератор, который бегает по столбцам. я не в курсе, можно ли создать такой итератор исключительно штатными средствами (да и не интересовался, честно говоря),
в boost для этого есть класс iterator_facade
Лабораторная работа№7
Масивы. Матрицы.
Цель работы: Выучить работу с массивами и матрицами.
Массив - это структура данных, что представляет собой набор, совокупность элементов одного типа.
В инструкции объявления массива указывается количество элементов массива. Элементы массива нумеруются из нуля.
Доступ к элементу массива осуществляется путем указания индекса (номера) элемента. Как индекс можно использовать выражение целого типа - константу или переменную. Индекс может меняться от 0 к п-1 - количество элементов массива. Доступ к элементам массива осуществляется с помощью указания.
В инструкции объявления массива удобно использовать именуемую константу, объявленную в директиве #define
Для введения, вывода и обработки массивов удобно использовать инструкции циклов (for, while).
Объявление одномерного массива:
Тип Имя [Количество элементов];
Объявление двумерного массива:
Тип Имя [Количество элементов 1] [Количество элементов 2].
Помогите мне пожалуйста,как ее делать???
ЗАдание: №15
Данная целочисленная матрица. Определить сумму элементов в тех строках,
которые содержат хотя бы один ненулевой элемент
Масивы. Матрицы.
Цель работы: Выучить работу с массивами и матрицами.
Массив - это структура данных, что представляет собой набор, совокупность элементов одного типа.
В инструкции объявления массива указывается количество элементов массива. Элементы массива нумеруются из нуля.
Доступ к элементу массива осуществляется путем указания индекса (номера) элемента. Как индекс можно использовать выражение целого типа - константу или переменную. Индекс может меняться от 0 к п-1 - количество элементов массива. Доступ к элементам массива осуществляется с помощью указания.
В инструкции объявления массива удобно использовать именуемую константу, объявленную в директиве #define
Для введения, вывода и обработки массивов удобно использовать инструкции циклов (for, while).
Объявление одномерного массива:
Тип Имя [Количество элементов];
Объявление двумерного массива:
Тип Имя [Количество элементов 1] [Количество элементов 2].
Помогите мне пожалуйста,как ее делать???
ЗАдание: №15
Данная целочисленная матрица. Определить сумму элементов в тех строках,
которые содержат хотя бы один ненулевой элемент
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
Предыдущая тема: не знаю как назвать тему :-)
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.