Тема: код програми на Сі.

Масив Х[N] - впорядкований за зростанням масив Y[N]- відсортований за спаданням. Сформувати масив Z з елементів масиву Х і Y, впорядковуючи їх за зростанням. (алгоритм та код програми)

2 Востаннє редагувалося koala (24.11.2013 09:34:06)

Re: код програми на Сі.

Правила читали, особливо розділ 3?
http://s018.radikal.ru/i504/1305/4e/128b3beefcef.jpg

Подякували: Logans1

Re: код програми на Сі.

koala написав:

Правила читали, особливо розділ 3?
http://s018.radikal.ru/i504/1305/4e/128b3beefcef.jpg

Треба додати bb код для швидкої вставки цієї картинки.

4

Re: код програми на Сі.

Треба додати бота, який на перші 5 тем автора, що має менш, ніж 20 дописів, відповідав оцим.

Подякували: katuanifertiti, Singularity, DOP3

5

Re: код програми на Сі.

koala написав:

Треба додати бота, який на перші 5 тем автора, що має менш, ніж 20 дописів, відповідав оцим.

То тупо. Бо один раз на рік трапиться хтось не з лабами і бот його налякає.

Подякували: koala1

6 Востаннє редагувалося Logans (24.11.2013 17:19:19)

Re: код програми на Сі.

HetmanNet написав:
koala написав:

Треба додати бота, який на перші 5 тем автора, що має менш, ніж 20 дописів, відповідав оцим.

То тупо. Бо один раз на рік трапиться хтось не з лабами і бот його налякає.

На якомусь ігровому форумі бачив таку систему, типу 5 повідомлень, які створює користувач, спочатку повинні пройти перевірку модератора, можливо це кращий варіант?

7

Re: код програми на Сі.

Вирішив все-ж-таки попробувати створити код для цього завдання (щоб відпрацювати недовно вивченні навички в С++), але зіштовхнувся з декількома проблемами:

Код програми
#include "stdafx.h"
#include <iostream>

using namespace std;

void Input(int masuv[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << "[" << i + 1 << "]: ";
        cin >> masuv[i]; 
    };
    return;
};

int Combination(int masuv_x[], int masuv_y[], int masuv_z[], int n, int m, int nm)
{
    int i, j;
    for (i = 0; i < n; i++)
    {
        masuv_z[i] += masuv_x[i];
        j = i;
    };

    int ij = 0;
    for (i = j; i < nm; i++)
    {        
        ij++;
        masuv_z[i] += masuv_y[ij];
    };

    for (int i = 0; i < nm; i++)
        cout << masuv_z[i] << "\n"; 
    
    return masuv_z[i];
};

void OutPut(int masuv[], int n)
{
    for (int i = 0; i < n; i++)
        cout << masuv[i] << " "; 
    return;
};

int main()
{
   const int n = 10;
   const int m = 10;
   const int nm = n + m;
   
   int masuv_x[n];
   int masuv_y[m];
   int masuv_z[nm];

   setlocale(0, "");

   cout << "Введiть елементи масиву X:" << endl;
   Input(masuv_x, n);

   cout << "Введiть елементи масиву Y:" << endl;
   Input(masuv_y, m);
   
   cout << "Елементи масиву X:" << endl;
   OutPut(masuv_x, n);
   cout << endl;

   cout << "Елементи масиву Y:" << endl;
   OutPut(masuv_y, m);
   cout << endl;

   cout << "Комбiнацiя масивiв: " << endl;
   Combination(masuv_x, masuv_y, masuv_z, n, m ,nm);
   cout << endl;

   system("pause");
   return 0;
}

1. Цей код дозволяє лише ввести масив Х, ввести масив Y та зкомбінувати їх у масив Z. Саме комбінування в мене не виходить зробити. Наскільки я зрозумів, що десь я напутав з індксами масиву, але знайти не можу (голова погано працює після 2ох днів безсонних ночей :))

2. До сортування ще не приступив, тому що, чув що в VC++ є ф-ія сортування, але я не знаю її назву та використання.

3. Розумію, що в коді є "костилі", якщо можна, вкажіть, будь-ласка, на них, хотів би навчитись виправляти такі моменти та в майбутньому не попадати на ці-ж-самі граблі.

8

Re: код програми на Сі.

1. Зачекаю з відповіддю, доки голова у вас проясниться і ви зумієте пояснити, нащо додаєте до невідомо чого (масив z неініціалізований) значення елементів масивів x та y, ну і взагалі... Два впорядкованих масива комбінуються дуже легко: беремо мінімальний з двох перших елементів, один з масивів зсуваємо (тобто зсуваємо вказівник по масиву), повторюємо, доки в масивах є хоч щось.
2. Та в стандартному C++ є функція сортування, і називається вона простіше нема куди, але доки не запрограмуєте 3-4 алгоритми сортування - краще нею не користуйтеся (так само, як не можна користуватися калькулятором, доки додавати і множити не навчитеся).
3. Костиль №1: ви передаєте в усі функції масив і його розмір, краще робити це структурами. Костиль №2: у вас чомусь масив z виводиться в функції Combination, а не в CombinationAndOutputZ. Може, все ж варто вивід масиву винести з цієї функції і робити за допомогою OutPut?

Подякували: Logans1

9 Востаннє редагувалося Logans (27.11.2013 00:50:13)

Re: код програми на Сі.

Прихований текст
koala написав:

1. Зачекаю з відповіддю, доки голова у вас проясниться і ви зумієте пояснити, нащо додаєте до невідомо чого (масив z неініціалізований) значення елементів масивів x та y, ну і взагалі... Два впорядкованих масива комбінуються дуже легко: беремо мінімальний з двох перших елементів, один з масивів зсуваємо (тобто зсуваємо вказівник по масиву), повторюємо, доки в масивах є хоч щось.
2. Та в стандартному C++ є функція сортування, і називається вона простіше нема куди, але доки не запрограмуєте 3-4 алгоритми сортування - краще нею не користуйтеся (так само, як не можна користуватися калькулятором, доки додавати і множити не навчитеся).
3. Костиль №1: ви передаєте в усі функції масив і його розмір, краще робити це структурами. Костиль №2: у вас чомусь масив z виводиться в функції Combination, а не в CombinationAndOutputZ. Може, все ж варто вивід масиву винести з цієї функції і робити за допомогою OutPut?

1. Зачекаю з відповіддю, доки голова у вас проясниться і ви зумієте пояснити, нащо додаєте до невідомо чого (масив z неініціалізований) значення елементів масивів x та y, ну і взагалі... Два впорядкованих масива комбінуються дуже легко: беремо мінімальний з двох перших елементів, один з масивів зсуваємо (тобто зсуваємо вказівник по масиву), повторюємо, доки в масивах є хоч щось.

Вибачаюсь за свою необізнанність, але не могли б ви продемонструвати на якомусь невеличкому прикладі, звісно, якщо є така можливість.

2. Та в стандартному C++ є функція сортування, і називається вона простіше нема куди, але доки не запрограмуєте 3-4 алгоритми сортування - краще нею не користуйтеся (так само, як не можна користуватися калькулятором, доки додавати і множити не навчитеся).

Я трохи пам'ятаю, з побачених кодів, здається мені ця ф-ія має назву: sort()...
Алгоритми сортування я вже використовував, але лише в Delphi (потрібно буде реалізувати декілька в С++).

3. Костиль №1: ви передаєте в усі функції масив і його розмір, краще робити це структурами. Костиль №2: у вас чомусь масив z виводиться в функції Combination, а не в CombinationAndOutputZ. Може, все ж варто вивід масиву винести з цієї функції і робити за допомогою OutPut?

Костиль №1: також, якщо є можливіть, можете продемонструвати невеличкий приклад?
Костиль №2: виправив, дякую.

10

Re: код програми на Сі.

1. Дивіться другу половину, там, де масиви збираються:
http://upload.wikimedia.org/wikipedia/commons/thumb/c/cc/Merge-sort-example-300px.gif/220px-Merge-sort-example-300px.gif
3.1. Тупий приклад:

void OutOut(std::vector &x)
{
  for( int i=0; i < x.size(); i++ )
    std::cout << x[ i ];
}
Подякували: Logans, Chemist-i2