Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
1

Алгоритмы поиска на псевдокоде

25.08.2019, 12:29. Показов 2523. Ответов 12
Метки нет (Все метки)

https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{bmatrix} 8  5  7  5  7  5 \\  7  6  2  4  5  8 \\  2  5  7  1  1  7 \\  4  10  2  8  2  8 \\  2  7  3  7  7  1 \\  8  5  4  9  5  5 \\end{bmatrix}

Подскажите как понять выражение: если A[i][j]=m то q:=i;j:=n+1;i:=n+1; задача дана на псевдокоде
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2019, 12:29
Ответы с готовыми решениями:

Алгоритмы поиска
Разработать проект, выполняющий и наглядно иллюстрирующий поиск наибольшего или наименьшего...

Алгоритмы поиска в C++
Здравствуйте всем, только начал изучать алгоритмы поиска, и в задании "Найти элемент, разность...

Алгоритмы сортировки и поиска
Помогите, пожалуйста!! Нужно выполнить сортировку целочисленного массива (поиск в массиве) из n...

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

12
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 13:05 2
Предположительно, нужно найти индекс строки, в которой имеется число m.
j и i приравниваются к n + 1, где n, как я понимаю, длина массива; чтобы выйти из цикла обработки.

В теории, код должен быть следующий:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define N 6
int main() {
    int mtx[N][N] = {
        {8, 5,  4, 9, 5, 5}, 
        {7, 6,  2, 4, 5, 8}, 
        {2, 5,  7, 1, 1, 7}, 
        {4, 10, 2, 8, 2, 8}, 
        {2, 7,  3, 7, 7, 1}, 
        {8, 5,  4, 9, 5, 5}
    };
    int m = 10;
    
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            if(mtx[i][j] == m)
                q = i, i = N + 1, j = N + 1;
            
    return 0;
}
Неужели это полное условие задачи?
0
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
25.08.2019, 14:54 3
Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
A[i][j]=m то q:=i;j:=n+1;i:=n+1
ЕСЛИ элемент массива с индексами 'i' и 'j' держит в себе число которое равно 'm' то присвоить 'q' значения 'i', 'j' значения 'N'+1, 'i' значения 'j' (т.к. одинаковые), только не известно зачем q и m
1
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
25.08.2019, 19:01  [ТС] 4
Чему будет равно значение переменной q после выполнения алгоритма при n=6,

алг ВКЗ нач /начало программы
ввод цел n /ввод целых чисел в алгоритм
цел таб А [n][n] /ввод значений матрицы
для i от 1 до n /ввод значений строк
для j от 1 до n /ввод значений столбцов
ввод A [i][ j] /запись чисел в матрицу
кц кц /конец цикла окончание записи
q=0; /количество выполненных циклов равно 0
для j от 1 до n /для решения принимаем значения столбца от 1 по n
если А [i][ j]<0 то q= q+ A [i][ j];
кц /конец цикла
рез q / запись результата
кон /конец программы
я вот так решал,
если -92<0 то q = q+ -92 ----- q=-92
если -98<0 то q = -92+( -98) ----- q=-190
если -190<0 то q = -190+( -106) ----- q=-296
если 9<0 то
кц
ответ: -296, ответ неправильный..(( или всю матрицу нужно прогнать?
0
488 / 285 / 128
Регистрация: 30.10.2018
Сообщений: 1,309
25.08.2019, 19:14 5
Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
твет неправильный..(( или всю матрицу нужно прогнать?
это зависит от постановки задачи, скорее всего да, если данны индексы и матрица.
0
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
25.08.2019, 19:29  [ТС] 6
Алг ВК9 нач
Ввод цел n
Цел таб А[n][n]
Цел m:=-1;
для i от 1 до n /ввод значений строк
для j от 1 до n /ввод значений столбцов
если m<A[i][j] то m=A[i][j]
кц кц /конец цикла окончание записи
q:=-1;
для i от 1 до n /ввод значений строк
для j от 1 до n
если m=A[i][j] то q:=i;j:=n+1; i:=n+1;
кц
кц
рез q
кон
точнее так
0
6278 / 4262 / 2454
Регистрация: 18.12.2017
Сообщений: 13,292
25.08.2019, 19:48 7
Цитата Сообщение от Cortas Посмотреть сообщение
В теории, код должен быть следующий:
int mtx[N][N] = {
{8, 5, 4, 9, 5, 5},
скорее всего опечатка. первая строка матрицы: { 8, 5, 7, 5, 7, 5}
Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
алг ВКЗ нач /начало программы
ввод цел n /ввод целых чисел в алгоритм ввод целого числа n (nxn - размер матрицы)
цел таб А [n][n] /ввод значений матрицы объявление целочисленного массива A
для i от 1 до n /ввод значений строк цикл по строкам (в С++ i от 0 до n-1)
для j от 1 до n /ввод значений столбцов цикл по столбцам (в С++ j от 0 до n-1)
ввод A [i][ j] /запись чисел в матрицу
кц кц /конец циклациклов
q=0; /количество выполненных циклов равно 0 инициализация переменной q нулём
для j от 1 до n /для решения принимаем значения столбца от 1 по n - эта строка на мой взгляд не нужна
если А [i][ j]<0 то q= q+ A [i][ j]; //если значение элемента отрицательное, добавляем его к переменной q
кц /конец цикла
рез q / запись результата вывод результата работы программы на экран
кон /конец программы
q - сумма отрицательных значений. учитывая что в матрице таких нет, в конце работы q=0

у Вас была такая строка:
Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
если A[i][j]=m то q:=i
куда она делась ?

Добавлено через 2 минуты
последний вопрос снимается. похоже Вы выложили не то условие.
1
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
25.08.2019, 19:55  [ТС] 8
Первое условие не то, второе условие по заданию а первое относиться к матрице
C++
1
2
3
4
5
 
{-92, 26,  -45, 97}, 
{-98, 63, -59, -123}, 
{-106, 147, -114, -147}, 
{9, 31, -100, -15}
0
6278 / 4262 / 2454
Регистрация: 18.12.2017
Сообщений: 13,292
25.08.2019, 19:58 9
Лучший ответ Сообщение было отмечено Evgeniykondraty как решение

Решение

Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
Первое условие не то, второе условие по заданию а первое относиться к матрице
правильно, с отрицательными первое условие имеет смысл. Вы можете не мешать 2 задачи в одной теме ? определитесь какую из задач Вам нужно решить.
1
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
25.08.2019, 20:01  [ТС] 10
первую задачу по второй позже, в первой задаче я не пойму нужно прорешать все столбцы? или только первый.
0
221 / 148 / 79
Регистрация: 14.03.2016
Сообщений: 459
25.08.2019, 20:07 11
Цитата Сообщение от Yetty Посмотреть сообщение
скорее всего опечатка
Так и есть, таблицу брал с кода страницы, не заметил, что последние числа др.
0
6278 / 4262 / 2454
Регистрация: 18.12.2017
Сообщений: 13,292
25.08.2019, 23:19 12
Лучший ответ Сообщение было отмечено Evgeniykondraty как решение

Решение

Цитата Сообщение от Evgeniykondraty Посмотреть сообщение
в первой задаче я не пойму нужно прорешать все столбцы?
Evgeniykondraty, в первой задаче проходим построчно по массиву до конца и находим максимальный элемент.
затем опять начинаем обход с начала и находим номер строки (q=i) которая содержит максимальный элемент. работа циклов при этом завершается, так как присваивается i=n+1;j=n+1; (а циклы до n-1).

не очень хорошо что это условие не совсем идеально для С++ (в С++ индексация начинается с нуля, а по условию i от 1 до n).

Добавлено через 1 час 10 минут
если Вам нужен код на С++, сначала нужно подправить условие (вообще-то это должен делать Ваш преподаватель):
Алг ВК9 нач
Цел n:=6;
Цел таб А[n][n]
Цел m:=-1;
для i от 0 до n-1
для j от 0 до n-1
если m<A[i][j] то m=A[i][j]
кц кц
q:=-1;
для i от 0 до n-1
для j от 0 до n-1
если m=A[i][j] то q:=i+1;j:=n; i:=n;
кц
кц
рез q
кон

изменения внесены в строку 2 ( вместо Ввод цел n пишем Цел n:=6; ), в промежутки ( везде вместо от 1 до n пишем от 0 до n-1 ) и в строку 12 ( вместо q:=i;j:=n+1; i:=n+1; пишем q:=i+1;j:=n; i:=n; ). после этого уже можно перевести в код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
using namespace std;
 
int main() 
{
    const int n=6;
    int A[n][n] = {
        {8,  5,  7,  5,  7,  5}, 
        {7,  6,  2,  4,  5,  8}, 
        {2,  5,  7,  1,  1,  7}, 
        {4, 10,  2,  8,  2,  8}, 
        {2,  7,  3,  7,  7,  1}, 
        {8,  5,  4,  9,  5,  5}
    };
 
    int m=-1;    
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(A[i][j]>m) m=A[i][j];
                
    int q=-1;            
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(A[i][j]==m) {q=i+1, i=n, j=n;}
            
    cout << q << "\n";              
    
system("pause");
return 0;
}
Данный код выводит номер строки, которая содержит максимальный элемент массива.

Добавлено через 1 час 24 минуты
кроме того, алгоритм, предложенный в условии не самый оптимальный. код может быть компактнее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
 
int main() 
{
    const int n=6;
    int A[n][n] = {
        {8,  5,  7,  5,  7,  5}, 
        {7,  6,  2,  4,  5,  8}, 
        {2,  5,  7,  1,  1,  7}, 
        {4, 10,  2,  8,  2,  8}, 
        {2,  7,  3,  7,  7,  1}, 
        {8,  5,  4,  9,  5,  5}
    };
 
    int m=-1,q=-1;    
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            if(A[i][j]>m) {m=A[i][j];q=i+1;}    
            
    cout << q << "\n";              
    
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 07.06.2017
Сообщений: 80
27.08.2019, 18:44  [ТС] 13
Подробнее разбора я здесь не встречал, Если бы преподаватели преподносили материал столь доходчиво уже бы жили на марсе!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2019, 18:44

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Алгоритмы поиска в линейных структурах
На молочной ферме содержится информация о коров (номер, дата рождения), о доярок (номер, ФИО) и о...

Алгоритмы поиска в структурированных множествах
Добрый вечер! Помогите пожалуйста, с заданием, не нужно его решать, просто расскажите хотя бы, как...

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

Алгоритмы поиска в линейных структурах
На железнодорожном вокзале хранится информация о поездах на текущие сутки (№ поезда, время...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.