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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2017, 15:24   #21
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

как думаете ручной ввод тоже надо в диапазоне производить?
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 15:47   #22
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

Цитата:
Сообщение от Антон1990 Посмотреть сообщение
как думаете ручной ввод тоже надо в диапазоне производить?
как-будто мы задачи придумываем)

если бы придумывал я, то да, нужно было бы вводить в указанном диапазоне. Кроме того, требовалось бы проверить правильность ввода и обрабатывать ошибки
Как вариант, насыщение (когда введённое значение больше верхней границы, оно становится ей равным), или требование повторять ввод до тех пор, пока значение не окажется правильным
Haric_110 вне форума Ответить с цитированием
Старый 30.04.2017, 15:50   #23
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

и как это организовать?
в этом коде?
Код:
#include <malloc.h>
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <conio.h>

int ruchcreate(int **a, int m, int n)
{
	int i, j;
	printf("Ввод двумерного массива:\n");
	a = (int**)malloc(m * sizeof(int*));
	for (i = 0; i < m; i++)  // цикл по строкам
	{
		a[i] = (int*)malloc(n * sizeof(int));
		for (j = 0; j < n; j++)
		{
		printf ("a[%d][%d]= ", i, j);
		scanf ("%d", &a[i][j]);
		}
	}
	
	printf("Вывод двумерного массива:\n");	
		for (i = 0; i<m; i++)
		{
		for (j = 0; j<n; j++)
		printf (" %d ", a[i][j]);
		printf ("\n");
		}
	free(a);
	return 0;
}


main()
{
	int **a;
	int m,n, i, j, x, y, min, max;
	setlocale(LC_ALL, "Russian");
	printf("Введите нижнюю границу диапазона:");
	scanf("%i", &x);
	printf("Введите верхнюю границу диапазона:");
	scanf("%i", &y);
	printf("Ввод размерности двумерного массива:\n");
	printf("Введите количество строк:");
	printf("m=");
	scanf("%i", &m);
	printf("Введите количество столбцов:");
	printf("n=");
	scanf("%i", &n);
	min=-1*x;
 	max=y;
	
	ruchcreate(a, m, n);

	_getch();
	return 0;
}

Последний раз редактировалось Антон1990; 30.04.2017 в 15:52.
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 16:10   #24
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вроде ограничение относится только в случайному вводу, а к ручному такое не распространяется...
ura_111 вне форума Ответить с цитированием
Старый 30.04.2017, 16:13   #25
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А вообще, сделай 2-е функции: 1-а для автоматического заполнения, а 2-а для ручного ввода.
А основной функции "main" будет запрос и через оператор "if" выполнен 1-й или 2-й ввод... После чего вывод на экран (тоже в "main" - чтобы два раза не выводить в разных функциях).
ura_111 вне форума Ответить с цитированием
Старый 30.04.2017, 16:14   #26
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

а если через if a[i][j]>min && a[i][j]<max тогда записывается, иначе введите значение в диапазоне
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 17:01   #27
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

Цитата:
Сообщение от Антон1990 Посмотреть сообщение
а если через if a[i][j]>min && a[i][j]<max тогда записывается, иначе введите значение в диапазоне
можно использовать цикл while внутри внутреннего цикла ввода. условие while - отрицание вашего условия
Haric_110 вне форума Ответить с цитированием
Старый 30.04.2017, 17:21   #28
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

код должен выглядеть так:
Код:
printf("Ввод двумерного массива:\n");
	a = (int**)malloc(m * sizeof(int*));
	for (i = 0; i < m; i++)  // цикл по строкам
	{
		a[i] = (int*)malloc(n * sizeof(int));
		for (j = 0; j < n; j++)
		while (a[i][j]>min && a[i][j]<max)
		{
		printf ("a[%d][%d]= ", i, j);
		scanf ("%d", &a[i][j]);
		}
	}
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 19:16   #29
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

Спасибо Вам большое)
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 19:17   #30
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

Спасибо Вам большое.
Антон1990 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal abc: Дан двумерный массив размерностью 10 на 10 . Найти сумму элементов максимальных в каждом столбце. Artemikkk Помощь студентам 2 06.11.2016 12:49
Сгенерировать случайным образом массив целых чисел из n элементов. ANN4 Паскаль, Turbo Pascal, PascalABC.NET 3 17.10.2015 07:42
Составить программу для ввода двух одномерных массивов А и В размерностью n элементов и вычисления массива С размерностью n-1, каж KalininGleb Помощь студентам 0 10.02.2015 12:45
Дан целочисленный массив X(N,M).среди элементов нечетных столбцов массива найти количество четных чисел. darwin1 Паскаль, Turbo Pascal, PascalABC.NET 1 15.03.2014 17:50
Задание: Сгенерировать и вывести на экран массив А 10x10 случайных реальных чисел в диапазоне от 1 до 9. Определить по А и вывести Don202 Помощь студентам 1 25.09.2013 11:26