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

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

Ответ
 
Опции темы
Старый 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™ Ответить с цитированием
Старый 13.07.2015, 14:30   #61
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
Скрытый текст:
читаешь каждую строку и разбираешь на подстроки при совпадении символа с пробелом.

но вот как??? Не ролучается именно разобрать на элементы.
deadCoo вне форума  
Ответить с цитированием
Старый 13.07.2015, 15:38   #62
Юзер
 
Регистрация: 27.06.2006
Адрес: Тамбовский район.
Сообщений: 194
Репутация: 16 [+/-]
deadCoo,
Скрытый текст:
#include <iostream>
#include <string>
#include <vector>
#include <stdio.h>

using namespace std;

int main()
{
FILE *f;
char *input;
string s,temp;

vector<string> in;
vector<string>::iterator I_in;
I_in = in.begin();
//вектор со строками из файла

f = fopen ("C://QT//test.txt","r");

while (!feof(f) && fgets(input,100,f)){
s.assign(input);
I_in = in.insert(I_in, s);
s.clear();
} //читаем построчно

cout << "==========input file==================" << endl;
for (I_in = in.begin(); I_in != in.end(); I_in++)
cout << *I_in << endl;
cout << "=========end of input file============" << endl;
//показываем что прочитали

for (I_in = in.begin(); I_in != in.end(); I_in++){
temp = *I_in;
s.clear();
string::iterator I_s= temp.begin(); ;
while (I_s != temp.end())
{
if (*I_s != ' ') s+=*I_s; //пока не пробел, сохраняем подстроку
if (*I_s == ' ') {
cout << "substring " << s << endl; //нашли пробел, значит прочитали команду или цифру, делаем с подстрокой что хотим
s.clear();
}
I_s++;
if (I_s == temp.end()) {
cout << "substring " << s << endl; //дошли до конца строки, значит прочитали команду или цифру, делаем с подстрокой что хотим
s.clear();
}
}
}
//разбираем строки
return 0;
}



набросал по быстрому что-то. вроде работает.
насколько я помню, вообще можно было без итераторов стринг просто через квадратные скобки перебирать, но мингв, встроенный в кьют креатор на это ошибками плюётся.
работает.
Скрытый текст:
__________________
Finite Inkantem

Последний раз редактировалось Alex_Nolan; 13.07.2015 в 15:42.
Alex_Nolan вне форума  
Ответить с цитированием
Старый 13.07.2015, 15:53   #63
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
SEMsemEncMoz, пишет что input используется без инициализации, without initialization...
deadCoo вне форума  
Ответить с цитированием
Старый 13.07.2015, 15:55   #64
Юзер
 
Регистрация: 27.06.2006
Адрес: Тамбовский район.
Сообщений: 194
Репутация: 16 [+/-]
deadCoo,ну поставь
char input[100];
__________________
Finite Inkantem
Alex_Nolan вне форума  
Ответить с цитированием
Старый 13.07.2015, 16:02   #65
Новичок
 
Регистрация: 09.07.2015
Сообщений: 8
Репутация: 0 [+/-]
SEMsemEncMoz, да ствил, не компилится.
deadCoo вне форума  
Ответить с цитированием
Старый 13.07.2015, 16:06   #66
Юзер
 
Регистрация: 27.06.2006
Адрес: Тамбовский район.
Сообщений: 194
Репутация: 16 [+/-]
deadCoo, ну присвой значение тогда какое-нибудь. without initialization переводится как не инициализировано, то есть не присвоено значения.
__________________
Finite Inkantem
Alex_Nolan вне форума  
Ответить с цитированием
Старый 06.10.2015, 14:15   #67
Cygnus X-1
 
Аватар для rainwalker
 
Регистрация: 20.07.2006
Сообщений: 1,373
Репутация: 960 [+/-]
ребят, задачку не поможете решить? Изучаю С. В конце очередного раздела учебника такое упражнение:

-Составить прогу, которая просит ввести букву, и при помощи петель сделать такую пирамидку (допустим букву А):
______А
_____АВА
____АВСАВ
___ABCDCBA
__ABCDEDCBA

(в готовом посте пирамидки почему-то не получается, поэтому я заменил пробелы на _)

Суть какая. Надо использовать одну петлю для рядов, и три внутренние петли: одна для пробелов, вторая для букв в правильном порядке и третью для букв в обратном порядке.
Эта долбаная хрень пропустила мой мозг через шредер. Основная суть ясна.

Скрытый текст:
for(a=0; a<5; a=a-1) эта внешняя петля, она обеспечит пять рядов.
Но принцип дальнейших действий я не понимаю.
думается сначала создаешь вот так:
_______А
______АВ
_____АВС
____ABCD
___ABCDE
А потом достраиваешь вторую половину, которая в обратном порядке.
Но как создать петлю с пробелами в начале?..

Хелп ребяты, я не могу есть, не могу спать, я на грани безумия, говоря словами стивена кинга - это моя ТЕМНАЯ БАШНЯ..
__________________
Never send to know for whom the bell tolls.. nobody cares

Последний раз редактировалось rainwalker; 06.10.2015 в 14:36.
rainwalker вне форума  
Ответить с цитированием
Старый 06.10.2015, 15:02   #68
Мяу
 
Аватар для Hast


 
Регистрация: 13.07.2007
Адрес: Київ
Сообщений: 2,992
Репутация: 624 [+/-]
Три раза перечитал, и только тогда понял, что такое "петля".
Не понял в чем проблема. В основном цикле будет 3 дополнительных:

1) Печатает пробелы
2) Печатает цифры в прямом порядке
3) Печатает цифры в обратном порядке

Дальше основной цикл делает перевод строки и все начинается заново.
__________________
«Да вы прям полиция мыслей» via DikWithballs
«Хех. Только я ник сменил.» via Jack of Еvil
Hast вне форума  
Отправить сообщение для Hast с помощью ICQ Отправить сообщение для Hast с помощью Skype™ Ответить с цитированием
Старый 06.10.2015, 15:48   #69
Cygnus X-1
 
Аватар для rainwalker
 
Регистрация: 20.07.2006
Сообщений: 1,373
Репутация: 960 [+/-]
Скрытый текст:
lets[26]="abcdefghijklmnopqrstuvwxyz";

for(a=0; a<6; a=a+1)
{
for(b=0; n>b; b=b+1)
{
printf("%c", lets[v]);
v=v+1;
}
b=0;
n=n+1;
v=0;
printf("\n");
}


Вот эта байда рожает
A
AB
ABC
ABCD
ABCDE

Нетпойму как сделать с пробелами
_______A
______AB
_____ABC
____ABCD
___ABCDE
__________________
Never send to know for whom the bell tolls.. nobody cares
rainwalker вне форума  
Ответить с цитированием
Старый 06.10.2015, 16:34   #70
Гейммастер
 
Аватар для Mad-Dan
 
Регистрация: 07.06.2005
Адрес: unknow
Сообщений: 8,967
Репутация: 625 [+/-]
rainwalker,
заводишь переменную, изначально равную количеству выводимых строк деленную пополам. На первой строчке выводишь циклом это количество пробелов. Во второй строчки это количество пробелов минус один. И так далее.
__________________
Бывший Dart Luke

Мечтаю быть модером и всех банить.... Но ведь не дадут (((((

"cъел еретика-спас дерево,"- оголодавший космодесант
Mad-Dan вне форума  
Ответить с цитированием
Старый 06.10.2015, 17:45   #71
Игроман
 
Аватар для Nebel
 
Регистрация: 29.11.2009
Сообщений: 4,113
Репутация: 376 [+/-]
rainwalker,
Код:
#include <iostream>
#include <string>
#include <conio.h>

int start = 65; //http://gimnnik.narod.ru/open-office/TextProcessor/images/ascii1.gif
int stop = 90;

std::string az(int val, int start, int stop)
{
	std::string str;
	for (int i=start; i<=start+val; i++)
	{
		str +=  char(i);
	}
	return str;
}

std::string za(int val, int start, int stop)
{
	std::string str;
	for (int i=val+start; i>start; i--)
	{
		str +=  char(i);
	}
	return str;
}

std::string sp(int val)
{	std::string str;
	for (int i=0; i<val; i++)
	{
		str +=  " ";
	}
	return str;
}



int main()
{
	
	for (int i=0; i<=(stop-start); i++)
	{
	 std::cout << sp((stop-start)-i) + za(i,start, stop) + az(i,start, stop) + "\n";
	}

	_getch();
}
__________________
/watch?v=5ToxRG4isxk
Nebel вне форума  
Ответить с цитированием
Старый 06.10.2015, 17:55   #72
Cygnus X-1
 
Аватар для rainwalker
 
Регистрация: 20.07.2006
Сообщений: 1,373
Репутация: 960 [+/-]
Nebel, спс, дружище, но я так пока не умею


Mad-Dan,
Вот смотри. Фиолетовый цикл печатает пробелы. Красный цикл - буквы. Но один перекрывает другой
Скрытый текст:
lets[26]="abcdefghijklmnopqrstuvwxyz";
char c=' ';

for(a=0; a<6; a=a+1)
{
for(x=0, y=4; x<y; x=x+1)
{
printf("%c", c);
}

x=0;
y=y-1;
for(b=0; n>b; b=b+1)
{
printf("%c", lets[v]);
v=v+1;
}

b=0;
n=n+1;
v=0;
printf("\n");
}
__________________
Never send to know for whom the bell tolls.. nobody cares
rainwalker вне форума  
Ответить с цитированием
Старый 06.10.2015, 22:58   #73
Гейммастер
 
Аватар для Mad-Dan
 
Регистрация: 07.06.2005
Адрес: unknow
Сообщений: 8,967
Репутация: 625 [+/-]
rainwalker,
Держи
Скрытый текст:
char letters[27] = "abcdefghijklmnopqrstuvwxyz";
int length = 6;
for (int i = 0; i<length; i++)
{
for (int j = 0; j < length-i-1; j++)
{
printf(" ");
}

for (int j = 0; j<i+1; j++)
{
printf("%c", letters[j]);
}

for (int j = i-1; j>=0; j--)
{
printf("%c", letters[j]);
}
printf("\n");
}

Насчет формулы для количества пробелов в предыдущем посте ошибся.
__________________
Бывший Dart Luke

Мечтаю быть модером и всех банить.... Но ведь не дадут (((((

"cъел еретика-спас дерево,"- оголодавший космодесант

Последний раз редактировалось Mad-Dan; 06.10.2015 в 23:05.
Mad-Dan вне форума  
Ответить с цитированием
Старый 11.10.2015, 21:30   #74
Cygnus X-1
 
Аватар для rainwalker
 
Регистрация: 20.07.2006
Сообщений: 1,373
Репутация: 960 [+/-]
Народ, спс всем за поддержку. Все получилось. Подскажите плз с другой задачкой.

Надо посчитать такое выражение

1+2-3+4-5....+n-(n+1). Количество шагов задается самостоятельно.

Получилось:

Скрытый текст:
a - количество шагов цикла
d - конечный результат выражения
n - число, модуль которого каждый шаг цикла увеличивается на 1 и котрое
меняет знак

Создаю две отдельные функции:
batman() - создает модуль числа n каждый шаг цикла
superman() - меняет знак каждый шаг цикла

d=1;
n=2;
scanf("%d", &a);
for(b=o; a>=b; b+1, n=(batman(n)+1)*superman(n)) т. о. n увеличивается на 1 и меняет знак каждый шаг цикла

{
d=d+n;
printf("%d", n);
}
printf("%d", d); /конечный результат выражения

int batman(int y) / эта часть работает нормально. Создает модуль n
{
int x;
x=y;
while(x<0)
{
x=x*(-1);
}
return x;
}


int superman(int z) / а вот с этой какие-то проблемы. Должна менять знак каждый шаг цикла
{
int u;
int t;
t=1;
while(z>0, t<2)
{
u=-1;
t=2;
}
while (z<0; t<2)
{
u=1;
t=2;
}
return u;
}
__________________
Never send to know for whom the bell tolls.. nobody cares

Последний раз редактировалось rainwalker; 11.10.2015 в 21:39.
rainwalker вне форума  
Ответить с цитированием
Старый 11.10.2015, 23:05   #75
Гейммастер
 
Аватар для Mad-Dan
 
Регистрация: 07.06.2005
Адрес: unknow
Сообщений: 8,967
Репутация: 625 [+/-]
rainwalker, ты все усложняешь. Тебе одного цикла достаточно. Знак можно поменять банальным возведением -1 в степень равную шагу цикла.

В коде у тебя полно бреда. К примеру, зачем ты в batman заводишь переменную x, и затем приравниваешь ее к аргументу функции y? Почему просто не использовать y? Я понимаю, что сейчас памяти много у компа, но к чему лишние переменные?

Зачем ты используешь while в супермене? У тебя там один шаг всего же. Достаточно if. И зачем нужно условие t<2?
Условия внутри while записаны неправильно.
должно быть не while (z<0; t<2), а либо while (z<0 || t<2) или (z<0 && t<2). Почитай про логические операции.

Кстати, число можно в легкую посчитать и без компа. Выйдет (1-n)
__________________
Бывший Dart Luke

Мечтаю быть модером и всех банить.... Но ведь не дадут (((((

"cъел еретика-спас дерево,"- оголодавший космодесант

Последний раз редактировалось Mad-Dan; 11.10.2015 в 23:30.
Mad-Dan вне форума  
Ответить с цитированием
Старый 12.10.2015, 00:14   #76
Игроман
 
Аватар для Nebel
 
Регистрация: 29.11.2009
Сообщений: 4,113
Репутация: 376 [+/-]
Цитата:
Сообщение от rainwalker Посмотреть сообщение
Надо посчитать такое выражение

1+2-3+4-5....+n-(n+1). Количество шагов задается самостоятельно.
кактотак:
Код:
for (i=0;i<n;i++)
{
    if(i%2!=0 && i>1) k-=i; 
    else k+=i; 
}
__________________
/watch?v=5ToxRG4isxk
Nebel вне форума  
Ответить с цитированием
Старый 12.10.2015, 00:31   #77
Гейммастер
 
Аватар для Mad-Dan
 
Регистрация: 07.06.2005
Адрес: unknow
Сообщений: 8,967
Репутация: 625 [+/-]
Nebel,
тогда уж
Скрытый текст:

k=1
for (i=2;i<=n+1;i++)
{
if(i%2!=0) k-=i;
else k+=i;
}
__________________
Бывший Dart Luke

Мечтаю быть модером и всех банить.... Но ведь не дадут (((((

"cъел еретика-спас дерево,"- оголодавший космодесант

Последний раз редактировалось Mad-Dan; 12.10.2015 в 16:15.
Mad-Dan вне форума  
Ответить с цитированием
Старый 12.10.2015, 17:02   #78
Cygnus X-1
 
Аватар для rainwalker
 
Регистрация: 20.07.2006
Сообщений: 1,373
Репутация: 960 [+/-]
спс. If в следующей теме идет, надо без него просто.
Цитата:
К примеру, зачем ты в batman заводишь переменную x, и затем приравниваешь ее к аргументу функции
потому что если он будет делать положительным n, то superman() всегда будет выдавать -1. Мне нужно чтобы batman() выдавал отдельное число равное модулю n, а не сразу делал само n положительным.
Цитата:
И зачем нужно условие t<2?
чтобы цикл делал только один шаг. Иначе же он бесконечный, разве нет?.

Охренеть...

Цитата:
while (z<0 && t<2)
вот в чем дело. я писал while (z<0, t<2) (в посте ошибся). И супермен каждый шаг выдавал -1.
Сейчас все как по маслу пошло! Пасиб парни. Хотя в учебнике про это ни слова..
__________________
Never send to know for whom the bell tolls.. nobody cares

Последний раз редактировалось rainwalker; 12.10.2015 в 18:10.
rainwalker вне форума  
Ответить с цитированием
Старый 12.10.2015, 20:50   #79
Гейммастер
 
Аватар для Mad-Dan
 
Регистрация: 07.06.2005
Адрес: unknow
Сообщений: 8,967
Репутация: 625 [+/-]
Цитата:
If в следующей теме идет, надо без него просто.
Функции раньше if у вас проходят? Это что-то новое. Это именно курс и преподаватель такое потребовал? Или просто так главы расположены?

Цитата:
чтобы цикл делал только один шаг. Иначе же он бесконечный, разве нет?.
пользуйся break, что бы выйти из цикла; или return, что бы выйти из функции.
или заведи переменную типа bool

Цитата:
потому что если он будет делать положительным n, то superman() всегда будет выдавать -1. Мне нужно чтобы batman() выдавал отдельное число равное модулю n, а не сразу делал само n положительным.
Ты в курсе, как функции работают?
этот y существует только внутри batman, на n он никак не влияет. Почитай про глобальные и локальные переменные.
__________________
Бывший Dart Luke

Мечтаю быть модером и всех банить.... Но ведь не дадут (((((

"cъел еретика-спас дерево,"- оголодавший космодесант

Последний раз редактировалось Mad-Dan; 12.10.2015 в 21:00.
Mad-Dan вне форума  
Ответить с цитированием
Старый 12.10.2015, 22:12   #80
Cygnus X-1
 
Аватар для rainwalker
 
Регистрация: 20.07.2006
Сообщений: 1,373
Репутация: 960 [+/-]
Mad-Dan, я сам обучаюсь по англ учебнику C primer plus. Дорешал задачи к 5ой главе, там как раз были loops (петли, как я их сначала перевел: while(), for(). С 6-ой начинаются все то, о чем ты говориш: if, else, break итп. Но задачи то к 5-ой. Поэтому работаю с тем, что есть.
Цитата:
Ты в курсе, как функции работают?
этот y существует только внутри batman, на n он никак не влияет. Почитай про глобальные и локальные переменные
класс сколько мне еще предстоит сюрпризов..
__________________
Never send to know for whom the bell tolls.. nobody cares
rainwalker вне форума  
Ответить с цитированием
Ответ

Опции темы

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

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

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


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


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