Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/2010: Рейтинг темы: голосов - 2010, средняя оценка - 4.88
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
1

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

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

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

Список задач, решение которых присутствует в данной теме:
43
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 05:53
Ответы с готовыми решениями:

Прошу примеров для понимания INDY
Уважаемые коллеги и братья по интересу. Прошу примеров использования Indy UDP...

Ищу примеры для понимания взаимодействия Callback + event
Господа, подкиньте плиз какой-нибудь пример для понимания взаимодействия...

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

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

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

1272
MikeSoft
Эксперт С++
3919 / 1784 / 183
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 19:59 41
neske, близко, но нет.

Добавлено через 2 минуты
CyBOSSeR, почему же ни разу? Значение инкрементируется, происходит сравнение и в некотором случае результат может являться удовлетворительным, что вызовет вход в цикл.
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 19:59  [ТС] 42
8. Ибо префексный инкремент. Сначала x=1. При первом проходе цикла =2. И далее. При 10 выходит из цикла не проходя его
2
MikeSoft
Эксперт С++
3919 / 1784 / 183
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 20:00 43
Цитата Сообщение от Lavroff Посмотреть сообщение
8. Ибо начинаем с двух.
Именно так.
0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 20:00 44
MikeSoft,
x=11?
0
MikeSoft
Эксперт С++
3919 / 1784 / 183
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 20:01 45
nikkka, нет.
x = 10
цикл выполнится 8 раз.
0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 20:02 46
блин.
определённо надо будет пересмотреть тему в книжке : S

Не по теме:

Цитата Сообщение от Lavroff Посмотреть сообщение
MikeSoft, Продолжение будет?)
надеюсь : )

0
MikeSoft
Эксперт С++
3919 / 1784 / 183
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 20:12 47
nikkka, на вскидку простеньких задач - не помню! Помню одну олимпиадную задачу на поиск смайликов в строке. Но описывать долго ... Если есть желание - могу всё же написать.

Не по теме:

Делал недавно уборку, разгребал документы - попадался под руку сборник задач, которые были на Всеукраинском Чемпионате Компьютерных Технологий ... завтра посмотрю и, если нужно, отсканирую.

0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 20:19  [ТС] 48
HIMen,
"Вот
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
37
38
39
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
 
    std::vector<int>Arr;
    int n=0;
    std::cout<<"Enter size of Array\n";
    std::cin>>n;
    int*Array;
    Array=new int [n];
    int*count;
    for(int i=0;i<n;i++)
    {
        std::cout<<"Enter [ "<< i+1 <<" ] elem of array\n";
        std::cin>>Array[i];
        Arr.push_back(Array[i]);
    }
    count=new int [n];
    for(int i=0;i<n;i++)
    {
        count[i]=0;
    }
    for(size_t i=0;i<Arr.size();i++)
    {
        for(size_t j=0;j<Arr.size();j++)
        {
            if (Arr[i]==Arr[j])
                count[i]++;
        }
    }
    for(size_t i=0;i<Arr.size();i++)
    {
        if(count[i]==1)
            std::cout<<Arr[i]<<'\n';
    }
    return 0;
}
0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 20:20 49
Цитата Сообщение от MikeSoft Посмотреть сообщение
nikkka, на вскидку простеньких задач - не помню! Помню одну олимпиадную задачу на поиск смайликов в строке. Но описывать долго ... Если есть желание - могу всё же написать.
Не по теме:
Делал недавно уборку, разгребал документы - попадался под руку сборник задач, которые были на Всеукраинском Чемпионате Компьютерных Технологий ... завтра посмотрю и, если нужно, отсканирую.
было бы очень любезно!...
: )
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 20:34  [ТС] 50
То же задание с числами через STL.

Оно
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
#include <iostream>
#include <vector>
#include <algorithm>
int main()
{
 
    std::vector<int>Arr;
    int n=0, j=0;
    std::cout<<"Enter size of Array\n";
    std::cin>>n;
    for(int i=0;i<n;i++)
    {
        std::cout<<"Enter [ "<< i+1 <<" ] elem of array\n";
        std::cin>>j;
        Arr.push_back(j);
    }
    for(size_t i=0;i<Arr.size();i++)
    {
        n=std::count(Arr.begin(), Arr.end(), Arr[i]);
        if(n==1)
        {
            std::cout<<Arr[i]<<'\n';
        }
    }
    return 0;
}
1
MikeSoft
Эксперт С++
3919 / 1784 / 183
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 20:47 51
Лучший ответ Сообщение было отмечено как решение

Решение

Имя входного файла: d.in
Имя выходного файла: d.out

Напишите программу, которая посчитает количество смайликов в заданном тексте. Смайликом будем считать последовательность символов, удовлетворяющую условиям:
  • Первым символом является либо ; (точка с запятой), либо : (двоеточие) ровно один раз
  • Далее может идти символ - (минус) сколько угодно раз (в том числе минус может идти ноль раз)
  • В конце обязательно идёт некоторое количество (не меньше одной) одинаковых скобок из следующего набора: (, ), [, ].
  • Внутри смайлика не может встречаться никаких других символов.

Например, нижеприведенные последовательности являются смайликами:
Код
:)
;-----------[[[[[[[[
:---]
:)
В то время, как следующие последовательности смайликами не являются (хотя некоторые из них содержат смайлики):
Код
:-)]
;--
-)
::-(
:-()
Нужно подсчитать количество смайликов, содержащихся в данном тексте.

Формат входного файла:
Вводится одна строка текста, которая может содержать маленькие латинские буквы, пробелы, символы, которые могут встречаться в смайликах. Длина строки не превышает 100 000 символов.

Формат выходного файла:
Выведите одно число - количество смайликов, которые встречаются в тексте.

Примеры:
Код
          d.in          |        d.out
    -------------------------------------
       :) ;-----[[[[[   |          2
       :-) ];-----;     |          1
       -) (---:---      |          0
       hello :-)        |          1
5
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 20:54 52
MikeSoft, сегодня времени нет, а завтра постораюсь выложить сУды решение.

Добавлено через 3 минуты
MikeSoft, помню подобную задачу.
дана последовательноть скобок:
C++
1
(((())()()(((()())))((()())))   // на пример такая
надо проверить является ли она "правильной".
я не помню точную формулировку, но "правильная" имеется в виду математически-правильная.
трудно объяснить.
но по моему понятно...
1
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 20:54  [ТС] 53
MikeSoft, На си или на С++?
0
HIMen
4262 / 1429 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
16.07.2010, 20:54 54
Lavroff, все еще проще, чем ты думаешь. Можно сделать без stl, без функторов, в одну строчку
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 20:55  [ТС] 55
HIMen, В одну? Никак. Ввод данных таки нужен.) Ща подумаю как это сделать настолько коротко
0
MikeSoft
Эксперт С++
3919 / 1784 / 183
Регистрация: 21.11.2009
Сообщений: 2,540
16.07.2010, 20:56 56
Lavroff, всё-равно, но как можно проще и быстрее.
0
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 20:57 57
Lavroff, если напишеш, выкладывай "скрытый" текст, плиз.
а то глянул, и всё
0
ForEveR
В астрале
Эксперт С++
7996 / 4755 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
16.07.2010, 21:07  [ТС] 58
HIMen, Самая короткая которая приходит в голову:

Но тут далеко не одна строчка...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
int main()
{
    int n=0;
    int A[]={1,2,3,2,1};
    for(int i=0;i<5;i++)
    {
        n=0;
        for(int j=0;j<5;j++)
        {
            if (A[i]==A[j])
                n++;
        }
        if(n==1)
            std::cout<<A[i]<<'\n';
    }
    return 0;
}


Не могли бы вы показать как в одну строку?
1
HIMen
4262 / 1429 / 101
Регистрация: 12.04.2009
Сообщений: 2,346
16.07.2010, 21:17 59
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
int A[]={1,2,3,2,1};
int result = 0;
for (int i = 0; i < 5; i++) result = result ^ A[i];
cout << result;
Исключающие или для всех элементов массива
5
nikkka
Мат в 32 хода
236 / 171 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 21:20 60
Lavroff, я не понял, это какое задание?...
MikeSoft, вот ваше))) решил всё таки написать)))

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>
#include <cstring>
#include <conio.h>
using namespace std;
int main()
{
    cout<<"Enter the string: \n";
    string s;
    cin>>s;
    int i=0;
    int count=0;
    bool last=false;
    while(s[i]!='\0')
    {
        if (s[i]==':' || s[i]==';' || last==false)
        {
            last=true;
        };
        if (s[i]==')' || s[i]=='(' || s[i]==']' || s[i]=='[' || last==true)
        {
            last=false;
            count++;
        };
        i++;
    };
    cout<<count;
    getch();
    return 0;
}
Добавлено через 2 минуты
HIMen, а.. понятно.
а я думал про смаилики. не понял код
0
16.07.2010, 21:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 21:20

Нужны простые задачи для тренировки
Добрый день всем:) Наверное подобных тем как я тут сотни,но всё же. Начал...

Какая база требуется для понимания C++?
Доброго времени суток! Возникло желание научиться работать в Си, но одолели...

Какую литературу для первоначального понимания С++ нужно учить
Что первоначальное для понимания нужно учить и от куда лучше вычитывать? ...


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

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

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