IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Матрицы, Borland C++ for DOS
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста решить задачу:
В задданой матрице удалить методом сдвига столбцы, не содержащие нулей.
К сожалению не имею представления о методе сдвига =(
Заранее благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Неужели никто не знает метод сдвига? mega_chok.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Что непонятно? Проверяешь столбец i на наличие нулей... Если есть хоть один ноль - ничего не делать, если ни одного - то просто сдвигаешь все столбцы справа от удаляемого на один влево... Не забудь уменьшить количество столбцов после сдвига...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Вот есть такое:
Задание удалить из матрицы методом сдвига матрицы содержащие только нечетные элементы. Подскажите где в коде проверяется нечетность, буду под свое модифицировать...
#include <stdio.h>
#include <conio.h>
#define MAX 10

void findrow (int aN, int aM,int *aH,int a[][MAX],int b[MAX]);
void delrow (int aN, int aM,int a[][MAX]);

void main()
{
//int i, j, k, u, N, M, H;
int i, j, N, M, H, *h; //*h-ukazatel' na H
int A[10][10], B[10];
clrscr();
//Uslovie zadachi
printf ( "\n Uslovie postavlennoi zadachi:" );
printf ( "\n Udalit'iz matricy A metodom sdviga");
printf ( "\n stroki, sodergastchie tol'ko nechetnye elementy." );

/*Zapolnenie massiva*/
printf ( "\n \n Vvedite kolichestvo strok i kolonok matricy A," );
printf ( "\n pri uslovii chto kolichesnvo dolgno byt' bol'shie 0 i men'shie 10..." );

do
{
printf ( "\n \n Kolichestvo strok matricy A = " );
scanf ("%d", &N);

if (N<1)
printf ( "\n Nevernoe znachenie! \n Poprobuite snova, uchityvaya chto kolichestvo strok >0." );
else
if (N>10)
printf ( "\n Nevernoe znachenie! \n Poprobuite snova, uchityvaya chto kolichestvo strok <10." );
}
while (N<1 || N>10);

do
{
printf ( "\n Kolichestvo kolonok massiva A = " );
scanf ("%d", &M);

if (M<1)
printf ( "\n Nevernoe znachenie! \n Poprobuite snova, uchityvaya chto kolichestvo kolonok >0." );
else
if (M>10)
printf ( "\n Nevernoe znachenie! \n Poprobuite snova, uchityvaya chto kolichestvo kolonok <10." );
}
while (M<1 || M>10);

printf ("\n Vvod elementov matricy A:\n" );
for (i=0;i<N;i++)
{
printf (" %d stroka:\n",i+1);
for (j=0;j<M;j++)
scanf ("%d", &A[i][j]);
}

clrscr();
//Uslovie zadachi
printf ( "\n Uslovie postavlennoi zadachi:");
printf ( "\n Udalit'iz matricy A metodom sdviga stroki,");
printf ( "\n sodergastchie tol'ko nechetnye elementy.\n");
//Ishodnaya matrica
printf ("\n Ishodnaya matrica: \n");
for (i=0;i<N;i++)
for (j=0;j<M;j++)
{
printf ("%3d",A[i][j]);
if (j==M-1)
printf ("\n");
}

/*Raschetnaya chast*/
H=-1;
h=&H;
// sub (N, M, &H, A, B,1);
// sub (N, M, &H, A, B,2);
findrow (N, M, h, A, B);
delrow (N, M, A);

if (H==-1)
printf ( "\n Iz Matricy A ne udalili ni odnoi stroki.\n" );
else
{
printf ( "\n Iz Matricy A udaliny stroki:\n" );
for (i=0;i<H+1;i++)
printf ("%3d",B[i]);

printf ("\n V rezul'tate imeem Matricy vida: \n");
for (i=0;i<N;i++)
for (j=0;j<M;j++)
{
printf ("%3d",A[i][j]);
if (j==M-1)
printf ("\n");
}

}
printf ("\n Konec resheniya zadachi.");
printf ("\n Dlya vyhoda nazhmite lubuyu klavishu.");
getch();
}

void findrow (int aN, int aM,int *aH,int a[][MAX],int b[MAX])
{
int i, j, k, u;
for (i=0;i<aN;i++)
{
k=0;
for (j=0;j<aM;j++)
if ((a[i][j]%2)==0)
{
break;
}
else
k++;
if (k==aM)
{
*aH++;
b[*aH]=i+1;
}
}
}

void delrow (int aN, int aM,int a[][MAX])
{
int i, j, k, u;

i=0;
do
{
k=0;
for (j=0;j<aM;j++)
if ((a[i][j]%2)==0)
{
i++;
break;
}
else
k++;
if (k==aM)
{
aN=aN-1;
for (u=i;u<aN;u++)
for (j=0;j<aM;j++)
a[u][j]= a[u+1][j];
}
}
while (i<aN);
}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






if ((a[i][j]%2)==0) ...
в функциях findrow и delrow - это и есть проверка элемента на четность...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 16:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name