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

Функция генерирует одни нули для матрицы - C++

Восстановить пароль Регистрация
 
Tenass
7 / 7 / 0
Регистрация: 21.03.2010
Сообщений: 359
25.01.2012, 23:16     Функция генерирует одни нули для матрицы #1
Написал функцию, которая должна рандомно генерировать матрицу заданых размеров, но она выдает одни нули:
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
double **CreateMatrix() {
 
    int i, j;
    int n, m;
    bool isRnd = true;
    
    cout << "Enter the number of lines of the first array: "; cin >> n;
    cout << "Enter the number of columns of the first array: "; cin >> m;
    
    
 
    double **Result = new double *[n];
    for (i = 0; i<n; i++) {
        Result[i] = new double [m];
    }
 
            srand(time(0));
            printf("Array:\n");
            for (i=0;i<n;i++){
            for (j=0;j<m;j++) {
                    if ( isRnd ) {
                        //Result[i][j] = 0.0;
                        Result[i][j] = rand()%100;
                    }
                    else {                  
                    
                        for (i=0; i<n; i++)
                        for (j=0; j<m; j++) {
                            printf("Input a[%d][%d]: ", i, j);
                            scanf("%d", &Result[i][j]);
                        }
 
                    }
 
                    printf("%3d", Result[i][j]);
                }                   
                printf("\n");
            }
 
    return Result;
    
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2012, 23:16     Функция генерирует одни нули для матрицы
Посмотрите здесь:

C++ Функция генерирует одинаковые случайные числа
Все нулевые элементы матрицы заменить на единицу C++
C++ Функция, которая генерирует число в диапазоне от 0 до числа, которое передается ей в качестве параметра
C++ Как вывести матрицу в которой наибольшее число строк, содержащих одни нули?
C++ Rand() генерирует одни и те же числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
25.01.2012, 23:40     Функция генерирует одни нули для матрицы #2
Tenass, попробуй изменить тип с double на int (понятное дело в new его тоже надо изменить)
Цитата Сообщение от Tenass Посмотреть сообщение
double **Result
bigredcat
364 / 311 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
26.01.2012, 06:33     Функция генерирует одни нули для матрицы #3
Цитата Сообщение от Tenass Посмотреть сообщение
scanf("%d", &Result[i][j]);
...
printf("%3d", Result[i][j]);
В этих функциях спецификатор d это decimal, а не double. И если в scanf это еще может прокатить (если не вводить дробную часть), то в printf - нет. Учитывая, что у вас double, то примерно так нужно:
C++
1
2
scanf("%f", &Result[i][j])
printf("%8.3f", Result[i][j])
Вообще у вас интересная логика организовалась (я убрал и исправил часть кода для ясности):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            for (i=0; i<n; i++) // <-- ???!!!
            {
                for (j=0; j<m; j++)  // <-- ???!!!
                {
                    printf("Input a[%d][%d]: ", i, j);
                    scanf("%f", &Result[i][j]);
                }
            }
        }                                       
    }

Не по теме:

А еще у вас смешивание ввода/вывода в стиле С++ и С.
И используемый у вас стиль с фигурными скобками, на мой взгляд, сложно воспринимать, но это уже только мое мнение.
Но вот отступы у вас явно не в тему организованы.

-=ЮрА=-
Заблокирован
Автор FAQ
26.01.2012, 12:24     Функция генерирует одни нули для матрицы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот Си рандомное заполнение матрицы
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
    int i, j, nRows, nCols;
    printf("Enter number of Rows : ");scanf("%d",&nRows);
    printf("Enter number of Cols : ");scanf("%d",&nCols);
    time_t t;srand(time(&t));
    //Âûäåëÿåì ГЇГ*ìÿòü ïîä ñòðîêè Г¬Г*Г±Г±ГЁГўГ*
    int ** array = (int **)malloc(nRows*sizeof(int));
    for(i = 0; i < nRows; i++)
    {
        //Âûäåëÿåì ГЇГ*ìÿòü ïîä ýëåìåГ*ГІГ» ñòðîêè
        array[i] = (int *)malloc(nCols*sizeof(int));
        for(j = 0; j < nCols; j++)
        {
            //Áóäóò ГЄГ*ГЄ îòð ГІГ*ГЄ ГЁ ïîëîæèò ýëåìåГ*ГІГ»
            array[i][j] = rand()%100 - 50;
            printf("%02d ",array[i][j]);
        }
        printf("\n");
    }
    system("pause");//Ñòîï òî÷êa
    //ГЏГ*ìÿòü Г*ГҐ Г·ГЁГ№Гі, ГўГ±Вё Г°Г*ГўГ*Г® ïðîãðГ*ììГ* 1 Г°Г*Г§ Г°Г*áîòГ*ГҐГІ
    //ãðÿçü Г§Г* Г*ГҐГ© ïî÷èñòèò ГЋГ‘
    return 0;
}
Миниатюры
Функция генерирует одни нули для матрицы  
Yandex
Объявления
26.01.2012, 12:24     Функция генерирует одни нули для матрицы
Ответ Создать тему
Опции темы

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