Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста устранить ошибку в программе, задачка на массивы 
:(
    Опции темы
kirkakirya
Дата 6.7.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.7.2009

Репутация: нет
Всего: нет



дана матрица A[n][m] и массив B[m]. Элементы первого столбца матрицы A[n][m] упорядочены по убыванию. Включить массив В в качестве новой строки в матрицу, с сохранением упорядоченности последней по элементам первого столбца.
_______________________________________________________________________

Сортировка по убыванию у меня точно правильная. Дело в том, что одна строка "съедается" по ходу выполнения, не пойму почему так происходит.
Если непонятно, то переменная (men) выявляет индекс той строки вместо которой нужно вписать ту строчку. Остальные потом должны по идее сдвигаться, но как я говорю, все строки сдвигаются кроме одной, она затирается.

Код

#include <stdio.h>
#include <conio.h>

void main(void)
{
 int i,j,y,n,m,A[50][50],b,B[50],men=0;
 clrscr();
 printf("Vvedite visotu matricy\n");
 scanf("%d",&n);

 printf ("Vvedite shirinu matricy\n");
 scanf ("%d",&m);
 printf("Zapolnite matricu A\n");

 for (i=0;i<n;i++)
    {
 for (j=0;j<m;j++)
    scanf("%d",&A[i][j]);
    }

    printf ("Zapolnite vector B\n");
    for (i=0;i<m;i++)
     scanf ("%d",&B[i]);


 //Uporyadochivanie
 for (i=0;i<n-1;i++)
    {
        if (A[i+1][0]>A[i][0])
         {
             y=i+1;
             while ((A[y][0]>A[y-1][0])&&(y!=0))
    {
     b=A[y][0];
     A[y][0]=A[y-1][0];
     A[y-1][0]=b;
     --y;   //Konec uporyadochivaniya
    }
         }
    }

    printf("\nMatrica, uporyadochennaya iznachal'no");
    for (i=0;i<n;i++)
        {
        printf("\n");
    for (j=0;j<m;j++)
        printf("%d ",A[i][j]);
        }

        //Serdce

        for (j=0;j<m;j++)
        A[n][j]=0;


        if (B[0]<A[n-1][0])
    {
        for (j=0;j<m;j++)
        A[n][j]=B[j];
    }
        else
{

        i=-1;

        do
        {
        i++;
        men=i;
        }
        while (A[i][0]>B[0]);

        for (i=n;i<men;i--)
    {
        for (j=0;j<m;j++)
        A[i][j]=A[i-1][j];
    }

        for (j=0;j<m;j++)
        A[men][j]=B[j];


}


            printf("\n\nRezul'tat:");
    for (i=0;i<=n;i++)
        {
        printf("\n");
    for (j=0;j<m;j++)
        printf("%d ",A[i][j]);
        }

    getch();
}

PM MAIL   Вверх
Hacknslash
Дата 7.7.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Тааак... Это легче с нуля переписать, чем разбираться...
Старайся писать названия переменных так, чтобы по ним сразу было понятно, за что переменная отвечает. Это раз.
Когда упорядочиваешь матрицу по первому столбцу, логично было бы переставлять не только элементы столбца, а строки целиком. Чисто с точки зрения математики матрицы, у которых поменяли местами два элемента - совершенно разные матрицы. А матрицы, у которых поменяли местами две строки, во многих задачах (например решение СЛУ) можно считать одинаковыми.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0794 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.