Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 24.11.2022
Сообщений: 29

Алгоритм - диаграмма Насси-Шнейдермана

18.12.2022, 16:27. Показов 1112. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста ход решения алгоритма во вложении. Ответ x = {2, 4, 1, 5, 7, 11}, но почему именно такой?
Изображения
 
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.12.2022, 16:27
Ответы с готовыми решениями:

Диаграмма Насси — Шнейдермана
Кто-нибудь может помочь с созданием диаграммы Насси-Шнейдермана? Program slova; var s, s1, s2, s3, ss: string; i,count:...

Диаграмма Насси Шнейдермана, составить блок схему
Составить программу в которой будет минимум 5 разных блоков

Диаграмма Насси Шнейдермана, составить блок схему
Составить программу которая по трем введенным вами числам определит, могут ли эти числа быть длинами сторон треугольника, и если да, то...

6
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
18.12.2022, 23:38
Цитата Сообщение от Jester223 Посмотреть сообщение
Ответ x = {2, 4, 1, 5, 7, 11}, но почему именно такой?
это вообще невозможно определить пока неизвестно начальное состояние массива.

И сразу спрошу, а в вашем-то решении какой ответ получается?
0
1 / 1 / 0
Регистрация: 24.11.2022
Сообщений: 29
19.12.2022, 00:15  [ТС]
Цитата Сообщение от Sindbad_M Посмотреть сообщение
это вообще невозможно определить пока неизвестно начальное состояние массива.

И сразу спрошу, а в вашем-то решении какой ответ получается?
Я дико извиняюсь, не написал изначальное условие, вот оно: Запишите элементы массива x = {2, 5, 4, 1, 11, 7} после выполнения алгоритма.
Решения у меня нет в том то и дело, я пытаюсь разобраться почему получается такой ответ как в задании, почему меняются элементы в массиве в итоге, изначально не понимаю условие x[i]>x[x+1], ведь если мы берем первый элемент массива (2) и подставляем его вместо i, получается что левое неравенство будет в любом случае всегда меньше чем правое, так как в правом плюсуется единица? Плюс выше написано, что i = 1;5. Но ведь элементов в массиве изначально 6. Либо я туплю и подставляю не то что нужно? Или смотрю не туда куда надо
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
19.12.2022, 01:00
Лучший ответ Сообщение было отмечено Jester223 как решение

Решение

Jester223,
обращение к элементам массива делается так:

ИмяМассива[НомерЭлемента]

Каждый элемент массива ведет себя как обычная переменная. Номер элемента может быть как константой, так и выражением. Например:

A[5] := 10 // в пятый элемент массива А поместили число десять

Или

R := 4
A[R+1] := 10 // то же самое, в пятый элемент массива А помещают число десять. А переменная R как в предыдущей команде получила значение 4, так это значение в переменной R и осталось. Значение переменной R использовалось для вычисления выражения, которое является адресом элемента массива к которому идет обращение.

Адрес элемента и значение элемента - разные вещи.

Если сказанное выше понятно, двигаемся дальше. Если нет, задавайте вопрос как можно подробнее.

Вот как нужно, шаг за шагом, разбирать ваш алгоритм:

1. (второй прямоугольник) видим, что будет выполняться цикл - в переменную i последовательно будут присваиваться значения от 1 до 5 включительно.

1.1 Первая итерация цикла, в переменную i помещено значение 1

1.1.1 (треугольник) выполняется проверка условия. Для этого вычисляется чему равно:
i (оно равно одному)
i+1 (оно равно двум)
x[i] (т.е. x[1], оно равно двум)
x[i+1] (т.е. x[2], оно равно пяти)
и выполняется сравнение "два больше пяти?", ответ - "нет, это ложь", поэтому идем по ветке "нет", там пустые прямоугольники, т.е. никаких действий не происходит.

Обратите внимание, все эти вычисления никак не изменяют ни массив, ни переменную i, переменная i как была равна единице, так и осталась равной единице

1.2 Вторая итерация цикла, в переменную i помещено значение 2

1.2.1 (треугольник) выполняется проверка условия. Для этого вычисляется чему равно:
i (оно равно двум)
i+1 (оно равно трем)
x[i] (т.е. x[2], оно равно пяти)
x[i+1] (т.е. x[3], оно равно четырем)
и выполняется сравнение "пять больше четырех?", ответ - "да, это истина", поэтому идем по ветке "да"

1.2.2 (первый прямоугольник под треугольником)
сначала вычисляются величины:
i (оно равно двум)
x[i] (т.е. x[2], оно равно пяти)
затем величина пять присваивается переменной t, т.е. значение переменной t становится равным пяти

1.2.3. (второй прямоугольник под треугольником)
сначала вычисляются величины:
i (оно равно двум)
i+1 (оно равно трем)
x[i+1] (т.е. x[3], оно равно четырем
затем значение четыре присваивается второму элементу массива, старое значение элемента при этом исчезает.
Только в этом месте массив в первый раз изменился теперь массив x = {2, 4, 4, 1, 11, 7}

1.2.4 (третий прямоугольник под треугольником)
сначала вычисляются величины:
i+1 (оно равно трем)
t (оно равно пяти)
затем значение пять присваивается третьему элементу массива, старое значение элемента при этом исчезает.
В этом месте массив еще раз изменился теперь массив x = {2, 4, 5, 1, 11, 7}

1.3 Вторая итерация цикла, в переменную i помещено значение 3

и т.д.

Шаг за шагом, пока не дойдете до конца. Последнее состояние массива х и есть ответ
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12932 / 6800 / 1820
Регистрация: 18.10.2014
Сообщений: 17,211
19.12.2022, 05:03
Цитата Сообщение от Jester223 Посмотреть сообщение
изначально не понимаю условие x[i]>x[x+1]
Но там совсем не такое условие.
0
1 / 1 / 0
Регистрация: 24.11.2022
Сообщений: 29
19.12.2022, 20:34  [ТС]
Цитата Сообщение от Sindbad_M Посмотреть сообщение
1.1.1 (треугольник) выполняется проверка условия. Для этого вычисляется чему равно:
i (оно равно одному)
i+1 (оно равно двум)
x[i] (т.е. x[1], оно равно двум)
x[i+1] (т.е. x[2], оно равно пяти)
и выполняется сравнение "два больше пяти?", ответ - "нет, это ложь", поэтому идем по ветке "нет", там пустые прямоугольники, т.е. никаких действий не происходит.
Извините, вообще не понимаю, почему x[i]=2 и x[i+1]=5. Ведь у нас i = 1 изначально, туда присвоено значение 1, почему тогда в x[i] будет равно 2?

Добавлено через 12 минут
Цитата Сообщение от Sindbad_M Посмотреть сообщение
1.1.1 (треугольник) выполняется проверка условия. Для этого вычисляется чему равно:
i (оно равно одному)
i+1 (оно равно двум)
x[i] (т.е. x[1], оно равно двум)
x[i+1] (т.е. x[2], оно равно пяти)
и выполняется сравнение "два больше пяти?", ответ - "нет, это ложь", поэтому идем по ветке "нет", там пустые прямоугольники, т.е. никаких действий не происходит.
Цитата Сообщение от Jester223 Посмотреть сообщение
Извините, вообще не понимаю, почему x[i]=2 и x[i+1]=5. Ведь у нас i = 1 изначально, туда присвоено значение 1, почему тогда в x[i] будет равно 2?
Все, понял, 1 - это элемент самого массива к нему обращаемся и смотрим какое там значение, там 2. Аналогично и с 2 элементом - там 5 в массиве. Верно?

Добавлено через 55 минут
Цитата Сообщение от Sindbad_M Посмотреть сообщение
Jester223,
обращение к элементам массива делается так:
ИмяМассива[НомерЭлемента]
Каждый элемент массива ведет себя как обычная переменная. Номер элемента может быть как константой, так и выражением. Например:
A[5] := 10 // в пятый элемент массива А поместили число десять
Или
R := 4
A[R+1] := 10 // то же самое, в пятый элемент массива А помещают число десять. А переменная R как в предыдущей команде получила значение 4, так это значение в переменной R и осталось. Значение переменной R использовалось для вычисления выражения, которое является адресом элемента массива к которому идет обращение.
Адрес элемента и значение элемента - разные вещи.
Если сказанное выше понятно, двигаемся дальше. Если нет, задавайте вопрос как можно подробнее.
Вот как нужно, шаг за шагом, разбирать ваш алгоритм:
1. (второй прямоугольник) видим, что будет выполняться цикл - в переменную i последовательно будут присваиваться значения от 1 до 5 включительно.
1.1 Первая итерация цикла, в переменную i помещено значение 1
1.1.1 (треугольник) выполняется проверка условия. Для этого вычисляется чему равно:
i (оно равно одному)
i+1 (оно равно двум)
x[i] (т.е. x[1], оно равно двум)
x[i+1] (т.е. x[2], оно равно пяти)
и выполняется сравнение "два больше пяти?", ответ - "нет, это ложь", поэтому идем по ветке "нет", там пустые прямоугольники, т.е. никаких действий не происходит.
Обратите внимание, все эти вычисления никак не изменяют ни массив, ни переменную i, переменная i как была равна единице, так и осталась равной единице
1.2 Вторая итерация цикла, в переменную i помещено значение 2
1.2.1 (треугольник) выполняется проверка условия. Для этого вычисляется чему равно:
i (оно равно двум)
i+1 (оно равно трем)
x[i] (т.е. x[2], оно равно пяти)
x[i+1] (т.е. x[3], оно равно четырем)
и выполняется сравнение "пять больше четырех?", ответ - "да, это истина", поэтому идем по ветке "да"
1.2.2 (первый прямоугольник под треугольником)
сначала вычисляются величины:
i (оно равно двум)
x[i] (т.е. x[2], оно равно пяти)
затем величина пять присваивается переменной t, т.е. значение переменной t становится равным пяти
1.2.3. (второй прямоугольник под треугольником)
сначала вычисляются величины:
i (оно равно двум)
i+1 (оно равно трем)
x[i+1] (т.е. x[3], оно равно четырем
затем значение четыре присваивается второму элементу массива, старое значение элемента при этом исчезает.
Только в этом месте массив в первый раз изменился теперь массив x = {2, 4, 4, 1, 11, 7}
1.2.4 (третий прямоугольник под треугольником)
сначала вычисляются величины:
i+1 (оно равно трем)
t (оно равно пяти)
затем значение пять присваивается третьему элементу массива, старое значение элемента при этом исчезает.
В этом месте массив еще раз изменился теперь массив x = {2, 4, 5, 1, 11, 7}
1.3 Вторая итерация цикла, в переменную i помещено значение 3
и т.д.
Шаг за шагом, пока не дойдете до конца. Последнее состояние массива х и есть ответ
Все, вроде бы разобрался, главное следить за итерациями цикла и присваиванием значений к переменным. Спасибо большое.
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
19.12.2022, 20:36
Цитата Сообщение от Jester223 Посмотреть сообщение
Все, понял, ....... Верно?
Скажем так, если ваш итоговый результат совпал с тем что ожидалось, то, скорее всего, поняли. Очень сложно заглянуть в мысли человека, особенно при текстовом обмене сообщениями.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.12.2022, 20:36
Помогаю со студенческими работами здесь

Задание: Представьте алгоритм на псевдокоде и в виде диаграммы Насси-Шнейдермана
В вещественном векторе найти наименьший элемент; заменить его значением произведения отрицательных элементов, расположенных после него и до...

Схемы Насси-Шнейдермана и метод Дамке
Помогите построить схемы Сами задачи я сделал 1. Ввести матрицу A(5,7). Найти и вывести сумму элементов каждой строки и...

Создать две диаграммы Насси-Шнейдермана while по кодам
Коды для заданий составлял сам, возможно не правильны? Буду благодарен исправлениям 1 задание: Определить сумму чисел из произвольной...

Изобразить схему алгоритма методом Насси-Шнейдермана
Учусь на 1 курсе, нужно изобразить схему алгоритма методом Насси-Шнейдермана. Пожалуйста, помогите!uses crt; var s, itog1,...

Обработка строк. Flow-формы и диаграммы Насси-Шнейдермана.
Помогите, пожалуйста, решить задачу: Известно, что слова в предложении отделены пробелами. Сколько слов в предложении. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru