Матрица 4х2

Тема в разделе "Общие вопросы по С и С++", создана пользователем нини, 14 июн 2013.

  1. нини

    нини New Member

    Регистрация:
    14 июн 2013
    Сообщения:
    1
    Симпатии:
    0
    помогите пож-та разобраться.
    поставлена задача: Задана вещественная матрицаN[4][2]. Переставить вторую и третью строку и найти максимальный элемент в каждой строке из этих строк.
    необходимы два варианта решения, первый с помощью указателей. вот есть такой вариант решения, если можно покритикуйте, если что не так B) буду благодарна :blink:

    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    void main()
    {
    int i, j;
    float m[4][2];
    for (i = 0; i < 4; i++)
    {
    for (j = 0; j < 2; j++)
    {
    printf("string - %d, column - %d \n", i+1, j+1);
    scanf("%f",&m[j]);
    }
    }
    int s=2; //номер строки
    float tmp[2]={m[s-1][0],m[s-1][1]}; //сохраняем 2-ю строку;
    s-1 - т.к. считается с 0
    m[s-1][0]=m[0];m[s-1][1]=m[1]; //во 2-ю строку записываем 3-ю строку
    m[0]=tmp[0];m[1]=tmp[1]; //в 3-ю строку записываем сохраненную 2-ю
    float max;
    for (i = 0; i < 4; i++)
    {
    max = m[0]; // инициализируем переменную max первым
    числом из строки массива
    for (j = 0; j < 2; j++)
    {
    if(max < m[j])
    {
    max = m[j];
    }
    }
    // вывод максимально числа
    printf("\n в строке %d max = %10.2f \n", i+1, max);
    }
    getch(); //ожидаем нажатия клавиши
    }

    а далее необходимо решить эту же задачу с использованием двух функций. В главной функции(main()) с помощью датчика случайных чисел задать два массива, соответствующие варианту, передать каждый из массивов во вторую функцию(для каждого массива свой вызов функции). Алгоритм второй функции соответствует вычислениям, проводимым с массивами. Результаты передаются в главную функцию, где он и выводятся на экран монитора.
    подскажите, как и с чего начинать?
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    начни с заполнения массивов случайными числами
    гугл -> CPP rand (одной из ссылок будет cplusplus.com и там есть пример)
     
  3. toptolik77

    toptolik77 New Member

    Регистрация:
    19 июн 2013
    Сообщения:
    1
    Симпатии:
    0
    был на компе пример, сейчас поищу
     
  4. Monarh

    Monarh Active Member

    Регистрация:
    14 фев 2009
    Сообщения:
    34
    Симпатии:
    0
    Максимум можно находить, поскольку в каждой строке всего по 2 элемента, сразу сравнивая элементы строки:
    Код (C++):
    float max;
    for (i = 0; i < 4; i++) {
    max = m[i][0] > m[i][1] ? m[i][0] : m[i][1]; // читается так: если m[i][0] > m[i][1], то max = m[i][0], иначе max = m[i][1]
    ...
    }
    А с указателями, если Я правильно понял суть задачи, это выделение через new и тогда перестановка строк это просто поменять указатели на 2 и 3 строки местами:
    Код (C++):
    float* mp[4];
    for (i = 0; i < 4; i++)
    mp[i] = new float[2];
    перестановка 2 и 3 строки
    Код (C++):
    float* mp_tmp = mp[1];
    mp[1] = mp[2];
    mp[2] = mp_tmp;
    или если можно использовать С++, а не чистый Си, то можно сделать так:
    Код (C++):
    // Подключаем библиотеку
    #include <algorithm>
    // а в коде main'а
    std::swap( mp[1], mp[2]); // это для указателей
    // И для статической матрицы тоже можно использовать swap
    std::swap( mp[1][0], mp[2][0]); // переставляем первые элементы 2 и 3 строк
    std::swap( mp[1][1], mp[2][1]); // переставляем вторые элементы 2 и 3 строк
     
Загрузка...
Похожие Темы - Матрица 4х2
  1. fatpunk
    Ответов:
    0
    Просмотров:
    1.137
  2. phobiaxx
    Ответов:
    1
    Просмотров:
    1.278
  3. vladis222
    Ответов:
    1
    Просмотров:
    1.285
  4. LudmilaUt
    Ответов:
    0
    Просмотров:
    1.384
  5. Монопо
    Ответов:
    0
    Просмотров:
    2.017

Поделиться этой страницей