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

RE: Вопросы по C/C++ (Для новичков)

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

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 09:49:51.613333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Обращаюсь, в основном к студентам, но и ко всем присутствующим.Помогите пожалуйста. У меня какой то творческий кризис в ридумывании задач, подкиньте у кого может есть задания с лабораторных работ или курсовых по программированию на C++, желательно что нибудь интересное, а не вывести на экран наибольший элемент каждой диагонали массива. Уровень примерно 1-3 курса, но если выше тоже не откажусь.Формат заданий люьой, хоть отсканированные изображения методичек. Заранее всем спасибо.
P.S. Извините за небольшой оффтоп, не хотел тему отдельнуюю создавать для такой мелкой просьбы.
Post #: 1401
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 10:26:25.986666   
Parano1d

Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
напиши свой ЯП на C++. это 3 курс. сейчас как раз думаю написать цикл статей на эту тему
Post #: 1402
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 10:33:05.080000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
quote:

ORIGINAL: Parano1d

напиши свой ЯП на C++. это 3 курс. сейчас как раз думаю написать цикл статей на эту тему


Спасибо, но я думаю это пока мне не под силу = ) Если соберешься статьи писать, скинь линк потом на них, обязательно ознакомлюсь.

P.S. Видать задания 3 курса, это я сильно замахнулся!
Post #: 1403
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 11:27:38.006666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Kadead, мне всегда нравились задачи на моделирование. Типа моделирования лифта, которое Д.Кнут делал в своём TAOP. У тебя в городе метро есть? Вот напиши модель метрополитена своего города, которая рандомом будет закидывать на станции пассажиров, и задавать им цель путешествия. Которая будет моделировать всё движение каждого пассажира, причём с учётом времени езды на эскалаторе, времени ожидания электрички, времени езды в электричке, времени потраченного на переход с одной линии на другую. И к модели вывод в консоль типа[08:11]на станцию X зашёл пассажир 34458, цель путешествия станция Y, пересадка на станции Z. [08:11]Поезд 29 прибыл на станцию W [08:11]Пассажиры 34401 34156 34157 высадились на станции W [08:12]Пассажир 24492 закончил переход с линии 1 на линию 2 на станции Z [08:12]На станцию Y зашёл пассажир 24459, цель путешествия станция W, маршрут без пересадокИ так далее. Будет желание, потом можно приделать поездам/экскалаторам/платформам (короче контейнерам пассажиров) ограничение на вместимость, и заставить модель корректно обрабатывать ситуацию, когда поток пассажиров превосходит пропускную способность метрополитена. Ну или пускай не обрабатывать, но хотя бы определить сам факт возникновения такой ситуации.
Post #: 1404
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 12:03:58.676666   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
quote:

ORIGINAL: rgo

Kadead, мне всегда нравились задачи на моделирование. Типа моделирования лифта, которое Д.Кнут делал в своём TAOP. У тебя в городе метро есть? Вот напиши модель метрополитена своего города, которая рандомом будет закидывать на станции пассажиров, и задавать им цель путешествия. Которая будет моделировать всё движение каждого пассажира, причём с учётом времени езды на эскалаторе, времени ожидания электрички, времени езды в электричке, времени потраченного на переход с одной линии на другую. И к модели вывод в консоль типа[08:11]на станцию X зашёл пассажир 34458, цель путешествия станция Y, пересадка на станции Z. [08:11]Поезд 29 прибыл на станцию W [08:11]Пассажиры 34401 34156 34157 высадились на станции W [08:12]Пассажир 24492 закончил переход с линии 1 на линию 2 на станции Z [08:12]На станцию Y зашёл пассажир 24459, цель путешествия станция W, маршрут без пересадокИ так далее. Будет желание, потом можно приделать поездам/экскалаторам/платформам (короче контейнерам пассажиров) ограничение на вместимость, и заставить модель корректно обрабатывать ситуацию, когда поток пассажиров превосходит пропускную способность метрополитена. Ну или пускай не обрабатывать, но хотя бы определить сам факт возникновения такой ситуации.

[sm=be.gif] [sm=ai.gif]
rgo, спасибо конечно, но такое я не напишу наверное никогда = ( [sm=bu.gif]

Учитывайте пожалуйста, что я изучаю С++ всего месяц.
Post #: 1405
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 12:42:26.316666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Без труда не выловишь и рыбку из пруда.

Ты не говори, что не сможешь - а бери и делай.
Post #: 1406
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 12:44:21.393333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Это я отлично понимаю, просто в данном случае я не представляю даже ход решения задачи, даже словестно не могу описать алгоритм. Значит реализовать его точно не смогу.
Post #: 1407
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 13:29:10.320000   
Parano1d

Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
тогда надо почитать литературу разную, и появятся у самого различные интересные задачи
Post #: 1408
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 13:42:26.133333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
Да завалился уже литературой, Основной использую учебник Павловской, плюс справочник Шилдта и специальный справочник Карпова. Дополнительно есть штук 7 книг в электронном виде. Уроки Д.Скандал, но ими уже не пользуюсь с них начинал.
Post #: 1409
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 15:32:45.966666   
Denaturat

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

ORIGINAL: Kadead

Спасибо, но я думаю это пока мне не под силу = )


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

а сложные задачи дают значительно больше полезного опыта, чем простые
Post #: 1410
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 16:43:13.750000   
rgo

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

ORIGINAL: Kadead
Это я отлично понимаю, просто в данном случае я не представляю даже ход решения задачи, даже словестно не могу описать алгоритм. Значит реализовать его точно не смогу.

Открой Кнута, и почитай там как он моделировал лифт. Там есть полное описание задачи. Словесное описание алгоритма. Описание того, как алгоритм был получен. И есть программа для mix, которая всё это реализует. Почитай и напиши то же самое на C++. Глядишь там станет ясно, как решить более сложную задачу с метрополитеном.
Post #: 1411
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 17:04:41.013333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Павловская - зло. Не читай. Она не знает, чем Си от С++ отличается или считает это настолько несущественным, что мешает эти два языка в один.
Post #: 1412
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 17:05:47.640000   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666

quote:

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


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

quote:

ORIGINAL: rgo

quote:

ORIGINAL: Kadead
Это я отлично понимаю, просто в данном случае я не представляю даже ход решения задачи, даже словестно не могу описать алгоритм. Значит реализовать его точно не смогу.

Открой Кнута, и почитай там как он моделировал лифт. Там есть полное описание задачи. Словесное описание алгоритма. Описание того, как алгоритм был получен. И есть программа для mix, которая всё это реализует. Почитай и напиши то же самое на C++. Глядишь там станет ясно, как решить более сложную задачу с метрополитеном.

Спасибо, за подсказку.Сейчас скачаю только Кнута и начну = )))
Post #: 1413
RE: Вопросы по C/C++ (Для новичков) - 2010-03-26 17:10:43.563333   
Kadead

Сообщений: 108
Оценки: 0
Присоединился: 2007-10-22 23:02:04.916666
quote:

ORIGINAL: _SaZ_

Павловская - зло. Не читай. Она не знает, чем Си от С++ отличается или считает это настолько несущественным, что мешает эти два языка в один.


Да блин… не знаю уж кого слушать, одни говорят это дерьмо, другие про это же говорят что хороше. У всех свои предпочтения, но все схожи в том, что Страуструп лучший. У меня есть 3 или 4 издание Страуструпа, да оно дома осталось. Покупал в том году еще, но тогда учил паскаль. Здоровая такая, толстая книжка. Посоветуй ты, мне тогда альтернативу Павловской, буду признателен =))
Post #: 1414
RE: Вопросы по C/C++ (Для новичков) - 2010-03-27 00:50:45.053333   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
2Kaded
мне как раз задали курчач на ассемблере - эмуляция работы домофона… попробуй ее на С++ сделать…. это что касается моделирования.
Post #: 1415
RE: Вопросы по C/C++ (Для новичков) - 2010-03-27 04:03:38.230000   
lito777

Сообщений: 51
Оценки: 0
Присоединился: 2009-01-30 04:52:45.883333
Подскажите пожалуйста как правильно скачать картинку с сайта?

Я создал сокет и записываю в него GET запрос
strcpy(buf,"GET http://www.google.ru/images/nav_logo8.png\n\n"); write(sock, buf, strlen(buf));
В ответе получаю
HTTP/1.0 200 OK Content-Type: image/png Last-Modified: Thu, 25 Mar 2010 09:42:43 GMT Date: Fri, 26 Mar 2010 23:24:16 GMT Expires: Sat, 26 Mar 2011 23:24:16 GMT X-Content-Type-Options: nosniff Server: sffe Content-Length: 5656 Cache-Control: public, max-age=31536000 Age: 4883 X-XSS-Protection: 0 �PNG  IHDR��Ka��PLTE���¾�f�)2V����J����~~����Am�Nr�(S�T~���䙙������󐗬���������������yj�����d��������孭���Ȧ��mw@j?������������J и т.д. это все записывается в переменную

Единственное что приходит в голову это перейти в строке на позицию перед �PNG и начать записывать с нее в файл image.jpg

Кто уже имел с этим дело, покажите пример функции, при помощи которой можно получить изображение из этих данных.
Post #: 1416
RE: Вопросы по C/C++ (Для новичков) - 2010-03-27 10:57:14.183333   
rgo

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

quote:

ORIGINAL: lito777

Подскажите пожалуйста как правильно скачать картинку с сайта?

Я создал сокет и записываю в него GET запрос
strcpy(buf,"GET http://www.google.ru/images/nav_logo8.png\n\n"); write(sock, buf, strlen(buf));
В ответе получаю
HTTP/1.0 200 OK Content-Type: image/png ... Content-Length: 5656 ... X-XSS-Protection: 0 �PNG... Единственное что приходит в голову это перейти в строке на позицию перед �PNG и начать записывать с нее в файл image.jpg

Во-первых почему же image.jpg? image.png надо. Там же написано: Content-Type: image/png.
Во-вторых, ты конечно прав, но налицо непонимание http протокола. Если читаем ответ 200 OK, значит надо прочитать заголовки, дождаться пустой строки, и после пустой строки пойдут данные. Здесь, поскольку мы видим заголовок Content-Length, мы знаем длину этих данных в байтах, мы знаем сколько байт надо читать. После того как они будут прочитаны, можно либо отправить ещё один запрос в тот же сокет, либо надо закрыть соединенение.
Ну и в-третьих, в http протоколе конец строки обозначается символами `\r\n', а не `\n', как ты делаешь. Сервак оказался достаточно либеральным, и он принял твой перевод строки, но это не значит, что так надо делать.
Post #: 1417
RE: Вопросы по C/C++ (Для новичков) - 2010-03-27 20:38:26.310000   
lito777

Сообщений: 51
Оценки: 0
Присоединился: 2009-01-30 04:52:45.883333
quote:


Если читаем ответ 200 OK, значит надо прочитать заголовки, дождаться пустой строки, и после пустой строки пойдут данные. Здесь, поскольку мы видим заголовок Content-Length, мы знаем длину этих данных в байтах, мы знаем сколько байт надо читать. После того как они будут прочитаны, можно либо отправить ещё один запрос в тот же сокет, либо надо закрыть соединенение.


Я из сокета читаю таким образом
#define BUF_LEN 4096

while((count=read(sock,buf,BUF_LEN))>0) {…}
но таким образом считываются все заголовки и часть картинки сразу.

Из сокета можно читать по разному: блоками или по одному символу (примеры я видел только такие).
А каким образом прочесть сперва заголовок а только потом данные. Я имею ввиду как отделить данные от заголовка.

Покажите пожалуйста пример, а то я неочень понимаю.
Post #: 1418
RE: Вопросы по C/C++ (Для новичков) - 2010-03-27 22:17:13.050000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
Например можно так, комбинируя побайтовое и блочное чтение:long size = -1; while (1) { int state = 0; for (i = 0; i &lt; BUF_LEN; i ++) { if (read (sock, buf + i, 1) &lt; 1) { fprintf (stderr, "ААА! Фигня случилась! Умру но не сдамся!\n"); exit (1); } if (buf[i] == '\r' || buf[i] == '\n') { state ++; /* отмечаем все \r и \n в строке */ if (state == 2) /* если их накопилось 2, то заканчиваем читать */ break; } } if (i == BUF_LEN) { fprintf (stderr, "Буфер переполнен!\n"); exit (1); } buf[i-2] = '\0'; /* завершаем строку, отрезая последние \r\n*/ if (buf[0] == '\0') /* если получилась пустая строка, значит хедеры прочитали, дальше пойдёт контент*/ break; fprintf (stderr, "INFO: parsed header `%s'\n", buf); if (size &lt; 0) /* если размер пока не читали, то: */ sscanf (line, "Content-Length:%ld", &size); /* попробуем прочитать Content-Length, может удастся */ } /* а вот тут уже читаем контент. Блоками. * Причём если size &lt; 0, то читаем пока не случится EOF, если size &gt; 0, то читаем size байт */
И насчёт `fprintf (stderr, "ААА! Фигня случилась! Умру но не сдамся!\n");': ты в какой ОС пишешь? Если в *nix, то эта фигня может быть не смертельной, может просто операция чтения была прервана сигналом (в таких ситуациях read возвращает -1, и устанавливает errno в значение EINTR), и надо попробовать читать снова. Бывает ли не смертельной ошибка read в windows – я не знаю.

Но подход не самый лучший. Для простой программы покатит, но вообще-то вызывать read из-за каждого байта – достаточно медленно выходит. По-крайней мере на *nix, где каждый read – это гарантированный syscall. Лучше было бы, читать данные по мере их появления, и читая разбирать заголовки, а когда они прочитаны, продолжать читать по мере появления, но скидывать всё в файл.
Помочь с этим может fdopen на sock, и последующие fscanf для чтения заголовков, и fread для чтения объёмных данных. Если ты пишешь в венде и при использовании fdopen не используешь флаг b (то есть откроешь примерно так: fdopen (sock, "r+");), то наверное у тебя все \r\n будут заменены на \n. А может и нет – не знаю. Но проще (и кроссплатформеннее) открыть так fdopen (sock, "rb+");, тогда никаких замен не будет.
Либо, в качестве варианта, можно делать всё на read, читать блоками, но каждый раз прочитав блок разбираться с его содержимым, это самый сложный путь. В нём есть свои прелести, но не думаю, что тебя они волнуют.
Post #: 1419
RE: Вопросы по C/C++ (Для новичков) - 2010-03-29 02:53:31.866666   
lito777

Сообщений: 51
Оценки: 0
Присоединился: 2009-01-30 04:52:45.883333
Выкладываю то что получилось. Может кому-нибудь пригодится…

!(обращение ко всем)! В примерах много чего не проверяется и много разных косяков. Поэтому не используйте их "как есть".
Если заметите как можно ускорить процесс обработки в примерах пишите в ПМ.

quote:


комбинируя побайтовое и блочное чтение
int download_file(int sock, char *file_url) /* file_url -- полный путь до файла. */ { char *buf; char s1[10], s2[10]; char file_name[20]; int count, i; buf = (char*)malloc(BUF_LEN); if(buf==NULL) { fprintf(stderr, "malloc() error\n"); return 1; } sprintf(buf, "GET %s\r\n\r\n", file_url); write(sock, buf, strlen(buf)); long size = -1; while (1) { int state = 0; for (i = 0; i &lt; BUF_LEN; i ++) { if (read (sock, buf + i, 1) &lt; 1) { if(errno != EINTR) { fprintf (stderr, "read() error.\n"); return 1; } } if (buf[i] == '\r' || buf[i] == '\n') { state ++; /* отмечаем все \r и \n в строке */ if (state == 2) /* если их накопилось 2, то заканчиваем читать */ break; } } if (i == BUF_LEN) { fprintf (stderr, "Буфер переполнен!\n"); return 1; } buf[i-1] = '\0'; /* завершаем строку, отрезая последние \r\n*/ if (buf[0] == '\0') /* если получилась пустая строка, значит хедеры прочитали, дальше пойдёт контент*/ break; fprintf (stderr, "INFO: parsed header `%s'\n", buf); if (size &lt; 0) /* если размер пока не читали, то: */ sscanf (buf, "Content-Length: %ld", &size); /* попробуем прочитать Content-Length, может удастся */ sscanf (buf, "Content-Type: %[a-z]/%[a-z]", s1, s2); } sprintf(file_name, "%s.%s",s1,s2); int out_file = open(file_name, O_RDWR | O_CREAT | O_APPEND, 0640); if(out_file&lt;0) { fprintf (stderr, "Can't open file\n"); return 1; } while((count = read(sock,buf,size))&gt;0) write(out_file,buf,count); free(buf); close(out_file); return 0; }


quote:


…Лучше было бы, читать данные по мере их появления, и читая разбирать заголовки, а когда они прочитаны, продолжать читать по мере появления, но скидывать всё в файл…
int download_file_2(int sock, char *file_url) { char *buf; char s1[10], s2[10]; char file_name[20]; buf = (char*)malloc(BUF_LEN+1500); if(buf==NULL) { fprintf(stderr, "malloc() error\n"); return 1; } sprintf(buf, "GET %s\r\n\r\n", file_url); write(sock, buf, strlen(buf)); FILE *file = fdopen(sock,"r+b"); long size = -1; while(1) { //fscanf(file, "%s", buf); fgets(buf, 100, file); //fprintf(stdout, "INFO: parsed header `%s'\n", buf); if (buf[0] == '\0' || buf[0] == '\r') break; if (size &lt; 0) sscanf (buf, "Content-Length: %ld\r", &size); sscanf (buf, "Content-Type: %[a-z]/%[a-z]", s1, s2); } fprintf (stderr, "FILE=%s.%s\nSIZE=%ld\n",s1,s2,size); sprintf(file_name, "%s.%s",s1,s2); int out_file = open(file_name, O_RDWR | O_CREAT | O_APPEND, 0640); if(out_file&lt;0) { fprintf (stderr, "Can't open file\n"); return 1; } int count = fread (buf, 1, size, file); write(out_file,buf,count); fprintf (stderr, "%s\n UU=%i\n",buf, count); free(buf); close(out_file); return 0; }


quote:


ORIGINAL: rgo

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

О каких прелестях вы говорите? Очень интересно.

/* пишу в *nix */
Post #: 1420
RE: Вопросы по C/C++ (Для новичков) - 2010-03-29 20:36:28.606666   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
Задача:
Используйте одномерный массив для решения следующей задачи. Компаний платит своим продавцам на комиссионной основе. Продавцы получают 200 долларов в неделю плюс 9 процентов от валовой продажи за эту неделю. Например, продавец, валовая продажа которого за неделю составила 5000 долларов, получает 200 долларов плюс 9 процентов от 5000 долларов, или всего 650 долларов. Напишите программу (используя массив счетчиков), которая определяет, сколько продавцов получили заработную плату в каждом из следующих диапазонов (примем допущение, что зарплата каждого
продавца округляется до целого значения):
1. $200-$299
2. $300-$399
3. $400-$499
4. $500-$599
5. $600-3699
6. $700-$799
7. $800-3899
8. $900-$999
9. $1000 и более
Код:
//Сколько продавцов, сколько получают #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { &nbsp;&nbsp;&nbsp; int shop_assistant = 50, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procent = 9, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; salary = 200, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; threeH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fourH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fiveH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sixeH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sevenH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eightH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nineH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tenH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elevenH = 0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pay_assistant[shop_assistant]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int x = 0; x &lt; shop_assistant; x++) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int variable = rand(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int gross_output = rand() % variable; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pay_assistant[x] = salary + (gross_output * procent) / 100; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (pay_assistant[x] &lt; 300)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Все что ниже не нравится &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++threeH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (pay_assistant[x] &lt; 400) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++fourH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (pay_assistant[x] &lt; 500) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++fiveH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (pay_assistant[x] &lt; 600) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++sixeH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (pay_assistant[x] &lt; 700) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++sevenH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(pay_assistant[x] &lt; 800) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++eightH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (pay_assistant[x] &lt; 900) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++nineH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (pay_assistant[x] &lt; 1000) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++tenH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++elevenH; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Диапазон" &lt;&lt; setw(35) &lt;&lt; "Количество продавцов" &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$200 - $299" &lt;&lt; setw(20) &lt;&lt; threeH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$300 - $399" &lt;&lt; setw(20) &lt;&lt; fourH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$400 - $499" &lt;&lt; setw(20) &lt;&lt; fiveH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$500 - $599" &lt;&lt; setw(20) &lt;&lt; sixeH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$600 - $699" &lt;&lt; setw(20) &lt;&lt; sevenH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$700 - $799" &lt;&lt; setw(20) &lt;&lt; eightH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$800 - $899" &lt;&lt; setw(20) &lt;&lt; nineH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$900 - $999" &lt;&lt; setw(20) &lt;&lt; tenH &lt;&lt; endl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&lt; "$1000 и боле" &lt;&lt; setw(20) &lt;&lt; elevenH &lt;&lt; endl; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system("pause"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0; } &nbsp;&nbsp;&nbsp; Просьба подсказать как оптимизировать код, особенно в моменте выбора.
Post #: 1421
RE: Вопросы по C/C++ (Для новичков) - 2010-03-29 22:59:39.246666   
yurket

Сообщений: 69
Оценки: 0
Присоединился: 2009-05-04 23:47:54.993333
порпобуй сделать что-то в этом роде…

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #define MAX_ASTS 20 // кол-во продавцов int main() { setlocale(LC_ALL, ""); int i, k; int assist[MAX_ASTS]; int salary[10]; // массив счетчиков. salary[0]: 0-100$, salary[1]: 100-200$, ... // ... salary[8]: 900-1000$, salary[10] &gt; 1000$ for (i = 0; i &lt; 10; i++) salary[i] = 0; for (i = 0; i &lt; MAX_ASTS; i++) { assist[i] = rand()/28 + 100; // подберешь точные значения k = assist[i] / 100; // получаешь кол-во сотен if (k &gt;= 10) /* не хорошо, если будем инкрементировать к примеру salary[14] =) */ { salary[9]++; continue; } salary[k-1]++; // инкрементируешь соответствующие элементы массива счетчиков } for (i = 1; i &lt; 10; i++) printf("\nбольше %d00$ получает %d человек%c", i+1, salary[i], (salary[i]&lt;2||salary[i]&gt;4)?' ':'а'); fflush(stdin); getchar(); return 0; } думаю, заменить printf на cout не составит труда ;)
Post #: 1422
RE: Вопросы по C/C++ (Для новичков) - 2010-04-02 07:45:20.356666   
KillingKiller

Сообщений: 8
Оценки: 0
Присоединился: 2009-11-25 08:47:08.800000
есть задачка. Надо написать программу которая прочитает текстовый файл, потом просортирует прочтённые слова в алфавитном порядке, а потом выдаст на экран все слова которые встречаются в этом файле, но не показывает повторяющиеся слова
Post #: 1423
RE: Вопросы по C/C++ (Для новичков) - 2010-04-02 11:30:58.946666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Ну пиши )
Post #: 1424
RE: Вопросы по C/C++ (Для новичков) - 2010-04-03 19:27:26.650000   
Stil Free 2

Сообщений: 183
Оценки: 0
Присоединился: 2009-03-26 17:17:38.296666
quote:

ORIGINAL: KillingKiller

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

Дело было вечером делать было нечего…Первый и последний раз[sm=bt.gif]

В общем чтобы сильно халявы не было сделал маленько наоборот прочитаешь комменты исправишь лабу там легко.
// Task 5 release 3.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "string.h" #include "windows.h" int _tmain(int argc, _TCHAR* argv[]) { SetConsoleCP(1251); SetConsoleOutputCP(1251); FILE *stream; bool not=false; char line[512]={NULL},*words[255]={NULL},*tmp[255]={NULL},buf[1][255]={NULL}; int n = 0,i = 0,numWords = 0,j=0,min=100,k=0,fl = 0,m = 0,b=0,key = 0,wasModified= 0; if( stream=fopen("Текст.txt", "r" ) ) { while (feof(stream)==0) { if( fgets( line, 512, stream ) != 0) { words[numWords] = strtok( line," .,):;(!?"); while( words[numWords] != NULL ) { // Пока есть фрагменты в строке numWords++; // Получить следующий фрагмент: words[numWords] = strtok( NULL, " .,):;(!?" ); } } } } else printf("\nФайл 'Текст.txt' отсутствует!\n"); fclose( stream ); do { printf("\n\n Меню \n"); printf("\n1.Вывести текст."); printf("\n2.Вывести повторяющиеся слова"); printf("\n3.Выход."); printf("\n Выбираем: "); scanf("%d",&key); switch(key) { case 1: for (i=0;i&lt;numWords;i++) { printf("%s ",words[i]); } break; case 2: tmp[0]=words[0]; //слова встречающиеся более одного раза for (i=0;i&lt;numWords;i++) { for (j=0;j&lt;numWords;j++) { if (i==j) continue; if (strcmp(words[i],words[j])==0) { not=false; for(fl=0;fl&lt;b;fl++) { if (strcmp(tmp[fl],words[i])==0) { not=true; break; } } if (!not) { tmp[b++]=words[i]; } } } k=0; } printf("\nСлова повторяющиюся больше одного раза в тексте выведены по алфавиту: \n"); do { wasModified = 0; //Сбросить флаг перестановок for (i = 0; i &lt; b - 1; i = i + 1) { if (tmp[i][0] &gt; tmp[i+1][0]) { //Перестановка элементов strcpy(buf[1],tmp[i]); strcpy(tmp[i],tmp[i+1]); strcpy(tmp[i+1],buf[1]); wasModified = 1; //Перестановка была } } } while (wasModified != 0); for (i=0;i&lt;b;i++) { puts(tmp[i]); } break; } }while(key!=3); return 0; }
Post #: 1425
RE: Вопросы по C/C++ (Для новичков) - 2010-04-03 22:17:20.376666   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
Задача
(Траектории черепахи) Язык Лого, особенно популярный среди пользователей персональных компьютеров, сделал известной идею траекторий черепахи. редставьте себе механическую черепаху, которая ползает по комнате под управлением программы на C++. Черепаха несет пишущее перо, которое может находиться в одной из двух позиций — нижней или верхней. Если перо в нижней позиции, черепаха вычерчивает траекторию движения, если в верхней, то черепаха передвигается свободно и ничего не вычерчивает. В этой задаче вы будете моделировать действия черепахи и создавать компьютеризованный эскиз пути. Используйте массив floor размером 20 на 20 с нулевыми начальными условиями. Считывайте команды из содержащего их массива. Все время отмечайте текущую позицию, черепахи и положение пера — нижнее или верхнее. Предполагайте, что черепаха всегда стартует из позиции О, О на полу с верхним положением пера. Ваша программа должна подавать команды черепахе в соответствии со следующими обозначениями:
Команда
1 - перо вверх
2 - перо вниз
3 - поворот направо
4 - поворот налево
5, 10 - передвижение вперед на 10 шагов
6 - печать массива 20 на 20
9 - конец данных (сигнальная метка)

Предположим, что черепаха находится где-то возле центра комнаты. Следующая «программа управления черепахой» начертила бы квадрат 12 на 12 и оставила бы перо в верхней позиции:
2
5,12 '
3
5,12
3
5,12
3
5,12
1
6
9
Если черепаха передвигается с пером, находящимся в нижней позиции, устанавливайте соответствующие элементы массива floor равными 1. При подаче команды 6 (печать) отображайте звездочкой или каким-либо другим символом все значения 1 в массиве, где бы они ни были. Все нули, где бы они ни были, отобразите пробелами. Напишите программу, реализующую рассмотренные возможности отображения траектории передвижения черепахи. Добавьте другие команды для повышения мощности вашего языка управления траекторией черепахи.

Вопрос: как отобразить поворот направо или налево, в коде?
Post #: 1426
RE: Вопросы по C/C++ (Для новичков) - 2010-04-04 10:05:44.406666   
Parano1d

Сообщений: 423
Оценки: 0
Присоединился: 2008-05-21 13:40:17.093333
ну запоминай, куда в данный момент смотрит, а потом изменяй это значение в зависимости от нужного поворота… мда…
Post #: 1427
RE: Вопросы по C/C++ (Для новичков) - 2010-04-07 15:39:44.903333   
kazrulit

Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
Создал кнопку на билдере и текст и начинаю писать

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Edit1->Name="12345")
ShowMessage("correct");
}

выходит ошибка
quote:


[C++ Error] Unit1.cpp(20): E2492 Properties may only be assigned using a simple statement, e.g. "prop = value;"
[C++ Error] Unit1.cpp(20): E2096 Illegal structure operation
Post #: 1428
RE: Вопросы по C/C++ (Для новичков) - 2010-04-07 15:41:15.253333   
kazrulit

Сообщений: 79
Оценки: 0
Присоединился: 2009-07-22 14:23:31.770000
P.S меняю Name на Text такая же фигня
Post #: 1429
RE: Вопросы по C/C++ (Для новичков) - 2010-04-07 16:05:55.886666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Печально, очередной формошлёп.

if (Edit1->Name == "12345") // Ты хочешь сделать сравнение, а не присваивание

P.S. на будущее, когда что-то будешь сравнивать, пиши так: if ( 42 == a ) , а не if ( a == 42 ) - это поможет избежать глупых ошибок.
Post #: 1430
RE: Вопросы по C/C++ (Для новичков) - 2010-04-07 20:46:54.720000   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
я запутался [sm=14.gif]
в одном месте пишут так
infile.open ("test.txt", ifstream::in);
в другом
infile.open ("test.txt", ios_base::in);
в третьем
ios::in

запутался я в этих режимах открытия файла и то, к какому классу они принадлежат




Post #: 1431
RE: Вопросы по C/C++ (Для новичков) - 2010-04-07 21:43:10.343333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
cppreference / msdn / google в помощь? ;)
Post #: 1432
RE: Вопросы по C/C++ (Для новичков) - 2010-04-07 22:57:26.250000   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
читаю следующее: "Классы в-в определены в трех отдельных заголовках…"- разве в заголовках определяют классы? их же там объявляют, а реализацию пишут в .cpp файлах, что и называется определением?!
Post #: 1433
RE: Вопросы по C/C++ (Для новичков) - 2010-04-08 12:00:17.270000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Читай про шаблоны в C++. Потом Страутструпа :).

Немного "на пальцах":
Шаблоны - это своего рода макроподстановки. Если ты объявишь пару векторов, например std::vector<int> a; std::vector<double> a;, то при компиляции будет сгенерировано 2 набора методов. Один для работы вектора с типом int, а другой - с типом double.

Т.е. сгенерировать методы станет возможным лишь при объявлении конкретного типа. Представь, что у тебя есть шаблонный класс и его реализация лежит в .cpp файле. Например: myvector.h, myvector.cpp, main.cpp. Предположим, что main.cpp будет компилироваться после myvector.cpp. Тогда, если ты объявишь в main.cpp какой-нить свой тип, например typedef int** ppint; - то для него потребуется отдельная компиляция вектора myvector<ppint>;, но при компиляции main.cpp компилятору будет виден только .h файл, где нет никакой реализации.
Post #: 1434
RE: Вопросы по C/C++ (Для новичков) - 2010-04-08 13:49:06.406666   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
quote:

Читай про шаблоны в C++. Потом Страутструпа :).

Страутструп меня не впечатлил…
Post #: 1435
RE: Вопросы по C/C++ (Для новичков) - 2010-04-08 20:24:45.390000   
sanday

Сообщений: 41
Оценки: 0
Присоединился: 2010-02-06 12:52:26.896666
quote:

Задача
(Траектории черепахи) Язык Лого, особенно популярный среди пользователей персональных компьютеров, сделал известной идею траекторий черепахи. редставьте себе механическую черепаху, которая ползает по комнате под управлением программы на C++. Черепаха несет пишущее перо, которое может находиться в одной из двух позиций — нижней или верхней. Если перо в нижней позиции, черепаха вычерчивает траекторию движения, если в верхней, то черепаха передвигается свободно и ничего не вычерчивает. В этой задаче вы будете моделировать действия черепахи и создавать компьютеризованный эскиз пути. Используйте массив floor размером 20 на 20 с нулевыми начальными условиями. Считывайте команды из содержащего их массива. Все время отмечайте текущую позицию, черепахи и положение пера — нижнее или верхнее. Предполагайте, что черепаха всегда стартует из позиции О, О на полу с верхним положением пера. Ваша программа должна подавать команды черепахе в соответствии со следующими обозначениями:
Команда
1 - перо вверх
2 - перо вниз
3 - поворот направо
4 - поворот налево
5, 10 - передвижение вперед на 10 шагов
6 - печать массива 20 на 20
9 - конец данных (сигнальная метка)

Если черепаха передвигается с пером, находящимся в нижней позиции, устанавливайте соответствующие элементы массива floor равными 1. При подаче команды 6 (печать) отображайте звездочкой или каким-либо другим символом все значения 1 в массиве, где бы они ни были. Все нули, где бы они ни были, отобразите пробелами. Напишите программу, реализующую рассмотренные возможности отображения траектории передвижения черепахи. Добавьте другие команды для повышения мощности вашего языка управления траекторией черепахи.


Код
//Траектория черепахи #include &lt;iostream&gt; using namespace std; int main() { int move = 0, order = 0, previousCol = 0, currentCol = 0, previousRow = 0, // предыдущее значение черепахи по стороке currentRow = 0, // текущее значение черепахи по строке stylus = 0, wayCol, wayRow, way, floor[20][20] = {0}; while (order != 9) { cout &lt;&lt; "Введите команду: "; cin &gt;&gt; order; cout &lt;&lt; endl; switch(order){ case 1: stylus = 0; break; case 2: stylus = 1; break; case 3: if (currentRow == previousRow){ wayCol = currentCol; if(currentCol &gt; previousCol) way = -1; else way = 1; } else { wayRow = currentRow; if (currentRow &gt; previousRow) way = 1; else way = -1; } break; case 4: if (currentRow == previousRow){ wayCol = currentCol; if(currentCol &gt; previousCol) way = 1; else way = -1; } else { wayRow = currentRow; if (currentRow &gt; previousRow) way = -1; else way = 1; } break; case 5: cout &lt;&lt; " , "; cin &gt;&gt; move; if(wayCol == currentCol){ currentRow += way * move; if (currentRow &lt; 0 || currentRow &gt; 20){ cout &lt;&lt; "Движение не возможно. " &lt;&lt; "Выход за пределы массива. " &lt;&lt; "Смените направление или шаг движения.\n"; break; } previousRow = currentRow - way * move; } else { currentCol += way * move; if(currentCol &lt; 0 || currentCol &gt; 20){ cout &lt;&lt; "Движение не возможно. " &lt;&lt; "Выход за пределы массива. " &lt;&lt; "Смените направление или шаг движения.\n"; break; } previousCol = currentCol - way * move; } for(int i = previousRow; i &lt;= currentRow; i++) for(int j = previousCol; j &lt;= currentCol; j++) { if (stylus == 0) floor[i][j] = 0; else floor[i][j] = 1; } break; case 6: for (int i = 0; i &lt; 20; i++){ for (int j = 0; j &lt; 20; j++) if (floor[i][j] == 0) cout &lt;&lt; ' '; else cout &lt;&lt; '*'; cout &lt;&lt; endl; } break; default: cout &lt;&lt; "Вы ввели неверную команду\n" &lt;&lt; "попробуйте снова" &lt;&lt; endl; break; case 9: break; } } cout &lt;&lt; '\a' &lt;&lt; endl; system("pause"); return 0; } Не понимаю, что не так?
Post #: 1436
RE: Вопросы по C/C++ (Для новичков) - 2010-04-13 18:56:47.630000   
messenage

Сообщений: 21
Оценки: 0
Присоединился: 2010-03-03 21:23:49.290000
Как получить hWnd окна в диалоговой процедуре??
на win Api.
hWnd - нельзя глобалить =(

Post #: 1437
RE: Вопросы по C/C++ (Для новичков) - 2010-04-13 21:19:59.870000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333

quote:

ORIGINAL: messenage

Как получить hWnd окна в диалоговой процедуре??
на win Api.
hWnd - нельзя глобалить =(




http://msdn.microsoft.com/en-us/library/ms645469(v=VS.85).aspx - первый параметр
Post #: 1438
RE: Вопросы по C/C++ (Для новичков) - 2010-04-13 23:57:16.113333   
iidsp

Сообщений: 379
Оценки: 0
Присоединился: 2009-10-14 23:13:19.856666
может кто видел где-либо сравнительные тесты производительности контейнеров в С++ на основе какой-то задачи, а то изучаю их сейчас и понимаю, что мне пока сложно выделить какой-то для своих задач…

и еще, если есть возможность, напишите кратко для чего каждый контейнер может применяться, только на основе каких-то реальных программ!
Post #: 1439
RE: Вопросы по C/C++ (Для новичков) - 2010-04-14 01:04:55.683333   
Denaturat

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

ORIGINAL: iidsp

может кто видел где-либо сравнительные тесты производительности контейнеров в С++


сравнение чего с чем?

quote:

ORIGINAL: iidsp

и еще, если есть возможность, напишите кратко для чего каждый контейнер может применяться, только на основе каких-то реальных программ!


http://www.williamspublishing.com/Books/sci_DataStructs.html

асимптотики для операций можно найти в стандарте (нестрогие) и здесь:

http://www.sgi.com/tech/stl/
Post #: 1440
Страниц:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







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

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