1 Востаннє редагувалося Replace (01.12.2012 09:13:21)

Тема: Допомога з рішенням задачі, послідовність елементів

Завдання: Вхідна послідовність складається із таких елементів 0 5 7 35 1 9 48 3.

#include<stdio.h>
#include<conio.h>
#define n 10
void vyv();
void ins();
int mas[n]={42, 5, 30, 36, 25, 10, 37, 49, 0, 0}, i, j, tmp;
main()
{
clrscr();
vyv(); ins(); vyv();
bioskey(0);
}


void ins()
{
 for (i = 1; i < n; i++)
 {
  tmp = mas[i];
  for (j =  i-1; (j >= 0) && (mas[j] > tmp); j--)
   mas[j+1] = mas[j];
   mas[j+1] = tmp;
 }
}

void vyv()
{for(i=0; i<n; i++) 
printf("%2d ", mas[i]); 
printf("\n");
}

Програма виконується але вчитель докопався до mas[j+1] = tmp; і сказав що треба це змінити але я не розумію на що! Допоможіть будь ласка!!! П.С. Помилку ще обкреслю на зображенні!

Post's attachments

QSe44PRhRoA.jpg 37.24 kb, 349 downloads since 2012-11-16 

2

Re: Допомога з рішенням задачі, послідовність елементів

А з яких міркувань треба замінити?

3

Re: Допомога з рішенням задачі, послідовність елементів

Я сам не знаю! Сказав замінити, не правильно чи що івсе!

4

Re: Допомога з рішенням задачі, послідовність елементів

Можливо ваш викладач мав на увазі замінити запис i-1 на i-- або --i?

5

Re: Допомога з рішенням задачі, послідовність елементів

Та нє він сказав що лиш той рядок треба поміняти на щось а я не можу зрозуміти на що саме!

6 Востаннє редагувалося yooll (16.11.2012 22:48:56)

Re: Допомога з рішенням задачі, послідовність елементів

Наскільки я зрозумів, це сортування вставками. Тоді треба так, тобто опустити рядок нижче:

 for (i = 1; i < n; i++)
 {
   tmp = mas[i];
   for (j =  i-1; (j >= 0) && (mas[j] > tmp); j--)
   {
       mas[j+1] = mas[j];
   }
   mas[j+1] = tmp;
 }
Подякували: adamans2

7 Востаннє редагувалося truesupport (16.11.2012 22:54:25)

Re: Допомога з рішенням задачі, послідовність елементів

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

адд

код

for (j =  i-1; (j >= 0) && (mas[j] > tmp); j--)
   mas[j+1] = mas[j];
   mas[j+1] = tmp;

виконує те саме що і код

for (j =  i-1; (j >= 0) && (mas[j] > tmp); j--)
   {
       mas[j+1] = mas[j];
   }
   mas[j+1] = tmp;

прото друге написано нормально, ну а перше, хмм, просто написано.

Подякували: yooll, adamans2

8

Re: Допомога з рішенням задачі, послідовність елементів

але він сказав що замість цього виразу   mas[j+1] = tmp треба було поміняти на щось інше! Дякую за допомогу!!!

9 Востаннє редагувалося adamans (16.11.2012 23:04:53)

Re: Допомога з рішенням задачі, послідовність елементів

То має бути метод сортування!!! І вирахувати час роботи алгоритму!

10

Re: Допомога з рішенням задачі, послідовність елементів

truesupport написав:

прото друге написано нормально, ну а перше, хмм, просто написано.

Дійсно, я написав те ж саме)) Сам не помітив через дивне оформлення.
Тоді, по ідеї, програма працювала правильно. Тобто потрібно уточнити, що саме треба змінити.

11

Re: Допомога з рішенням задачі, послідовність елементів

Підкреслив що це не правильно mas[j+1] із рядка mas[j+1] = tmp;

12

Re: Допомога з рішенням задачі, послідовність елементів

adamans написав:

Підкреслив що це не правильно mas[j+1] із рядка mas[j+1] = tmp;

Чому неправильно? j - глобальна змінна.
Програма сортує масив чи ні?

13

Re: Допомога з рішенням задачі, послідовність елементів

так виконується

14

Re: Допомога з рішенням задачі, послідовність елементів

Так навіщо змінювати, якщо все працює?

15

Re: Допомога з рішенням задачі, послідовність елементів

сам не знаю але викладач сказав що треба ось голову ламаю!

16 Востаннє редагувалося adamans (16.11.2012 23:29:18)

Re: Допомога з рішенням задачі, послідовність елементів

та ладно я трошки зміню по ваших порадах! Всім дуже дякую!!!

17

Re: Допомога з рішенням задачі, послідовність елементів

adamans написав:

сам не знаю але викладач сказав що треба ось голову ламаю!

Зробіть наступне:
1. Нормально відформатуйте код (відступи, дужки, і т.д.)
2. Перевірте на кількох прикладах правильність роботи.
3. Покажіть викладачу ще раз і попросіть уточнити, навіщо змінювати правильно працюючу програму.

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