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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2017, 23:14   #1
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию [C] Сгенерировать двумерный целочисленный массив а размерностью m*n из случайных чисел вдиапазоне от -x до +y, предусмотрев возможность ручного ввода элементов массива

Сгенерировать двумерный целочисленный массив а размерностью m*n из случайных чисел вдиапазоне от -x до +y, предусмотрев возможность ручного ввода элементов массива.
Антон1990 вне форума Ответить с цитированием
Старый 28.04.2017, 23:20   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы не перепутали "помогите" и "сделайте за меня"?

Покажите свои наработки, конкретные вопросы и т.п.

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.04.2017, 15:39   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Вот, что сделай:

1) для начала, в интернете, найди как генерировать всего-лишь ОДНО число на Си. Покажи скриншот консоли (демонстрация, что код работает).
p.s. примеров там, я тебе скажу, тьма-тьмущая - поэтому этот поиск у тебя займёт минут 5-10.
2) Я так понял, у тебя динамическая память... Но (временно) можно использовать обычную - статическую. Создай массив "а[5][6]" и введи его элементы "вручную".
Продемонстрируй это на скриншоте.

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

первый
Изображения
Тип файла: png рандомно.png (4.2 Кб, 122 просмотров)
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 09:10   #5
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

второй
Изображения
Тип файла: png 2.png (9.1 Кб, 51 просмотров)
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 09:58   #6
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

Антон1990, не хватает Вашего кода)
покажите его - мы подскажем, что подправить
Haric_110 вне форума Ответить с цитированием
Старый 30.04.2017, 10:03   #7
Антон1990
Пользователь
 
Регистрация: 20.03.2017
Сообщений: 48
По умолчанию

1)
Код:
#include <stdio.h>
#include <time.h>
#include <conio.h>
 
int main() {
    int i, r;
 
    srand(time(NULL));;
    for (i = 0; i < 1; i++) {
        r = rand();
        printf("r=");
        printf("%d\n", r);
    }
 
    _getch();
    return 0;
}
2)
Код:
#include <stdio.h>
#include <locale.h>

main ()
{
	int a[5][6], i, j;
	setlocale(LC_ALL,"Russian");
	printf ("Ввод двумерного массива:\n");
	for (i=0;i<5;i++)
	for (j=0;j<6; j++)
	{printf ("a[%d][%d]= ", i, j);
	scanf ("%d", &a[i][j]);}
	
	printf ("Вывод двумерного массива:\n");
	
		for (i=0;i<5;i++)
		{
		for (j=0;j<6;j++)
			printf (" %d ", a[i][j]);
			printf ("\n");
		}
}

Последний раз редактировалось Антон1990; 30.04.2017 в 12:20.
Антон1990 вне форума Ответить с цитированием
Старый 30.04.2017, 10:38   #8
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

хорошо
во-первых, как ввести массив размерностью n x m:
1) объявляется указатель на массив (в случае двумерного массива это два указателя - на нулевую строку и на нулевой элемент нулевой строки)
Код:
	int **rand_arr;
2) затем вводятся значения n и m
3) выделяется память
Код:
	rand_arr = new int *[n];					        // "массив массивов"
	for (int i = 0; i < n; ++i)
		rand_arr[i] = new int[m];					// элементы двумерного массива
Во-вторых, как задать диапазон случайных чисел:
это просто математика. rand() возвращает целые неотрицательные числа, которые нужно ограничить. Минимум нужно просто прибавить, а максимум можно задать как остаток от деления случайного числа на max - min + 1 (с учётом того, что прибавляем минимум его нужно вычесть)
В Вашем случае минимум равен -x, а максимум у
Код:
	for (int i = 0; i < n; ++i)
		for (int j = 0; j < m; ++j)
			rand_arr[i][j] = rand() % (y + x + 1) - x;
если я в чём-то не прав, думаю, меня поправят)

Последний раз редактировалось Haric_110; 30.04.2017 в 11:24. Причина: Исправил формулу для определения верхней границы диапазона случайных чисел
Haric_110 вне форума Ответить с цитированием
Старый 30.04.2017, 10:53   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Так, вроде с динамикой справился (попробуй у себя... Работа с динамическим массивам такая же как и с обычным - это видно по выводу на экран - сравни):

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

int main()
{
	int x, y;
	printf("Vvedite x= ");
	scanf("%d", &x);
	printf("Vvedite y= ");
	scanf("%d", &y);

	int m, n;
	printf("Vvedite m= ");
	scanf("%d", &m);
	printf("Vvedite n= ");
	scanf("%d", &n);

	int i, j;
	srand(time(NULL));
	int **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++)
		{
			a[i][j] = rand();
		}
	}



	// Вывод на экран
	for (i = 0; i < m; i++)
	{
		for (j = 0; j < n; j++)
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}	
		
	// Очистка памяти
	for (i = 0; i < m; i++)
	{
		free(a[i]); 
	}
	free(a);

	_getch();
	return 0;
}
1) Следующий вопрос о генерации случайного числа. Сейчас генерируется "абы какое", а тебе надо конкретные от-х до у.
Вот, что сделай: найди описание "rand()" - как его преобразовать, чтобы выводило случайные числа в указанном диапазоне.
Скриншот покажи.

2) Теперь надо заняться: "предусмотрев возможность ручного ввода элементов массива". Непонятно, эти изменения нужно делать на уровне первоначального ввода (другими словами: пункт меню "Вы хотите ввести вручную или автоматически") или случайная генерация должна быть всегда, а "предусмотрев возможность ручного ввода элементов массива" - это " возможность менять элементы массива уже после rand()"?

Прочитай мой пост 2-а раза.
ura_111 вне форума Ответить с цитированием
Старый 30.04.2017, 10:57   #10
Haric_110
Форумчанин
 
Регистрация: 03.03.2013
Сообщений: 102
По умолчанию

Ну, а что далее - это уже Ваше пространство для манёвра)
Как "предусмотреть возможность ручного ввода элементов"...
можно предложить пользователю выбрать, как он хочет вводить элементы. Например,
"Введите 1, если хотите автоматически сгенерировать массив"
"Введите 2, если хотите вводить элементы самостоятельно"
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