Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125
1

Заполнить массив случайными числами

23.10.2016, 20:57. Показов 2484. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа с массивом крушится или зависает намертво

Программа генерирует массив количеством N символов в диапазоне an..ak. Потом выводит циклически эти цифры на экран.
Массив создается динамически.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <conio.h>
#include <mem.h>
//#include <windows.h>
#include <iostream.h>
#include <cstdlib>
 
int main (void)
{
 int an, ak;
 int n=100;
 int i, N;
 int *a = new int[n];
 setmem(a,sizeof(int)*n,0);
 printf("%s", "Input an, ak, N= ");
 scanf("%f", an, ak, "%i", N);
 a[i]=(an*100+double(rand()%(ak-an)*100))/double(100);
 for(i=0;i<N;i++)
 {
  printf("%5f",a[i]);
 }
 delete[] a;
getch();
 return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2016, 20:57
Ответы с готовыми решениями:

Заполнить массив случайными числами
Есть указатель на динамический массив. Нужно заполнить массив случайными числами. printf(&quot;enter...

Двумерный массив заполнить случайными числами.
Прошу прощения, но сам понять что-то никак. Никогда не был силён в информатике. Необходим двумерный...

Заполнить двумерный массив случайными уникальными числами
Задача: заполнить двумерный массив случайными уникальными числами Добавлено через 8 минут Байт...

Заполнить массив из N элементов неповторяющимися случайными числами
ПОмогите решить вроде простую задачу, но у меня не получается: Заполнить массив из N элементов...

8
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
23.10.2016, 21:25 2
Бред какой-то.

Инициализации рандома нет, спецификатор типа в scanf неверен (как и вся запись), строки 5 и 6 бесполезны, взамен 11 просится #define, double(100) - это 100.0, переменные неинициализированы, стиль кода отвратителен.

Удивительно, сколько грязи можно вместить всего в 25 строк.
0
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125
23.10.2016, 21:53  [ТС] 3
я только начинаю изучать си++, потому стиля программирования у меня нет.
Инициализирую функцию Random()
В качестве аргумента для этой функции использовал разницу между верхней и нижней границей диапазона.
Не понял, что значит не инициализированные переменные, если я их объявил внутри функции. И от компилятора не было сообщений, что есть неиспользуемая переменная.
Результат работы программы тот же -т.е. мертвое зависание. Может проблема с созданием массива? Как мне правильно назначить его границы при вводе с клавиатуры?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <conio.h>
#include <mem.h>
#include <iostream.h>
#include <cstdlib>
 
int main (void)
{
 int an, ak, i, N;
 int n=100;
 int *a = new int[n];
 setmem(a,sizeof(int)*n,0);
 printf("%s", "Input an, ak, N= ");
 scanf("%f", an, ak, "%i", N);
 randomize();
 a[i]=random(ak-an);
 for(i=0;i<N;i++) {
  printf("%2f",a[i]);}
delete[] a;
getch();
 return 0;
}
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
23.10.2016, 22:02 4
Цитата Сообщение от Teapot1488 Посмотреть сообщение
И от компилятора не было сообщений
Смени компилятор, мой обругал каждую вторую строчку твоего кода и ничего не скомпилировал.
Цитата Сообщение от Teapot1488 Посмотреть сообщение
iostream.h
Это уже признак древности =)

Цитата Сообщение от Teapot1488 Посмотреть сообщение
если я их объявил внутри функции
Как минимум в 16й строке "i" у тебя не инициализирована.
Ну а scanf ты используешь в корне неверно.
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
23.10.2016, 22:17 5
rand() инициализируется через srand(). Что там у вас понаписано, мне непонятно.

неинициализированные - пишется именно так как у меня, в одно слово, без пробела и неиспользуемые - это разные вещи. Читайте про инициализацию.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,719
23.10.2016, 22:18 6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
int main()
{
    double an, ak;
    int i,n;
    printf("Input an:");
    scanf("%lf", &an);
    printf("Input ak:");
    scanf("%lf",&ak);
    printf("Input N= ");
    scanf("%d", &n);
    double* a=new double[n];
    srand((unsigned)time(NULL));
    for(i=0;i<n;i++)
        a[i]=double(rand())/RAND_MAX*(ak-an)+an;
    for(i=0;i<n;i++)
        printf("%8.2lf\n",a[i]);
    delete[] a;
    getch();
    return 0;
}
2
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125
23.10.2016, 22:24  [ТС] 7
Какие настройки компилятора нужно выбрать, если у меня RAD Studio 10 Seatle?
Миниатюры
Заполнить массив случайными числами   Заполнить массив случайными числами  
0
3 / 3 / 1
Регистрация: 10.03.2013
Сообщений: 125
23.10.2016, 22:46  [ТС] 8
C++
1
    scanf("%lf", &an);
Что значит сочетание спецификаторов считывания "%lf"?
Я находил описание для какого нибудь одного спецификатора
"%lf" это следует понимать как "считать число целого типа ИЛИ число с плавающей точкой"? (в зависимости от введенных данных)
Программа уходит в бесконечный цикл, если ввести дробное число an или ak.
Миниатюры
Заполнить массив случайными числами  
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
23.10.2016, 22:56 9
Teapot1488, "%lf" следует понимать как "считать число в переменную типа double", что считается - не важно, главное, что бы число было корректно записано.
Что бы считать число в переменную целого типа, есть кучка отдельных спецификаторов.
1
23.10.2016, 22:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2016, 22:56
Помогаю со студенческими работами здесь

Заполнить массив случайными числами и посчитать среднее геометрическое
Суть такова:Заполнить массив случайными числами и посчитать среднее геометрическое. Очень срочно...

Объявить и заполнить двумерный динамический массив случайными числами от 10 до 50 (C++ -> Си)
Помогите переделать код в СИ , а именно все cin cout , заменить на printf и scanf Этот код...

Как заполнить массив из 20 элементов случайными числами в диапазоне [0.99]?
Массив заполняется числами 0-20 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; ...

Вместо ввода элементов в массив заполнить его случайными числами
#include &lt;stdio.h&gt; int main() { int a={0}; int b; int j,i; for (i = 0; i &lt; 3; i = i + 1) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru