2016-01-31 6 views
0

Я пытаюсь создать структуру данных для хранения матрицы и написать процедуру для создания квадратной матрицы случайных чисел.Невозможно перебрать все элементы матрицы

Вот мой код. Я странно получаю только 2 числа с плавающей точкой в ​​качестве вывода. Я делаю все это, чтобы реализовать умножение матриц strassen, поэтому я добавил rs, re, cs, ce в struct.

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

typedef struct _matrix { 
    int rs; 
    int re; 
    int cs; 
    int ce; 
    float a[100][100]; 
}matrix; 

void display(matrix m) 
{ 
    int i, j; 

    for (i=m.rs ; i<=m.re ; i++) { 
     for (j=m.cs ; j<=m.ce ; j++) 
      printf("%f", m.a[i][j]); 
     printf("\n"); 
    } 
    printf("\n"); 

    return; 
} 

matrix random_matrix(int n) 
{ 
    matrix random; 
    random.cs = random.rs = 0; 
    random.rs = random.re = n -1; 

    int i, j; 

    for(i=0; i < n; i++){ 
     for(j = 0; j < n; j++) 
      random.a[i][j] = rand(); 
    } 

    return random;  
} 

int main(void) 
{ 
    matrix m1 = random_matrix(3); 
    matrix m2 = random_matrix(3); 
    display(m1); 
    display(m2); 


    return 0; 
} 
+0

Предложение: вызов 'srand (время (NULL));' в 'main()' один раз. –

+0

Генерация случайных чисел не является моей проблемой. Основная проблема с моим кодом заключается в том, что я получаю только 2 float как вывод insterd для получения матриц 3x3. Я не понимаю, где я испортил – emperorspride188

ответ

3

Я думаю, чтобы соответствовать логике, в вашем коде, в random_matrix() функции,

random.rs = random.re = n -1; 

должен быть

random.ce = random.re = n -1; 

В противном случае, в display(), for (i=m.rs ; i<=m.re ; i++) не имеет смысла.

При этом, чтобы увидеть генератор случайных чисел, вы можете позвонить srand(time(NULL)); в main(), перед вызовом функций генерации матрицы.

+1

Простая опечатка: просто избили меня. –

+0

@ emperorspride188 вам действительно нужно изучить базовую отладку, например, изучить значения ваших переменных управления. –

+0

@WeatherVane :). иногда вам просто нужна дополнительная пара глаз, чтобы поймать такие ошибки. :) –

Смежные вопросы