Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/2010: Рейтинг темы: голосов - 2010, средняя оценка - 4.88
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
1

Задачи для тренировки и лучшего понимания

15.07.2010, 05:53. Просмотров 407821. Ответов 1272
Метки нет (Все метки)

Ребят. Кто-нибудь может дать задачу для тренировки? Приблизительно по всему курсу С++. Буду благодарен за сложную задачу, но которую способен сделать новичок-любитель. Затраты сил-времени не важно. Главное, чтобы это было интересно и не слишком рутинно. + Если найдется человек который даст задачу просьба помогать с кодом, который я буду себя скидывать. Не переписывать за меня, но указывать на ошибки и желательно объяснять. Заранее спасибо.

Список задач, решение которых присутствует в данной теме:
43
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2010, 05:53
Ответы с готовыми решениями:

Элементарные программы, для лучшего понимания языка...
Здравствуйте. Вот сегодня решил что пора изучать с++. Есть пару задач. Начал решать и уже на первой...

Задачи для тренировки и лучшего понимания языка
Предлагаю в этой теме размещать задачи, которые помогут новичкам (и не только) более детально...

Литература для лучшего понимания сути программирования
Привет! Подскажите литературу, которая поможет разобраться в сути самого процесса программирования,...

Набор задачь для тренировки и улучшения понимания программирования
Добрый вечер всем. Если кто знает модскажите где можно найти подобный набор задачь...

1272
0 / 0 / 0
Регистрация: 10.04.2011
Сообщений: 4
11.04.2011, 16:47 1241
Цитата Сообщение от NightmareZ Посмотреть сообщение
Mr.X, тесты оно прошло?
Штоэто за кусорт? Зачем?
А, вообще, мне кажется, как-то ну совсем не хорошо разбирать подобные задачи на форуме. Люди ж там типа соревнуются, а ты приходишь и выпрашиваешь готовые ответы.
Я разве выпрашивал код?просил объяснить.
0
31 / 33 / 3
Регистрация: 27.12.2009
Сообщений: 106
13.04.2011, 21:17 1242
Две олимпиадные задачи:
1. Дан целочисленный массив. Не используя дополнительного массива переместить все отрицательные элементы в начало массива, положительные - в конец с сохранением порядка следования.
2. Дана шахматная доска. Пользователь вводит с клавиатуры координаты начальной клетки и конечной клетки. Вывести на экран передвижения шахматного коня от нач. клетки до конечной. Пример данных, вводимых пользователем: A5 H8.
0
1545 / 911 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
13.04.2011, 21:21 1243
ailia, ну первая задача - явно не олимпиадная)
0
31 / 33 / 3
Регистрация: 27.12.2009
Сообщений: 106
13.04.2011, 21:31 1244
У нас была такая
0
Freelance
Эксперт С++
2871 / 1806 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
13.04.2011, 21:40 1245
Цитата Сообщение от ailia Посмотреть сообщение
1. Дан целочисленный массив. Не используя дополнительного массива переместить все отрицательные элементы в начало массива, положительные - в конец с сохранением порядка следования.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <algorithm>
#include <fstream>
#include <boost/lambda/lambda.hpp>
 
using namespace boost::lambda;
 
int main(){
  int a[] = {4, 6, -2, -1, 6, 1, -3};
  std::sort(a, a + sizeof(a) / sizeof(*a), _1 < 0 && _2 >= 0 || _1 == 0 && _2 > 0);
  std::for_each(a, a + sizeof(a) / sizeof(*a), std::cout << _1 << ' ');
  return 0;
}
4
113 / 113 / 13
Регистрация: 29.04.2010
Сообщений: 240
13.04.2011, 21:48 1246
Вторая вроде обычной волной решается... лень кодить)
0
Evg
Эксперт CАвтор FAQ
21118 / 8134 / 628
Регистрация: 30.03.2009
Сообщений: 22,449
Записей в блоге: 30
15.04.2011, 14:11 1247
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <string.h>
 
int main (void)
{
  int len;
 
  len = strlen ("??=");
  printf ("len=%d\n", len);
 
  return 0;
}
Что напечатает программа в режиме строгого соответствия стандарту ANSI C? Про строгое соответсвие пишу из тех соображений, что большинство современных промышленных компиляторов по умолчанию работают в некотором своём собственном расширении языка, а в некоторых по умолчанию ставится Си-99 и т.п.

Тем, кто хочет пораскинуть мозгами, но не видит, в каком месте закавыка, в подсказке приведена выдача из-под компилятора gcc в режиме по умолчанию (т.е. он работает в предположении языка GNU-C) и в режиме ANSI (т.е. на вход принимает C89). В обоих случаях в компилятор подана опция -w для подавления предупреждений

Подсказка
Код
$ gcc t.c -w
$ ./a.out
len=3
$ gcc t.c -ansi -w
$ ./a.out
len=1
1
Эксперт С++
5015 / 2594 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
15.04.2011, 14:36 1248
Evg,
не уверен, но возможно это
триграф, следовательно длина строки должна быть единица.
2
Evg
Эксперт CАвтор FAQ
21118 / 8134 / 628
Регистрация: 30.03.2009
Сообщений: 22,449
Записей в блоге: 30
15.04.2011, 14:41 1249
ога
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
18.04.2011, 22:55  [ТС] 1250
Является ли данный код переносимым, т.е. скомпилируется-ли он на любом компиляторе, поддерживающем современный стандарт?
И если нет - то почему?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <numeric>
 
namespace NS
{
    struct X { };
}
int operator +(int i, NS::X) {return i+1;}
 
int main()
{
    NS::X c[10];
    std::accumulate(c, c+10, 0);
}
1
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
19.04.2011, 13:15 1251
g++ этот тект проглотил.
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
19.04.2011, 14:43  [ТС] 1252
taras atavin, Вопрос был про любой компилятор. Подсказка : MSVS не проглотит. По какой причине?
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
19.04.2011, 16:45 1253
ForEveR
Нехилая задачка, долго пришлось думать и заодно хорошенько перечитать стандарт Компилятор при разрешении перегрузки имен должен следовать принципу Koenig lookup( кстати, Кёниг это не какой-нибудь член комитета, случаем? ), то есть если в вызове функции присутствуют параметры class/enum типов , то впридачу к обычному поиску имен в охватывающих пространствах он еще должен будет заглянуть в пространства имен, в которых содержатся типы этих самых параметров(кстати, порядок явно не оговаривается( хотя , может, я не увидел), по этому поводу никаких особых указаний нет?). А самое интересное, что как только компилятор находит в просматриваемом пространстве имен хотя бы одно объявление , в данном случае operator+, то в пространство имен на уровень выше он уже не полезет!

Таким образом, если чуток подправить пример и отправить объявление operator+ в то же пространство имен, в котором находится X, то std::accumulate должен будет заглянуть в пространство имен NS и найти там нужный operator+.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <numeric>
namespace NS
{
        struct X { };
    int operator +(int i, X) {return i+1;}
}
 
int main()
{
        NS::X c[10];
        std::accumulate(c, c+10, 0);
        return 0;
}
такой код должен скомпилироваться на любом компиляторе, а вот исходный вовсе не должен, так как в процессе обхода пространства имен ::std компилятор вполне вероятно может наткнуться на какое-то определение operator+, не важно, с какой сигнатурой, и просто-напросто дальше в глобальном пространстве искать не будет. Следовательно, код непереносимый, так как, вообще говоря, зависит от реализации stl, либо могут быть подключены заголовки в <numeric>, которые объявляют operator+, либо в самом <numeric> может быть объявление какого-то operator+( может, специализация там какая интересная для стандартных типов stl или еще что ). В студии как раз реализуется первый случай, подключается серия заголовков <utility>, <xutility> в которых есть определения operator+ для типов разности различных итераторов, поэтому в сообщениях об ошибке фигурируют всякие _String_Iterator, _difference_type и прочие.
2
fasked
19.04.2011, 17:20
  #1254

Не по теме:

Ma3a, Koenig, он самый.

He served as the Project Editor of the ISO/ANSI standards committee for C++
То есть работал в комитете.

1
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
19.04.2011, 20:22  [ТС] 1255
Ma3a, Верно да.
0
34 / 34 / 9
Регистрация: 19.03.2010
Сообщений: 136
20.04.2011, 01:50 1256
Вот такое есть
//Написать "Морской бой" для игры человека против компьютера. Предусмотреть за человека возможность автоматической (расстановку осуществляет кораблей компьютер случайным образом) и ручной расстановки своих кораблей. Стоимость задания существенно повышается, если компьютер при стрельбе будет обладать логикой (т. е. не производить выстрелы "рандомайзом").

Все средствами языка Си
У меня уже 300 строк
0
1459 / 629 / 62
Регистрация: 31.03.2009
Сообщений: 2,030
20.04.2011, 02:32 1257
Цитата Сообщение от Fafle Посмотреть сообщение
У меня уже 300 строк

Не по теме:

Ухты! Сразу видно - профессионал.

0
9 / 9 / 0
Регистрация: 05.04.2011
Сообщений: 67
22.04.2011, 00:48 1258
[QUOTE=nikkka;860867]а я проверил без фаилов, и работает...
ничего не понимаю...


Lavroff, вот вам (а может и не только), ещё несколько задач.

Паук и Муха

В пустой прямоугольной комнате размерами АхВхС (длина, ширина, высота) на пол упала уснувшая муха. Паук, находившийся на одной из стен, или на полу комнаты, начал двигаться к ней по кратчайшему пути.
На какое расстояние он при этом переместится?
входные данные - переменные a, b, c.
Задача не сложная, но интерестная.


Змей Горыныч

А вот с этоы вы вряд ли справитесь так быстро. Я её писал целый вечер...
В некотором царстве жил Змей Горыныч. У него было N голов и M хвостов. Иван-царевич решил уничтожить губителя человеческих душ, для чего ему его кума Баба Яга подарила волшебный меч, так как только им можно убить Змея Горыныча. Если отрубить одну голову, то на её месте вырастает новая, если отрубить хвост, то вместо него вырастет 2 хвоста. Если отрубить два хвоста, то вырастает 1 голова, и только когда отрубить 2 головы, то не вырастет ничего. Змей Горыныч гибнет только в том случае, когда ему отрубить все головы и все хвосты. Определить минимальное количество ударов мечом, нужное для уничтожения Змея Горыныча.
Вход. переменные - m, n.


Добавлено через 11 минут

ну я бы сделал так, для начала предположим что у змея горыныча 4 головы и 4 хвоста, сразу берем одни ударом срубаем 2 головы-ничего не вырастает, потом срубаем 2 хвоста-вырастает голова, еще срубаем два хвоста- плюс еще одна голова...и того у нас получается 3 головы, сносим их тоже...==>>итого 6 ударов, сейчас попробую написать прогу=)
0
1075 / 1001 / 106
Регистрация: 28.02.2010
Сообщений: 2,889
22.04.2011, 05:27 1259
Uxxzz, про змея горыныча уже было в этой теме. Я даже успел решение написать.
http://em92.uni.cc/rozp/e-olimp36.html

Добавлено через 6 минут
Про паука и муху. Свое решение можно проверить здесь:
http://www.e-olimp.com/problems/13
0
4194 / 1787 / 211
Регистрация: 24.11.2009
Сообщений: 27,563
22.04.2011, 09:05 1260
Цитата Сообщение от Uxxzz Посмотреть сообщение
Иван-царевич ... его кума Баба Яга
. Капец.

Добавлено через 1 минуту
Цитата Сообщение от Uxxzz Посмотреть сообщение
.и того у нас получается 3 головы
голов будет 4.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2011, 09:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Проверить на правильность и закомментировать весь код для лучшего понимания
Всем здравствуйте. Условие задачи - Заданная матрица целых чисел размером (N, N). Найти среднее...

Нужны задачи для тренировки
Киньте задачки на классы......а то в самоучителе, по которому я учу Сишку....приведены задачки,...

Нужны задачи для тренировки
Здравствуйте киньте пожалуйста задания по с++ для человека начинающего изучать Turbo с++

Нужны задачи для тренировки
Вот не давно был школьный этап по программирование в школе(олимпиады). Меня закинули на городскую,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1260
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.