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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2020, 03:28   #21
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
for (j = i; j < 5; j++)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 08.06.2020, 12:12   #22
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Спасибо!
Alexalex777 вне форума Ответить с цитированием
Старый 09.06.2020, 02:23   #23
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Новая задачка.
Надо найти числа в матрице которые больше своих соседей отпечатать их и их координаты.
Один вариант получился второй пробую с флагами решить чтоб решение было поменьше.
мат.png
1 ++
Код:
#include<stdio.h>
#define ROW 7
#define COL 7
void my_scanf(int box[][COL]);
void star_matritza(int box[][COL]);
int chek(int box[][COL], int x, int y);
int main(void)
{
	int box[ROW][COL];
	my_scanf(box, ROW, COL);
	star_matritza(box, ROW, COL);
	return 0;
}
///////////////////////////////////////////
void my_scanf(int box[][COL])
{
	int i, j;
	printf("Enter number:\n");
		for (i = 0; i<ROW; i++)
		for (j = 0; j<COL; j++)
			box[i][j] = 0;
	for (i = 1; i<ROW - 1; i++)
		for (j = 1; j<COL - 1; j++)
			scanf("%d", &box[i][j]);
}
////////////////////////////////////////
int chek(int box[][COL], int x, int y)
{
	if (box[x][y]>box[x][y + 1] && box[x][y]>box[x][y - 1] &&
		box[x][y]>box[x - 1][y] && box[x][y]>box[x + 1][y] &&
		box[x][y]>box[x + 1][y + 1] && box[x][y]>box[x - 1][y - 1] &&
		box[x][y]>box[x + 1][y - 1] && box[x][y]>box[x - 1][y + 1])
		return 1;
	else
		return 0;
}
/////////////////////////////////////
void star_matritza(int box[][COL])
{
	int i, j;
	for (i = 1; i<ROW - 1; i++)
		for (j = 1; j<COL - 1; j++)
			if (chek(box, i, j) == 1)
				printf("i=%d j=%d %d\n", i, j, box[i][j]);
}
2 --
Код:
#include<stdio.h>
#define ROW 4
#define COL 4
void star_matriza(int box[][COL]);
int main(void)
{
	int box[][COL] = { { 0,1,2,3},
	{ 6,7,8,4},
	{ 11,12, -1, -2},
	{ -5, -6, -7, -8}};
		star_matriza(box, ROW, COL);
	return 0;
}
////////////////////////////////////////
void star_matriza(int box[][COL])
{
	int i, j,ii,jj,flag;
	for (i = 1; i<ROW - 1; i++)
		for (j = 1; j < COL - 1; j++)
		{
			flag = 1;
			for (ii = i - 1; ii <= i + 1; i++)
			{
				for (jj = j - 1; jj <= j + 1; j++)
				{
					if ((box[i][j] < box[ii][jj]) && (i != ii&j != jj))
					{
						flag = 0;
						break;
					}
					if (flag == 0)
						break;
					else
						printf("row=%d col=%d num=%d\n", i, j, box[i][j]);
				}
			}
		}
	}
Alexalex777 вне форума Ответить с цитированием
Старый 09.06.2020, 03:23   #24
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
void star_matriza(int box[][COL])
{
    int i, j, ii, jj, flag;
    for (i = 0; i < ROW; i++)
        for (j = 0; j < COL; j++) {
            flag = 1;
            for (ii = max(i - 1, 0); ii <= min(i + 1, ROW - 1) && flag; ii++)
                for (jj = max(j - 1, 0); jj <= min(j + 1, COL - 1) && flag; jj++) {
                    if (i == ii && j == jj)
                        continue;
                    if (box[i][j] < box[ii][jj])
                        flag = 0;
                }
            if (flag)
                printf("row = %d col = %d num = %d\n", i, j, box[i][j]);   
        }
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.06.2020, 14:29   #25
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA
А как инициировать max и min ? задать наверное их как параметр получаемый функцией?
после
Код:
 int max ,min ;
ошибку выдает мало параметров функции
Alexalex777 вне форума Ответить с цитированием
Старый 09.06.2020, 20:32   #26
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Так это не переменные, а функции. Если их нет, то добавить:
Код:
#define max(a,b) (((a) > (b)) ? (a) : (b))
#define min(a,b) (((a) < (b)) ? (a) : (b))
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 09.06.2020, 20:34   #27
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

понял спасибо!!
Alexalex777 вне форума Ответить с цитированием
Старый 12.06.2020, 04:32   #28
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

непростое задание
Функция должна получить массив и два числа, координаты числа в массиве и программа должна написать сообщение, если число большее в строке и меньшее в столбике.
Код:
#include <stdio.h>
#define ROW 5
#define COL 5
void myprint(int box[][COL], int rows, int cols);
int check(int box[][COL], int x, int y);
int main(void)
{
	int box[ROW][COL] =
	{ { 10,25,10,12,10 },
	{ 60,70,80,90,10 },
	{ 11,31,13,14,15 },
	{ 16,33,18,19,20 },
	{ 21,56,27,24,25 } }, x, y;
	myprint(box, ROW, COL);
	printf("Enter element row\n");
	scanf("%d", &x);
	printf("Enter element col\n");
	scanf("%d", &y);
	if (check(box, x, y) == 1)
		printf("MAX line and SMALL column.\n");
	if (check(box, x, y) == 0)
		printf("no line and no small column.\n");
	//if (check(box, x, y) &&( x == 1 && y == 0))
	//	printf("MAX line and no small column.\n");
	//if (check(box, x, y) &&( x == 0 && y == 1))
	//	printf("No max line and SMALL column.\n");
	return 0;
}
int check(int box[][COL], int x, int y)
{
	int i;
	for (i = 0; i<5; i++)
		if (box[x][i]>box[x][y]&&i!=y)
				return 0;
	for (i = 0; i<5; i++)
		if (box[i][y]<box[x][y] && i!= x)
				return 0;
	return 1;
}
void myprint(int box[][COL], int rows, int cols)
{
	int i, j;
	for (i = 0; i<rows; i++)
	{
		for (j = 0; j<cols; j++)
			printf("%d,", box[i][j]);
		printf("\n");
	}
}
Alexalex777 вне форума Ответить с цитированием
Старый 12.06.2020, 05:23   #29
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
if (check(box, x, y))
    printf("MAX in row and MIN in column\n");
else
    printf("no MAX in row or no MIN in column\n");
...
int check(int box[][COL], int x, int y)
{
    int i;
    for (i = 0; i < COL; i++)
        if (box[x][i] > box[x][y])
            return 0;
    for (i = 0; i < ROW; i++)
        if (box[i][y] < box[x][y])
            return 0;
    return 1;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 12.06.2020, 13:28   #30
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Спасибо !!
BDA А можно как то сравнить передаваемые функцией два параметра ? это ошибка я так понял.
Код:
if (check(box, x, y) == 1)
Тогда можно написать какое условие из двух выполняется.
Может через
Код:
return 2  return3
?
Или лучше просто сделать отдельные функции на поиск макс числа в строке и минимального в ряде?

Последний раз редактировалось Alexalex777; 12.06.2020 в 13:59.
Alexalex777 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двухмерные массивы yusef95 Помощь студентам 1 09.06.2013 22:12
ДВУХМЕРНЫЕ МАССИВЫ Pandemona18 Паскаль, Turbo Pascal, PascalABC.NET 1 31.03.2011 20:39
Двухмерные массивы lilia2121 Помощь студентам 0 25.05.2010 10:37
про двухмерные массивы alexov Общие вопросы C/C++ 7 07.12.2008 21:03
Двухмерные массивы (С++) Nattka Помощь студентам 2 04.12.2008 21:15