| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Интересные и занимательные задачи по программированию > [C++] Работа с массивами, целыми, без WinAPI |
| Автор: sOckets 20.9.2006, 17:44 |
| Привет , и так я хочю чтоб в этой теме все кто хочет подкидывали задачки на "С++" , чтоб именно "С++" без WinAPI и тд , просто хочю поднатянуть матчасть...ну там работа с массивами,целыми и тд. У кого есть задачки очень прошу их сюда скидывать, только по подробней обьясняйте И ещё если у когото там в учебных заведениях задачки дают , тоже кидайте сюда. Жду |
| Автор: sergejzr 20.9.2006, 17:48 |
| Для домашних заданий, курсовых, существует "Центр Помощи" Тема перенесена! |
| Автор: sergejzr 20.9.2006, 18:06 |
| Напишите пожалуйста программу, которая считает количество дней между двумя датами (обе включительно). Даты передаются с коммандной строки в формате год.месяц.день пример: a.exe --date_from 1990.12.10 --date_to 2005.01.01 В случае неправильного ввода выводится обьясняющая информация и возвращается 1, иначе выводится количество дней и возвращается 0. |
| Автор: sOckets 20.9.2006, 18:07 | ||
| sergejzr, Ок ,спасибо , я действительно мешкался и не знал где создать тему Добавлено @ 18:08
решаем.... |
| Автор: sOckets 20.9.2006, 18:50 |
| ужасно :'( я не знаю решения sergejzr, пожалуйста , если не трудно хоть подскажите куда копать и что инклюдить |
| Автор: Sartorius 20.9.2006, 19:01 |
| Инклудить ничего не дада. Возьми сам разбей переданные строки на год, месяц и день... а дальше сам Если будет желание , можешь еще вот над чем подумать Отсортировать последовательность байтов(файл) произвольной длинны за время O(n) |
| Автор: sOckets 20.9.2006, 19:12 | ||
извиняюсь , по подробней можно ? |
| Автор: Rockie 20.9.2006, 21:32 |
| и високосный год |
| Автор: 586 20.9.2006, 21:34 | ||
строка 43, 44.
Это я не учёл. Тогда в конце расчетов нужно сделать инкремент n. |
| Автор: 586 20.9.2006, 21:49 | ||
|
| Автор: Sartorius 20.9.2006, 22:08 |
| Ну пусть с goto Вот 44-я строка : считаем разницу между 1999 и 2001 - есть один високосный , а не 43 - я не 44 - я строки не сработают. |
| Автор: vinter 20.9.2006, 22:28 | ||
непорядок ИМХО |
| Автор: 586 20.9.2006, 22:37 | ||
Просто сократил размер кода.
Я чего-нибудь придумаю. Создавать цикл нехочу. |
| Автор: Sartorius 20.9.2006, 22:50 |
| 586, да на самом деле ИМХО проще считать количество дней до текущего от 0.0.0000 все проблемы отпадут Ну а потом просто разность между двумя такими "абсолютными" датами |
| Автор: 586 20.9.2006, 23:07 | ||
а смысл? все равно надо определить количество весокосных годов. может я тебя неправильно понял... вообщем не знаю. где-то в коде ошибки. |
| Автор: Sartorius 20.9.2006, 23:30 |
| Смысл такой : [кол-во дней от рождества христова] = год * 365 + год / 4 + [количество дней в прошедших месяцах] + [число]; потом считаем разницу и все |
| Автор: Rockie 21.9.2006, 00:06 | ||
| sergejzr, 5136? =) Вариант для билдера. Юзает TDateTime и считает високосные. Правда предварительно нужно дату к другому формату привести.
Опа, тоже по ТЗ не отработал =) sergejzr, а зачем? если будет "2006.09.21" и "2006.09.21", то получится разница в день |
| Автор: SkaZka 21.9.2006, 09:50 |
| Привет!На вас последняя надежда. Програмка большая... нужна программа для биометрической аутентификации , например по отпечатку пальца. Может хотя бы подскажите где такую скачать можно? Нужно разработать целый сервер, начиная со сканирования, до подтверждения идентификатора. |
| Автор: sergejzr 21.9.2006, 12:37 | ||
SkaZka, создавай отдельную тему (сперва почитай правила)
Всё верно. С 00:00 первой даты и до 23:59 второй даты. Вообще вроде как библиотеками специальными не пользуемся.. Чистый С++. (StrToDateTime как раз учитывает многое при переводе дат.) |
| Автор: Dov 19.10.2006, 21:02 |
| А с какого момента ведём отсчёт: 1. Сотворения Мира 2. Рождества Христова 3. Принятия Григорианского Календаря 4. Великой Октябрьской Социалистической Революции и т.д. ... ... |
| Автор: Rockie 19.10.2006, 23:11 |
| Dov, начальный момент задается, на предыдущей странице задание. |
| Автор: Dov 19.10.2006, 23:19 |
| Rockie Я имею ввиду, с какого момента начальная дата считается валидной |
| Автор: Baltazar5000 6.3.2007, 21:15 |
| Что будет выведено на экран после исполнения фрагмента программы 1) int ss[3][3] = { {2, 0, 4}, {4, 0, 0}, {3, 3, 3} }; int s = 0, i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) s += ss[i][j]; printf("%d ", s); 2) int ss[3][3] = { {2, 3, 1}, {2, 0, 0}, {0, 2, 2} }; int s = 1, i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) if(ss[i][j] > 0) s *= ss[i][j]; printf("%d ", s); 3) int ss[3][3] = { {3, 7, 0}, {8, 5, 0}, {0, 7, 3} }; int s = 0, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i == j) s += ss[i][j]; } printf("%d ", s); 4) int ss[3][3] = { {2, 3, 4}, {2, 3, 2}, {1, 6, 5} }; int s = 1, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i == j) s *= ss[i][j]; } printf("%d ", s); 5) int ss[3][3] = { {2, 3, 7}, {6, 2, 5}, {6, 8, 1} }; int s = 1, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i + j == 2) s *= ss[i][j]; } printf("%d ", s); 6) int ss[3][3] = { {17, 0, 16}, {1, 5, 2}, {6, 13, 17} }; int s = 0, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i + j == 2) s += ss[i][j]; } printf("%d ", s); 7) int ss[3][3] = { {1, 3, 1}, {2, 3, 2}, {4, 3, 1} }; int s = 0, i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) s += ss[i][j]; printf("%d ", s); 8) int ss[3][3] = { {0, 3, 1}, {3, 3, 0}, {2, 3, 1} }; int s = 1, i, j; for(i = 0; i < 3; i++) for(j = 0; j < 3; j++) if(ss[i][j] > 0) s *= ss[i][j]; printf("%d ", s); 9) int ss[3][3] = { {1, 2, 4}, {6, 2, 7}, {1, 0, 6} }; int s = 0, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i == j) s += ss[i][j]; } printf("%d ", s); 10) int ss[3][3] = { {3, 7, 5}, {4, 7, 3}, {3, 1, 6} }; int s = 1, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i == j) s *= ss[i][j]; } printf("%d ", s); 11) int ss[3][3] = { {0, 0, 6}, {3, 2, 5}, {8, 4, 7} }; int s = 1, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i + j == 2) s *= ss[i][j]; } printf("%d ", s); 12) int ss[3][3] = { {13, 4, 8}, {17, 13, 10}, {2, 13, 9} }; int s = 0, i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) if (i + j == 2) s += ss[i][j]; } printf("%d ", s); 13) int ss[3][3] = { {4, 6, 7}, {6, 8, 8}, {9, 4, 7} }; int s, i, j; for(i = 0; i < 3; i++) { s = 0; for(j = 0; j < 3; j++) s += ss[i][j]; printf("%d ", s); } 14) int ss[3][3] = { {7, 1, 7}, {7, 2, 7}, {3, 7, 5} }; int s, i, j; for(i = 0; i < 3; i++) { s = 1; for(j = 0; j < 3; j++) s *= ss[i][j]; printf("%d ", s); } 15) int ss[3][3] = { {0, 3, 5}, {1, 1, 5}, {2, 5, 1} }; int s, i, j; for(i = 0; i < 3; i++) { s = 1; for(j = 0; j < 3; j++) s *= ss[j][i]; printf("%d ", s); } 16) int ss[3][3] = { {7, 6, 13}, {3, 3, 10}, {14, 7, 3} }; int s, i, j; for(i = 0; i < 3; i++) { s = 0; for(j = 0; j < 3; j++) s += ss[j][i]; printf("%d ", s); } 17) int ss[3][3] = { {23, 27, 39}, {8, 36, 12}, {22, 3, 22} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[i][0]; for(j = 0; j < 3; j++) if(ss[i][j] < s) s = ss[i][j]; printf("%d ", s); } 18) int ss[3][3] = { {33, 40, 39}, {12, 21, 45}, {12, 37, 9} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[0][i]; for(j = 0; j < 3; j++) if(ss[j][i] < s) s = ss[j][i]; printf("%d ", s); } 19) int ss[3][3] = { {14, 13, 50}, {18, 39, 43}, {3, 40, 45} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[i][0]; for(j = 0; j < 3; j++) if(ss[i][j] > s) s = ss[i][j]; printf("%d ", s); } 20) int ss[3][3] = { {52, 23, 54}, {32, 49, 8}, {7, 17, 44} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[0][i]; for(j = 0; j < 3; j++) if(ss[j][i] > s) s = ss[j][i]; printf("%d ", s); } 21) int ss[3][3] = { {6, 6, 3}, {6, 8, 7}, {9, 7, 2} }; int s, i, j; for(i = 0; i < 3; i++) { s = 0; for(j = 0; j < 3; j++) s += ss[i][j]; printf("%d ", s); } 22) int ss[3][3] = { {6, 1, 4}, {1, 3, 6}, {4, 0, 5} }; int s, i, j; for(i = 0; i < 3; i++) { s = 1; for(j = 0; j < 3; j++) s *= ss[i][j]; printf("%d ", s); } 23) int ss[3][3] = { {3, 1, 0}, {5, 5, 5}, {5, 4, 3} }; int s, i, j; for(i = 0; i < 3; i++) { s = 1; for(j = 0; j < 3; j++) s *= ss[j][i]; printf("%d ", s); } 24) int ss[3][3] = { {17, 19, 12}, {12, 13, 10}, {17, 6, 3} }; int s, i, j; for(i = 0; i < 3; i++) { s = 0; for(j = 0; j < 3; j++) s += ss[j][i]; printf("%d ", s); } 25) int ss[3][3] = { {2, 22, 11}, {13, 13, 4}, {16, 28, 17} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[i][0]; for(j = 0; j < 3; j++) if(ss[i][j] < s) s = ss[i][j]; printf("%d ", s); } 26) int ss[3][3] = { {18, 14, 13}, {21, 23, 3}, {6, 15, 7} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[0][i]; for(j = 0; j < 3; j++) if(ss[j][i] < s) s = ss[j][i]; printf("%d ", s); } 27) int ss[3][3] = { {26, 12, 3}, {18, 8, 9}, {20, 13, 4} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[i][0]; for(j = 0; j < 3; j++) if(ss[i][j] > s) s = ss[i][j]; printf("%d ", s); } 28) int ss[3][3] = { {1, 16, 25}, {28, 30, 21}, {8, 13, 4} }; int s, i, j; for(i = 0; i < 3; i++) { s = ss[0][i]; for(j = 0; j < 3; j++) if(ss[j][i] > s) s = ss[j][i]; printf("%d ", s); } |
| Автор: aff 7.3.2007, 14:24 | ||||
| у меня три задачи не решаются. на 2 первые есть алгоритмы но почему-то не работают. 1 строка содержит проивзольный английский текст, сформировать массивы гласных и согласных:
2 даны 2 натуральных числа: n и m. проверить есть ли в записи числа m цифры, совпадающие с цифрами n:
3 подсчитать кол-во эл-тов матриц x[5.4] и y[3.5]? удовлетворяющих условиям a<=x<=b и a<=y<=b. кол-во элементов вычислить в функции. |
| Автор: Rockie 8.3.2007, 17:44 | ||
aff, ты не выделил память под указатель A. используй malloc для Си или new для C++. Либо
p.s.: создавай http://forum.vingrad.ru/act-Post/CODE-00/f-142/syntax-nocolor.html если вопрос новый |
| Автор: FireSnake 9.3.2007, 22:52 |
| А вот на строки простенькая задачка, но с подъе...водным камнем. Задача Spy (предоставлена управлением внешней разведки ) Шпион, давно внедрившийся в ранее вражескую, а теперь дружественную страну, использовал для передачи донесений шифровальную машинку, привезенную с собой в начале карьеры, а значит морально устаревшую . Работал сей автомат так: в каждом слове сообщения он менял гласную букву на цепочку символов, состоящую из этой самой буквы в начале, некого кодового слова и вновь этой же буквы. Простой шифр, правда? Если учесть, что машинка работала только с малыми буквами латинского алфавита, секретное донесение "i like pivo" с использованием кодирующей последовательности "qa" на родине героя получали в виде "iqai liqaikeqae piqaivoqao". Все было прекрасно, пока машинка от старости не начала кодировать одно и то же сообщение по несколько раз. Помогите криптографам, получившим сообщение, отправленное неисправной машинкой, его прочитать. Ввод-вывод: В первой строке вводите с клавиатуры зашифрованную последовательность, во второй - кодирующую последовательность. В строке вывода выводите на экран искомую строку. Пример: Ввод> iqaiqaqaaiqai liqaiqaqaaiqaikeqaeqaqaaeqae piqaiqaqaaiqaivoqaoqaqaaoqao Ввод> qa Вывод> i like pivo Ограничения: кодированная строчка не длиннее 255 символов, кодовое слово не длиннее 255 символов. П.С. у кого пройдет все тесты, поделитесь в чем этот подводный камень. Решения можете постить здесь. |
| Автор: Strannik 10.3.2007, 12:12 | ||
FireSnake, а копирайты поставить? Или откуда задача сказать?
Лучше было бы дать адрес сайта где можно эту задачу взять и проверить... |
| Автор: FireSnake 10.3.2007, 22:02 | ||
Про копирайты я действительно забыл. но я и не утверждаю что это моя задача. А касательно дать линк на сайт, то мне самому инетересно посмотреть чужые решения(свое у меня есть). |