C言語初心者の大学1年生です。
C言語初心者の大学1年生です。
C言語初心者の大学1年生です。これらの課題に全く手が付けられなくてとても困っています。どなたかご教示ください。宜しくお願いします。
(引用開始)
課題1
課題内容: 指定のファイルを読み込み 左右反転の処理をしてからPPMのヘッダをつけて出力するプログラムを作りなさい
ヒント
画像を読み込む/書き込む用の関数が作るといいかも
画像を取り扱うための構造体を使うといいかも
ファイルのサイズは 384x512 である
入力ファイル名を abbey_road.txt, 出力ファイル名を out.ppm とすること
添付ファイル: abbey_road.txt
提出期限: 8/7/23:59
課題2
課題内容: 以下の整数の配列変数が使っているメモリを後ろから1Byteずつ読み出しchar型として出力しなさい.
a[0] = -1611678591;
a[1] = -2120752255;
a[2] = -478042141;
a[3] = -1931040872;
a[4] = -1766661246;
a[5] = -478049561;
実行(出力)する端末はUTF-8に設定すること.
大学のLinuxであれば問題ない(はず)
提出期限: 8/7/23:59
(引用終了)
以上です。宜しくお願いします。
(引用開始)
課題1
課題内容: 指定のファイルを読み込み 左右反転の処理をしてからPPMのヘッダをつけて出力するプログラムを作りなさい
ヒント
画像を読み込む/書き込む用の関数が作るといいかも
画像を取り扱うための構造体を使うといいかも
ファイルのサイズは 384x512 である
入力ファイル名を abbey_road.txt, 出力ファイル名を out.ppm とすること
添付ファイル: abbey_road.txt
提出期限: 8/7/23:59
課題2
課題内容: 以下の整数の配列変数が使っているメモリを後ろから1Byteずつ読み出しchar型として出力しなさい.
a[0] = -1611678591;
a[1] = -2120752255;
a[2] = -478042141;
a[3] = -1931040872;
a[4] = -1766661246;
a[5] = -478049561;
実行(出力)する端末はUTF-8に設定すること.
大学のLinuxであれば問題ない(はず)
提出期限: 8/7/23:59
(引用終了)
以上です。宜しくお願いします。
Re: C言語初心者の大学1年生です。
・どこまで理解できているのか
ー課題は全く理解できず、何を言ってるかがさっぱりわかりません。
・課題はどこまで出来ているのか
ーしたがって全く手をつけられていない状況です。
・具体的に(課題の)どこが分からないのか
ーまず問題文が理解できません。
丸一日かけて理解しようと試みましたが、この有様です。期日が迫っていて読み解いていく時間がありません。本当に困っています。どなたか助けていただけないでしょうか。
ー課題は全く理解できず、何を言ってるかがさっぱりわかりません。
・課題はどこまで出来ているのか
ーしたがって全く手をつけられていない状況です。
・具体的に(課題の)どこが分からないのか
ーまず問題文が理解できません。
丸一日かけて理解しようと試みましたが、この有様です。期日が迫っていて読み解いていく時間がありません。本当に困っています。どなたか助けていただけないでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: C言語初心者の大学1年生です。
エクレさん。フォーラムルールにあります通り穏便な会話をお願いします。
unittk501stさんは、どのあたりから出来ないか具体的な自己分析などもお願いします。
フォーラムルールを読まれましたか? テンプレートもありますのでご利用ください。
分かる部分とか補足できる部分とか無いのでしょうか?
特に課題1はそれ以前の講義・課題等を前提にしていると思われるのでPPMについて分かるだけの解説を行なってください。
unittk501stさんは、どのあたりから出来ないか具体的な自己分析などもお願いします。
フォーラムルールを読まれましたか? テンプレートもありますのでご利用ください。
分かる部分とか補足できる部分とか無いのでしょうか?
特に課題1はそれ以前の講義・課題等を前提にしていると思われるのでPPMについて分かるだけの解説を行なってください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
とりあえず「何も分からない」と言われてしまっては、どのように回答すればよいか分かりません。
課題1と2だと2の方が楽そうなので、まず2をやってみましょう。
課題2はポインタの理解が必要ですね。
課題のままでは少し難しいので、少し簡単な問題に置き換えてみます。
問題1_1.
const static int LEN = 8*2+1;
char str[LEN]="お疲れ様でした!";
で格納されたstrの文字列をchar型のポインタ*pを用いて1文字ずつ表示させましょう。
これなら出来ますか?
一応下に回答の一例を載せるので、まずはこれをみずにやってみてください。
その後、int型配列に入れたデータを*pに格納して表示、最終的に逆に表示すれば課題クリアになります。
その過程で分からないことがあれば、どこが分からないか都度聞いて下さい。
課題1と2だと2の方が楽そうなので、まず2をやってみましょう。
課題2はポインタの理解が必要ですね。
課題のままでは少し難しいので、少し簡単な問題に置き換えてみます。
問題1_1.
const static int LEN = 8*2+1;
char str[LEN]="お疲れ様でした!";
で格納されたstrの文字列をchar型のポインタ*pを用いて1文字ずつ表示させましょう。
これなら出来ますか?
一応下に回答の一例を載せるので、まずはこれをみずにやってみてください。
その後、int型配列に入れたデータを*pに格納して表示、最終的に逆に表示すれば課題クリアになります。
その過程で分からないことがあれば、どこが分からないか都度聞いて下さい。
Re: C言語初心者の大学1年生です。
もしかして、外国人留学生か何かで、日本語が不自由なのでしょうか?unittk501st さんが書きました:・どこまで理解できているのか
ー課題は全く理解できず、何を言ってるかがさっぱりわかりません。
そうでなければ、「全く」理解できないということはないはずです。
(日本語で文章も書けているようですし)
「全く」理解できないのでなければ、どこまで理解できているのかを書くことは可能なはずです。
Re: C言語初心者の大学1年生です。
お恥ずかしい話ですが、授業内の課題は配布資料の丸写しで解けてしまうものでしたので、きちんとした理解に至っていないのが現状です。printfもまだ理解できていないレベルです。復習を怠った自分に責任があることは重々承知のうえで投稿させていただきました。ですが、いまから総復習をするのには時間が明らかに足りません。そこで皆さんに助けていただきたいのです。これは嘘ではなく本当に理解力がないがために手が付けられないんです。こんな無力な私に救いの手を差し伸べて下さる方はいらっしゃいませんか。宜しくお願いします。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
> 本当に理解力がないがために手が付けられないんです
printfの理解もできていないということですが、画面に文字を表示するだけなら出来ますよね?
もしそれすらできないのであれば、参考書なりネットで入門サイトを調べるなりして「hello world」を表示させる位数時間あれば出来るはずです。
それが出来ないのであれば、理解力がないのではなく、プログラムを学ぶ気が無く、誰か答えを教えてくれる人がいればラッキーと捉えていると思われても仕方ないと思います。
また、printfすら分からないようでは、答えを教える以外にアドバイスのしようがありません。
締切までに回答者さん達の知恵を借りながら、少しでも学習してみましょう。
"hello world"は入門者が最初にプログラムを勉強する時に使うサンプルとして有名です。
http://dixq.net/vcpp.html
こちらを見ればhello worldは出来るでしょう。
書いてあることをそのままやればいいだけなので、「できない」ということはないはずです。
(VC++のバージョンは説明より新しくなってるかもしれませんが)
金銭的な都合で参考書が買えないのであれば、ネットでいくらでも学べます。
http://www.google.co.jp/search?q=C%E8%A ... 5%E9%96%80
では問題を変えます。
問題0_1.
char str[LEN]="お疲れ様でした!";
で格納されたstrの文字列をprintfで表示させましょう。
これなら解けますか?
それから、回答者がunittk501stさんに聞いたことはなるべく全て答えるようにして下さい。
そうすればスムーズにやり取りができるでしょう。
printfの理解もできていないということですが、画面に文字を表示するだけなら出来ますよね?
もしそれすらできないのであれば、参考書なりネットで入門サイトを調べるなりして「hello world」を表示させる位数時間あれば出来るはずです。
それが出来ないのであれば、理解力がないのではなく、プログラムを学ぶ気が無く、誰か答えを教えてくれる人がいればラッキーと捉えていると思われても仕方ないと思います。
また、printfすら分からないようでは、答えを教える以外にアドバイスのしようがありません。
締切までに回答者さん達の知恵を借りながら、少しでも学習してみましょう。
"hello world"は入門者が最初にプログラムを勉強する時に使うサンプルとして有名です。
http://dixq.net/vcpp.html
こちらを見ればhello worldは出来るでしょう。
書いてあることをそのままやればいいだけなので、「できない」ということはないはずです。
(VC++のバージョンは説明より新しくなってるかもしれませんが)
金銭的な都合で参考書が買えないのであれば、ネットでいくらでも学べます。
http://www.google.co.jp/search?q=C%E8%A ... 5%E9%96%80
では問題を変えます。
問題0_1.
char str[LEN]="お疲れ様でした!";
で格納されたstrの文字列をprintfで表示させましょう。
これなら解けますか?
それから、回答者がunittk501stさんに聞いたことはなるべく全て答えるようにして下さい。
そうすればスムーズにやり取りができるでしょう。
Re: C言語初心者の大学1年生です。
すみません、printfではなくscanfの間違いでした。どちらにしろ初歩的なレベルにも達していないので2日のうちにconst,statisticなどを理解するのは無理だと感じています。
Re: C言語初心者の大学1年生です。
わかりました。図書館で参考書を借りて調べながらやってみることにします。ですが、手当たり次第に最初から読んでいくと時間が掛かってしまうので、お手数ですが課題に必要な項目を教えて頂けないでしょうか。宜しくお願いします。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
図書館よりネットの方が手軽で早いですよ。
constやstaticはしらなくても解けますが、検索すればすぐ分かるかと思います。
学ぶ内容ですが、まずは質問の問題文が答えられるようにすることを目標にしてはいかがでしょうか。
※日中はあまりレスできませんが悪しからず…
constやstaticはしらなくても解けますが、検索すればすぐ分かるかと思います。
学ぶ内容ですが、まずは質問の問題文が答えられるようにすることを目標にしてはいかがでしょうか。
※日中はあまりレスできませんが悪しからず…
Re: C言語初心者の大学1年生です。
課題に必要な項目って言っても基礎すら知らないようなので、
課題1をクリアするのはほぼ絶望的ですね
課題1はここの掲示板でも答えられる人は少ないと思います。
課題2については、型、変数、配列、を理解してないと厳しいでしょうね
メモリとか配列って言葉を聞いて頭が真っ白になるならほぼアウトです。
その辺の単語を死に物狂いで調べて頑張ってください
他人に回答を聞いてそのままコピペして提出なんてしてたらどうせまた後で苦しくなるだけですよ
また丸投げされたら迷惑です。
提出できなくてもそれは自分が悪いんだから、反省して死に物狂いで勉強して次の課題にまで備えればいいと思います。
それも経験です。
課題1をクリアするのはほぼ絶望的ですね
課題1はここの掲示板でも答えられる人は少ないと思います。
課題2については、型、変数、配列、を理解してないと厳しいでしょうね
メモリとか配列って言葉を聞いて頭が真っ白になるならほぼアウトです。
その辺の単語を死に物狂いで調べて頑張ってください
他人に回答を聞いてそのままコピペして提出なんてしてたらどうせまた後で苦しくなるだけですよ
また丸投げされたら迷惑です。
提出できなくてもそれは自分が悪いんだから、反省して死に物狂いで勉強して次の課題にまで備えればいいと思います。
それも経験です。
Re: C言語初心者の大学1年生です。
アドバイスありがとうございます。
「質問の問題文」とありますが、具体的に何のことを言っているのですか?私にはこの日本語が理解し難いので解説お願いします。Dixq (管理人) さんが書きました:まずは質問の問題文が答えられるようにすることを目標にしてはいかがでしょうか。
Re: C言語初心者の大学1年生です。
↑このことでしょう。Dixq (管理人) さんが書きました: では問題を変えます。
問題0_1.
char str[LEN]="お疲れ様でした!";
で格納されたstrの文字列をprintfで表示させましょう。
これなら解けますか?
それから、回答者がunittk501stさんに聞いたことはなるべく全て答えるようにして下さい。
そうすればスムーズにやり取りができるでしょう。
質問にはなるべく全て答えるようにしてくださいって書いてるのに全部読んでないからそうなるんです。
Re: C言語初心者の大学1年生です。
DixqさんのNo.6に書かれている問題だと思います。unittk501st さんが書きました:「質問の問題文」とありますが、具体的に何のことを言っているのですか?私にはこの日本語が理解し難いので解説お願いします。
「追記」
だぶった。
non
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: C言語初心者の大学1年生です。
課題1に関しては下記の画像フォーマットだと思いますが、たぶんP3形式でしょう。ちゃんとした説明が無いので何とも言えませんが。
「PNM (画像フォーマット) - Wikipedia」
http://ja.wikipedia.org/wiki/PNM_(%E7%9 ... %E3%83%88)
ここは、unittk501st さんがちゃんと説明しないと前進しない部分ですね。
とりあえずC言語に関しては、こちらを参考にしてください。
「苦しんで覚えるC言語」 誤記など色々と問題はありますが読みやすいと思います。
http://9cguide.appspot.com/
【補足】
最終的な問題は、No: 9の最後の方に書かれているものだと思います。
まだunittk501st さんにはC言語で1つも答えてもらっていない状況です。
こんな状態になりたくなかったら今勉強するべきだと思いますよ。
情報処理関係の学科なら避けて通れませんからね。
「C言語プログラミングを楽しむ方法ないですか? - Yahoo!知恵袋」
http://detail.chiebukuro.yahoo.co.jp/qa ... 1491841879
「PNM (画像フォーマット) - Wikipedia」
http://ja.wikipedia.org/wiki/PNM_(%E7%9 ... %E3%83%88)
ここは、unittk501st さんがちゃんと説明しないと前進しない部分ですね。
とりあえずC言語に関しては、こちらを参考にしてください。
「苦しんで覚えるC言語」 誤記など色々と問題はありますが読みやすいと思います。
http://9cguide.appspot.com/
【補足】
最終的な問題は、No: 9の最後の方に書かれているものだと思います。
まだunittk501st さんにはC言語で1つも答えてもらっていない状況です。
こんな状態になりたくなかったら今勉強するべきだと思いますよ。
情報処理関係の学科なら避けて通れませんからね。
「C言語プログラミングを楽しむ方法ないですか? - Yahoo!知恵袋」
http://detail.chiebukuro.yahoo.co.jp/qa ... 1491841879
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: C言語初心者の大学1年生です。
コンパイルは通るのですが実行してa,b,cの数値を入力すると以下のようなエラーが表示されて先に進めません。どこが間違っているか教えてください。宜しくお願いします。
Debug Error!
Run-Time Check Failure #3 - The variable 'max' is being used without being initialized.
Debug Error!
Run-Time Check Failure #3 - The variable 'max' is being used without being initialized.
#include <stdio.h>
int main(void){
int a, b, c, max;
printf("Input number a:\n");
scanf("%d", &a);
printf("Input number b:\n");
scanf("%d", &b);
printf("Input number c:\n");
scanf("%d", &c);
if(a > b){
max == a;
}
else{
max == b;
}
if(max < c){
max == c;
}
printf("The biggest number is %d\n", max);
return 0;
}
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: C言語初心者の大学1年生です。
なぜ、みなさんのアドバイスを無視されるのでしょう?unittk501st さんが書きました:コンパイルは通るのですが実行してa,b,cの数値を入力すると以下のようなエラーが表示されて先に進めません。どこが間違っているか教えてください。宜しくお願いします。
Debug Error!
Run-Time Check Failure #3 - The variable 'max' is being used without being initialized.
#include <stdio.h> int main(void){ int a, b, c, max; printf("Input number a:\n"); scanf("%d", &a); printf("Input number b:\n"); scanf("%d", &b); printf("Input number c:\n"); scanf("%d", &c); if(a > b){ max == a; } else{ max == b; } if(max < c){ max == c; } printf("The biggest number is %d\n", max); return 0; }
と言うか、何処から出てきた問題なのでしょうか? 話の因果関係が掴めません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: C言語初心者の大学1年生です。
この場合だと、
max == a; ではなく、
max=a; だと思います。
他の2箇所も同じです。
max==aはmaxとaが等しかったら、という条件の文です。
max=aはmaxにaの値を代入する文です。
max == a; ではなく、
max=a; だと思います。
他の2箇所も同じです。
max==aはmaxとaが等しかったら、という条件の文です。
max=aはmaxにaの値を代入する文です。
Re: C言語初心者の大学1年生です。
皆様のご要望にお応えするため、最初から復習している最中です。ですので、課題の内容とはだいぶかけ離れてしまいましたがその点をご容赦下さい。softya(ソフト屋) さんが書きました: なぜ、みなさんのアドバイスを無視されるのでしょう?
と言うか、何処から出てきた問題なのでしょうか? 話の因果関係が掴めません。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: C言語初心者の大学1年生です。
それを書いて頂きたかったのです。unittk501st さんが書きました:皆様のご要望にお応えするため、最初から復習している最中です。ですので、課題の内容とはだいぶかけ離れてしまいましたがその点をご容赦下さい。softya(ソフト屋) さんが書きました: なぜ、みなさんのアドバイスを無視されるのでしょう?
と言うか、何処から出てきた問題なのでしょうか? 話の因果関係が掴めません。
話が急に飛び過ぎなので誰か出した問題かと思って掲示板を読みなおしてしまいました。
それとDixqさんのNo.9にある問題を答えることはさほどの手間がかかりませんので早いうちにお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
締め切りは明日の夜でしたね。
着実にそれまでにやっていきましょう。
段階を経て課題がクリアできるように、課題を分解してみました。
順々にやっていけば完成するはずです。
問題0_1.
char str[LEN]="お疲れ様!";
で格納されたstrの文字列をprintfで表示させましょう。
問題1_1.
int LEN = 5*2+1;
char str[LEN]="お疲れ様!";
で格納されたstrの文字列をchar型のポインタ*pを用いて1文字ずつ表示させましょう。
問題1_2.
int a[6];
a[0] = -1611678591;
a[1] = -2120752255;
a[2] = -478042141;
a[3] = -1931040872;
a[4] = -1766661246;
a[5] = -478049561;
で格納されたaの先頭アドレスのポインタを
char *p;
の変数pに格納し、先頭から終わりまで表示しましょう(int型は4バイトとします)
問題1_3.
先の問題の出力を後ろから前に向かって行いましょう。
***** ここまでできたら課題2クリア*****
問題1_4.
fprintfを使ってprintfの内容をファイル出力しましょう。
*********************************************************************
問題2_1.
http://dixq.net/BBS/P3.txt
こちらのファイルをダウンロードし、fopenでファイルを開き、
ファイルの内容を一字ずつ表示しましょう。
問題2_2.
P3.txtの内容をfscanfやfgetsを利用して(決め打ちでいいので)変数に一度値をした後、変数の中身を表示させましょう。
但し、ppmのファイルの内容を理解し、
int width;//幅
int height;//高さ
int maxValue;//最大輝度
int color[3];//RGBの値(1ピクセルごとに捨てる)
の変数にそれぞれ適した値が入るようにすること。
問題2_3.
int color[width][3];
と同じ配列の長さになるようにmallocで配列を確保し、一行ずつ(widthのピクセルずつ)colorの値を格納して表示しましょう。
問題2_4.
ヘッダ部はファイルから読み取った通りにファイル出力(P3.ppm)し、ピクセル部分は問題2_3で格納したピクセルを後ろから出力して、全ピクセルを左右反転させましょう。
問題2_5.
読み込むファイルを課題の添付ファイルにし、ヘッダを付けて、問題2_4の要領で画像部分を出力しましょう。
***** ここまでできたら課題1クリア*****
ppmファイルはGIMP
http://www.geocities.jp/gimproject2/dow ... nload.html
で確認できます。
http://dixq.net/BBS/P3.ppm
これが左右反転していれば成功です。
自分で調べた上で、分からないことがあれば聞いて下さい。
また、上で言いましたが
> それから、回答者がunittk501stさんに聞いたことはなるべく全て答えるようにして下さい。
は大事なことなので、なるべく気を付けて返答をお願いします。
softyaさんも仰っていますが、情報が足りないので、私にもこの課題がこれで正解になるのか分かりません。
着実にそれまでにやっていきましょう。
段階を経て課題がクリアできるように、課題を分解してみました。
順々にやっていけば完成するはずです。
問題0_1.
char str[LEN]="お疲れ様!";
で格納されたstrの文字列をprintfで表示させましょう。
問題1_1.
int LEN = 5*2+1;
char str[LEN]="お疲れ様!";
で格納されたstrの文字列をchar型のポインタ*pを用いて1文字ずつ表示させましょう。
問題1_2.
int a[6];
a[0] = -1611678591;
a[1] = -2120752255;
a[2] = -478042141;
a[3] = -1931040872;
a[4] = -1766661246;
a[5] = -478049561;
で格納されたaの先頭アドレスのポインタを
char *p;
の変数pに格納し、先頭から終わりまで表示しましょう(int型は4バイトとします)
問題1_3.
先の問題の出力を後ろから前に向かって行いましょう。
***** ここまでできたら課題2クリア*****
問題1_4.
fprintfを使ってprintfの内容をファイル出力しましょう。
*********************************************************************
問題2_1.
http://dixq.net/BBS/P3.txt
こちらのファイルをダウンロードし、fopenでファイルを開き、
ファイルの内容を一字ずつ表示しましょう。
問題2_2.
P3.txtの内容をfscanfやfgetsを利用して(決め打ちでいいので)変数に一度値をした後、変数の中身を表示させましょう。
但し、ppmのファイルの内容を理解し、
int width;//幅
int height;//高さ
int maxValue;//最大輝度
int color[3];//RGBの値(1ピクセルごとに捨てる)
の変数にそれぞれ適した値が入るようにすること。
問題2_3.
int color[width][3];
と同じ配列の長さになるようにmallocで配列を確保し、一行ずつ(widthのピクセルずつ)colorの値を格納して表示しましょう。
問題2_4.
ヘッダ部はファイルから読み取った通りにファイル出力(P3.ppm)し、ピクセル部分は問題2_3で格納したピクセルを後ろから出力して、全ピクセルを左右反転させましょう。
問題2_5.
読み込むファイルを課題の添付ファイルにし、ヘッダを付けて、問題2_4の要領で画像部分を出力しましょう。
***** ここまでできたら課題1クリア*****
ppmファイルはGIMP
http://www.geocities.jp/gimproject2/dow ... nload.html
で確認できます。
http://dixq.net/BBS/P3.ppm
これが左右反転していれば成功です。
自分で調べた上で、分からないことがあれば聞いて下さい。
また、上で言いましたが
> それから、回答者がunittk501stさんに聞いたことはなるべく全て答えるようにして下さい。
は大事なことなので、なるべく気を付けて返答をお願いします。
softyaさんも仰っていますが、情報が足りないので、私にもこの課題がこれで正解になるのか分かりません。
Re: C言語初心者の大学1年生です。
あー、1はちょっと大変ですね。
txtの中身が分からない以上完璧にとは言いようがありませんが。
2が出来たら参考にしてみてください。
ppmファイルの構造は
一番上にヘッダと呼ばれるものが来ます。
ヘッダとは画像ファイルの情報が入っているものと思ってください。
で、ファイルの中身はどうなっているかというと
[ヘッダ]
P6
改行コード
画像の幅(テキスト値を16進数に直した値)
セパレータ(まあ、改行でおkだと思います)
画像の高さ
改行コード
最大輝度
改行コード
[画像情報]
(R,G,B)の順番で縦*横のピクセル数が詰まっています。
つまり、画像情報のみを受け取って書き込むということは
先頭にP6を書く(16進数だと50、36)、改行コード(16進数で0A)、幅、改行コード、縦、改行コード、255(1バイトですので)、改行コード,
反転した画像情報 (R,G,B)*幅*高さを書き込む必要があります。
また、受け取るファイルは画像ファイルですので、くれぐれもテキストファイルで開かずバイナリファイルで開いてください。
書き込む場合は全部バイナリで書くと良いと思います。
見辛いしmainに書かれたら発狂ものだと思います。
構造体に関してですが。
こんな感じの構造体をお勧めします。
後ろからは2をやれば多分わかると思うので、がんばってください。
txtの中身が分からない以上完璧にとは言いようがありませんが。
2が出来たら参考にしてみてください。
ppmファイルの構造は
一番上にヘッダと呼ばれるものが来ます。
ヘッダとは画像ファイルの情報が入っているものと思ってください。
で、ファイルの中身はどうなっているかというと
[ヘッダ]
P6
改行コード
画像の幅(テキスト値を16進数に直した値)
セパレータ(まあ、改行でおkだと思います)
画像の高さ
改行コード
最大輝度
改行コード
[画像情報]
(R,G,B)の順番で縦*横のピクセル数が詰まっています。
つまり、画像情報のみを受け取って書き込むということは
先頭にP6を書く(16進数だと50、36)、改行コード(16進数で0A)、幅、改行コード、縦、改行コード、255(1バイトですので)、改行コード,
反転した画像情報 (R,G,B)*幅*高さを書き込む必要があります。
また、受け取るファイルは画像ファイルですので、くれぐれもテキストファイルで開かずバイナリファイルで開いてください。
書き込む場合は全部バイナリで書くと良いと思います。
画像を読み込む/書き込む用の関数を作ると良いかもじゃなくてほぼ必須です。unittk501st さんが書きました: ヒント
画像を読み込む/書き込む用の関数が作るといいかも
画像を取り扱うための構造体を使うといいかも
見辛いしmainに書かれたら発狂ものだと思います。
構造体に関してですが。
struct IMAGE{
int width;
int height;
unsigned char *pix;//画像情報はunsigned char型の配列[384][512][3](幅)(高さ)(R,G,B)の3次元配列にする(まあ、自分なら1次元の動的配列にしますけどね)。普通なら動的確保でしょうが分からないでしょうし。多分先生もおまけしてくれるはず。
};
後ろからは2をやれば多分わかると思うので、がんばってください。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
いきなり0から書くのは難しいかもしれないのでサンプルを用意してみました。
もちろんこの通りでなくても良いですが、ファイル
http://dixq.net/BBS/sample.txt
の内容を整数型変数に値を格納して表示するサンプルを作りましたので参考程度にどうぞ。
もちろんこの通りでなくても良いですが、ファイル
http://dixq.net/BBS/sample.txt
の内容を整数型変数に値を格納して表示するサンプルを作りましたので参考程度にどうぞ。
Re: C言語初心者の大学1年生です。
皆様からのたくさんのアドバイスに感謝します。これなら私にも課題を読み解いていけそうです。
今日一日かけてやっと配列の手前まで理解することが出来ましたが、時間がないので今日は徹夜で頑張ることにします。
[quote="赤鬼"]あー、1はちょっと大変ですね。
txtの中身が分からない以上完璧にとは言いようがありませんが。
2が出来たら参考にしてみてください。
quote]
とありましたので、念のため課題1の添付ファイルを書いておこうと思いましたが、
記事のメッセージ字数が 2031886 字です。入力可能なメッセージの最大字数は 60000 字です。
となってしまい送信できませんでした。
どうやって送ればいいですか。
今日一日かけてやっと配列の手前まで理解することが出来ましたが、時間がないので今日は徹夜で頑張ることにします。
[quote="赤鬼"]あー、1はちょっと大変ですね。
txtの中身が分からない以上完璧にとは言いようがありませんが。
2が出来たら参考にしてみてください。
quote]
とありましたので、念のため課題1の添付ファイルを書いておこうと思いましたが、
記事のメッセージ字数が 2031886 字です。入力可能なメッセージの最大字数は 60000 字です。
となってしまい送信できませんでした。
どうやって送ればいいですか。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
> 2031886 字
200万文字ですか?ちょっと投稿するには多すぎませんか・・。
上限の6万文字投稿されても読み切れないです。
何にそんなに文字数が必要なのか分かりませんが、ファイルを添付して投稿すればよいでしょう。訂正:あ、ppmファイルの内容ですか。
zipファイル添付等は画面右下の「ユーザー登録」から登録して頂ければ可能になります。(その他使える文字が増えたり日記が書けたり、チャットができたりするようになります)
# もし配布資料をそのままアップロードしようとしているのであれば著作権侵害にご注意ください。
> 今日一日かけてやっと配列の手前まで理解することが出来ましたが、時間がないので今日は徹夜で頑張ることにします。
1日や2日でC言語を理解するのは大変でしょうけど頑張って下さいね。
私たち回答者は答えを知っているので、答えを書くのは簡単なのですが(私の問題文 "お疲れ様でした!" の文字列の意味が最後分かると思います)
それでもこんなに回りくどくみなさん回答しているのは少しでもunittk501stさんの理解に繋げたいと思っているからです。
現在回答者として偉そうに言っている私ですが、学生の頃はunittk501stさんが仰るよりも酷い講義の受け方だったかもしれません。
授業は聞かず、宿題は人のコピーで、挙句の果てに単位を落とす・・。しかしそんな私でもある時プログラミングの楽しさを知ってから人生を変えることができました。
私としても似たような経験をしているからこそ力になりたい気持ちです。
頑張って下さいね。
※ゲームとか作りたくなったら言って下さい←
200万文字ですか?ちょっと投稿するには多すぎませんか・・。
上限の6万文字投稿されても読み切れないです。
何にそんなに文字数が必要なのか分かりませんが、ファイルを添付して投稿すればよいでしょう。訂正:あ、ppmファイルの内容ですか。
zipファイル添付等は画面右下の「ユーザー登録」から登録して頂ければ可能になります。(その他使える文字が増えたり日記が書けたり、チャットができたりするようになります)
# もし配布資料をそのままアップロードしようとしているのであれば著作権侵害にご注意ください。
> 今日一日かけてやっと配列の手前まで理解することが出来ましたが、時間がないので今日は徹夜で頑張ることにします。
1日や2日でC言語を理解するのは大変でしょうけど頑張って下さいね。
私たち回答者は答えを知っているので、答えを書くのは簡単なのですが(私の問題文 "お疲れ様でした!" の文字列の意味が最後分かると思います)
それでもこんなに回りくどくみなさん回答しているのは少しでもunittk501stさんの理解に繋げたいと思っているからです。
現在回答者として偉そうに言っている私ですが、学生の頃はunittk501stさんが仰るよりも酷い講義の受け方だったかもしれません。
授業は聞かず、宿題は人のコピーで、挙句の果てに単位を落とす・・。しかしそんな私でもある時プログラミングの楽しさを知ってから人生を変えることができました。
私としても似たような経験をしているからこそ力になりたい気持ちです。
頑張って下さいね。
※ゲームとか作りたくなったら言って下さい←
-
- 記事: 11
- 登録日時: 11年前
Re: C言語初心者の大学1年生です。
利用登録をさせていただいたのですが、添付する方法がわかりません。どうしたら良いでしょうか。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: C言語初心者の大学1年生です。
投稿時に下の方にファイル添付と書かれたタグがあるので、そこで「ファイル追加」で添付できます。unittk501st さんが書きました:利用登録をさせていただいたのですが、添付する方法がわかりません。どうしたら良いでしょうか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
添付画像を参照下さい。
「返信」
そして
「ファイル添付」タブから「参照」で添付するファイルを選ぶことが出来ます。
ちなみに添付ファイルはデフォルトで小さいですが、画像上部をクリックすると拡大します。
「返信」
そして
「ファイル添付」タブから「参照」で添付するファイルを選ぶことが出来ます。
ちなみに添付ファイルはデフォルトで小さいですが、画像上部をクリックすると拡大します。
- 添付ファイル
-
- temp.png (30.1 KiB) 閲覧数: 9177 回
-
- 記事: 11
- 登録日時: 11年前
Re: C言語初心者の大学1年生です。
ありがとうございます。見つかりました。
それでは課題1の添付ファイルをZIP形式で添付しておきます。
それでは課題1の添付ファイルをZIP形式で添付しておきます。
- 添付ファイル
-
- abbey_road.zip
- (572.24 KiB) ダウンロード数: 120 回
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: C言語初心者の大学1年生です。
今気づきましてが、赤鬼さんのPPMヘッダはP6(バイナリ形式)なのでマズイです。赤鬼 さんが書きました:あー、1はちょっと大変ですね。
txtの中身が分からない以上完璧にとは言いようがありませんが。
2が出来たら参考にしてみてください。
ppmファイルの構造は
一番上にヘッダと呼ばれるものが来ます。
ヘッダとは画像ファイルの情報が入っているものと思ってください。
で、ファイルの中身はどうなっているかというと
[ヘッダ]
P6
改行コード
画像の幅(テキスト値を16進数に直した値)
セパレータ(まあ、改行でおkだと思います)
画像の高さ
改行コード
最大輝度
改行コード
[画像情報]
(R,G,B)の順番で縦*横のピクセル数が詰まっています。
つまり、画像情報のみを受け取って書き込むということは
先頭にP6を書く(16進数だと50、36)、改行コード(16進数で0A)、幅、改行コード、縦、改行コード、255(1バイトですので)、改行コード,
反転した画像情報 (R,G,B)*幅*高さを書き込む必要があります。
また、受け取るファイルは画像ファイルですので、くれぐれもテキストファイルで開かずバイナリファイルで開いてください。
書き込む場合は全部バイナリで書くと良いと思います。
画像を読み込む/書き込む用の関数を作ると良いかもじゃなくてほぼ必須です。unittk501st さんが書きました: ヒント
画像を読み込む/書き込む用の関数が作るといいかも
画像を取り扱うための構造体を使うといいかも
見辛いしmainに書かれたら発狂ものだと思います。
構造体に関してですが。こんな感じの構造体をお勧めします。struct IMAGE{ int width; int height; unsigned char *pix;//画像情報はunsigned char型の配列[384][512][3](幅)(高さ)(R,G,B)の3次元配列にする(まあ、自分なら1次元の動的配列にしますけどね)。普通なら動的確保でしょうが分からないでしょうし。多分先生もおまけしてくれるはず。 };
後ろからは2をやれば多分わかると思うので、がんばってください。
「PNM (画像フォーマット) - Wikipedia」
http://ja.wikipedia.org/wiki/PNM_(%E7%9 ... %E3%83%88)
処理すべきはP3のテキスト形式だと私は思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Hiragi(GKUTH)
- 記事: 167
- 登録日時: 13年前
- 住所: 大阪府
- 連絡を取る:
Re: C言語初心者の大学1年生です。
Dixq (管理人) さんが書きました:とりあえず「何も分からない」と言われてしまっては、どのように回答すればよいか分かりません。
課題1と2だと2の方が楽そうなので、まず2をやってみましょう。
課題2はポインタの理解が必要ですね。
課題のままでは少し難しいので、少し簡単な問題に置き換えてみます。
問題1_1.
const static int LEN = 8*2+1;
char str[LEN]="お疲れ様でした!";
で格納されたstrの文字列をchar型のポインタ*pを用いて1文字ずつ表示させましょう。
これなら出来ますか?
一応下に回答の一例を載せるので、まずはこれをみずにやってみてください。
その後、int型配列に入れたデータを*pに格納して表示、最終的に逆に表示すれば課題クリアになります。
その過程で分からないことがあれば、どこが分からないか都度聞いて下さい。
ちょっときになったので、レスしますが
使う言語はCなのか?それともC++なのか?
使う言語が明確に表記されていませんが、タイトルが「C言語初心者」となっていますので、100%C言語にするならば、 ではなくて、 のほうがいいのでは?
だいがくせい!
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
> グクス君
#define LEN = 8*2+1;
はコンパイルが通らないでしょう。仮に
#define LEN 8*2+1
だとしても
LEN*2
と書いたときに期待した動作にならないのでやめた方がいいと思います。
printf("%d",LEN*2);
を表示してみれば意味が分かると思います。
const int LEN = 1;
と書いているのは型を明確にするためです。
また、constもstaticもC言語で使用可能です。
> unittk501stさん
課題の期限は今日中でしたよね?
もう残り時間が少ないと思いますが、まだ一つも回答を投稿してもらっていないと思います。
進捗はいかがですか?
#define LEN = 8*2+1;
はコンパイルが通らないでしょう。仮に
#define LEN 8*2+1
だとしても
LEN*2
と書いたときに期待した動作にならないのでやめた方がいいと思います。
printf("%d",LEN*2);
を表示してみれば意味が分かると思います。
const int LEN = 1;
と書いているのは型を明確にするためです。
また、constもstaticもC言語で使用可能です。
> unittk501stさん
課題の期限は今日中でしたよね?
もう残り時間が少ないと思いますが、まだ一つも回答を投稿してもらっていないと思います。
進捗はいかがですか?
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: C言語初心者の大学1年生です。
取り掛かりやすいように少し書き出しを書いておきますので参考にして下さい。
ぐちゃぐちゃなプログラムでもいいのでとにかく書いてみましょう。
下は、提示されたファイルからrgbの値を100ピクセル分読み込んでは表示するプログラムです。
ちなみに、明日大事な用事があるので、今日は早く寝ます。。
ぐちゃぐちゃなプログラムでもいいのでとにかく書いてみましょう。
下は、提示されたファイルからrgbの値を100ピクセル分読み込んでは表示するプログラムです。
ちなみに、明日大事な用事があるので、今日は早く寝ます。。
-
- 記事: 11
- 登録日時: 11年前
Re: C言語初心者の大学1年生です。
配列の課題は何とかできました。皆様のご指導のお陰です。
もう片方は現在取り掛かっております。
もう片方は現在取り掛かっております。
-
- 記事: 11
- 登録日時: 11年前
Re: C言語初心者の大学1年生です。
たった今課題1、2共に完成し、無事に提出できました。
これも何もすべて皆様のお陰です。
いままで皆様がアドバイスをくださったこと、勇気づけて下さったことに心より感謝致します。
本当にありがとうございました。
これも何もすべて皆様のお陰です。
いままで皆様がアドバイスをくださったこと、勇気づけて下さったことに心より感謝致します。
本当にありがとうございました。
Re: C言語初心者の大学1年生です。
このフォーラムのルールですが、解決した場合は用いた方法やソースコードをお示しいただくことになっております。
後からこの掲示板に来た人の参考にするためですのでご協力お願いします。
後からこの掲示板に来た人の参考にするためですのでご協力お願いします。