Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задачки для новичков! Задачи 
:(
    Опции темы
EnShTe1N
  Дата 9.12.2007, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 9.12.2007

Репутация: нет
Всего: нет



Думаю подойдут такие задачи для тренировки!!!

Исходные данные вводятся с клавиатуры, а результаты выводятся на экран. Все числа - целые, не превышают по модулю 2 в 31 степени - 1.(Соответственно, они помещаются в переменные типа int)

В программах, где это необходимо, следует использовать условный оператор if и оператор цикла while. Другие операторы цикла(for, repeat, do - while), а также другие операторы break, continue, exit, goto использовать не следует.

1.  Дано трехзначное число. Найдите число, которое получится, если цифры исходного числа переписать в обратном порядке.

2. Даны переменные a и b. Напишите программу, которая будет менять значения этих переменных местами.

3. Найдите x в степени 4, выполнив наименьшее возможное число умножений. То же самое для  5. x в степени 7. 6. x в степени 22.

7. Даны 2 числа. Вывести наибольшее из них.

8. Даны 3 числа. Вывести наибольшее из них.

9. Даны 4 числа. Если они все различны, выведите "yes", иначе - "no".

10. Определите количество дней в данном году (от 1600 до 3000 года н.э.) по современному календарю

11. Выведите на правильном русском языке, сколько прошло лет с указанного года (между 1 и 2006 годом н.э.) до 2007г. Например, если введено 1986, то надо вывести "21 год", а если 2002, то "5 лет".

12. Даны размеры сторон конверта и открытки. Определите можно ли положить открытку в конверт не сгибая. (Стороны открытки должны быть параллельны сторонам конверта).

13. В первой строке указаны дата рождения Алисы, а во второй - Боба. Даты указаны в формате "год месяц день". Определите кто из низх старше(выведите имя: "Alice" или "Bob").

14.Положение коня на шахматной доске задано двумя числами - номерами вертикального и горизонтального рядов.(Ряды нумеруются от 1 до 8) Найдите количество клеток, которые находятся под боем этого коня.

15. Вычислите: a в степени b, b >=  0.

16*.Крестики - нолики. Вася и Петя любят играть в крестики - нолики 3х3, но у них неожиданно закончилась бумага. Помогите им - напишите программу, которая позволит им ставить крестики и нолики на экране монитора. 

Вроде бы все! Скоро будет продолжение!!! 
PM MAIL   Вверх
zkv
Дата 9.12.2007, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 92



Цитата(EnShTe1N @  9.12.2007,  23:39 Найти цитируемый пост)
Думаю подойдут такие задачи для тренировки!!!

для желающих потренироваться у нас целый полигон есть: Центр помощи
задач на всех хватит, особенно сейчас (период такой, сами понимаете  smile )

Пропиарил. Хе-хе.
PM MAIL   Вверх
EnShTe1N
Дата 10.12.2007, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 9.12.2007

Репутация: нет
Всего: нет



ну, мож каму интересно будит!
PM MAIL   Вверх
zvezda
Дата 12.12.2007, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 12.12.2007

Репутация: нет
Всего: нет



Help/Срочно нужна прога. Пожалуйсто помогите кто может.
Вариант №5:
 Для всех заданий необходимо разработать программу, которая создает  файл размером, указанным в варианте виртуальной памяти и заполняющая его некоторыми данными.
1. Разработать менеджер памяти, у которого следующие параметры: Виртуальная память - 8М; 
Количество страничных кадров - 16; 
Размер страничного кадра - 4К;
Менеджер памяти должен работать в начале по алгоритму по требованию, а
после заполнения страничных кадров по алгоритму LRU. 
2.   Необходимо  вывести  на экран  значение  ячейки  памяти,  адрес которой вводится пользователем. Страница памяти и смещение необходимой ячейки, вычисляется и выводится на экран. Если страница уже загружена в память, необходимый элемент выводим на экран, иначе нужную страницу загружаем в память.
Менеджер памяти необходимо реализовать через классы.
PM MAIL   Вверх
pompei
Дата 12.12.2007, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: нет
Всего: 6



2. обменять значения переменных a и b

a = a ^ b;
b = b ^ a;
a = a ^ b;

где ^ - побитовая операция "исключающее или" .


Это сообщение отредактировал(а) pompei - 12.12.2007, 11:13
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
MAKCim
Дата 12.12.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 2
Всего: 207



zvezda

M
MAKCim
Модератор: Обращайтесь в центр помощи!



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Silent_s
Дата 14.12.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 2.12.2007
Где: Москва

Репутация: нет
Всего: 0



Прикольные задачки!) А они для личного обдумывания? smile 
--------------------
Мой блог
PM MAIL   Вверх
baldina
Дата 15.12.2007, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



pompei, а если это переменные типа SuperPuperClass? И перегруженного оператора ^ нет (а если есть, может он работает тоже как-то super puper)
PM MAIL   Вверх
EnShTe1N
Дата 16.12.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 9.12.2007

Репутация: нет
Всего: нет



Цитата(Silent_s @ 14.12.2007,  22:17)
Прикольные задачки!) А они для личного обдумывания? smile

Silent_s, если что будет не понятно, то можеш спрашивать. А так постарайся решить сам
PM MAIL   Вверх
Silent_s
Дата 16.12.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 2.12.2007
Где: Москва

Репутация: нет
Всего: 0



Ну пару месясев когда начал учить си большую часть подобных задач делал, только вот последнюю не знаю, там же функции из графики есть подскажите какие использовать...
--------------------
Мой блог
PM MAIL   Вверх
Чoо
Дата 11.9.2010, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



Введите с клавиатуры 10 чисел. Затем выведите сначала одно самое большое, потом 2 самых больших и, наконец, 3 самых больших.
Можно использовать циклы, условную инструкцию if ... then ... else и переменные типа int. Больше ни чего smile



решение(может кривое, но лучше не придумал):
Код

#include <iostream>
using namespace std;

int main()
{
    int k, max = 0, max2 = 0, max3 = 0;
    cout << "Введитe 10 чисел" << endl << endl;

    for (int i = 1; i<=10; ++i)
    {
      cin >> k;
      if(k>max)
      {
          max3 = max2;
          max2 = max;
          max = k;
      }
      else
      {
          if ((k<=max)&&(k>max2))
          {
              max3 = max2;
              max2 = k;
          }
          else
          {
              if ((k<=max2)&&(k>max3))
                  max3 = k;
          }
       }
   }
    cout << "наибольшее число: " << max << endl;
    cout << "наибольшие 2 числа: " << max << "; " << max2 << endl;
    cout << "наибольшие 3 числа: " << max << "; " << max2 << "; " << max3 << endl;
    return 0;
}

жаль спойлера нет.



--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
Чoо
Дата 15.9.2010, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



вот еще одна задача. 
Определите функцию, которая возвращает ссылку на хотя бы один седловой элемент матрицы или NULL (NIL), а также "координаты" на этот узловой элемент (седловым элементом называется элемент, который наименьший в своей строке и одновременно наибольший в своем столбце (и наоборот)).

Для решения, я решил разработать алгоритм поиска самостоятельно. Возможно, что он не самый оптимальный (но лучше не придумалось, а готовые решения искать - это уже не тренировка). Суть его в следующем:
Сначала ищется в строке минимальный элемент. Если он будет найден, то в колонке, в которой находится этот элемент, ищется уже максимальный элемент. Если минимальный элемент строки и максимальный элемент столбца ссылаются на один и тот же элемент матрицы - то седловой элемент найден. Иначе поиск продолжается со следующей строки. И т.д. пока не пройдем все строки. Если все строки прошли, но седловой элемент не найден, то повторяем поиск от первой строки, только теперь ищем максимальный элемент в строке и минимальный в столбце. Как только найдем первый седловой элемент возвращаем указатель и координаты седлового элемента.
Код

#include <iostream>
using namespace std;
int *LineMinMax(int a[], int m1, int m2, int number, bool max, int &column)
{
    int *buf;
    buf=&a[number*m2];
    column = 0;
    int i=1;
    while (i<m2)
    {
        if (!max)
        {
        if (a[number*m2+i]<*buf)
            {
                buf=&a[number*m2+i];
                column = i;
            }
        else
            if (a[number*m2+i]==*buf)
                column = -1;
        }
        else
        {
            if (a[number*m2+i]>*buf)
            {
                    buf=&a[number*m2+i];
                    column = i;
            }
            else
                if (a[number*m2+i]==*buf)
                column = - 1;
        }
        i++;

    }
    if (column<0) return NULL;
    else return buf;
}
int *ColumnMinMax(int a[], int m1, int m2, int number, bool max, int &line)
{
    int *buf;
    buf = &a[number]; line = 0;
    int i=1;
    while (i<m1)
    {
        if (!max)
        {
            if (a[i*m2+number]<*buf)
            {
                buf = &a[i*m2+number];
                line = i;
            }
            else
            {
                if (a[i*m2+number]==*buf)
                    line = -1;
            }
        }
        else
        {
            if (a[i*m2+number]>*buf)
            {
                buf = &a[i*m2+number];
                line = i;
            }
            else
            {
                if (a[i*m2+number]==*buf)
                    line = -1;
            }
        }
        i++;
    }
    if (line < 0) return NULL;
    else return buf;
}
/*следующая функция возвращает указатель на седловой элемент или NULL */
int *findsedl (int a[],int m1, int m2, int &line, int &column)
{
    int *minmaxL = NULL, *minmaxC = NULL;
    bool find=0; //1 если будет найден седловой элемент
    int i=0;
    while ((i<m1) && !find)
    {
        //сначала ищем минимум в ряде i
        minmaxL=LineMinMax((int *)a,m1,m2,i,0, column);
        if (minmaxL!=NULL) //зачит в ряде i есть минимальный элемент. Теперь надо проверить столбец
                         // в котором находится этот элемент. Если он Max - то этот элемент седловой
        {
            minmaxC=ColumnMinMax((int *)a,m1,m2,column,1,line);
            if (minmaxL==minmaxC)
                find = 1;
        }
        i++;
    }
    if (!find)
    {
        //седловой элемент, при условиях в ряду минимум, в столбце максимум, не нашли, пробуем
        //наоборот
        i=0;
        while ((i<m1)&&!find)
        {
            minmaxL=LineMinMax((int *)a,m1,m2,i,1,column);
            if (minmaxL!=NULL)
            {
                minmaxC = ColumnMinMax((int *)a,m1,m2,column,0,line);
                if (minmaxL==minmaxC)
                    find = 1;
            }
            ++i;
        }
    }
    if (find) return minmaxL;
    else return NULL;
}

int main()
{
    int a[3][4] = {{2,-5,-5,11},{8,4,-4,9},{-5,-5,-4,10}};
    int *sedl, line, column;
    cout << "Матрица m:" << endl;
    for(int i=0;i<3; ++i)
    {
        for (int j=0;j<4; j++)
            cout << a[i][j] << "   ";
        cout << endl;
    }
    sedl = findsedl((int *)a,3,4,line,column);
    if (sedl!=NULL)
    {
        cout << "седловой элемент: a[" << line << "," << column << "] = " << *sedl;
        cout << " (нумерация элементов с нуля)" << endl;
    }

    else cout << "седловой элемент не найден" << endl;
    return 0;
}



--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
djamshud
Дата 16.9.2010, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



Чoо, тут простаки напрашивается кеширование максимальных значений столбцов. Код не смотрел, что-то его очень много.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Чoо
Дата 16.9.2010, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 22.9.2009

Репутация: 4
Всего: 4



djamshud, мне тоже кажется, что кода очень много smile. Буду благодарен, если объясните про кеширование.


--------------------
user posted image

OS: Debian Squeeze (kernel 3.8.2)
IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2
PM MAIL   Вверх
djamshud
Дата 16.9.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 4
Всего: 39



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


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.