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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2013, 17:46   #1
camel5
Пользователь
 
Аватар для camel5
 
Регистрация: 10.11.2013
Сообщений: 28
По умолчанию Проблемы с кодом написанной матрицы

Задание:Будем называть соседями элемента с индексами 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  N 4
 
int main()
{
    int i,j,i1,j1;
    float A[M][N],B[M][N];
    srand((unsigned int)time(NULL));
    /*строим матрицу 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<N; j++)
        printf("%6.2f", A[i][j]);
        printf("\n");
 
        for(i1=0;i<M;i++){
        for(j1=0;j<M;j++)
        {
            if ((i,j)>=2)
               B[i1][j1]=1;
            else
            B[i][j]=0;
            printf("%6.2f", B[i][j]);
            getchar();
 
        }
    }
 
        {
            int k=0;
               if((B[i1][j1]==B[i1][j1+1])&&(j1+1<M))
                   k++;
               if((B[i1][j1]==B[i1+1][j1+1])&&(i1+1<M)&&(j1+1<M))
                   k++;
               if((B[i1][j1]==B[i1+1][j1]) &&(i1+1<M))
                    k++;
               if((B[i1][j1]==B[i1+1][j1-1]) &&(i1+1<M) &&(j1-1>=0))
                    k++;
               if((B[i1][j1]==B[i1-1][j1-1]) &&(j1-1>=0));
                    k++;
               if((B[i1][j1]==B[i1-1][j1-1]) && (i1-1>=0) &&(j1-1>=0))
                    k++;
               if((B[i1][j1]==B[i1-1][j1+1]) &&(i1-1>=0) &&(j1+1<M))
                    k++;
                    return k;
        }
    }
    return 0;
}
Как устранить ошибку, что при преобразовании "int" во "float'' возможна потеря данных? (в строке 20)
НЕ МОГЛИ Б ПРОВЕРИТЬ ПРАВИЛЬНО ЛИ ВООБЩЕМ НАПИСАН КОД, ТАК КАК ЗАПУСТИТЬ ПРОГРАММУ НЕ ПОЛУЧАЕТСЯ
camel5 вне форума Ответить с цитированием
Старый 24.11.2013, 18:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
B[i1][j1]
У тебя на этот момент i1 и j1 ничему не равны. Или вернее не инициализированны. Поэтому тут происходит выход за пределы допустимой памяти.
Этим переменным нужно присваивать адекватное число, которое позволит попасть в границы массива В
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2013, 06:39   #3
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Код:
if ((i,j)>=2)
Эт чо за условие?
nikmoon вне форума Ответить с цитированием
Старый 25.11.2013, 16:46   #4
camel5
Пользователь
 
Аватар для camel5
 
Регистрация: 10.11.2013
Сообщений: 28
По умолчанию

Цитата:
Сообщение от nikmoon Посмотреть сообщение
Код:
if ((i,j)>=2)
Эт чо за условие?
Условие того, что среди соседей есть не менее двух совпадающих
camel5 вне форума Ответить с цитированием
Старый 25.11.2013, 16:50   #5
camel5
Пользователь
 
Аватар для camel5
 
Регистрация: 10.11.2013
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
У тебя на этот момент i1 и j1 ничему не равны. Или вернее не инициализированны. Поэтому тут происходит выход за пределы допустимой памяти.
Этим переменным нужно присваивать адекватное число, которое позволит попасть в границы массива В
А разве не нужно присваивать значение i и j? После моих изменений у меня все равно не получается:
Код:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include  "time.h"
#define  M 4
#define  M 4

int main()
{
	int proverka(int, int);
    int i,j;
	int A[M][M]={{1,2,3,4},{3,2,2,5},{1,9,3,6},{3,6,2,1}};
    int B[M][M];
    rand();
    /*строим матрицу 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");

        for(i=0;i<M;i++){
        for(j=0;j<M;j++)
        {
            if ((i,j)>=2)
               B[i][j]=1;
            else
            B[i][j]=0;
            printf("%6.2f", B[i][j]);
            getchar();

        }
    }

        {
			int proverka(int i1, int j1);
			{
			int k=0,i1=0,j1=0;
               if((A[i1][j1]==B[i1][j1+1])&&(j1+1<M))
                   k++;
               if((A[i1][j1]==B[i1+1][j1+1])&&(i1+1<M)&&(j1+1<M))
                   k++;
               if((A[i1][j1]==B[i1+1][j1]) &&(i1+1<M))
                    k++;
               if((A[i1][j1]==B[i1+1][j1-1]) &&(i1+1<M) &&(j1-1>=0))
                    k++;
               if((A[i1][j1]==B[i1-1][j1-1]) &&(j1-1>=0));
                    k++;
               if((A[i1][j1]==B[i1-1][j1-1]) && (i1-1>=0) &&(j1-1>=0))
                    k++;
               if((B[i1][j1]==B[i1-1][j1+1]) &&(i1-1>=0) &&(j1+1<M))
                    k++;
                    return k;
			}
       }
    }
    return 0;
}
camel5 вне форума Ответить с цитированием
Старый 25.11.2013, 18:55   #6
nikmoon
Форумчанин
 
Регистрация: 13.11.2013
Сообщений: 149
По умолчанию

Цитата:
Сообщение от camel5 Посмотреть сообщение
Условие того, что среди соседей есть не менее двух совпадающих
Мне видится совсем другое условие )))
nikmoon вне форума Ответить с цитированием
Старый 25.11.2013, 20:43   #7
camel5
Пользователь
 
Аватар для camel5
 
Регистрация: 10.11.2013
Сообщений: 28
Радость

Не могли б подсказать правильно ли составлен последний блок?

Последний раз редактировалось camel5; 25.11.2013 в 20:49.
camel5 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблемы с кодом duh_si Microsoft Office Access 28 10.07.2013 13:45
Проблемы с кодом MrFlaSh Microsoft Office Access 4 03.06.2013 20:49
проблемы с кодом sergio11 C# (си шарп) 2 07.03.2011 19:14
Проблемы с кодом schtefan PHP 1 22.11.2010 13:46
Проблемы с кодом __Demon__ Win Api 0 13.11.2010 17:49