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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2009, 18:48   #1
psihadelic
Пользователь
 
Регистрация: 17.11.2009
Сообщений: 26
По умолчанию Подпрограммы и связаные структуры данных на С++

Добрый день!

Очень сильно нуждаюсь в помощи. Задали кучу домашки, лекции ещё не прочитали, а сделать её нужно за 4 дня.
Нужно знать всё о подпрограммах и о структурах данных.
Надеюсь, что украинский язык тут знают, так как задание на украинском.

Задание:
Написати програми на мовах Паскаль та Сі, які складаються з наступних дій:
1. Опису структури даних, використовуючи пойменований тип, згідно з варіантом (табл. 1).
2. Опису змінної типу, що вказаний в п.1 даного завдання. Якщо у варіанті надане зв’язане представлення даних, то описується вказівна змінна. Якщо векторне – звичайна.
3. Опису змінної індексованого типу з 10 елементів вказаного у варіанті типу даних (табл. 1) та її ініціювання.
4. Для векторного представлення – ініціювання, а для зв’язаного – ініціювання та створення, N елементів описаної структури даних, використовуючи змінну індексованого типу, що описана в п.3 даного завдання, де N – це ціле значення з діапазону від 0 до 9.
5. Видалення M елементів з описаної структури даних, де M – це ціле значення з діапазону від 0 до 15. Виконується тільки для лінійних структур даних.

№ варіанта Мова Структура даних Тип даних
10 Паскаль Лінійна: “Стек” векторне представлення Дійсний
Сі Лінійна: “Черга” зв’язане представлення Цілий


Прошу сказать, где можно про это почитать ну или же поясните, как сей шедевр делать, интересует С++, с Паскалём сам попробую разобраться.

Ну и вот ещё одна лабораторная, с подпрограммами.
Задание:
Написати програму на мові Сі, яка складається з наступних дій:
1. Створення заголовного файлу (з розширенням .h). В файлі описується:
– лінійна структура даних в зв’язаному уявленні (список), елемент якої має тип згідно з варіантом (табл.1);
– відкрита підпрограма (inline-функція) згідно з варіантом (табл.2).
2. Створення основного файлу (з розширенням .cpp), в якому необхідно:
– включити заголовний файл за допомогою директиви препроцесора include;
– описати „підпрограму_1” формування елемента першого списку згідно з варіантом (табл.1);
– описати „підпрограму_2” формування другого списку згідно з варіантом (табл.2). При формуванні використовується inline-функція;
– описати головну програму, в якій застосовуються описані підпрограми, тобто формується перший список за допомогою „підпрограми_1” (кількість елементів згідно з варіантом) та формується другий список за допомогою „підпрограми_2”.

№ варіанта -10
Тип даних елементу списків -long
Кількість елементів 1-го списку - 10
Перший список -Двоспрямований
Спосіб формування елементу 1-го списку -Включення в кінець
psihadelic вне форума Ответить с цитированием
Старый 25.12.2009, 18:49   #2
psihadelic
Пользователь
 
Регистрация: 17.11.2009
Сообщений: 26
По умолчанию

Я даже примеры задания могу выложить, что мне дали, но даже по примеру понять я ничего не могу.

Пример задания1:

void main()
{
//опис змінної, яка містить кількість елементів у черзі
const int SizeOfQueue = 8;

//опис лінійної структури даних «Черга» за допомогою пойменованого типу
struct Queue
{
char elements [SizeOfQueue];
int handle;
};

char rez, i,j;
//опис змінної, яка показує скільки елементів черги необхідно ініціювати
//(значення діапазону від 0 до 9)
int N = 8;
//опис змінної, яка показує скільки елементів черги необхідно видалити
//(значення діапазону від 0 до 15)
int M = 14;
//опис змінної пойменованого типу Queue
Queue MyQueue;
//онулення вказівника поточної позиції читання/запису у черзі
MyQueue.handle =0;
//опис та ініціалізація змінної індексованого типу mas, тип елементів якої
//відповідає типу елементів черги
char mas [10] = {'M', 'y', 'p', 'r', 'o', 'g', 'r', 'a', 'm', '!'};

//організація циклу для ініціювання N елементів черги
for (i = 0; i < N; i++)
//у разі, коли вказівник поточної позиції елементу черги менш за розмір черги,
if (MyQueue.handle < SizeOfQueue) {
//ініціаліалізація елемента черги у позиції, на яку вказує MyQueue.handle(кінець
//черги)
MyQueue.elements [MyQueue.handle] = mas [i];
//збільшення на одиницю вказівника поточної позиції
MyQueue.handle ++;
}

//організація циклу для видалення M елементів черги
for (i = 0; i < M; i++)
//у разі, коли вказівник поточної позиції елементу черги не дорівнює 0, тобто у
//черзі є елементи
if (MyQueue.handle != 0) {
//читання першого елемента черги
rez = MyQueue.elements [0];
//організація циклу, в якому всі елементи черги пересуваються на одну позицію
//до початку
for (j = 0; j <MyQueue.handle; j++)
MyQueue.elements [j] = MyQueue.elements [j + 1];
//зменшення на одиницю вказівника поточної позиції черги
MyQueue.handle --;
MyQueue.elements [MyQueue.handle] = '\0';
}
}
psihadelic вне форума Ответить с цитированием
Старый 25.12.2009, 18:49   #3
psihadelic
Пользователь
 
Регистрация: 17.11.2009
Сообщений: 26
По умолчанию

Пример задания2:
lab_6.h

//описуємо елемент списку, який складається з елементу цілого типу та покажчика на
//наступний елемент
struct Element
{
short data;
Element *pNext;
};

//описуємо відкриту підпрограму, яка повертає значення true, якщо значення елемента
//списку кратне 3
inline bool Check (Element * el)
{
if ((el ->data % 3) == 0)
return true;
else
return false;
}

lab_6.cpp

//підключаємо заголовний файл
#include "lab_6.h"
//описуємо прототипи підпрограм
void CreateElement (Element* &, short);
Element* CreateList (Element*);
void main()
{
int i;
//описуємо та ініціюємо нулем покажчик на перший елемент першого списку
Element* pList1 = 0;
//організовуємо цикл для формування 11 елементів першого списку
for (i = 1; i <= 11; i++)
//викликаємо підпрограму, яка формує один елемент списку, і передаємо у неї перший
//елемент списку і дані для ініціалізації значення елементу списку
CreateElement(pList1, i+ 4);

//описуємо покажчик на перший елемент другого списку
Element* pList2;
//викликаємо підпрограму, яка формує другий односпрямований список за принципом
//включення нових елементи після першого. Передаємо у підпрограму покажчик на
//перший елемент першого списку. Значення для елементів списку обираються з першого
//списку, але тільки ті, які кратні 3.
pList2 = CreateList (pList1);
}

//описуємо підпрограму_1, яка формує один елемент списку, включаючи його у кінець
void CreateElement (Element* & FirstEl, short d)
{
//описуємо зміну, яка використовується для формування нового елементу списку
Element* NewEl;
//розподіляємо пам’ять у купі для нового елементу
NewEl = new Element;
//заносимо у поле даних значення, що є передається у підпрограму
NewEl ->data = d;
//вказуємо, що покажчик на наступний елемент дорівнює нулю, оскільки елемент буде у
//списку останнім
NewEl ->pNext = 0;
//визначаємо місце у списку для нового елементу
//якщо списку немає, тобто покажчик на перший елемент дорівнює 0
if (FirstEl == 0)
//то новий елемент стає першим у списку
FirstEl = NewEl;
else {
//якщо елементи у списку є, то починаємо пошук останнього елементу
Element* CurEl = FirstEl;
while (CurEl ->pNext != 0)
CurEl = CurEl ->pNext;
//елемент, у якого покажчик на наступний елемент дорівнює 0, є останнім
//ставимо новий елемент за останнім
CurEl ->pNext = NewEl;
}
}

//описуємо підпрограму_2 для формування односпрямованого списку із значень елементів
//іншого списку, покажчик на перший елемент якого передається як параметр підпрограми
Element* CreateList (Element* List1)
{
//описуємо та ініціюємо нулем покажчик на перший елемент нового списку
Element* List2 = 0;
//описуємо покажчик на елемент першого списку, що дає можливість пересуватися по
//цьому списку
//ініціюємо покажчик адресою першого елементу першого списку, тобто рухатись будемо
//спочатку списку
Element* CurEl = List1;
//організуємо цикл, в якому перевіряються значення елементів першого списку і
//формуються елементи нового списку
do {
//перевіряємо, чи є значення елементу списку кратним 3, використовуючи inline-
//підпрограму
if(Check (CurEl)) {
//якщо значення елементу задовольняє вимогам, то описуємо елемент нового списку та
//розподіляємо для нього пам’ять у купі
Element* NewEl = new Element;
//заносимо у поле даних нового елементу значення елементу першого списку
NewEl ->data = CurEl ->data;
//визначаємо місце у новому списку для нового елементу
//якщо списку немає, тобто покажчик на перший елемент дорівнює 0
if (List2 == 0) {
//записуємо у поле, яке вказує на наступний елемент, значення 0
NewEl ->pNext = 0;
//таким чином новий елемент стає першим у новому списку
List2 = NewEl;
}

else {
//якщо перший елемент у новому списку є, то новий елемент ставимо у спису після
//першого
NewEl ->pNext = List2 ->pNext;
List2 ->pNext = NewEl;
}
}
//пересіваємося до наступного елементу першого списку
CurEl = CurEl ->pNext;
}
while (CurEl);
//повертаємо з підпрограми покажчик на перший елемент нового списку
return List2;
}
psihadelic вне форума Ответить с цитированием
Старый 14.01.2010, 01:14   #4
SinisterFlash
Новичок
Джуниор
 
Регистрация: 14.01.2010
Сообщений: 1
По умолчанию

НАУ, да?))))
SinisterFlash вне форума Ответить с цитированием
Старый 14.01.2010, 01:24   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

хотите прикол?
а я украинский плохо знаю очень...
и используйте тэг [CODE]на кнопке
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.01.2010, 01:44   #6
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Posso começar a consideração do problema dado só depois da transferência de uma condição na língua clara
Alex_FF вне форума Ответить с цитированием
Старый 14.01.2010, 22:57   #7
evgenij9241
Пользователь
 
Аватар для evgenij9241
 
Регистрация: 14.01.2010
Сообщений: 26
По умолчанию

А што тебе именно не понятно?
-----------------------------Чем смог тем помог.--------------------------------------
evgenij9241 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных на Си STIGGA Общие вопросы C/C++ 1 05.12.2009 00:50
Динамические структуры данных Gigatrest Помощь студентам 3 21.06.2009 14:32