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

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

2 Востаннє редагувалося koala (24.11.2013 10: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 18:19:19)

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

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

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

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

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

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

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

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

8

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

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

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

9 Востаннє редагувалося Logans (27.11.2013 01: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: виправив, дякую.

"Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."
- Linus Torvalds

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