Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 03:32   #1
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию Для матрицы 8x8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом. (Задание на Си)

Цитата:
Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.
вообще не пойму! что это значит!? (На Си)
Ислам вне форума Ответить с цитированием
Старый 18.05.2011, 04:55   #2
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

Такой вариант написал, подойдет?
Код:
#include <stdio.h>
#include <stdlib.h>

const int N = 3;

int main()
{
	int  arr[N][N] ;
	_Bool  matches[N];
	printf("Ввод элементов матрицы: \n");
	int i,j;
	for(i=1; i<=N; i++)
	{
	   for(j=1; j<=N; j++)
	   {
	  	   printf ("\narr[%d%d] = ", i, j);
		   scanf("%d",&arr[i][j]);
	   }
	}
	// конец ввода
	printf ("\nОбщий вид матрицы:\n");
	int flag;
	for(i=1; i<=N; i++)
	{
	   flag = 0;
	   for(j=1; j<=N; j++)
	   {
          if (arr[i][j] == arr[j][i])
             flag++;
	   	  printf ("arr[%d%d] = %d\t", i, j, arr[i][j]);
	   }
	   if (flag == N)
	     matches[i] = 1;
	   printf ("\n");
	}
	printf("\n");
	for (i=1; i<=N; i++)
	{
	    if (matches[i])
	       printf("\nСовпадают строка и столбец под номером: %d", i);
	}
    return 0;
}
Промежуточный вывод матрицы можно убрать, но думаю стоит оставить его для наглядности
tools вне форума Ответить с цитированием
Старый 18.05.2011, 08:43   #3
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию

И что он выведет? i от 0 до N!? ну, по крайней мере у меня так делает!
Ислам вне форума Ответить с цитированием
Старый 18.05.2011, 08:58   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Массив matches[N] не инициализирован, поэтому там и хранятся случайные значения.
Исправь
Код:
...
int flag;
	for(i=1; i<=N; i++)
	{
           matches[i] = 0;
	   flag = 0;
           ...
должно заработать.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 18.05.2011, 18:32   #5
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию

Цитата:
void el_k(float **mas,int str,int stb)
{
int matr[str]=0;
int n;
for(int i=0;i<str;i++)
{
matr[8]=0;
int k=0;
for(int j=0;j<stb;j++)
{
if(mas[i][j]==mas[j][i])
k++;
}
if(k==str)
matr[i]=1;
printf("\n");
}
for(int i=0;i<str;i++)
{
if(matr[i]==1)
printf("\nСовпадают строка и столбец под номером:%d",i);
}
}
Выбрасывает из проги( вроде все как вы подсказывали...
Ислам вне форума Ответить с цитированием
Старый 18.05.2011, 22:22   #6
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

Если нет явной инициализации массива с постоянной длинной, то он инициализируется нулями, а не случайными значениями. И понятно, что число будет от 1 до N, т.к. размерность нашей квадратной матрицы - N.

Последний раз редактировалось tools; 18.05.2011 в 22:24.
tools вне форума Ответить с цитированием
Старый 18.05.2011, 22:31   #7
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
Если нет явной инициализации массива с постоянной длинной, то он инициализируется нулями, а не случайными значениями. И понятно, что число будет от 1 до N, т.к. размерность нашей квадратной матрицы - N.
Ошибаетесь, как раз таки случайными значенями.
Цитата:
Выбрасывает из проги( вроде все как вы подсказывали...
Код:
 #include <conio.h>
void el_k(float **mas,int str,int stb)
{
int matr[str]=0;
int n;
for(int i=0;i<str;i++)
{
matr[8]=0;
int k=0;
for(int j=0;j<stb;j++)
{
if(mas[i][j]==mas[j][i])
k++;
}
if(k==str)
matr[i]=1;
printf("\n");
}
for(int i=0;i<str;i++)
{
if(matr[i]==1)
printf("\nСовпадают строка и столбец под номером:%d",i);
}
getch();
}
то что обозначено красным, добавь в код, и не будет выкидывать
Базиля вне форума Ответить с цитированием
Старый 18.05.2011, 23:46   #8
tools
Форумчанин
 
Регистрация: 07.10.2008
Сообщений: 213
По умолчанию

Позволю себе не согласится с Вами. Вот выдержка из документа ANSI (ANSI/ISO 9899) для стандарта 1999 года:

Раздел "6.7.8 Initialization"

"10 If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate. If an object that has static storage duration is not initialized explicitly, then:

- if it has pointer type, it is initialized to a null pointer;
- if it has arithmetic type, it is initialized to (positive or unsigned) zero;
- if it is an aggregate, every member is initialized (recursively) according to these rules;" <-- как раз для статических массивов

19 The initialization shall occur in initializer list order, each initializer provided for a particular subobject overriding any previously listed initializer for the same subobject; all subobjects that are not initialized explicitly shall be initialized implicitly the same as objects that have static storage duration."

Выделил те предложения, которые непосредственно могут разрешить наш спор.
tools вне форума Ответить с цитированием
Старый 20.05.2011, 20:56   #9
Ислам
Форумчанин
 
Регистрация: 22.02.2011
Сообщений: 106
По умолчанию

Все! все спасибо! сделал!
тема закрыта)))
Ислам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработать программу для вычисления квадрата суммы элементов матрицы 8x8, составляющих её главную диаго Елена37 Помощь студентам 1 07.04.2011 12:55
Задание на матрицы инцидентности и главные контуры MilanAC Помощь студентам 1 17.03.2011 18:15
Задание на матрицы в C# student tef Помощь студентам 3 17.03.2010 14:37
На главную диагональ матрицы поместить наибольшие элементы этой матрицы mivel Помощь студентам 2 23.12.2009 21:19
формирование матрицы (задание выполненно не могу найти сваю ошибку) КиношкА Помощь студентам 7 11.01.2008 03:50