Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 25.11.2013, 21:23   #1
camel5
Пользователь
 
Аватар для camel5
 
Регистрация: 10.11.2013
Сообщений: 28
По умолчанию Найти ошибку в коде (Для данной целочисленной матрицы размером n*m найти матрицу из 0 и 1...) код на C

Задание:Будем называть соседями элемента с индексами i,j некоторой матрицы такие элементы этой матрицы, соответствующие индексы которых отличаются от i и j не более чем на 1.
Для данной целочисленной матрицы размером n*m найти матрицу из 0 и 1 , элемент которой b[i,j] равен 1, когда среди соседей a[i,j] есть не менее двух совпадающих.
Код:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include  "time.h"
#define  M 4
#define  M 4

int main()
{
	int i,j,k=0;
	int A[M][M];
    int B[M][M];
    srand(unsigned(time(0)));
                                       /*строим матрицу A*/
    for(i=0; i<M; i++);
    {
        for(j=0; j<M; j++)
           A[i][j]=rand()%1000/100;
        
	    for(i=0;i<M;i++){                   /*Выводим матрицу А*/
          for(j=0; j<M; j++)
          printf("%6.2f", A[i][j]);
          printf("\n");
		                }

		int k=0;
		if(i>1 && A[i][j]==A[i-1][j])                   /*Если не первая строка*/
			k++;                         /*то сравним текущий элемент с элементом выше текущего*/
		if(i<M && A[i][j]==A[i+1][j])                 /*Если не последняя строка*/
		    k++;                        /*то сравним текущий элемент с элементом ниже текущего*/
		if(j>1 && A[i][j]==A[i][j-1])                 /*Если не первый столбец*/
		    k++;                        /*то сравним текущий элемент с элементом левее текущего*/
		if(j<M && A[i][j]==A[i][j-1])                 /*Если не последний столбец*/
		    k++;                        /*то сравним текущий элемент с элементом правее текущего*/
    }
    for(i=0;i<M;i++){
        for(j=0;j<M;j++)
        {
            if (k>=2)
               B[i][j]=1;
            else
               B[i][j]=0;
            printf("%6.2f", B[i][j]);
            getchar();
        }
    return 0;
  }
}
camel5 вне форума Ответить с цитированием
Старый 26.11.2013, 05:11   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

printf("%6.2f", A[i][j]); совсем целочисленный вывод еще и ; торчит! ужс какая штука...

UPD что за код? вы хоть сами понимали что писали? или это просто набор функций?!

вот вам старт для "вашей" программы. корректный ввод и вывод...
Код:
#include "stdio.h"
#include<iostream>
#include "time.h"
#include <stdlib.h> 
#define  M 3
#define  N 3
using namespace std;
int main()
{
    int i,j,k=0;
	int A[N][M];
    int B[N][M];
    srand(unsigned(time(0)));
                                      
    for(i=0; i<N; i++) 						/*строим матрицу A*/
        for(j=0; j<M; j++)
        	A[i][j]=int (rand() % 1000/100);
   
   
   for(i=0;i<N;i++)			 /*Выводим матрицу А*/
   {                  
        for(j=0; j<M; j++)
        	cout<<A[i][j];
    cout<<endl;
   }
функция нахождения ваших единиц
Код:
int proverka(int A[][M] ,int Ni,int Mj){
    
int i,j;
int mas[8];
int t=0;
int StrI,StpI;
int StrJ,StpJ;
int count;
    
StrI=Ni-1;	
StrJ=Mj-1;
StpI=Ni+1;
StpJ=Mj+1;
 	
if(Ni>=1)
{
	if(Ni==N-1) StpI=Ni;
}
else
	StrI=Ni;

if(Mj>=1)
{
	if(Mj==N-1)	StpJ=Mj;
}
else
 	StrJ=Mj;
 
for(i=StrI;i<=StpI;i++) 
for(j=StrJ;j<=StpJ;j++) 
if((i!=Ni) || (j!=Mj))// не сам элемент
{
mas[t] = A[i][j];
t++;
}
           	

for (i=0;  i<t; i++)
{
count=1;
for(j=i+1;j<t;j++)	
if(mas[i]==mas[j]) count++;
if(count==2) return 1; // если два соседа равны
}
 return 0;   
}
думаю дальше справитесь
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 26.11.2013 в 07:05.
SaLoKiN вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица размером M х N и целое число К(1<=К<=N) .Найти сумму и произведение элементов К-го столбца данной матрицы Richik123 Паскаль, Turbo Pascal, PascalABC.NET 0 31.05.2012 16:19
Обращение матрицы методом разложения её на произведение двух треугольных(найти ошибку в коде) Monomah Общие вопросы C/C++ 0 20.02.2011 18:35
найти ошибку в коде С задача на обратную матрицу Monomah Помощь студентам 0 20.02.2011 17:11
Матрицы. ОЧЕНЬ ВАЖНО !!! Не могу найти ошибку в коде pasha92 Помощь студентам 0 24.12.2009 20:19
Найти последовательность действительных чисел,получающихся при чтении данной матрицы по СПИРАЛИ. anta Общие вопросы C/C++ 17 02.06.2009 17:07


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840