みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

プログラミングに関する問題が解けません;;

1 「ファイルの入出力」
以下のプログラムはdata.txtのデータを読み込み,画面に出力するものです.
下記のプログラムの######を埋めて完成させよ.

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

int main(void){

    char dummy[128], filename[128];
    FILE *fp;
    char x;

 sprintf(filename,"data.txt");

    fp=fopen(filename, "r");
    if(#####(1)####) {
       printf("ファイル%s が見つかりません\n",filename);
       return(-1);
     }
while(#########(2)############){
putchar(x);
}
fclose(fp);
return(0);
}

2 構造体を用いたプログラム

名前と点数用のメンバを持つ構造体dataを宣言しなさい。
また、名前と点数を表示する関数hyoujiを完成させよ。

#include <stdio.h>

(1)

void hyouji(###(2)###, int no);

int main(void){
struct data member[3] = {{"伊藤", 71},{"小林", 81},{"山田", 67},};
hyouji(member, 3);
}

void hyouji(####(3)####, int no){
int i;
for(i=0; i<no; i++){
printf("%s:%d\n", ###(4)###);
mem++;
}
}


3 「2次元配列を使った行列の四則演算」

次のプログラムは、2次元配列の和を求め結果を表示するためのものである.
関数 mat_tasu()の中身を完成させよ.
ただし関数 mat_tasu()は引数を持たない関数とします.

#include<stdio.h>

int ma[2][2]={{1,2}, {3,4}};
int mb[2][2]={{5,6}, {7,8}};
int mc[2][2];

void mat_tasu(void);


int main(void)
{
int i,j;

mat_tasu();
for (i=0; i<2; i++){
for (j=0; j<2; j++)
printf("%3d", mc[i][j]);
putchar('\n');
}
return (0);
}
/*行列の和の計算 */
void mat_tasu(void)
{

     (1)

}
各問題の(1)や(2)みたいになってるところに当てはまるプログラミングを教えてください!
一問だけでもいいので分かる方いましたら、回答お願いいたします!

投稿日時 - 2011-01-25 12:01:09

QNo.6473594

すぐに回答ほしいです

質問者が選んだベストアンサー

1-1 if だから何かを判定しているんですよね。オープン出来なかったのは何かですね。
1-2 while だからループですよね。ファイルから1文字読み込んだ値が適切かどうかでしょうか。

2-1 何かinclude か変数の定義でしょうか?
2-2 2-2 と2-3 は同じですね。宣言と定義ですので。んでこの関数が呼ばれている所を探すと、ここにどんな型が入るのか分かりそう

2-4 おそらく配列の個々の値でしょうね。(ヒント:ここは値が複数?)

3-1 mc = ma * mb でしょうね。具体的には行列の計算なんですが・・・。


いかにも課題って感じですね。プログラムの楽しみもへったくれもココから見いだせません。まっ、がんばって。

投稿日時 - 2011-01-25 12:55:59

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

おっと, 1 の (2) は処理系によらない書き方ができそうだ. 多分, この問題を出した人間が期待する解答にはならんけど.
単純に getc ではダメなんだよな~.

投稿日時 - 2011-01-25 23:36:18

ANo.3

みなさん騙されてはいけません.
1 の (1) をよ~く見てください. この if でチェックすべきは「ファイルが存在するかどうか」ですよ. 「ファイルがオープンできたかどうか」ではありません. つまり, 「ファイルはあるけど諸事情でオープンできない」ときにはこの if で引っかかってはいかんのです. で, それをこの 1行で書くことはできません.

ちなみにその次の (2) も書きようがなかったりする (厳密に言えば「動かない処理系があっても文句の言えない」プログラムにはできる).

投稿日時 - 2011-01-25 18:54:45

ANo.2

これ課題でしょ。自分で考えないと後々困ると思いますが。ヒントだけ。
1.「fopen」「戻り値」で検索。
 2番目は
http://www1.cts.ne.jp/~clab/hsample/IO/IO14.html
 を参照
2.は以下を参照。
http://www.mapee.jp/cpp/post_30.html
 その際、文字列を格納する配列はSJISならば文字数×2+1(文字列終端を示す'\x0')分の領域が必要。「hyouji(member, 3);」のところでhyouji関数に構造体配列の先頭アドレスを渡しているのでhyouji側では「->」で参照しなければならない。
3.関数内でi,jを宣言して2重ループにして足せばいいのでは。

投稿日時 - 2011-01-25 13:22:29

あなたにオススメの質問