掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
このプログラムを実行するには? (ID:51634)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
どうしても分からなくて悩んでいます。 以下に示すプログラムをビルドしますと debug assertion failed!という警告が出て実行することができません。 どうしてでしょうか?どなたかご教授願えませんか。 プログラミング環境はwindows vc++ 6.0です。 #include "stdafx.h" #include <stdio.h> #define M 4 main(int argc, char *argv[]) { double a[M][M]; double b[M]; double c[M]; double l[M][M]; double u[M][M]; double x[M]; int i,j,k; FILE *fp; fp = fopen(argv[1], "r"); /* ファイルより入力行列を読み込む*/ for(i = 0; i < M; i++){ for(j = 0; j < M; j++){ fscanf(fp,"%lf",&a[i][j]); } fscanf(fp,"%lf",&b[i]); } fclose(fp); for(i = 0; i < M; i++){ /* L行列、U行列を1と0で初期化*/ for(j = 0; j < M; j++){ u[i][j] = 0; if(i == j) l[i][j] = 1; else l[i][j] = 0; } } for(i = 0; i < M; i++){ for(j = i; j < M; j++){ /* U行列の生成*/ u[i][j] = a[i][j]; for(k = 0; k < i; k++){ u[i][j] -= u[k][j] * l[i][k]; } } for(j = i+1; j < M; j++){ /* L行列の生成*/ l[j][i] = a[j][i]; for(k = 0; k < i; k++){ l[j][i] -= u[k][i] * l[j][k]; } l[j][i] /= u[i][i]; } } for(i = 0; i < M; i++){ /* c行列の生成*/ c[i] = b[i]; for(j = 0; j < i; j++){ c[i] -= l[i][j] * c[j]; } } for(i = M-1; i >= 0; i--){ /* x行列の生成*/ x[i] = c[i]; for(j = M-1; j > i; j--){ x[i] -= u[i][j] * x[j]; } x[i] /= u[i][i]; } printf("入力行列\n"); /* 入力行列の出力*/ for(i = 0; i < M; i++){ for(j = 0; j < M; j++){ printf("%10.5lf ",a[i][j]); } printf("%10.5lf\n",b[i]); } printf("\nL行列\n"); /* L行列の出力*/ for(i = 0; i < M; i++){ for(j = 0; j < M; j++){ printf("%10.5lf ",l[i][j]); } printf("\n"); } printf("\nU行列\n"); /* U行列の出力*/ for(i = 0; i < M; i++){ for(j = 0; j < M; j++){ printf("%10.5lf ",u[i][j]); } printf("\n"); } printf("\n"); for(i = 0; i < M; i++){ /* 解の出力*/ printf("x%d = %10.5lf\n",i,x[i]); } }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.