Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 19:10   #1
ZinGoZol
Пользователь
 
Регистрация: 06.02.2011
Сообщений: 14
Вопрос Одномерные массивы. Рекурсия.(язык С)

Люди, помогите написать код для следующих прог, или хоть для нескольких. А то вот из 30 штук именно с этими шестью не могу совладать.

1) В одномерном массиве с чётным кол-вом эллементов(2N) находятся координаты N точек плоскости. Они располагаются в таком порядке:
x1, y1, x2, y2,...
определить номера точек, которые могут являться вершинами равнобедренного треугольника.
Тут даже мысли не приходят, как хоть примерно это сделать...

2) В одномерном массиве с чётным кол-вом эллементов(2N) находятся координаты N точек плоскости. Они располагаются в таком порядке:
x1, y1, x2, y2,...
определить три точки, являющиеся вершинами треугольника, для которого разность точек вне его и внутри является инимальной.
Тут тоже нулёво всё...

Дальше полегче, но не получается сделать :/

3) Даны действительные числа - a1, a2, ... , an(кароче, массив из n-эллементов). Среди них есть пложительные и отрицательные. Заменить нулями те числа, велиина по модулю которых больше максимального числа (|a1| > max{a1, a2, ... , an})

4) Суперзамок. Более-менее извесная задача. Секретный замок для сейфа состоит из 10 расположенных в ряд ячеек(опять с массивом надо)
, в которые надо ввести игральные кубики. Дверь открывается только в том случае, если на любых трёх соседних ячейках сумма точек на передних гранях кубиков =10. Нужно написать программу, которая разгадывает код замка, но с учётом того, что первые 2 числа уже заданны(решать надо с использованием одномерного массва, первые 2 числа должны вводиться пользователем)

5) Даны 2 последовательности a1 ... an и b1 ... bn. Преобразовать последовательность b1 ... bn так, что есла ai<=0, то bi увеличить в 10 раз, в противном случае заменить bi нулём.


6)написать программу, входными данными которой являются кол-во человек(n) и их возраст( с использованием одномерного массива). Причём одинаковых возрастов быть не должно. Вывести в удобночитаемой форме итоги подсчёта кол-ва людей, возраст которых находится в интервалах 0-9 лет, 10-19 лет, 20-29лет и т.д.




Первые 2 задачи надо сделать с использованием рекурсии. 3-6 - с использованием одномерного массива. Спасибо.
ZinGoZol вне форума Ответить с цитированием
Старый 01.04.2011, 19:25   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

№ 3.
Код:
#include <cstdlib>
#include <cmath>

using namespace std;

int main()
{
    const int n = 10; // или чему-то там еще
    float array[n], max;

    // ...
    // тут заполнение исходного массива
    // ...
    
    max = array[0];
    for (int i = 1; i < n; i++)
        if (array[i] > max)
            max = array[i];
    
    for (int i = 0; i < n; i++)
        if (fabs(array[i]) > max)
            array[i] = 0;
  
    // ...
    // тут вывод результирующего массива
    // ...
    
                
}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 01.04.2011, 19:27   #3
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Помогу сделать, пиши в скайп. ( точно быстро сделаю 3-6, с первыми двумя подольше будет). Беру не дорого.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 01.04.2011, 19:35   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

№ 5.
Код:
#include <cstdlib>

using namespace std;

int main()
{
    const int n = 10; // или чему-то там еще
    float A[n], B[n];
    // ...
    // тут заполнение исходных массивов
    // ...

    for (int i = 0; i < n; i++)
        if (A[i] <= 0)              
            B[i] *= 10;             
        else                        
            B[i] = 0;               


    // ...
    // тут вывод результирующего массива
    // ...


}
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 01.04.2011, 19:40   #5
ZinGoZol
Пользователь
 
Регистрация: 06.02.2011
Сообщений: 14
По умолчанию

Mandrivnyk, спс огромное
ZinGoZol вне форума Ответить с цитированием
Старый 01.04.2011, 20:23   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

№ 4.
Код:
#include <cstdlib>
#include <iostream>


using namespace std;

int main()
{
    const int n = 10;
    int safe[n];

    cout << "Введите два числа между 1 и 6:" << endl;
    cin >> safe[0] >> safe [1];
    cout << endl;

    while ((safe[0] < 1) || (safe[0] > 6) || (safe[1] < 1) || (safe[1] > 6)) {
        cout << "Неверный ввод. Попробуйте еще раз:" << endl;
        cin >> safe[0] >> safe [1];
        cout << endl;
    }

    if (((safe[0] + safe[1]) < 4) || ((safe[0] + safe[1]) > 9))
        cout << "При введенных числах задача решения не имеет" << endl;
    else
    {
        for (int i = 2; i < n; i++)
            safe[i] = 10 - safe[i-1] - safe[i-2];

        cout << "Сейф:" << endl;
        for (int i = 0; i < 10; i++)
            cout << safe[i] << " ";
        cout << endl;
    }
}
ЗЫ В предыдущих задачах не забывай указывать необходимые библиотеки (<iostream>, например)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 01.04.2011, 20:45   #7
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

№ 6.
Код:
#include <cstdlib>
#include <iostream>


using namespace std;

int main()
{
    const int n = 100;
    int age[n];
    int ages_0_9    = 0;
    int ages_10_19  = 0;
    int ages_20_29  = 0;
    int ages_30_39  = 0;
    int ages_40_49  = 0;
    int ages_50_59  = 0;
    int ages_60_69  = 0;
    int ages_70_79  = 0;
    int ages_80_89  = 0;
    int ages_90_99  = 0;
    int ages_100_   = 0;       // можно всё в одну строчку, но так аккуратнее, по-моему...
    
    
    // ...
    // тут ввод исходного массива; проверку, если надо, напиши сам -)
    // ...


    for (int i = 0; i < n; i++)
        switch (age[i]/10)
        {
            case    0: ages_0_9 ++;
                    break;
            
            case    1: ages_10_19 ++;
                    break;
            
            case    2: ages_20_29 ++;
                    break;
            
            case    3: ages_30_39 ++;
                    break;
            
            case    4: ages_40_49 ++;
                    break;
            
            case    5: ages_50_59 ++;
                    break;
            
            case    6: ages_60_69 ++;
                    break;
            
            case    7: ages_70_79 ++;
                    break;
            
            case    8: ages_80_89 ++;
                    break;
            
            case    9: ages_90_99 ++;
                    break;
            
            default:   ages_100_ ++;
                    break;
        }
        
        cout << "Количество людей по возрастным группам" << endl <<
                "======================================" << endl << endl <<
                "младше 9 лет:\t" << ages_0_9 << endl <<
                "10 -- 19 лет:\t" << ages_10_19 << endl <<
                "20 -- 29 лет:\t" << ages_20_29 << endl <<
                "30 -- 39 лет:\t" << ages_30_39 << endl <<
                "40 -- 49 лет:\t" << ages_40_49 << endl <<
                "50 -- 59 лет:\t" << ages_50_59 << endl <<
                "60 -- 69 лет:\t" << ages_60_69 << endl <<
                "70 -- 79 лет:\t" << ages_70_79 << endl <<
                "80 -- 89 лет:\t" << ages_80_89 << endl <<
                "90 -- 99 лет:\t" << ages_90_99 << endl <<
                "старше 100 лет:\t" << ages_100_ << endl;

}
ЗЫ За первыми двумя задачами -- во фриланс, наверное.
Эти четыре -- совсем простые. Так что мне будет достаточно и просто положительного отзыва -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 01.04.2011 в 20:51.
Mandrivnyk вне форума Ответить с цитированием
Старый 01.04.2011, 21:45   #8
ZinGoZol
Пользователь
 
Регистрация: 06.02.2011
Сообщений: 14
По умолчанию

Спс, щас влеплю отзыв
ZinGoZol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ Рекурсия и массивы Deviver Помощь студентам 7 27.03.2015 11:20
Одномерные массивы(Си) pupik100 Помощь студентам 5 09.03.2010 23:50
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12