Форум программистов, компьютерный форум CyberForum.ru

Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону - C++

Восстановить пароль Регистрация
 
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
02.12.2012, 18:08     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #1
1) Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону [a,b]. Величины N, a и b задаются с клавиатуры. Максимальное значение N=1000.
2) Написать функцию для вывода массива на экран.
3) Написать функцию для поиска номера элемента, подлежащего удалению (Минимальный по абсолютному значению элемент).

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
26
#include <iostream>  
using namespace std;
int main()                                 
 {
    int n,a,b,i,min;
    int A[1000];
    cout <<"Vvedite n<1000: "; cin>>n;
    cout <<"Vvedite a= "; cin>>a;
    cout <<"Vvedite b= "; cin>>b;
 
    for (i=0;i<n;i++)
    {
    A[i] = a+rand()%(b-a)+1;
    cout <<A[i]<<" ";
    }
    cout<<endl;
    min=A[0];
    {
    for(i=1; i<n; i++);
    if A[i]<min then
    min=i;
    }
    cout<<min<<endl;
    system("pause");                   
    return 0;
}
выдаёт error C2061: синтаксическая ошибка: идентификатор "A"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 18:08     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону
Посмотрите здесь:

Сгенерировать массив из N случайных чисел, принадлежащих указанному диапазону C++
C++ Сгенерировать массив целых случайных чисели написать функцию SORT
C++ Написать функцию,которая принимает массив целых чисел
Бинарные файлы. Написать функцию, которая записывает в бинарный файл N случайных вещественных чисел в указанном диапазоне C++
Написать функцию, которая заполняет квадратную матрицу числами по указанному правилу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.12.2012, 18:17     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #2
C++
1
 if A[i]<min then
Такое в паскале есть, но не в c/c++. Правильно так:
C++
1
if (A[i]<min)
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
02.12.2012, 18:27  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #3
Исправила, вот на это
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
26
27
#include <iostream>  
using namespace std;
int main()                                 
 {
    int n,a,b,i,min;
    int A[1000];
    setlocale(LC_ALL, "Russian");
    cout <<"Введите n<1000: "; cin>>n;
    cout <<"Введите a= "; cin>>a;
    cout <<"Введите b= "; cin>>b;
 
    for (i=0;i<n;i++)
    {
    A[i] = a+rand()%(b-a)+1;
    cout <<A[i]<<" ";
    }
    cout<<endl;
    min=A[0];
    {
    for(i=1; i<n; i++);
    if (A[i]<min) then
    min=i;
    }
    cout<<A[min]<<endl;
    system("pause");                   
    return 0;
}
Всё-равно 2 ошибки вылезают:
cpp(22) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "min"
cpp(22) : error C2065: then: необъявленный идентификатор
Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону
Не высвечивается минимальный элемент...
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
02.12.2012, 18:52     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #4
Ну беда...

Уж определитесь в переменной min вы храните индекс минимального элемента или его значение.

C++
1
2
3
4
5
6
7
min = A[0];
for(i = 1; i < n; i++) // точка с запятой тут не нужна
    if (A[i] < min) // then - вообще из другого языка
        min = A[i];
  
    
cout << "\nmin=" << min << endl;
Добавлено через 4 минуты
Число у вас тоже не из того диапазона генерируется, правильнее будет так:

C++
1
A[i] = a + rand() % (b - a + 1);
И перед этим не забыть:
C++
1
srand(static_cast<unsigned int>(time(0)));
Чтобы числа разные генерировались от запуска к запуску.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.12.2012, 19:03     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
26
27
28
29
30
31
32
#include <iostream>  
#include <cstdlib>
using namespace std;
 
int m(int *A, const int n)
{
      int min=0,i; 
      for(i=0; i<n; i++)
     if (A[i]<abs(A[min]))
      min=i;
     return min;
}
 
int main()                                 
 {
    int n,a,b,i,min;
    int A[1000];
    cout <<"Vvedite n<1000: "; cin>>n;
    cout <<"Vvedite a= "; cin>>a;
    cout <<"Vvedite b= "; cin>>b;
 
    for (i=0;i<n;i++)
    {
     A[i] = a+rand()%(b-a)+1;
     cout <<A[i]<<" ";
    }
    cout<<endl;
    
    cout<<A[m(A,n)]<<endl;
    system("pause");                   
    return 0;
}
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
02.12.2012, 19:04  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #6
Ой точно) Спасибо) Просто в задании написано-найти номер минимального элемента. Значение минимального элемента он почему то выводит каждый раз min=-858993460, хотя a и b я ввожу разные....
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.12.2012, 19:05     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #7
В 21 строчке ; после цикла. Ничем не примечательно, однако компилятор это съедает и цикл проходит сам собой, не обращая внимания на то, что ниже.
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
02.12.2012, 19:17  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #8
Помогите пожалуйста ещё вот с этим:
4) Написать функцию для удаления элемента с указанным номером из массива.
5) Написать функцию для добавления указанного элемента в массив на указанную позицию (Максимум – вставить перед первым встреченным отрицательным элементом).
Это продолжение задания. Или просто объясните как можно удалить элемент, а потом вставить =)
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.12.2012, 19:44     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #9
Вставка элементов в обычный массив возможна только посредством сдвига всех последующих ему элементов вправо. Для удаления, соответственно, сдвинуть на позицию влево все идущие после удаляемого.

Добавлено через 12 минут
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
26
27
28
#include <iostream>  
#include <cstdlib>
using namespace std;
 
int main()                                 
 {
    int n = 10;
     int a[n+10];
    for (int i=0; i<n; i++)
     cout<<(a[i]=i)<<" "; //âûâîä Г*Г* ГЅГЄГ°Г*Г*
    cout<<endl;
    int k=33; // ГўГ±ГІГ*âëÿåìûé ýëåìåГ*ГІ
    
     for (int i=0; i<n; i++)
      if(i==5) //ГўГ±ГІГ*ГўГЁГ¬, Г*Г*ïðèìåð, Гў ГЇГїГІГіГѕ ïîçèöèþ
        {
                    for(int j=n; j>i-1; j--) //ñäâèãГ*ГҐГ¬ ГўГЇГ°Г*ГўГ® Г*Г* 1 ïîçèöèþ, ÷òîáû îñâîáîäèòü ìåñòî äëÿ k=33
                      a[j+1]=a[j];
                    a[i]=k; //ГўГ±ГІГ*âëÿåì k
                    n++; //òåïåðü ýëåìåГ*òîâ Гў Г¬Г*Г±Г±ГЁГўГҐ Г±ГІГ*ëî Г*Г* 1 áîëüøå     
        }
     
     for (int i=0; i<n; i++)
     cout<<a[i]<<" "; // âûâîäèì Г*îâûé Г¬Г*Г±Г±ГЁГў Г*Г* ГЅГЄГ°Г*Г*
       
    system("pause");                   
    return 0;
}
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
02.12.2012, 22:01  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #10
Помогите, почему-то максимальный элемент вставляется перед последним отрицательным элементом, а должен перед первым((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
max=0;
    for (i=0; i<n; i++)
    {
        if (A[i]>A[max])
            max=i;
    }
    for (i=0;i<n; i++)
        if (A[i]<0)
            otr=i;
    for (i=0; i<n;i++)
        if (i==otr)
        {
            for (int j=n; j>i-1; j--)
                A[j+1]=A[j];
            A[i]=A[max];
            n++;
        }
        for (int i=0; i<n; i++)
     cout<<A[i]<<" ";
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.12.2012, 22:10     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #11
КИИИ, не проверял, но думаю, что надо так: 10 сменить на:
C++
1
2
3
4
{
  otr=i;
  break;
}
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
02.12.2012, 22:33  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #12
Чёт всё-равно как-то странно работает, то как надо, то что-то лишнее удаляет из массива... И всё-равно ставит MAX перед последним отрицательным элементом
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>  
#include <cstdlib>
using namespace std;
 
int m(int *A, const int n)
{
      int min=0,i; 
      for(i=0; i<n; i++)
     if (abs(A[i])<abs(A[min]))
      min=i;
     return min;
}
 
int main()                                 
 {
    int n,a,b,i,otr,max;
    int A[1000];
    setlocale(LC_ALL, "Russian");
    cout <<"Введите n<1000: "; cin>>n;
    cout <<"Введите a= "; cin>>a;
    cout <<"Введите b= "; cin>>b;
 
    for (i=0;i<n;i++)
    {
     A[i] = a + rand() % (b - a + 1);
 
     cout <<A[i]<<" ";
    }
    cout<<endl;
for (i=0; i<n; i++)
        if(i==m(A,n))
        {
            for (int j=m(A,n); j<n; j++)
                A[j]=A[j+1];
            
            n--;
        }
        for (i=0; i<n; i++)
        {
        cout<<A[i]<<" ";
        }
    cout<<endl;
    max=0;
    for (i=0; i<n; i++)
    {
        if (A[i]>A[max])
            max=i;
    }
    for (i=0;i<n; i++)
        if (A[i]<0)
        otr=i;
        break;
    
    for (i=0; i<n;i++)
        if (i==otr)
        {
            for (int j=n; j>i-1; j--)
                A[j+1]=A[j];
            A[i]=A[max];
            n++;
        }
        for (int i=0; i<n; i++)
     cout<<A[i]<<" ";
    system("pause");                   
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.12.2012, 22:43     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #13
КИИИ, ну, я ж еще скобочки подрисовал, их тоже надо =)
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
02.12.2012, 22:53  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #14
Скобочки не помогли
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.12.2012, 23:57     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #15
Так?
C++
1
2
3
4
5
6
7
8
 if (i==otr)
        {
            int m = A[max];
                for (int j=n; j>i-1; j--)
                A[j+1]=A[j];
            A[i]=m;
            n++;
        }
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
03.12.2012, 00:14  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #16
Нет((( Всё тоже самое выходит(((((
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
03.12.2012, 00:19     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #17
Вроде по заданию все корректно.
Миниатюры
Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону  
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
03.12.2012, 00:52  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #18
Нуу почти. В задании написано, что нужно удалить минимальный элемент. А тут удалено 2: -1 и 2. -1-это min, а вот почему 2 удалилась.... Максимальный элемент правильно вставлен =)
Странно я щас запустила, поставила такие же значения как у Вас и вот что получилось:
Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону
Что-то я с кодом по ходу нахимичила
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
03.12.2012, 01:11     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #19
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Подправил.
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>  
#include <cstdlib>
#include <ctime>
using namespace std;
 
int m(int *A, const int n)
{
      int min=0,i; 
      for(i=0; i<n; i++)
     if (abs(A[i])<abs(A[min]))
      min=i;
     return min;
}
 
int main()                                 
 {
    srand(time(NULL));
     int n,a,b,i,otr,max;
    int A[1000];
    setlocale(LC_ALL, "Russian");
    cout <<"Ââåäèòå n<1000: "; cin>>n;
    cout <<"Ââåäèòå a= "; cin>>a;
    cout <<"Ââåäèòå b= "; cin>>b;
 
    for (i=0;i<n;i++)
    {
     A[i] = a + rand() % (b - a + 1);
 
     cout <<A[i]<<" ";
    }
    cout<<endl;
    int mm = m(A,n);
for (i=0; i<n; i++)
        if(i==mm)
        {
            for (int j=m(A,n); j<n; j++)
                A[j]=A[j+1];
            
            n--;
        }
        for (i=0; i<n; i++)
        {
        cout<<A[i]<<" ";
        }
    cout<<endl;
    max=0;
    for (i=0; i<n; i++)
    {
        if (A[i]>A[max])
            max=i;
    }
    for (i=0;i<n; i++)
        if (A[i]<0)
        {
          otr=i;
        break;
          }
    for (i=0; i<n;i++)
        if (i==otr)
        {
            int m = A[max];
                for (int j=n; j>i-1; j--)
                A[j+1]=A[j];
            A[i]=m;
            n++;
        }
        for (int i=0; i<n; i++)
     cout<<A[i]<<" ";
    system("pause");                   
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2012, 01:18     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону
Еще ссылки по теме:

Напишете функцию, генерирующую три случайных числа C++
C++ Написать функцию, которая из заданного массива удаляет блок элементов по указанному диапазону индексов
Написать функцию, проверяющую передаваемые параметры и генерирующую в случае надобности подходящее исключение C++

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

Или воспользуйтесь поиском по форуму:
КИИИ
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 22
03.12.2012, 01:18  [ТС]     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону #20
Урааа!!! Спасибо Вам ОГРОООМНОЕ!!! Вы потратили на меня много времени =) 1 лабораторная из 10 готова

Пожалуйста)
(BumerangSP)
Yandex
Объявления
03.12.2012, 01:18     Написать функцию, генерирующую массив из N случайных чисел, принадлежащих указанному диапазону
Ответ Создать тему
Опции темы

Текущее время: 17:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru