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

Массивы,генератор псевдослучайных чисел. - C++

Восстановить пароль Регистрация
 
Kawar
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 14
26.03.2012, 21:52     Массивы,генератор псевдослучайных чисел. #1
Всем привет,помогите разобраться с 2 задачами.
1) Дана последовательность из n вещественных чисел. Найти наиболее длинную подследовательность из подряд идущих нулей.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{ double *a, k; int ps0(0),s(0);
cout<<"vvedite razmernost masiva";
cin>>k;
randomize();
a=new double [k];
    for (int i=0; i<k; i++)
              a[i]=random(100);
for (int i(0),m=0; i<k; i++)
{
    if (a[i]==0) m++;
    else m=0;
    if (ps0<m) ps0=m;;
}
      while (s<=ps0)
{
        cout<<0;
        s++;
}
 delete[]a;
getch();
 
        return 0;
}
выводит постоянно пс из одного нуля.

2) Для квадратной вещественной матрицы A размером n найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.

Добавлено через 1 час 5 минут
..up.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2012, 21:52     Массивы,генератор псевдослучайных чисел.
Посмотрите здесь:

Генератор псевдослучайных чисел - проблема. C++
Генератор псевдослучайных чисел. C++
генератор псевдослучайных чисел... C++
C++ Генератор псевдослучайных чисел.
C++ Генератор псевдослучайных чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raikerian
9 / 9 / 1
Регистрация: 10.05.2011
Сообщений: 101
26.03.2012, 23:46     Массивы,генератор псевдослучайных чисел. #2
Для генерации случайных чисел подключайте библиотеки stdlib.h и time.h
Затем в начале функции main для включения генерации неповторяющейся следует написать srand(time(NULL));
сама генерация в промежутке [x;y]:
rand()%(y-x+1)+x
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
26.03.2012, 23:53     Массивы,генератор псевдослучайных чисел. #3
Raikerian, у ТС код на Builder
Raikerian
9 / 9 / 1
Регистрация: 10.05.2011
Сообщений: 101
26.03.2012, 23:55     Массивы,генератор псевдослучайных чисел. #4
Цитата Сообщение от MrCold Посмотреть сообщение
Raikerian, у ТС код на Builder
Ну тогда не знаю)

Вот если что вторая задача на C++. Думаю по алгоритму не сложно на билдер переделать:
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
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
    setlocale(LC_ALL, "");
    srand(time(NULL));
    int n;
    cout << "Введите n: ";
    cin >> n;
    int A[100][100],
        min = 100,
        max = 0,
        kmin, kmax,
        i, j;
    cout << "\nИсходный массив:" << endl;
    for (i=0; i<n; ++i)
    {
        for (j=0; j<n; ++j)
        {
            A[i][j]=rand()%20-6;
            // Находим наименьший элемент и его столбец (номер)
            if (A[i][j]<min)
            {
                min = A[i][j];
                kmin=j;
            }
            // Находим наибольший элемент и его строку (номер)
            if (A[i][j]>max)
            {
                max = A[i][j];
                kmax=i;
            }
            // Выводим массив на экран
            cout << A[i][j] << "\t";
        }
        cout << endl << endl;
    }
    // Находим скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом
    int scal = 0;
    for (i=0; i<n; ++i)
        scal += A[kmax][i]*A[i][kmin];
    cout << "\nОтвет:" << endl
         << "Скалярное произведение = " << scal << endl;
    // Задержка экрана
    cin.sync();
    cin.get();
    return 0;
}
Kawar
1 / 1 / 0
Регистрация: 10.03.2012
Сообщений: 14
28.03.2012, 00:56  [ТС]     Массивы,генератор псевдослучайных чисел. #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
33
34
35
36
37
38
39
40
41
42
43
44
{int **a,nmax,nmin,scal(0);
randomize();
int n;
cout<<"zadaite razmernost";
cin >>n;
a=new int* [n];
for(int i=0; i<n; i++)
        a[i]=new int[n];
        for(int i=0; i<n; i++)
           {
           for(int max(0),min(100),j=0; j<n; j++)
             {
               a[i][j]=random(5);
        //находим максмиальный элемент строки и запоминаем номер этой строки
                if (a[i][j]>max)
                     {
                      max= a[i][j];
                      nmax=i;
                     }
        //находим минимальный номер столбца и запрминаем номер этого столбца
                if (a[i][j]<min)
                     {
                     min=a[i][j];
                     nmin=j;
                     }
                     cout << a[i][j]<<"\t";
             }
               cout<<"\n";
            }
               for(int i=0; i<n; i++)
               {
                      for(int j=0; j<n; j++)
                      scal=scal+a[nmax][j]*a[j][nmin];
               }
 
                     cout<<"skalzrnoe proizvedenie= "<<scal<<"\n";;
             cout<<"nmin"<<nmin<<"\n"<<"nmax"<<nmax;
             delete[] a;
        getch();
 
 
 
        return 0;
}
Написал вторую задачу,но при проверке на калькуляторе не сходится ответ с тем что выдает программа,может кто нибудь проверить-ошибка в коде или это уже я лажаю с калькулятором?
Yandex
Объявления
28.03.2012, 00:56     Массивы,генератор псевдослучайных чисел.
Ответ Создать тему
Опции темы

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