Форум Игромании
 
Регистрация
Справка

Программирование Создание, разработка и доработка различных игр и программного обеспечения

Ответ
 
Опции темы
Старый 23.06.2010, 22:42   #1
Юзер
 
Аватар для Elverion
 
Регистрация: 14.05.2010
Сообщений: 185
Репутация: 164 [+/-]
С/C++

Язык программирования C++



Официальные страницы:

C++ (Си++) — компилируемый статически типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования, но, в сравнении с его предшественником — языком Си, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от Си (C), в котором унарный оператор ++ обозначает инкремент переменной.


Среда разработки
Скрытый текст:



Пример программирования на C++
Скрытый текст:
Код:
#include <iostream>
#include <numeric>
#include <boost/iterator/counting_iterator.hpp>
#include <boost/iterator/transform_iterator.hpp>
 
int odd(int i)
{
  return 2 * i + 1;
}
 
int square(int i)
{
  return i * i;
}
 
typedef boost::counting_iterator <int> counter;
typedef boost::transform_iterator <int (*)(int), counter> transformer;
 
transformer odds(int n)
{
  return transformer(counter(n), odd);
}
 
transformer squares(int n)
{
  return transformer(counter(n), square);
}
 
int main()
{
  using namespace std;
 
  cout << "Enter vector length: ";
  int n; cin >> n;
 
  cout << inner_product( odds(0), odds(n), squares(0), 0 ) << endl;
}




FAQ
Скрытый текст:
Q.: Зачем нужна тема?
A.: Здесь вам могут помочь понять, местами просто помочь, местами научить. Только помните: решать задачи и писать весь код за вас никто не будет.



Если вы хотите помощи — вставляйте непонятный вам код в тег [spoiler][code][/code][/spoiler].


Полная статья на "Википедии".
Elverion вне форума  
Отправить сообщение для Elverion с помощью Skype™ Ответить с цитированием
Старый 08.06.2014, 19:48   #41
Пугатель
 
Аватар для [CCCP] Monster

 
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,102
Репутация: 1085 [+/-]
http://www.gamedev.ru/code/articles/OpenGL_Delphi

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

http://www.opengl.org/sdk/docs/man2/...awElements.xml
__________________
Служу Советскому Союзу!

Хорошо смеется тот, кто стреляет первым! (танкистская мудрость)
[CCCP] Monster на форуме  
Отправить сообщение для [CCCP] Monster с помощью Skype™ Ответить с цитированием
Старый 23.09.2014, 12:55   #42
Циклопы
 
Аватар для Cyclops


 
Регистрация: 17.12.2007
Сообщений: 4,167
Репутация: 1837 [+/-]
Поссаны, а в чем проблема? Я не понимаю. Криво C++ поставился?
Скрин:
Скрытый текст:
Cyclops вне форума  
Ответить с цитированием
Старый 23.09.2014, 14:27   #43
Игроман
 
Аватар для Hast


 
Регистрация: 13.07.2007
Адрес: Сімферополь
Сообщений: 3,012
Репутация: 629 [+/-]
Cyclops, лучше быть героиновым наркоманом, чем использовать русскую VS.

http://stackoverflow.com/questions/1...al-studio-2010
Попробуй, может помочь.
Hast вне форума  
Ответить с цитированием
Старый 23.09.2014, 15:05   #44
Игрок
 
Аватар для Homma

 
Регистрация: 23.04.2009
Сообщений: 816
Репутация: 159 [+/-]
Cyclops, это код из какой-то книги/сайта что ли? Предполагаю, что не хватает #include "stdafx.h" перед #include <iostream>.
__________________
Вообще, вы себя очень ограничиваете, если отказываетесь фапать на актера только из-за того что он мужик! © Майлз

Последний раз редактировалось Homma; 23.09.2014 в 15:08.
Homma вне форума  
Отправить сообщение для Homma с помощью ICQ Отправить сообщение для Homma с помощью Skype™ Ответить с цитированием
Старый 23.09.2014, 18:33   #45
Циклопы
 
Аватар для Cyclops


 
Регистрация: 17.12.2007
Сообщений: 4,167
Репутация: 1837 [+/-]
Homma, тут не в этом дело, тут дело в том, что у меня любой код не запускается, а если создаешь пустое приложение, то некуда код вбивать.

З.Ы Даже лабы, которые с универа приношу.
Cyclops вне форума  
Ответить с цитированием
Старый 23.09.2014, 18:47   #46
Игрок
 
Аватар для Homma

 
Регистрация: 23.04.2009
Сообщений: 816
Репутация: 159 [+/-]
Цитата:
Предполагаю, что не хватает #include "stdafx.h" перед #include <iostream>.
Ты пробовал это?
И создавать нужно не пустое приложение, а консольное приложение вин32(или как-то так).
__________________
Вообще, вы себя очень ограничиваете, если отказываетесь фапать на актера только из-за того что он мужик! © Майлз
Homma вне форума  
Отправить сообщение для Homma с помощью ICQ Отправить сообщение для Homma с помощью Skype™ Ответить с цитированием
Старый 18.02.2015, 18:24   #47
Игрок
 
Аватар для Nemonymous
 
Регистрация: 16.08.2014
Сообщений: 514
Репутация: 85 [+/-]
[сдувая пыль с полки]
Хай. Учусь программированию с с++, дома имеется microsoft visual studio 2010.
Так вот. Дома когда я пишу код и подключаю директиву #include <, то у меня отображаются все варианты библиотек, ну понятно, т.е. вводишь например после < букву "m" а прога выдает варианты math и тп. А вот в универе имеется среда microsoft visual 2010 (даже еще поздний вроде) ULTIMATE (!!!) активированный и все такое, и вот там у мну подключать эти директивы не получается, программа тупо не выдает варианты, а если так просто написать не работают. Может в самой проге чото там подключить понастроить надо?
__________________
http://www.youtube.com/watch?v=aTd5sHTXFGY
Nemonymous вне форума  
Ответить с цитированием
Старый 18.02.2015, 21:01   #48
Пугатель
 
Аватар для [CCCP] Monster

 
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,102
Репутация: 1085 [+/-]
Anonymyx, Нужно проверить параметр Сервис\Параметры\Текстовый редактор\С/С++\Дополнительно\Отключить IntelliSence. Должно быть false. Плюс есть горячие клавиши Ctrl+O и Ctrl+пробел, которые открывают подсказку в любом месте.

Еще можно посмотреть стороннее расширение Visual Assist. Оно добавляет описанный функционал плюс еще много всего, вроде автоформатирования текста и т.п.
__________________
Служу Советскому Союзу!

Хорошо смеется тот, кто стреляет первым! (танкистская мудрость)
[CCCP] Monster на форуме  
Отправить сообщение для [CCCP] Monster с помощью Skype™ Ответить с цитированием
Старый 13.03.2015, 20:07   #49
Юзер
 
Аватар для eXotic
 
Регистрация: 17.09.2007
Адрес: 0x0100000
Сообщений: 408
Репутация: 146 [+/-]
Начнем с того, что я почти полный ноль в программировании. Итак, появилось желание изучить С++. Своей первой целью я поставил разработку небольшого приложения под андроид (оно ещё должно будет иметь связь с сетью для обновления\получения информации). Собственно, вопросы:
1) MSVS или Qt? И чем они вообще отличаются, на чем лучше начинать\кодить?
2) Изучаю сейчас язык и, попутно, пишу легкий код по учебнику "С++ за 21 день. Сиддхартха Рао, 2013". Естественно, начинается все это с консольных приложений, но в дальнейшем я, как уже стало ясно, буду писать графическое приложение. Тут я столкнулся с полным непониманием того, что вообще происходит. Принцип написания консольных приложений и графических одинаковый? Мне стоит пока продолжать изучать язык в общем или лучше найти что-то по поводу конкретно графических приложений? И хватит ли мне полученных знаний от изучения консольных приложений для успешного написания кода для графического приложения? Есть ли вообще между ними связь?
3) Не несу ли я сейчас полный бред?
В общем, буду очень признателен за помощь.
eXotic вне форума  
Ответить с цитированием
Старый 13.03.2015, 20:28   #50
Пугатель
 
Аватар для [CCCP] Monster

 
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,102
Репутация: 1085 [+/-]
eXotic, Хм. Ну, прежде всего, в отличие от консольного приложения, графическое имеет событийную модель поведения. Означает это примерно следующее. Консольная прога исполняется строго по порядку сверху вниз по функции main. Графическое приложение реагирует на события, о которых ему сообщает операционная система. Ты на них пишешь функции, в которых описывается реакция на событие. Для более детального описания процесса нужно обращаться к API конкретной ОС. В случае с андроидом - не знаю, не писал.

Qt - кроссплатформенная библиотека и среда разработки Qt Creator. Они позволяют создавать приложения, которые можно откомпилировать под нужную ОС (из списка поддерживаемых). У них свой API, который является надстройкой над API других ОС. Своя концепция слотов и сигналов, которые реализуют событийную систему реакции на действия пользователя. Не знаю, поддерживает ли оно андроид - не приходилось такого писать. MSVC позволяет писать приложения только под Windows, поэтому если будешь писать под Андроид, то это не твой вариант.
__________________
Служу Советскому Союзу!

Хорошо смеется тот, кто стреляет первым! (танкистская мудрость)
[CCCP] Monster на форуме  
Отправить сообщение для [CCCP] Monster с помощью Skype™ Ответить с цитированием
Старый 09.07.2015, 17:09   #51
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
Хай. Надо написать небольшой интерпретатор, с помощью map.
Короче, включается консоль, вводим команду и 2 операнда. Сначала присваиваем ячейкам map'а (string, int) значения, и дальше выполянем над ними различные мат. дейсвтия.
например: вводим mov A 5, и консоль присваивает ячейке A значение 5. Дальше еще раз вводим и присваиваем еще одной ячейке другое значение. Дальше выполняем над ячейками операции. Например:
add A B - прибавляем значение из ячейки А к знач из ячейки B.
|Вот что-то напортачил, но чего-то не выходит никак. Раньше с map никогда не работал.


Скрытый текст:
#include <iostream>
#include <conio.h>
#include <string>
#include <map>

using namespace std;
string command;



int c;
int x;
char a;
int b;

int main()
{
map <string,int> Mem;
Mem["A"]=0;
Mem["B"]=0;
Mem["C"]=0;
Mem["D"]=0;
Mem["E"]=0;
Mem["F"]=0;
Mem["G"]=0;
Mem["H"]=0;
Mem["I"]=0;



setlocale (0, "Russian");
cout << "\t\tИнтерпретатор\t\t\n\n";

while(x==0)
{
cout << "Введите команду:\n";
cin >> command >> a >> b;




if(command == "mov")
{
Mem[] += b;
cout << "В ячейку " << a << " положено значение " << Mem[] << endl;
}






}
_getch();
return 0;

}


Буду очень благодарен если поможете! Спасибо!
deadCoo вне форума  
Ответить с цитированием
Старый 09.07.2015, 19:02   #52
Игроман
 
Аватар для Nebel
 
Регистрация: 29.11.2009
Сообщений: 3,970
Репутация: 390 [+/-]
Цитата:
Сообщение от deadCoo Посмотреть сообщение
Mem[] += b;
cout << "В ячейку " << a << " положено значение " << Mem[] << endl;
Mem[] это колекция ячеек, тебе надо явно указать нужную ячейку:
Цитата:
Сообщение от deadCoo Посмотреть сообщение
Mem["A"] += b;
cout << "В ячейку " << a << " положено значение " << Mem["A"] << endl;
Скрытый текст:
Код:
 #include <sstream>

 char a; // читаем чар
 
 map <string,int> Mem; // а используем стринг 

 cout << "Введите команду:\n";
 
 cin >> command >> a >> b;

 //конвертим чар в стринг
 stringstream ss;
 string a_str;
 ss << a;
 ss >> a_str;
  
 if(command == "mov")
 {
 Mem[a_str] += b;
 cout << "В ячейку " << a << " положено значение " << Mem[a_str] << endl;
 }
__________________
/watch?v=5ToxRG4isxk

Последний раз редактировалось Nebel; 09.07.2015 в 19:09.
Nebel вне форума  
Ответить с цитированием
Старый 09.07.2015, 19:33   #53
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
Nebel, все работает! Спасибо огромное! Очень помогли
А как сделать допустим команду mul (умножить), т.е. есть 2 ячейки со значениями, вводим mul a b, и программма перемножает значения из этих ячеек.

сори за тупость, срочно надо а руки кривые.
deadCoo вне форума  
Ответить с цитированием
Старый 09.07.2015, 19:42   #54
Игроман
 
Аватар для Nebel
 
Регистрация: 29.11.2009
Сообщений: 3,970
Репутация: 390 [+/-]
Цитата:
Сообщение от deadCoo Посмотреть сообщение
А как сделать допустим команду mul (умножить), т.е. есть 2 ячейки со значениями, вводим mul a b, и программма перемножает значения из этих ячеек.
вот простой калькулятор:
Скрытый текст:
Код:
// CalculatorSwitch.cc
// Simple arithmetic calculator using switch() selection.

#include <iostream>
using namespace std;

int main()
{
   float a, b, result;
   char operation;
 
   // Get numbers and mathematical operator from user input
   cin >> a >> operation >> b;

   // Character constants are enclosed in single quotes
   switch(operation)
   {
   case '+':
         result = a + b;
         break;

   case '-':
         result = a - b;
         break;

   case '*':
         result = a * b;
         break;

   case '/':
         result = a / b;
         break;

   default:
         cout << "Invalid operation. Program terminated." << endl;
         return -1;
   }

   // Output result
   cout << result << endl;
   return 0;
}

в твоем случае должно быть так:
Скрытый текст:
Код:
// CalculatorSwitch.cc
// Simple arithmetic calculator using switch() selection.

#include <iostream>
using namespace std;

int main()
{
   float a, b, result;
   char operation;
 
   // например "D mul E"
   cin >> a >> operation >> b;

   // Character constants are enclosed in single quotes
   switch(operation)
   {
   case '+':
         result = Mem[a] + Mem[b]; //Mem["D"] + Mem["E"]; 
         break;

   case '-':
         result = Mem[a] - Mem[b];
         break;

   case '*':
         result = Mem[a] * Mem[b];
         break;

   case '/':
         result = Mem[a] / Mem[b];
         break;

   default:
         cout << "Invalid operation. Program terminated." << endl;
         return -1;
   }

   // Output result
   cout << result << endl;
   return 0;
}
__________________
/watch?v=5ToxRG4isxk
Nebel вне форума  
Ответить с цитированием
Старый 09.07.2015, 19:52   #55
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
Nebel, надо чтобы ввод был "плавным".
Вот ввели мы mov a 5
потом mov b 2
есть а (5) и b(2)

дальше просто вводим mul a b и консоль выдает 10.
deadCoo вне форума  
Ответить с цитированием
Старый 09.07.2015, 20:39   #56
Игроман
 
Аватар для Nebel
 
Регистрация: 29.11.2009
Сообщений: 3,970
Репутация: 390 [+/-]
deadCoo
https://code-live.ru/post/cpp-loops/
__________________
/watch?v=5ToxRG4isxk
Nebel вне форума  
Ответить с цитированием
Старый 10.07.2015, 14:27   #57
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
Скрытый текст:
#include <sstream>
#include <map>
#include <string>
#include <conio.h>
#include <iostream>
#include <cstdlib>
#include <stdlib.h>
#include <sstream>
using namespace std;



int main()
{
setlocale (0, "Rus");
string command;

char a;
int b;
char c;
int res;



map <string,int> Mem;
while (true)
{

cout << "Введите команду:\n";
cin >> command >> a >> b;



if(command == "mov"){


stringstream ss;
string a_str;
ss << a;
ss >> a_str;

Mem[a_str] = b;
cout << "В ячейку " << a << " положено значение " << Mem[a_str] << endl;
}


if(command == "add"){


stringstream ss;
string a_str;
ss << a;
ss >> a_str;


string b_str;
ostringstream convert;
convert << b;
b_str = convert.str();



res=(Mem[a_str] += Mem[b_str]);
cout << res << endl;
}




}

_getch();
}

что не так? после того как ввели значения в 2 ячейки, дальше водим add a b, и прога по идее должна сложить 2 ячейки. Но почему-то выводит значение 1ой.
ъ
deadCoo вне форума  
Ответить с цитированием
Старый 10.07.2015, 14:44   #58
Юзер
 
Регистрация: 27.06.2006
Адрес: Тамбовский район.
Сообщений: 194
Репутация: 16 [+/-]
deadCoo, конвертация через
Цитата:
string b_str;
ostringstream convert;
convert << b;
b_str = convert.str();
ostringstream вполне вероятно выдаёт результат в какой-нибудь другой кодировке, чем введена b_str изначально в мапу. по крайней мере res = (a+=b) выдаст a только если b = 0.

лучше а и б сделать однотипными, а потом преобразовывать их или не преобразовывать в зависимости от типа введённой операции.
__________________
Finite Inkantem

Последний раз редактировалось Alex_Nolan; 10.07.2015 в 14:50.
Alex_Nolan вне форума  
Ответить с цитированием
Старый 13.07.2015, 13:15   #59
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
SEMsemEncMoz, так и сделал, оба стринг, в общем, решено.
Щяс другой проект:
Ну вот не пойму как считать из файла по словам, допустим есть exmpl.txt, в ней есть вот такой набор симоволов:

add 2 3
mul 2 3
sub 2 3
div 2 3

надо чтобы каждое слово и каждая цифра былы в своих переменных.
типа в стринг str1 было слово add потом int символ 2 и т.д. Цифры из файла пользователь может менять.

Добавлено через 8 минут
Ну или корочепользователь меняет цифры из файла, и прогамма выдает результат, например в данном случае add 5
mul 6
sub -1
div 0.6

Последний раз редактировалось deadCoo; 13.07.2015 в 13:23. Причина: Добавлено сообщение
deadCoo вне форума  
Ответить с цитированием
Старый 13.07.2015, 13:34   #60
Юзер
 
Регистрация: 27.06.2006
Адрес: Тамбовский район.
Сообщений: 194
Репутация: 16 [+/-]
Цитата:
Сообщение от deadCoo Посмотреть сообщение
Ну вот не пойму как считать из файла по словам
в стандартной библиотеке это по моему fgets
Цитата:
Сообщение от deadCoo Посмотреть сообщение
add 2 3
mul 2 3
sub 2 3
div 2 3

надо чтобы каждое слово и каждая цифра былы в своих переменных.
типа в стринг str1 было слово add потом int символ 2 и т.д. Цифры из файла пользователь может менять.
создаёшь массив из string элементов, либо динамический массив, либо вектор, в цикле через fgets читаешь файл, получаешь массив строк.
потом в цикле посимвольно (через string довольно просто организовывается) читаешь каждую строку и разбираешь на подстроки при совпадении символа с пробелом.
__________________
Finite Inkantem
Alex_Nolan вне форума  
Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:43.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Rambler's Top100 Яндекс цитирования