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

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

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

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

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

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

я думаю надо ввести оператор выбора switch

вот что у меня получилось
Код:
#include <malloc.h>
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <conio.h>
main ()
{
	int n,m, i, j, x, y;
    setlocale(LC_ALL,"Russian");
    printf("Введите нижний диапазон:");
    scanf("%i",&x);
    printf("Введите верхний диапазон:");
    scanf("%i",&y);
	printf ("Ввод размерности двумерного массива:\n");
	printf("Введите количество строк:");
	printf("n=");
    scanf("%i",&n);
    printf("Введите количество столбцов:");
    printf("m=");
    scanf("%i",&m);
	
	srand(time(NULL));
	int **a = (int**)malloc(m * sizeof(int*));
	for (i = 0; i < n; i++)  // цикл по строкам
	{
		a[i] = (int*)malloc(n * sizeof(int));
		for (j = 0; j < m; j++)
		{
			a[i][j] = -1*x+rand() % (x+y + 1);
		}
	}
		
	printf ("Вывод двумерного массива:\n");
	for (i=0;i<n;i++)
	{
	for (j=0;j<m;j++)
	{
	printf (" %d ", a[i][j]);
	}
	printf ("\n");}
	for (i=0;i<n;i++)
	{
	free(a[i][j]);}
	free(a);

	_getch();
	return 0;
}

Последний раз редактировалось Вадим Мошев; 30.04.2017 в 13:51.
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 11:50   #12
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

В правилах форума есть требование оформлять код как код "["CODE][/CODE"]")

Цитата:
я думаю надо ввести оператор выбора switch
Это хороший способ для обработки выбора пользователя.

Цитата:
a[i][j] = -1*x+rand() % (x+y + 1);
Пара замечаний:
1.) оператор "унарный минус" намного эффективнее операции умножения на -1, лучше написать -x, чем -1*x.
2.) В общем виде это выглядит следующим образом:
Код:
rand() % (max - min + 1) + min
Haric_110 вне форума Ответить с цитированием
Старый 30.04.2017, 12:12   #13
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

подскажите как передать этот код в функцию?

Код:
srand(time(NULL));
int **a = (int**)malloc(m * sizeof(int*));
for (i = 0; i < n; i++) // цикл по строкам
{
a[i] = (int*)malloc(n * sizeof(int));
for (j = 0; j < m; j++)
{
a[i][j] = -1*x+rand() % (x+y + 1);
}
}

printf ("Вывод двумерного массива:\n");
for (i=0;i<n;i++)
{
for (j=0;j<m;j++)
{
printf (" %d ", a[i][j]);
}
printf ("\n");}
for (i=0;i<n;i++)
{
free(a[i][j]);}
free(a);
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 12:31   #14
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

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

**a, n, m, x, y
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 13:54   #16
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Код:
#include <malloc.h>
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <conio.h>

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


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

	_getch();
	return 0;
}
ura_111 вне форума Ответить с цитированием
Старый 30.04.2017, 13:59   #17
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

У меня такой херни не было (это ты придумал от себя):

1.jpg
ura_111 вне форума Ответить с цитированием
Старый 30.04.2017, 14:07   #18
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

это не нужно?
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 14:19   #19
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Пробуй. Если программа будет работать корректно, значит всё ОК.
Тестируй программу при разных комбинациях: и когда матрица квадратная и когда нет, и когда диапазон от 0-ля и когда с отрицательных чисел начинается, и когда пользователь вводит x<y (и когда вводит оба отрицательными)....
Короче, иногда тестирование занимает больше времени чем написание кода.
ura_111 вне форума Ответить с цитированием
Старый 30.04.2017, 14:48   #20
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

Замечание не по программе, а по русскому языку:
говорят не "Введите верхний/нижний диапазон", а "Введите верхнюю/нижнюю границу диапазона"
Haric_110 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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