Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/2345: Рейтинг темы: голосов - 2345, средняя оценка - 4.54
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562

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

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

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

Список задач, решение которых присутствует в данной теме:
44
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2010, 05:53
Ответы с готовыми решениями:

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

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

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

1272
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.12.2010, 02:46  [ТС]
Студворк — интернет-сервис помощи студентам
Доктор ТуамОсес, Даа... Дико прямой доступ...
Кат
C++
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
#include <iostream>
 
class Base
{
public:
    Base():x(1)
    {
    }
    virtual int GetX() const=0;
protected:
    int x;
};
 
class Der:public Base
{
public:
    Der():Base()
    {
    }
private:
    int GetX() const {return x;}
};
 
int main()
{
    Base* first;
    first=new Der;
    std::cout<<first->GetX()<<'\n';
}

Но впринципе спасибо за задачу и ответ. Думал на тему виртуальности, но подумал раз сказано прямо - значит прямо.
0
Заблокирован
28.12.2010, 04:01
Так и есть. Используется "виртуальность".
Если в базовом классе вирт. метод объявить public, то даже если в классе-потомке его переопределить как приватный, то всё равно через указатель на базовый класс к этому приватному методу можно будет обратиться

Добавлено через 1 минуту
Т.е.

C++
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
// 13:35 21 декабря 2010 г.
/* Вызов виртуальных функций класса-потомка из указателя на базовый класс */
#include <iostream>
using namespace std;
 
struct A {
    public :
    virtual void print (void){
        cout << "running virtual PUBLIC member-function 'print' of class 'A' " << endl ;
        return ;
    }
} ;
 
struct B : A {
    private :
    void print (void){
        cout << "running virtual PRIVATE member-function 'print' of class 'B' " << endl ;
        return ;
    }
 
} ;
 
int main() {
    B   b;
    A*  pA = &b ;
 
    // НАПРЯМУЮ вызываем приватный метод класса B
    pA->print() ;
    return 0 ;
}
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.12.2010, 09:38
Доктор ТуамОсес, в постановке задачи ты говорил про "мемберы". Мне казалось, что таким термином обозначают только поля. Или методы тоже попадают в это понятие?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
28.12.2010, 09:40  [ТС]
Evg, Функции-члены, данные-члены => и то и другое - мемберы
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.12.2010, 11:45
Цитата Сообщение от ForEveR Посмотреть сообщение
Evg, Функции-члены, данные-члены => и то и другое - мемберы
Будем знать. А то про "мемберы" пытался решить задачу исключительно в контексте полей
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.01.2011, 06:57  [ТС]
Олимп задачка.
В ЕГЭ по математике было решено не давать задач, в которых используются числа, большие 5, например, 6, 10 и т.п. (они теперь считаются трудными и не обязательными для изучения). Вводится уравнение. Требуется определить, можно ли его давать в ЕГЭ (в уравнении могут присутствовать любые символы-нецифры, а также натуральные числа).

Входные данные

Вводится одна строка без пробелов, состоящая из не более чем 100 символов.

В строке могут встречаться натуральные числа, а также нецифровые символы.

Выходные данные

Выведите слово YES заглавными латинскими буквами, если такое уравнение можно дать в ЕГЭ и NO в противном случае.

Входные данные


Выходные данные

2x+3=5


YES

3x+3=6


NO

x-10=3x+4


NO
Интересно увидеть методы решения. Сам решил - но самым простым способом вообщем-то.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
06.01.2011, 11:19
ForEveR, я правильно понял, в качестве коэффициентов уравнения не может быть чисел, больших 5? Тогда тупо парсить строку на присутствие в ней чисел, больших 5. ИМХО ничего сложного, странно, что задача олимпиадная, обычно олимпиадные задачи в лоб не решаются...
0
Заблокирован
06.01.2011, 11:53
Цитата Сообщение от silent_1991 Посмотреть сообщение
ForEveR, я правильно понял, в качестве коэффициентов уравнения не может быть чисел, больших 5? Тогда тупо парсить строку на присутствие в ней чисел, больших 5. ИМХО ничего сложного, странно, что задача олимпиадная, обычно олимпиадные задачи в лоб не решаются...
1+2+3+4=x

NO

Цитата Сообщение от ForEveR Посмотреть сообщение
В ЕГЭ по математике было решено не давать задач, в которых используются числа, большие 5, например, 6, 10 и т.п.
Что по поводу отрицательных чисел?
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
06.01.2011, 12:10
NightmareZ, да, у меня тоже такая мысль появилась, на счёт суммы слагаемых, но я решил пока это оставить. Задачу это не усложняет, можно не просто вытаскивать из строки очередное число, а искать их сумму, пока она не превысит пять или пока не допарсим строку (причём при переходе через знак "равно" надо начинать отнимать извлечённые числа).
0
 Аватар для Алексaндр
131 / 108 / 12
Регистрация: 04.12.2010
Сообщений: 313
06.01.2011, 13:22
Кстати, нужно будет немного код усложнить. Делать проверку не только каждого символа в строке.
Например, 3х+у=24 .
Если проверять посимвольно - оно выбьет "ДА", в то время как 24 больше 5.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
06.01.2011, 13:24
Алексaндр, само собой, никто о посимвольной обработке не говорил, сама фраза "парсинг арифметического выражения" уже не предполагает посимвольности.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.01.2011, 14:58  [ТС]
нет ребят. Сумма тут не причем.
И парсить там тоже ничего не надо. Решается тупо влоб даже не разбиением на лексемы... Хотя если распарсить может и красивше выйдет.

1+2+3+4=x
YES должно выводить
А вот
3x+y=24
NO
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
06.01.2011, 15:06
ForEveR, ну я и не разбиение как таковое имел ввиду - главное ведь вытащить из строки очередное число. А это уже какой-никакой парсинг.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.01.2011, 15:11  [ТС]
silent_1991, вцелом да) вариант-то напишешь?)
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
06.01.2011, 15:19
ForEveR, ща))

Добавлено через 5 минут
В лоб, думаю, так:

C
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
#include <stdio.h>
 
int main(void)
{
    char expr[101];
    int number;
    int i;
 
    fgets(expr, 101, stdin);
 
    for (i = 0; i < 100; ++i)
    {
        while ((expr[i] < '0' || expr[i] > '9') && i++ < 100);
 
        number = 0;
 
        while (expr[i] >= '0' && expr[i] <= '9')
            number = number * 10 + (expr[i++] - '0');
 
        if (number > 5)
        {
            printf("NO");
 
            return 0;
        }
    }
 
    printf("YES");
 
    return 0;
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
06.01.2011, 16:04  [ТС]
silent_1991, Чуть позже свой скину. И твой проверю

Добавлено через 18 минут
Прошло.
А вот мое.

C++
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
#include <iostream>
#include <string>
       
int main()
{
      typedef std::string T_str;
      T_str str;
      std::cin>>str;
      const std::string digits="0123456789";
      for(size_t i=0; i<str.size(); ++i)
      {
      size_t idx=str.find_first_of(digits, i);
      if(idx == std::string::npos)
      {
      std::cout<<"NO\n";
      return 0;
      }
      if(!isdigit(str[idx+1]))
      {
          if(str[idx]-'0' > 5)
          {
               std::cout<<"NO\n";
               return 0;
          }
          else
            continue;
      }
      else
      {
          std::cout<<"NO\n";
          return 0;
      }
  }
  std::cout<<"YES\n";
  return 0;
}
Добавлено через 23 минуты
Убрал все лишнее. Стало так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
       
int main()
{
  typedef std::string T_str;
  T_str str;
  std::cin>>str;
  const std::string digits="0123456789";
  size_t idx=0;
  while((idx=str.find_first_of(digits, idx)) != std::string::npos)
  {
      if(isdigit(str[idx+1]) || str[idx]-'0' > 5)
      {
          std::cout<<"NO\n";
          return 0;
      }
      ++idx;
  }
  std::cout<<"YES\n";
  return 0;
}
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
06.01.2011, 19:15
ForEveR, ну я интуитивно был уверен, что STL здесь будет рулить. Но поскольку сам STL пока не знаю (в ближайшее время думаю заняться этим делом), то решил написать так, на чистом Си (давно ничего на нём не писал))) ).
0
Заблокирован
06.01.2011, 22:26
Цитата Сообщение от ForEveR Посмотреть сообщение
1+2+3+4=x
YES должно выводить
Почему это вдруг? x же больше 5.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
06.01.2011, 22:29
NightmareZ, а суть не в том, чему равен икс... Главное, чтобы в самом выражении не содержалось числа, большего 5. Так что создатели егэ вполне могут считерить и дать уравнение типа 5x+5x+5x=5+5+3
0
Заблокирован
06.01.2011, 22:33
Цитата Сообщение от silent_1991 Посмотреть сообщение
NightmareZ, а суть не в том, чему равен икс... Главное, чтобы в самом выражении не содержалось числа, большего 5. Так что создатели егэ вполне могут считерить и дать уравнение типа 5x+5x+5x=5+5+3
Тогда это слишком тупо и просто.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2011, 22:33

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
980
Закрытая тема Создать тему
Новые блоги и статьи
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru