Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Уроки по С++. Занятие №11.

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Уроки по С++. Занятие №11.
Имя
Сообщение << Старые топики   Новые топики >>
Уроки по С++. Занятие №11. - 2009-10-09 18:36:19.610000   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
Урок №11. Забираем

Под контролем незаслуженного методиста рунета по ИиИКТ и главного редактора редакционной комиссии в издательстве серии уроков D. Scandal, непревзайденного rgo
Post #: 1
RE: Уроки по С++. Занятие №11. - 2009-10-09 20:49:49.120000   
nicea

Сообщений: 25
Оценки: 0
Присоединился: 2009-05-09 19:41:22.990000
первая задача
#include &lt;iostream&gt; using namespace std; int main() { unsigned char a; while(cin&gt;&gt;a){ if(((int)a&lt;=122) && ((int)a&gt;=97)) {a=65+(int)a-97; cout&lt;&lt;a&lt;&lt;endl;} else if(((int)a&lt;=90) && ((int)a&gt;=65)) {a=97+(int)a-65; cout&lt;&lt;a&lt;&lt;endl;} }; system("pause"); }
вторая задача
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(0,""); string a; int k=1; bool proverka=0; while(getline(cin, a)) { if(proverka == 0) { int alen=a.length(); for(int i=0;i&lt;=alen;i++) if(a[i]==' ') k++; proverka=1; } } cout&lt;&lt;k&lt;&lt;" слов в первой строке"; system("pause"); } третяя задача
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale(0,""); string a,b; b=" "; getline(cin, a); a=b+a+b;//ставим пробелы перед и после строки int alen;//длина строки alen=a.length(); int maxLen=0;//длина самого большого слова в строке int maxX=0;//начало самого длинного слова int maxY=0;//конец самого длинного слова int g=0;//длина каждого слова - временная переменная int i=0;//номер символа в строке do{ g=0; if(a[i]==' ') { while((a[i+1]!=' ') && (i&lt;alen-1)) {i++; g++;} if(maxLen&lt;g) { maxLen=g; maxY=i; maxX=maxY-g; } } i++; }while(i&lt;alen); cout&lt;&lt;"В данной строке самое длинное слово - "; for(int i=maxX;i&lt;=maxY;i++) cout&lt;&lt;a[i]; cout&lt;&lt;" и его длина "&lt;&lt;maxLen&lt;&lt;" символов."&lt;&lt;endl; system("pause"); return 0; } четвертая задача
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string a; int aLen; cin&gt;&gt;a; aLen=a.length(); bool result=1; if(aLen%2==1) { for(int i=0;i&lt;aLen/2;i++) if(a[i]!=a[aLen-i-1]) result=0; } else{ result=0; } if(result==1) cout&lt;&lt;"Yes"&lt;&lt;endl; else cout&lt;&lt;"No"&lt;&lt;endl; system("pause"); return 0; } пятая задача
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string a; int aLen; cin&gt;&gt;a; aLen=a.length(); int b=0; do{ for(int i=b+1;i&lt;aLen;i++) if (a[b]==a[i]) {cout&lt;&lt;a[b]&lt;&lt;endl; break;}; b++; }while(b&lt;aLen); system("pause"); return 0; } шестая задача
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string a; int aa; int x=0,y=0; int i=0; do{ cin&gt;&gt;a; cin&gt;&gt;aa; if((a=="West") || (a=="west") || (a=="WEST")) y=y+aa; if((a=="South") || (a=="south") || (a=="SOUTH")) x=x+aa; if((a=="East") || (a=="east") || (a=="EAST")) y=y-aa; if((a=="North") || (a=="north") || (a=="NORTH")) x=x-aa; i++; }while(i&lt;4); cout&lt;&lt;x&lt;&lt;" "&lt;&lt;y&lt;&lt;endl; system("pause"); return 0; }
Post #: 2
RE: Уроки по С++. Занятие №11. - 2009-10-09 22:56:58.886666   
TimeBandit

Сообщений: 63
Оценки: 0
Присоединился: 2008-08-24 01:58:50.050000
Во втором задании желательно явно указывать какой символ будет считаться концом строки, думайте о юзьверях которые будут вашими прогами пользоваться, это мы с вами про Ctrl+Z знаем. :D
Post #: 3
RE: Уроки по С++. Занятие №11. - 2009-10-10 21:29:35.466666   
psina007

Сообщений: 98
Оценки: 0
Присоединился: 2009-05-09 22:41:33.580000
От я наивный!!! Думал что в байте 255:D
Post #: 4
RE: Уроки по С++. Занятие №11. - 2009-10-10 22:47:01.553333   
psina007

Сообщений: 98
Оценки: 0
Присоединился: 2009-05-09 22:41:33.580000
№1
#include &lt;iostream&gt; #include &lt;string&gt; void main(void) { char c; std::cin &gt;&gt; c; if((int)c &gt;= (int)'a' && (int)c &lt;= (int)'z') { std::cout &lt;&lt; (char)((int)c + 32) &lt;&lt; std::endl; } else if((int)c &gt;= (int)'A' && (int)c &lt;= (int)'Z') { std::cout &lt;&lt; (char)((int)c - 32) &lt;&lt; std::endl; } }
или

#include &lt;iostream&gt; #include &lt;string&gt; char foo(char c); void main(void) { char c; std::cin &gt;&gt; c; std::cout &lt;&lt; foo(c) &lt;&lt; std::endl; } char foo(char c) { if((int)c &gt;= (int)'a' && (int)c &lt;= (int)'z') return (char)((int)c + 32); else if((int)c &gt;= (int)'A' && (int)c &lt;= (int)'Z') return (char)((int)c - 32); }
№2
#include &lt;iostream&gt; #include &lt;string&gt; void main(void) { std::string s; int words = 0, lines = 0; while(getline(std::cin,s)) { if(lines &lt; 1) { for(int i=0;i&lt;s.length();i++) { if(s[i] == ' ') words++; } } else break; lines++; } std::cout &lt;&lt; words; }
№4
#include &lt;iostream&gt; #include &lt;string&gt; void main(void) { std::string s, s1 = ""; std::cin &gt;&gt; s; // for (int i = s.length() - 1; i &gt;= 0; i--) s1 += s[i]; // if(s==s1) std::cout &lt;&lt; "Yes" &lt;&lt; std::endl; else std::cout &lt;&lt; "No" &lt;&lt; std::endl; }
№5
#include &lt;iostream&gt; #include &lt;string&gt; void main(void) { std::string s; std::cin &gt;&gt; s; int len = s.length(); char CC; int pos; for(int i=0;i&lt;len;i++) { CC = s[i]; pos = i; for(int j=0;j&lt;len;j++) { if(j != pos) { if(s[j] == CC) { std::cout &lt;&lt; CC &lt;&lt; std::endl; return; } } } } }
№6
#include &lt;iostream&gt; #include &lt;string&gt; void main(void) { std::string s; int steps=0, x=0, y=0; while(true) { std::cin &gt;&gt; s &gt;&gt; steps; if(s == "North") x += steps; else if( s == "East") y += steps; else if(s=="South") x -= steps; else if(s=="West") y -= steps; else if(s=="break") break; } std::cout &lt;&lt; x &lt;&lt; " " &lt;&lt; y &lt;&lt; std::endl; } В условии задачи не сказано сколько записей. Поэтому выход из цикла по "break 0".
Post #: 5
RE: Уроки по С++. Занятие №11. - 2009-10-14 14:23:44.176666   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
Анонимный вопрос:
quote:

ORIGINAL: Автор скрыт
Почему все решают по разному? В чем разница между int main и void main?


int main() - возвращает результат, значение целого типа.

void main() - возвратить результат не может.
Post #: 6
RE: Уроки по С++. Занятие №11. - 2009-10-14 18:15:22.866666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Хм. А любопытный вопрос между прочим. Я вот не обратил внимания на эту особенность. Возникло продолжение вопроса, а гуглить лень.
Как я понял, VC++ позволяет объявлять main как void. А вот компилятор g++, ругается на `void main', он вопит что `error: ‘::main’ must return ‘int’', и нифига не компилирует. Вопрос собственно в том, что это? Это нестандартные особенности g++, или, всё же от стандарта отклоняется vc++ и позволяет использовать main с void в качестве возвращаемого типа значения?
Post #: 7
RE: Уроки по С++. Занятие №11. - 2009-10-14 18:29:45.423333   
Actek

Сообщений: 604
Оценки: 0
Присоединился: 2008-02-24 10:24:14.710000
Есть стандарты C99 и ISO С где четко говориться что main() должна возвращать int.
Страуструп подтвердит)
Post #: 8
RE: Уроки по С++. Занятие №11. - 2009-10-14 18:31:48.803333   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
От стандарта отклоняется VC++, потому как изначально (по единому стандарту C/С++), main обязана возвращать int.
Лично меня, страшно коробит при объявлении main как void.
Post #: 9
RE: Уроки по С++. Занятие №11. - 2009-10-14 18:40:44.126666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
эээ. не надо путать C++, с C99 и ISO C. C++ и C – это разные языки. Хотя наверное это показатель. Но я, всё же, предпочёл бы ссылку на стандарт C++ ;)
Post #: 10
RE: Уроки по С++. Занятие №11. - 2009-10-14 19:10:37.270000   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
Ну, предпочти уже же :) http://www.kuzbass.ru:8086/docs/isocpp/
Post #: 11
RE: Уроки по С++. Занятие №11. - 2009-10-14 19:19:29.420000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
:D
Да ладно уж. Я верю. Собственно я надеялся либо на авторитетное заявление, что в стандарте на C++ написано то-то, либо уж на совсем-совсем прямую ссылку на фразу проливающую свет на эту ситуацию.
А просто так найти стандарт и его почитать – это как раз то, что мне делать лень. Собственно моё чувство прекрасного уже удовлетворено, я получил авторитетное заявление. Хотя ссылка прикольная – я вечно натыкался на pdf'ки, внутри которых не работают кросс-ссылки, и рыться там было крайне муторно.
Post #: 12
RE: Уроки по С++. Занятие №11. - 2009-10-14 20:01:59.346666   
Анон

Сообщений: 632
Оценки: 0
Присоединился: 2008-07-21 22:14:59.233333
http://www.csci.csusb.edu/dick/c++std/cd2/basic.html#basic
quote:


3.6 Start and termination [basic.start]

3.6.1 Main function [basic.start.main]



2 An implementation shall not predefine the main function. This func-
tion shall not be overloaded. It shall have a return type of type
int, but otherwise its type is implementation-defined.



VS не права выходит. Наказать :)
Post #: 13
RE: Уроки по С++. Занятие №11. - 2009-10-14 20:27:17.096666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Не совсем втыкаю.
quote:

It shall have a return type of type int, but otherwise its type is implementation-defined.

"Ей [функции main] следует иметь int возвращаемым типом, но иначе её тип определяется реализацией". Вроде ведь так переводить это следует? То есть если немного причесать перевод: неплохо было бы если бы main возвращала int, но вообще-то пускай каждая конкретная реализация решает сама, что будет возвращать main. Так? В таком случае vc++ вполне следует стандарту.
Post #: 14
RE: Уроки по С++. Занятие №11. - 2009-10-14 20:43:12.246666   
Анон

Сообщений: 632
Оценки: 0
Присоединился: 2008-07-21 22:14:59.233333
quote:

ORIGINAL: rgo

Не совсем втыкаю.
quote:

It shall have a return type of type int, but otherwise its type is implementation-defined.

"Ей [функции main] следует иметь int возвращаемым типом, но иначе её тип определяется реализацией". Вроде ведь так переводить это следует? То есть если немного причесать перевод: неплохо было бы если бы main возвращала int, но вообще-то пускай каждая конкретная реализация решает сама, что будет возвращать main. Так? В таком случае vc++ вполне следует стандарту.


Я тоже сначала недопонял, ИМХО, под 'otherwise' имеется ввиду, что _всё остальное_ определяется имплементацией.
т. е. от реализации требуют, чтобы ф-я main
а) не была предопределена
б) её нельзя было перегрузить
в) она должна возвращать тип int
а дальше (otherwise) др^W пляшите, как хотите. Я так понял.
UPD:
Хотя в таком случае
quote:

its type is implementation defined
меня смущает.
Ну его в печь, этот C++ :D
Post #: 15
RE: Уроки по С++. Занятие №11. - 2009-10-14 22:21:19.980000   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
Тут черт ногу сломит. Можно дебатить до умопомрачения.
Вижуал Студия приветствует стандартную int main() и допускает void main()
Лично я считаю, что MVSC++ засранка еще та. Доступная.
Post #: 16
RE: Уроки по С++. Занятие №11. - 2009-10-16 14:02:23.656666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: D. Scandal

эта процедура относится к "функциональному программированию". Ее используют для разбития программы на более мелкие детали (программульки).


прошу прощения, но никакого отношения к функциональному программированию void main() не имеет, и иметь не может - функция в ФП понимается в математическом смысле, а следовательно всегда принимает одно значение, и всегда возвращает одно значение; для того, чтобы процедура, не возвращающая значение, имела какой-то смысл, она должна выполнять какие-то сайд-эффекты, что также противоречит ФП (и математике)

речь, судя по всему, шла о структурном программировании
Post #: 17
RE: Уроки по С++. Занятие №11. - 2009-10-16 14:15:14.300000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: rgo

Не совсем втыкаю.


изначально предполагалось, что C++ может компилироваться для работы в произвольных (возможно, сильно не-UNIX) системах на произвольных (возможно, сильно не x86 и не фон Неймановских) архитектурах. именно поэтому в стандарте оставлено это implementation specific - процесс может быть совсем не POSIX-овым, и возвращать совсем не int, соответственно стандарт языка не должен ограничивать тех, кто будет портировать компилятор С++ на такую систему
Post #: 18
RE: Уроки по С++. Занятие №11. - 2009-10-16 14:22:23.546666   
Actek

Сообщений: 604
Оценки: 0
Присоединился: 2008-02-24 10:24:14.710000
отношение к main в стандартах C и C++ одинакого.
вот реплики страуструпа(создателя C++)
quote:

The definition
void main() { /* … */ }
is not and never has been C++, not has it even been C. See the ISO C++ standard 3.6.1[2] or the ISO C standard 5.1.2.2.1. A conforming implementation accepts
int main() { /* … */ }
and
int main(int argc, char* argv[]) { /* … */ }


т.е нет строгих ограничений, что нельзя писать void. Но просто это считается некорректным и не правильным стилем программирования.
Post #: 19
RE: Уроки по С++. Занятие №11. - 2009-10-16 14:34:50.380000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Actek

т.е нет строгих ограничений


если бы стандарт содержал строгие ограничения, язык C (и C++, в общем, тоже) нафиг никому не был бы нужен

quote:

ORIGINAL: Actek

что нельзя писать void. Но просто это считается некорректным и не правильным стилем программирования.


я выше написал в каких случаях сигнатура int main может быть неприменимой. что, где и чем "считается" меня не интересует
Post #: 20
RE: Уроки по С++. Занятие №11. - 2009-10-16 14:56:56.223333   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
Мой совет изученцам, паломникам по душу С++: использование void main() крайне некорректно.
Post #: 21
RE: Уроки по С++. Занятие №11. - 2009-10-16 15:30:28.763333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: D. Scandal

Значит так! Denaturat, родимый. Спорить не хочу и не буду. Строго останусь при своем мнении, а то есть: void main() можно использовать в качестве подпрограмм.


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

при всём уважении, на которое способен

quote:

ORIGINAL: D. Scandal

Прошу закончить теребить эту фундаментальную извечно-противоречивую тему в уроках по С++.


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

http://ru.wikipedia.org/wiki/Функциональное_программирование
http://ru.wikipedia.org/wiki/Структурное_программирование
Post #: 22
RE: Уроки по С++. Занятие №11. - 2009-10-16 15:34:26.230000   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
del
Post #: 23
RE: Уроки по С++. Занятие №11. - 2009-10-16 15:40:28.810000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: D. Scandal

Я могу привети тысячу ссылок (утрирую), вступающих в спор с вышеизложенными. Но, как уже и упомянула, нет никакого желания. Это тема извечна и неразрешима. Поверь, не только между нами.


а можно всё же привести? в отдельной ветке? нижайше прошу, мне действительно очень интересна данная тема, и я с радостью почитал бы любые опровержения моим высказываниям - про ФП и про связь void main и подпрограмм. а верить я, увы, разучился - я перевариваю только факты, которые можно пощупать и проверить
Post #: 24
RE: Уроки по С++. Занятие №11. - 2009-10-16 17:59:06.080000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Denaturat
quote:

ORIGINAL: rgo
Не совсем втыкаю.

изначально предполагалось, что C++ может компилироваться для работы в произвольных (возможно, сильно не-UNIX) системах на произвольных (возможно, сильно не x86 и не фон Неймановских) архитектурах. именно поэтому в стандарте оставлено это implementation specific - процесс может быть совсем не POSIX-овым, и возвращать совсем не int, соответственно стандарт языка не должен ограничивать тех, кто будет портировать компилятор С++ на такую систему

Как много слов… Можно было просто сказать, что перевод верен? ;)
Я могу придумать килограммы причин, зачем main может возвращать не int. Но мои придумки – это пустое место. Вопрос был о том, что стандарт желает видеть.
Post #: 25
RE: Уроки по С++. Занятие №11. - 2009-10-16 18:19:57.353333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: rgo

Как много слов… Можно было просто сказать, что перевод верен? ;)


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

quote:

ORIGINAL: rgo

Я могу придумать килограммы причин, зачем main может возвращать не int. Но мои придумки – это пустое место. Вопрос был о том, что стандарт желает видеть.


стандарт не может желать, у него нет соответствующих органов. а решения принимает комитет по стандартизации, чьи соображения на этот счёт, вообще говоря, вполне себе можно почитать в группах рассылки (и у того же Саттера, хоть он и редкостная скотина). тебе их найти? просто они затрагивают не только сигнатуру main, но и многие другие аспекты стандарта (те же встроенные типы данных, или почему uint64_t != unsigned long long) - однако все по одной и той же причине
Post #: 26
RE: Уроки по С++. Занятие №11. - 2009-10-16 19:05:01.386666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Денатурат, возникает вопрос: ты действительно словосочетание "стандарт желает" воспринял буквально? Ты действительно поверил в то, что я одушествляю стандарт и перед сном обращаюсь к нему с молитвами о хорошем урожае?
Ответ мы уже увидели "implementation specific". Я переводя всю ту цитату из стандарта, споткнулся об "shell", который с разгону перевёл глаголом "должен", и, споткнувшись, феерически пропахал носом хвост цитаты, не понимая о чём речь. Подумав я вспомнил, что в школе втирали что-то про shell/will/must/have to/ought to, и во мне забрезжила надежда, что в иногда shell дозволяется переводить глаголом "следует" – то есть, почти "должен", но не совсем, более мягкая форма, если можно так выразиться. Я предложил этот вариант перевода, и поинтересовался, правильно ли я понял. /* да-да, опять поленившись порыть гугл. на этот раз на предмет грамматики английского языка */ Мы сошлись во мнении, что перевод был верен. Ты это подтвердил. К чему всё остальное?
Должен ли я расценивать это как оффтоп? Ну ведь, мы вроде договорились, что уроки для начинающих. Которые posix-процесс не отличают от унитаза. И все эти разговоры о unsigned long long органах, которыми обладают стандарты… К чему они?
Post #: 27
RE: Уроки по С++. Занятие №11. - 2009-10-16 20:14:11.453333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
ну значит мы неправильно друг друга поняли. anyway, мои вопросы насчёт void main остаются в силе, и я надеюсь, что кто-нибудь (в отдельном, естественно, треде) мне на них ответит
Post #: 28
RE: Уроки по С++. Занятие №11. - 2009-10-18 00:38:35.350000   
Jasmin

Сообщений: 2320
Оценки: 0
Присоединился: 2007-05-03 23:08:53.390000
Когда ООП будет? Доживу я до этого светлого момента?

Пишу перемножение матриц. Создала класс Matrix, переопределила оператор умножения…

Matrix* Matrix::operator * (Matrix B) { Matrix * A = this; Matrix * result = new Matrix(A-&gt;rows, B.cols); ... блаблабла return result; }
Умножаю так:

Matrix A = Matrix(3,1); ... Matrix B = Matrix(1,3); ... Matrix* C = A * B;
все бы хорошо, тока матрицу C не удаецца правильно утилизировать. Самое логичное - delete C. Не воркает. Тоесть не валицца тут же, но при завершении приложения ругаецца Debug Assertion Failed. Деструктор у класса написан, ежели перемножение не делать то ошибки не будет
Post #: 29
RE: Уроки по С++. Занятие №11. - 2009-10-18 04:45:36.963333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Я не знаю что там за debug assertion обламывается*, но я знаю одно: нефиг возвращать оператором умножения указатель ;)
Либо по значению, либо ссылкой. Ну иначе это нарушает идею. Например, напишешь ты Matrix A, B, C, D; // ... D = A*B + C и что? Указатель с чем складывать будем? Тут кстати и ссылка неудачна: она будет потеряна, и фига с два её удалишь потом.
Я как-то писал все эти матрицы зачем-то. Помню, что в конечном итоге я забил на operator*, по причинам его убогости: возвращать новый объект неприкольно, потом ещё его удалять надо. Вероятно можно сделать, чтобы он сам как-нибудь удалялся, но полюбасу вызывать malloc ради промежуточного значения – нездоровая тенденция. А возвращать значением, мне кажется, просто долго. Это может покатить если оператор заинлайнить, но если начинать разворачивать циклы, разбивать матрицу на кусочки 4x4 и струячить через sse все эти умножения, то уж больно много инлайнить надо.
Короче, я остановился на перегруженном операторе *= и не парил себе мозг боле.

*) ты бы рабочий код привела, я бы его прогнал и глянул, что там не так. А то лень дописывать до компилируемого состояния. Кстати, неплохо бы в отдельном топике, или вон, в "вопросы по C/C++".
Post #: 30
RE: Уроки по С++. Занятие №11. - 2009-10-18 04:54:01.236666   
NightmareZz

Сообщений: 1087
Оценки: 0
Присоединился: 2006-10-15 11:16:16.833333
quote:

ORIGINAL: Denaturat
ну значит мы неправильно друг друга поняли. anyway, мои вопросы насчёт void main остаются в силе, и я надеюсь, что кто-нибудь (в отдельном, естественно, треде) мне на них ответит


Не хотелось руки марать об эту тему, но всё-таки меня тоже интересует обоснование слов D. Scandal, потому тоже прошу: D. Scandal ответь плиз на заданные вопросы - очень уж интересно.
Post #: 31
RE: Уроки по С++. Занятие №11. - 2009-10-18 14:44:23.276666   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
Denaturat, Ты прав. Я уперлась рогами в другие ворота //void func()
И будучи уверена в своей правоте, даже не удосужилась прогуляться по твоим линкам. За ненадобностью, как мне казалось.
Посему, приношу свои извинения.

quote:

ORIGINAL: Jasmin
Когда ООП будет? Доживу я до этого светлого момента?

Обязательно доживешь. Мы пришлем тебе курьера с благой вестью.

quote:

ORIGINAL: NightmareZz
Не хотелось руки марать об эту тему, но всё-таки…

Да, тебе в такой грязи делать нечего. Возвращайся на Олимп.
Post #: 32
RE: Уроки по С++. Занятие №11. - 2009-10-18 14:57:30.716666   
D. Scandal

Сообщений: 1360
Оценки: 345
Присоединился: 2007-12-01 16:39:35.550000
del
Post #: 33
RE: Уроки по С++. Занятие №11. - 2009-10-19 11:27:26.050000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: D. Scandal

Denaturat, Ты прав. Я уперлась рогами в другие ворота //void func()
И будучи уверена в своей правоте, даже не удосужилась прогуляться по твоим линкам. За ненадобностью, как мне казалось.
Посему, приношу свои извинения.


принято
Post #: 34
RE: Уроки по С++. Занятие №11. - 2010-06-02 11:22:16.640000   
vladoscom93

Сообщений: 68
Оценки: 0
Присоединился: 2009-10-10 22:25:02.253333
ЛЮДИ у кого есть этот урок… перезалейте пожалуйста… СРОЧНО
Post #: 35
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Уроки по С++. Занятие №11.







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.