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

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

15.07.2010, 05:53. Показов 518271. Ответов 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
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
21285 / 8310 / 637
Регистрация: 30.03.2009
Сообщений: 22,671
Записей в блоге: 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
Закрытая тема Создать тему
Новые блоги и статьи
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru