как вывести на экран всю строку в которой находится наибольшей элемент главной диогон

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Кирилл1212
Сообщения: 6
Зарегистрирован: 11 ноя 2017, 02:15

12 дек 2017, 05:25

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <time.h>   //для time(0)
 
#define ROWS 3
#define COLS 3
 
int main()
{
    srand(time(0)); // для инициализации разных последовательностей псевдослучайных чисел
    int i = 0;
    int j = 0;
    int min = 0;
    int matrix[ROWS][COLS];
 
    for(i = 0; i < ROWS; ++i) {
        for(j = 0; j < COLS; ++j)
            matrix[i][j] = rand() % 100+10;//генерация чисел в диапазоне от 1 до 100
    }
 
    min = matrix[0][0];  // поиск
    for(i = 0; i < ROWS && i < COLS; ++i) { //минимального
        if(min > matrix[i][i])  // числа по главное диогонали
            min = matrix[i][i];
    }
 
    for(i = 0; i < ROWS; ++i) { // выводд матрицы
        for(j = 0; j < COLS; ++j)// заполнейно рандомными
            printf("%.2d ", matrix[i][j]); // числами
        printf("\n");
    }
 
    printf("minimum on main diagonal is %d\n", min);
    return 0;
}
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 дек 2017, 10:17

Ну, для начала найти индекс наибольшего элемента диагонали (сейчас там ищется минимальный элемент этой самой диагонали). А потом просто пробежать по строке с найденным индексом и вывести все элементы.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Кирилл1212
Сообщения: 6
Зарегистрирован: 11 ноя 2017, 02:15

12 дек 2017, 10:41

что то сделал выводи строку но не правильно

Код: Выделить всё

include <stdio.h>
#include <stdlib.h>
#include <time.h>   //для time(0)

#define ROWS 3
#define COLS 3

int main()
{
    setlocale(0, "");
    srand(time(0)); // для инициализации разных последовательностей псевдослучайных чисел
    int i = 0;
    int j = 0;
    int min = 0;
    int matrix[ROWS][COLS];

    for(i = 0; i < ROWS; ++i) {
        for(j = 0; j < COLS; ++j)
            matrix[i][j] = rand() % 100+10;//генерация чисел в диапазоне от 1 до 100
    }

    min = matrix[0][0];  // поиск
    for(i = 0; i < ROWS && i < COLS; ++i) { //минимального
        if(min > matrix[i][i])  // числа по главное диогонали
            min = matrix[i][i];
    }
    int minIndex = 0;  // поиск
    for(i = 0; i < ROWS && i < COLS; i++) { //минимального
        if(min > matrix[i][i] < matrix[minIndex][minIndex])  // числа на главной диагонали
           minIndex =i;
    }




    for(i = 0; i < ROWS; ++i) { // выводд матрицы
        for(j = 0; j < COLS; ++j)// заполнейно рандомными
            printf("%.2d ", matrix[i][j]); // числами
        printf("\n");
    }

    printf("minimum on main diagonal is %d\n", min);


    printf("Строка матрицы с минимальным элементом имеет индекс %.2d \n", minIndex);
        printf("Содержимое строки матрицы: \n");
        for(j = 0; j < COLS; j++)
            printf("%.2d ", matrix[minIndex][j]); // числами
        printf("\n");
    return 0;
}
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 дек 2017, 11:22

Боже, что это?

Код: Выделить всё

if(min > matrix[i][i] < matrix[minIndex][minIndex])  // числа на главной диагонали
Результат операции > типа bool ты сравниваешь потом на меньше.

Всё куда проще. Выкини вообще эти циклы и напиши заново. Индекс максимального элемента диагонали находится за один проход без всяких логических излишеств. И обрати внимание, по заданию он должен быть именно максимальным, а не минимальным.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить