Функции в Си

Тема в разделе "Общие вопросы по С и С++", создана пользователем Maxxy, 29 окт 2007.

Статус темы:
Закрыта.
  1. Maxxy

    Maxxy Гость

    Пишу задачу и сразу ответ

    Даны 2 квадратные матрицы n-го порядка. Напечатать ту из них, у которой больше сумма элементов в каком-либо столбце!

    Заранее простите за кылды мылды в "cout". В общем кому надо скомпилит и посмотрит(там все зашибись)! Спасибо всем за вашу помощь,особенно "Допишите за меня код(модератор)", в смысле тому кто в скобочках. ВОТЬ <_<

    КОД:


    Код (Text):
     #include <iostream.h>

    void fill(int *p[], int msize, int mnum);
    int mcalc (int *lm1[], int *lm2[], int cn,int msize);
    void mprint (int *lm[],int mn,int msize);

    void main(void)
    {
    int j, n, cn, nmax, **m1, **m2;                                                                                      // n - количество элементов в массиве, cn - номер столбца, nmax - номер искомой матрицы

    n=0;
    while (n < 1) {                                                                                       // ввод n. Запрашиваем, пока не введём число больше 0
    cout << "\n ўўҐ¤ЁвҐ а §¬Ґа­®бвм ¬ ваЁж: ";                                                             // строка запроса
    cin >> n;                                                                                           // чтение введённого числа
    cout << "\n";                                                                                       // перевод строки
    }
    m1=new int *[n];
    for (j = 0; j < n; j++)
    {
    m1[j] = new int [n];
    }                                                                                        // определяем 1-ю квадратную матрицу nХn
    fill (m1,n,1);                                                                                        // вызываем процедуру заполнения 1-й матрицы, куда передаём адрес матрицы, чтобы её можно было менять в теле процедуры, размен матрицы и её номер
    m2=new int *[n];
    for (j = 0; j < n; j++)
    {
    m2[j] = new int [n];
    }                                                                                        // определяем 1-ю квадратную матрицу nХn
    // определяем 2-ю квадратную матрицу nХn
    fill (m2,n,2);                                                                                        // вызываем процедуру заполнения 2-й матрицы, куда передаём адрес матрицы, чтобы её можно было менять в теле процедуры, размен матрицы и её номер

    cn=0;
    while ((cn < 1) && (cn < (n-1))) {                                                                       // ввод cn. Запрашиваем, пока не введём число больше 0 и не больше размера матрицы
    cout << "ўўҐ¤ЁвҐ ­®¬Ґа ўлзЁб«пҐ¬®Ј® бв®«Ўж : ";                                                       // строка запроса
    cin >>cn;                                                                                           // чтение введённого числа
    cout << "\n";                                                                                        // перевод строки
    }

    if (mcalc (m1, m2, cn, n)==1)                                                                            // вызываем процедуру вычисления сумм столбцов массивов. передаём адреса массивов, номер стобца и размер массивов
    mprint(m1,1,n);                                                                                     // если процедура определила первую матрицу - вызываем процедуру вывода матрицы, передавая в неё матрицу №1, 1 и размер матрицы
    else
    mprint(m2,2,n);                                                                                     // если процедура определила вторую матрицу - вызываем процедуру вывода матрицы, передавая в неё матрицу №2, 2 и размер матрицы
    }

    void fill(int *p[], int msize, int mnum)                                                                      // процедура заполнения массива. получаем адрес массива и его длину
    {
    cout << "‡ Ї®«­Ґ­ЁҐ ¬ ваЁжль" << mnum << "...\n";
    for (int ir=0; ir<msize; ir++) {                                                                          // цикл по строкам
    for (int ic=0; ic<msize; ic++) {                                                                    // цикл по столбцам
    cout << "‚ўҐ¤ЁвҐ Ґ«Ґ¬Ґ­в ¬ ваЁжл " << mnum << " (бва®Є " << ir << ", бв®«ЎҐж " << ic << "): "; // строка запроса
    cin >> p[ir][ic];                                                                               // чтение введённого числа
    cout << "\n";                                                                                   // перевод строки
    }
    }
    return;                                                                                               // возврат
    }

    int mcalc (int *lm1[], int *lm2[], int cn,int msize)                                                          // процедура вычисления сумм столбцов массивов. получаем адреса массивов, номер стобца и размер массивов
    {
    int maxm;                                                                                                 // номер искомой матрицы
    int sum;                                                                                                    // разность сумм столбцов 2-х матриц

    sum=0;
    maxm=1;
    for (int ir=0; ir<msize; ir++) {                                                                            // цикл подсчёта         
    sum+=lm1[ir][cn-1]-lm2[ir][cn-1];                                                                       // складывам разницу элементов столбцов 2- матриц
    }  
    if (sum < 0) maxm = 2;                                                                                   // если разница отрицательная, значит сумма столбца 2-й матрицы (вычитаемой), больше
    return maxm;                                                                                                // возврат, возвращаем номер матрицы с большей суммой указанного столбца
    }

    void mprint (int *lm[],int mn,int msize)                                                                      // процедура вывода матрицы
    {
    cout << "‚лў®¤Ё¬ ¬ ваЁжг " << mn << "\n";
    for (int ir=0; ir<msize; ir++) {                                                                            // цикл по строкам  
    cout << "‘ва®Є ь" << ir << ":";                                                                   // вывод номера строки
    for (int ic=0; ic<msize; ic++) {                                                                  // цикл по столбцам
    cout << lm[ir][ic] << " ";                                                                    // вывод элементов строки
    }
    cout << "\n";                                                                                       // перевод строки
    }

    return;                                                                                               // возврат
    }
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Сразу вспоминается мультик "Волк и собака": "Шо? Апять?"
    Уважаемый Maxxy, может Вам стоит купить пива своему одногруппнику, шарящему в программировании, чтобы он помог Вам написать эти чертовы лабы?
     
  3. Maxxy

    Maxxy Гость

    <_<Пасибки за совет! Был бы такой человек,я бы сюда не обращался!:(

    Кстати,забыл

    ОГРОМНОЕ СПАСИБО ЗА 40% ПРЕДУПРЕЖДЕНИЙ! Я так о них мечтал
    :D
    Просто нет сил сдерживать свои эмоции
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-Maxxy+29:10:2007, 10:54 -->
    <span class="vbquote">(Maxxy @ 29:10:2007, 10:54 )</span><!--QuoteEBegin-->Был бы такой человек,я бы сюда не обращался!<_<
    [snapback]83388" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Напиши в "Предложения поработать" и тебе за парочку WMZ все сделают
     
Загрузка...
Статус темы:
Закрыта.

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