sekcan
16/05/2007, 02:58
Merhabalar. Aşağıda ödevimin main fonksiyonun bir kısmı var.
Kullanıcı cmd ekranından MatLab formatında matris girecek
(Örn. [6 -2 1 11 ; -2 7 2 5 ; 1 2 -5 -1]).
Bu inputu double arraya atıp print_double_array() fonksiyonuyla yazdırıyorum.
Gayet düzgün bir şekilde yazıyor :
6.000000 -2.000000 1.000000 11.000000
-2.000000 7.000000 2.000000 5.000000
1.000000 2.000000 -5.000000 -1.000000
Program bu aşamada matris diagonally dominant mı diye kontrol edecek (ne anlama geldiğinin bir önemi yok). Eğer öyleyse while döngüsünden çıkıp diğer işlemlere geçecek.
Ama öyle değilse while döngüsünde başa alıp kullanıcıdan tekrar matris ve epsilon değerlerini isteyecek.Ama tam bu noktada program nedense "gets(str)"yi atlıyor ve
kullanıcıdan sadece epsilon değerini istiyor.
print_double_array() fonksiyonu da ekrana sadece "0.000000" yazıyor.
Bunun nedeni ne olabilir? Nasıl çözebilirim?
stdin'in flush edilmesi gerekiyor olabilir mi?
Eğer öyleyse nasıl yapabilirim?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#define SIZE 15
#define T_SIZE 150
int main()
{ char str[T_SIZE];
double temp_matrix[T_SIZE] = {0};
double matrix[SIZE][SIZE] = {0};
int row, column, num_of_elements;
double epsilon = 0.0;
while (1) { printf("Enter the matrix in MatLab format :\n --> ");
gets(str);
printf("Enter the Epsilon : ");
scanf("%lf", &epsilon);
make_matrix(str, temp_matrix, &num_of_elements);
row = get_rows(str);
column = num_of_elements / row;
make_double_array(matrix, temp_matrix, row, column);
print_double_array(matrix, row, column);
if (is_dominant(matrix, row, column)) break;
else printf("Matrix is not diagonally dominant\n\n");
}
print_double_array(matrix, row, column);
return 0;
}
Şimiden herkese teşekkür ederim.:hey:
Kullanıcı cmd ekranından MatLab formatında matris girecek
(Örn. [6 -2 1 11 ; -2 7 2 5 ; 1 2 -5 -1]).
Bu inputu double arraya atıp print_double_array() fonksiyonuyla yazdırıyorum.
Gayet düzgün bir şekilde yazıyor :
6.000000 -2.000000 1.000000 11.000000
-2.000000 7.000000 2.000000 5.000000
1.000000 2.000000 -5.000000 -1.000000
Program bu aşamada matris diagonally dominant mı diye kontrol edecek (ne anlama geldiğinin bir önemi yok). Eğer öyleyse while döngüsünden çıkıp diğer işlemlere geçecek.
Ama öyle değilse while döngüsünde başa alıp kullanıcıdan tekrar matris ve epsilon değerlerini isteyecek.Ama tam bu noktada program nedense "gets(str)"yi atlıyor ve
kullanıcıdan sadece epsilon değerini istiyor.
print_double_array() fonksiyonu da ekrana sadece "0.000000" yazıyor.
Bunun nedeni ne olabilir? Nasıl çözebilirim?
stdin'in flush edilmesi gerekiyor olabilir mi?
Eğer öyleyse nasıl yapabilirim?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h>
#define SIZE 15
#define T_SIZE 150
int main()
{ char str[T_SIZE];
double temp_matrix[T_SIZE] = {0};
double matrix[SIZE][SIZE] = {0};
int row, column, num_of_elements;
double epsilon = 0.0;
while (1) { printf("Enter the matrix in MatLab format :\n --> ");
gets(str);
printf("Enter the Epsilon : ");
scanf("%lf", &epsilon);
make_matrix(str, temp_matrix, &num_of_elements);
row = get_rows(str);
column = num_of_elements / row;
make_double_array(matrix, temp_matrix, row, column);
print_double_array(matrix, row, column);
if (is_dominant(matrix, row, column)) break;
else printf("Matrix is not diagonally dominant\n\n");
}
print_double_array(matrix, row, column);
return 0;
}
Şimiden herkese teşekkür ederim.:hey: