Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Зара
3 / 3 / 0
Регистрация: 02.11.2010
Сообщений: 54
#1

Написать функцию для поиска максимального элемента в указанной строке матрицы - C++

13.06.2011, 20:55. Просмотров 490. Ответов 6
Метки нет (Все метки)

Всем добрый вечер!
Есть задание к лабораторной работе
Написать функцию, для поиска максимального элемента в указанной строке двумерного массива. Сдвинуть в двумерном массиве все строки циклически вправо на количество элементов равное максимальному элементу в этой строке.
Могу я попросить специалистов проверить правильность написания кода?

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>
#define SIZE_ARRAY 10       //размер массива
#define MAX_INTEGER 10      //максимально допустимое число
int myarray[SIZE_ARRAY][SIZE_ARRAY]; // масив с которым работаем
int _tmain(int argc, _TCHAR* argv[])
{
    int NeedString=0; //необходимая строка - строка с которой работаем
    int max = 0;      //с помощью этой переменной определяем максимальный элемент в строке
    printf("Array:\n");
 
    for (int i = 0; i < SIZE_ARRAY; i++) //заполняем массив случайными числами и одновременно выводим его на экран
    {
        for (int ii = 0; ii < SIZE_ARRAY; ii++)
        {
            myarray[i][ii] = rand()%MAX_INTEGER;
            printf("%3d ", myarray[i][ii]);
        };
        printf("\n");
    }
    printf("Vvedi nomer stroki: ");   //запрашиваем необходимую строку у пользователя..
    scanf("%d", &NeedString);
    while (NeedString <= 0 || NeedString > SIZE_ARRAY) //проверяем
        {
            printf("Vvedi v diapazone ot 1 do %d:  ", SIZE_ARRAY);
            scanf("%d", &NeedString);
            printf("\n");
        }
    NeedString--;
 
    for (int i = 0; i < SIZE_ARRAY; i++)  //ищем максимальное число в строке
    {
        if (myarray[NeedString][i] > max) max = myarray[NeedString][i];
    };
    printf("Max integer in string is %d\n", max); //и выводим его на экран
    printf("Sdvig %d strok na %d element vpravo\n", NeedString+1, max);
    for (int i = 0; i < max; i++) //сдвигаем на нужное число элементов
    {
        int save = myarray[NeedString][SIZE_ARRAY-1];
        printf("%d: ", i+1);
        for (int ii = SIZE_ARRAY-1; ii > 0; ii--)
        {
            myarray[NeedString][ii] = myarray[NeedString][ii-1];
        };
        myarray[NeedString][0] = save;
        for (int i = 0; i < SIZE_ARRAY; i++) printf("%3d ", myarray[NeedString][i]);
        printf("\n");
    };
 
    scanf("%d", &NeedString);
    return 0;
}
Слегка терзают смутные сомнения...
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2011, 20:55     Написать функцию для поиска максимального элемента в указанной строке матрицы
Посмотрите здесь:

Написать функцию поиска максимального и минимального элементов одномерного массива C++
В каждой строке матрицы сменить знак максимального по модулю элемента на противоположный C++
Написать программу ввода в массив 5x4 элемента чисел и поиска в нем максимального значения C++
C++ Создать функцию, возвращающую индексы максимального элемента матрицы
C++ В программе написать функции: вставки элемента, поиска максимального элемента, определения среднего арифметического элементов массива
Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива C++
C++ Функция поиска минимального и максимального элемента массива и их передачи в вызывающую функцию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
582 / 520 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
13.06.2011, 23:41     Написать функцию для поиска максимального элемента в указанной строке матрицы #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
алгоритм вообще не понял ваш,
да и работает не верно

хинт:
а если макс число ==300? будет 100500 циклов?
ищите количество сдвигов как остаток от деления (сдвиг)%(размер массива)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
int maxs(int* arr, int sz) {
    int maxel=arr[0];
    for (int i=0; i<sz; i++)
        if (arr[i]>maxel) maxel=arr[i];
 
    return maxel;
 
}
 
void shiftRt(int* arr, int sz, int val) {
 
    int shift_sz=val%sz;
 
    if (!shift_sz) return;
 
    int *temp=new int[shift_sz];
 
    memmove(temp,arr+sz-shift_sz,shift_sz*sizeof(int));
    memmove(arr+shift_sz,arr,(sz-shift_sz)*sizeof(int));
    memmove(arr,temp,shift_sz*sizeof(int));
}
 
 
int main()
{
    const int n=3;
    int arr[n][n] = {1,2,3,
                         4,5,8,
                         7,8,9};
 
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++)
            std::cout << arr[i][j] << ' ';
 
        std::cout << '\n';
 
    }
 
    std::cout << '\n';
 
    int k=1;
    int m=maxs(arr[k],n);
 
    for (int i=0; i<n; i++)
        shiftRt(arr[i],n,m);
 
 
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++)
            std::cout << arr[i][j] << ' ';
 
        std::cout << '\n';
 
    }
 
 
    getchar();
    return 0;
}
Зара
3 / 3 / 0
Регистрация: 02.11.2010
Сообщений: 54
14.06.2011, 12:11  [ТС]     Написать функцию для поиска максимального элемента в указанной строке матрицы #3
Не получается запустить ваш код.
Вот здесь
C++
1
std::cout << arr[i][j] << ' ';
выдает ошибку
А это как расшифровать?
C++
1
2
3
memmove(temp,arr+sz-shift_sz,shift_sz*sizeof(int));
        memmove(arr+shift_sz,arr,(sz-shift_sz)*sizeof(int));
        memmove(arr,temp,shift_sz*sizeof(int));
OstapBender
582 / 520 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.06.2011, 13:34     Написать функцию для поиска максимального элемента в указанной строке матрицы #4
язык программирования С?
у меня вывод в стиле С++. нужно #include <iostream>

Цитата Сообщение от Зара Посмотреть сообщение
А это как расшифровать?
это основной процесс.
1 - помещаем во временное хранилище с конца строки
2 - перемещаем с начала строки в конец
3 - из хранилища в начало

всё сдвинуто!

и delete[] temp; забыл
Зара
3 / 3 / 0
Регистрация: 02.11.2010
Сообщений: 54
14.06.2011, 17:59  [ТС]     Написать функцию для поиска максимального элемента в указанной строке матрицы #5
СПАСИБО БОЛЬШОЕ!!! РАБОТАЕТ!
А delete[] temp где вписать?
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
14.06.2011, 18:04     Написать функцию для поиска максимального элемента в указанной строке матрицы #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void shiftRt(int* arr, int sz, int val) {
 
        int shift_sz=val%sz;
 
        if (!shift_sz) return;
 
        int *temp=new int[shift_sz]; // выделяем память
 
        memmove(temp,arr+sz-shift_sz,shift_sz*sizeof(int));
        memmove(arr+shift_sz,arr,(sz-shift_sz)*sizeof(int));
        memmove(arr,temp,shift_sz*sizeof(int));
// думаю здесь
     delete [] temp;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2011, 20:18     Написать функцию для поиска максимального элемента в указанной строке матрицы
Еще ссылки по теме:

Написать функцию нахождения максимального значения элемента массива C++
C++ Написать функцию поиска в одномерном массиве элемента, удовлетворяющего условию
C++ Реализовать функцию для нахождения максимального элемента заданной матрицы
C++ Перестановка в каждой строке матрицы максимального элемента и элемента главной диагонали
Написать рекурсивную функцию для вычисления максимального элемента массива из n элементов C++

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

Или воспользуйтесь поиском по форуму:
Зара
3 / 3 / 0
Регистрация: 02.11.2010
Сообщений: 54
14.06.2011, 20:18  [ТС]     Написать функцию для поиска максимального элемента в указанной строке матрицы #7
Благодарствую всем в столь нелегком труде!
Yandex
Объявления
14.06.2011, 20:18     Написать функцию для поиска максимального элемента в указанной строке матрицы
Ответ Создать тему
Опции темы

Текущее время: 07:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru