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

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

15.07.2010, 05:53. Показов 517146. Ответов 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
Закрытая тема Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru