41 Востаннє редагувалося ur_naz (31.12.2019 17:04:28)

Re: Перевірка впорядкованості елементів одновимірного масиву

і що не так? яка різниця між тим. що треба, і тим що є?

42

Re: Перевірка впорядкованості елементів одновимірного масиву

pluszz написав:

Якшо я пишу дурню прошу поправити може треба використати динамічний масив. I for замість do while

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

43

Re: Перевірка впорядкованості елементів одновимірного масиву

тут функціонал - здати і забути =)

44

Re: Перевірка впорядкованості елементів одновимірного масиву

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

45

Re: Перевірка впорядкованості елементів одновимірного масиву

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

#include <iostream>
#include <stdio.h>
#define MAX 50
int main()
{
    int *m = new int[MAX];
    int n;
    std::cout<<"Заповніть масив. Ввід закінчиться якщо введене число буде == 0  \n";
    for(int i=0;i<MAX;i++)
        {
            std::cin>>n;
            if(n==0)
                {
                    break;
                }
            m[i]=n;
        }
    if (m[0]<m[1])
        {
            for(int i=0;i>MAX;i++)
                {
                    if(m[i-1]>m[i])
                    {
                        std::cout<<"No";
                        return 0;
                    }
                }
            std::cout << "Yes>>";
        }

46

Re: Перевірка впорядкованості елементів одновимірного масиву

    if (m[0]<m[1])
        {
            for(int i=0;i>MAX;i++)
                {
                    if(m[i-1]>m[i])
                    {
                        std::cout<<"No";
                        return 0;
                    }
                }
            std::cout << "Yes>>";
        }

нічого не забув?

47 Востаннє редагувалося P.Y. (31.12.2019 17:31:06)

Re: Перевірка впорядкованості елементів одновимірного масиву

Akos_Bond написав:

Я почала спочатку, як ви мені і порадили, але змінилося мало що..

#include <iostream>
#include <stdio.h>
#define MAX 50
int main()
{
    unsigned int i, j, n = 0;
    int m[MAX], t;
    do
    {
        printf("m[%i]=", n);
        scanf_s("%i", &m[n]);
    }
    while ((m[n++]) && (n != MAX));
    n = (m[n-1]) ? n : --n;
    for (i = 0; i < n - 1; i++)
    {
        if (m[i] < m[i + 1])
            printf("Yes>>");
        else if (m[i + 1] < m[i])
            printf("Yes<<");
        else
            printf("No");
    }
    system("pause");
    return 0;
}

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

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

Отже, що треба робити в циклі: порівняти два сусідні елементи і запам'ятати результат. «Запам'ятати» означає, що вам потрібна додаткова змінна, куди цей результат записуватиметься (напр., це може бути змінна типу int, куди ви записуєте 0, 1 і т.д. залежно від варіанту кінцевої відповіді — 0 означає «не знаю», 1 означає «зростаючий», 2 означає «спадаючий» і т.д.). При цьому, в кожному повторі циклу вам треба враховувати, яке значення лежить у цій змінній з результатом (наприклад, якщо поточна пара елементів іде в зростаючому порядку, але перед цим у змінну було записано, що порядок був спадаючим, то результат буде «невпорядкований»).

А вже після того, як цикл завершиться, робите вибір за значенням змінної-результату і виводите відповідь.

(Це один з можливих підходів, хоча я бачу й інші варіанти розв'язку).

48

Re: Перевірка впорядкованості елементів одновимірного масиву

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

49

Re: Перевірка впорядкованості елементів одновимірного масиву

ur_naz написав:
    if (m[0]<m[1])
        {
            for(int i=0;i>MAX;i++)
                {
                    if(m[i-1]>m[i])
                    {
                        std::cout<<"No";
                        return 0;
                    }
                }
            std::cout << "Yes>>";
        }

нічого не забув?

Тикніть  носом я вкурсі шо ви втім краще тямете.  Тут неописаний варіант де є кілька одинакових чисел підряд (мені ліньки)

50

Re: Перевірка впорядкованості елементів одновимірного масиву

просто уважно прочитай завдання і знайди чого в тебе нема

51 Востаннє редагувалося plusxx (31.12.2019 17:40:28)

Re: Перевірка впорядкованості елементів одновимірного масиву

ur_naz написав:

просто уважно прочитай завдання і знайди чого в тебе нема

Там нема виводу "Yes<<"
Я ж неможу викласти готовий код тут так не прийнято. Інакше я просто не доганяю.

52

Re: Перевірка впорядкованості елементів одновимірного масиву

навіщо, все одно він не правильний. навіть ТС це зрозуміла

53

Re: Перевірка впорядкованості елементів одновимірного масиву

ur_naz написав:

навіщо, все одно він не правильний. навіть ТС це зрозуміла

#include <iostream>
#include <stdio.h>
#define MAX 50
int main()
{
    int *m = new int[MAX];
    int n;
    std::cout<<"Заповніть масив. Ввід закінчиться якщо введене число буде == 0  \n";
    for(int i=0;i<MAX;i++)
        {
            std::cin>>n;
            if(n==0)
                {
                    break;
                }
            m[i]=n;
        }
    if (m[0]<m[1])
        {
            for(int i=0;i>MAX;i++)
                {
                    if(m[i-1]>m[i])
                    {
                        std::cout<<"No";
                        return 0;
                    }
                }
            std::cout << "Yes>>";
        }
    else if (m[0]>m[1])
        {
            for(int i=0;i<MAX;i++)
                {
                    if(m[i]<m[i+1])
                    {
                        std::cout<<"No";
                        return 0;
                    }
                }
            std::cout<<"Yes>>";
        }
    return 0;
}

Запустіть у себе.

54

Re: Перевірка впорядкованості елементів одновимірного масиву

Akos_Bond написав:

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

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

Єдина перевага динамічного масиву — можливість зробити його як-завгодно великим. Що могло б мати сенс у якомусь реальному проекті, але в рамках цього навчального завдання, гадаю, буде зайвим.

55

Re: Перевірка впорядкованості елементів одновимірного масиву

поспішиш - людей насмішиш... *JOKINGLY*
Та невже так складно вмикнути мізки? Ок, новий рік, нема часу, щоб подумати... так йдіть до столу...

56 Востаннє редагувалося plusxx (31.12.2019 17:58:38)

Re: Перевірка впорядкованості елементів одновимірного масиву

Akos_Bond написав:

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

То використайте нединамічний нема нїякої різниці в результаті.

57

Re: Перевірка впорядкованості елементів одновимірного масиву

ur_naz написав:

поспішиш - людей насмішиш... *JOKINGLY*
Та невже так складно вмикнути мізки? Ок, новий рік, нема часу, щоб подумати... так йдіть до столу...

MAX-1

58

Re: Перевірка впорядкованості елементів одновимірного масиву

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

чи може це я неправильно розумію завдання???
на мою думку масив зростає в такому випадку: 2,4 6,7,8,9;
спадає - 8,7,5,3,2,1;
неупорядкований - 2,4,6,5,7,3,2,1

59

Re: Перевірка впорядкованості елементів одновимірного масиву

pluszz написав:
ur_naz написав:

навіщо, все одно він не правильний. навіть ТС це зрозуміла

#include <iostream>
#include <stdio.h>
#define MAX 50
int main()
{
    int *m = new int[MAX];
    int n;
    std::cout<<"Заповніть масив. Ввід закінчиться якщо введене число буде == 0  \n";
    for(int i=0;i<MAX;i++)
        {
            std::cin>>n;
            if(n==0)
                {
                    break;
                }
            m[i]=n;
        }
    if (m[0]<m[1])
        {
            for(int i=0;i>MAX;i++)
                {
                    if(m[i-1]>m[i])
                    {
                        std::cout<<"No";
                        return 0;
                    }
                }
            std::cout << "Yes>>";
        }
    else if (m[0]>m[1])
        {
            for(int i=0;i<MAX;i++)
                {
                    if(m[i]<m[i+1])
                    {
                        std::cout<<"No";
                        return 0;
                    }
                }
            std::cout<<"Yes>>";
        }
    return 0;
}

Запустіть у себе.

Ну і в чому перевага динамічного виділення пам'яті, якщо це виділення робиться разово й розмір задається константою?
В такому вигляді це нічим не краще за фіксований масив у локальній змінній, хіба що трохи більше зайвого коду.

Якась користь з динамічного масиву була б у тому випадку, якби щоразу по досягненні кінця динамічного масиву виділявся більший блок, усі дані зі старого масиву переписувались у новий, а старий видалявся — тоді це справді мало б якусь практичну перевагу...

60

Re: Перевірка впорядкованості елементів одновимірного масиву

Akos_Bond написав:

на мою думку масив зростає в такому випадку: 2,4 6,7,8,9;
спадає - 8,7,5,3,2,1;
неупорядкований - 2,4,6,5,7,3,2,1

тобто відомо яким може бути масив? як це зафіксувати?