【2018年4月開学】東京通信大学Part.3
■ このスレッドは過去ログ倉庫に格納されています
公式サイト https://www.internet.ac.jp/ 前スレ 【2018年4月開学】東京通信大学Part.2 [無断転載禁止](c)2ch.net https://mao.5ch.net/test/read.cgi/lifework/1523608385/l50 Part.1 https://mao.5ch.net/test/read.cgi/lifework/1504958052/ 東京通信大学 ・学部 学科 情報マネジメント学部情報マネジメント学科 人間福祉学部 人間福祉学科 ・キャンパス 東京 新宿駅前キャンパス(総合校舎コクーンタワー) 大阪 大阪駅前サテライトキャンパス (大阪モード学園・HAL大阪 総合校舎) 名古屋 名古屋駅前サテライトキャンパス (総合校舎スパイラルタワーズ) 設置者 学校法人 日本教育財団(旧学校法人モード学園) >>178 ついに2-1が60%到達ですね。 7ー4は厳しそうな感じ。 ありがとうございます。 >>178 ついに2-1が60%到達ですね。 7ー4は厳しそうな感じ。 ありがとうございます。 普段IT関連企業で仕事している人間が Cの演習となるとこんなにももろいものなのか こんな問題をあっさりクリアできないと、前途多難だな Cだからできないんだつて言つてるやつ Cに責任なすりつけるのかよ >>177 だから要するにこのこぴぺはなにも書き換える必要はないって事? 言ってる意味がわからないよ。 どこを変えればいいのだから結局。 txtの中身?1をabcde 2をabcにして先に2が尽きることにして実行すればいいの? >>184 printf("cf: "); これの意味がわかってるとして書くよ。 条件分岐をもっと検討しなければいけないのは当然なんだけど、その前に出力する文字列を正しくしなければ、その先の話にすすめない。 課題文に、「cf: 」と出力せよとは書かれていない。 課題文に、「EOF\n」と出力せよとも書かれていない。 課題文に、「cf: 」と出力せよとは書かれていない。 課題文に、「EOF\n」と出力せよとも書かれていない。 課題文に、「cf: 」と出力せよとは書かれていない。 課題文に、「EOF\n」と出力せよとも書かれていない。 課題文に、「cf: 」と出力せよとは書かれていない。 課題文に、「EOF\n」と出力せよとも書かれていない。 かたくなにこれを出力しようとする限り合格は得られない。 出力すべき文字列は 「same content」 「shorter: data1.txt」 「shorter: data2.txt」 「different characters appear」 この四つ。これらを条件によって使い分ける。 「same content」とは、内容が同じだったよ、って意味。 「shorter: data1.txt」はdata.txtのほうが短かったって意味。「different characters appear」は異なる文字列だったって意味。 cf: EOF\nと書き出すのではなく、shorter: data1.txtと書き出すの。 "EOF\n"を"shorter: data1.txt"に書き換えるの。 最初からずっとそう言ってるよ。 >>185 ありがとう、ここまで教えてくれて。 どうかんがえても言われてることがわからないや。 留年確定であきらめるわ。 >>183 Cの問題ではないな。そもそもプログラミング適性が無いってこった。 >>186 あきらめんな。 書き換えるってのはこうやるの。 誤 printf("EOF\n") 正 printf("same content\n"); 「EOF\n"」を「same content\n"」に書き換える、そのまんまだろ。 他にもあと3つ printf("shorter: data1.txt\n"); printf("shorter: data2.txt\n"); printf("different characters appear\n"); これら四つを用意して、 もし二つのファイルが同じなら 「same content\n」と出力くする。 -------------------- if(cf==EOF && fgetc(g)==EOF) printf("same content\n"); -------------------- こう書く。 他に、もしdata1.txtが短かった場合、data2.txtが短かった場合、 長さに関係なく文字列が異なった場合、のそれぞれについて if〜 を使って出力を変えるんだ。 >>186 つづき 後半の話は難しいからまだ後でいい。 とにかく printf("EOF\n") というまったく求められていない出力を printf("same content\n"); printf("shorter: data1.txt\n"); printf("shorter: data2.txt\n"); printf("different characters appear\n"); に書き換える。 それができれば次の話(条件分岐の話)ができる。 >>181 このスレの前の方にSEになれってという指導があったけどそれはあってるけど、誰かがプログラミングをやらなければならないという前提でこのレベルだとこの国は終了ですね。 プログラミングできないSEってお笑いしかない。 >>190 その通り。 文科省は平成になってから日本の教育を根底からダメにしてきた。 1ヶ月ちょっとに詰め込む内容と課題量じゃないだろって話 政治の批判ならよそでやってくれ >>191 文科省だけでないよ。丸投げしソフトハウスを買い叩くITゼネコン、受注欲しさにバーゲンセールする営業とそれを承認する経営。 こんなんだからデベロッパーがいなくなった。北米だとプログラマーはそれなりの地位で給与もいい。 こんなに苦労しても報われない。 だからプログラミングできない自称SE様に流れてしまう事象もあると思う。 >>193 そうだね。 日本が落ちぶれた原因がそこにある。 円安にしないと生き残れない日本企業。 円安にすると、日本国民が貧乏になるのに。 >>186 この大学に留年はないのでは? 他大学生ですか? 5-1の数字の出力の仕方がどうしてもわからん for(ch= 0; ch<=128; ch++) count[ch]= 0; for(; (ch= getchar())!=EOF;){ count[isdigit(ch)]++; if( islower(ch) ) count[tolower(ch)]++; if( isupper(ch) ) count[toupper(ch)]++; } ってやったらエラーになっちゃった >>196 isdigitやislowerなどは一切必要ないよ。 これらは数字だったら真を返す、小文字だったら真を返す、といった関数。 おそらく課題文を読み間違えてる。 数字が何個だったか、小文字が何個だったかを数えるのではない。 出現した各文字の個数を数えるんだ。数字が全部で何個だったかは必要ない。 第五回講義資料の98ページにほとんど答に近いコードが書かれてるよ。 少しは編集が必要だけど、すぐにわかるだろう。 >>197 ありがとうございます!おかげでできました! 自分で考えると斜め上のこと書いちゃうな(´・ω・`) 今更だけど… 4-1の標準出力が「NG:date.txt」とずっと表示されてるのに、点数が100点で合格になっているのが個人的にすごいモヤモヤする。 何を基準にこの点なのか理解できない >>199 4-2を受講しないでやってたから意味がわかってなかった。スレ汚し失礼 >>188 さん ありがとう。今日仕事休みだから試してみる。ギリギリまで粘ってみるよ。 君みたいな同じ学生がいるとは。 やめろとかこんなのもわからないのかとか批判しかしないで初学を馬鹿にするやつらとは人間性が違うな本当に。 >>197 ,198 横からすいません! と言うことは5-1はある一定の文字列から記号を省くのではなく、「数字」「大文字」「小文字」と定義をして出力するのでしょうか?どうしても記号が邪魔で悩んでます… >>203 よく戻ってきたね。 第四回の課題は実際難しくて、第五回になるとまた簡単になるよ。(講義の中に答が示されてる) 煮詰まったら次の問題を先にやるのも悪くないよ。 締切を過ぎても「再提出」ができるから焦ることはない。 if(cf==EOF && fgetc(g)==EOF) { printf("same content\n"); } これの意味 cf=EOF【data1.txtの文字列が尽きたら(最後まで読み込んでいたら)】 &&【かつ】 fgetc(g)==EOF【data2.txtの文字列が尽きたら(最後まで読み込んだら】 printf("same content\n");【same content改行と出力する】 だよ。 cf==EOFをcf!=EOFに変えると、【data1.txtの文字列が尽きていなかったら】になる。 がんばれー >>205 5-1なんだがよくわからない。 #include <stdio.h> int main(int argc,char *argv[]){ int c[128]; int ch; for(ch= 0; ch!=128; ch++) c[ch]= 0; for(; (ch=getchar())!=EOF;){ [tolower(ch)]++; } for(ch='a';ch<='z';ch++){ if(c[ch]!=0) printf("%c:%d\n",ch,c[ch]); } 講義のを打ってコンパイルしたら何でかエラーが出るんだけど・・・ >>204 そうじゃない。また問題を読み間違ってる。 「数字」「大文字」「小文字」を数えるのではなく、 0は何回出てきたか 1は何回出てきたか 2は何回出てきたか 〜 9は何回出てきたか Aは何回出てきたか Bは何回出てきたか Cは何回出てきたか 〜 Zは何回出てきたか aは何回出てきたか bは何回出てきたか cは何回出てきたか 〜 zは何回出てきたか これを数えるんだ。 >>197 をもう一度読み返して。 >>207 それってこの過大にある左の入力画面の? 1 1 2 1 3 1 4 1 B 1 K 1 a 1 c 2 d 1 e 3 h 2 k 2 l 1 m 1 n 1 o 4 r 1 s 1 t 2 u 1 y 1 をみて 例えば1は1回、Bは1回、tは2かいとかってこと? そんなコード講義でどこで教えてるの? >>206 最初に #include <stdio.h> #include <ctype.h> が抜けている。 最後に return 0; } が抜けている。 [tolower(ch)]++; この行が講義のと違ってるよ。一文字抜けてる。 #include <stdio.h> #include <ctype.h> int main(int argc, char *argv[]){ int count[128]; int ch; for(ch= 0; ch!=128; ch++) count[ch]= 0; for(; (ch= getchar())!=EOF;){ count[tolower(ch)]++; } for(ch= '1'; ch<='9'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } for(ch= 'A'; ch<='Z'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } return 0; } >>209 まさにその通り。 講義資料の86ページから99ページまでで教えてるよ。 98, 99ページにはほとんど答が書いてあるから、それを軽く編集するだけでできあがる。 講義内のコードはaからzまでのぶん。 これに0から9までとAからZまでを付け加えればいいんだ。 >>211 数字は1から9じゃなくて0から9ね。 count[tolower(ch)]++; これは大文字を小文字に変換する命令。 課題は大文字と小文字を同じに扱うんじゃなくて別の文字として扱えと言ってる。だからこれはいらない。 そして、aからzまでのコードを付け加える。 今のままだと、AからZまでを数えるコードは書かれてるけど、その前に大文字を小文字に変換してるからAからZまで存在しないことになってて数えられていない。 count[ch]++; に書き換えてみて。 #include <stdio.h> #include <ctype.h> int main(int argc, char *argv[]){ int count[128]; int ch; for(ch= 0; ch!=128; ch++) count[ch]= 0; for(; (ch= getchar())!=EOF;){ count[ch]++ } for(ch= '0'; ch<='9'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } for(ch= 'a'; ch<='z'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } for(ch= 'A'; ch<='Z'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } >>214 さすがにコード見れなきゃ答えようがない。 >>215 最後に return 0; } が抜けている。 count[ch]++ の後ろに一文字足りない。 >>207 これ以上ないくらいわかりやすいです。 お陰で解けました、ありがとうございます >>220 大文字と小文字の順番が逆。 採点コーナーの失敗例を見ればすぐにわかるよ。 #include <stdio.h> #include <ctype.h> int main(int argc, char *argv[]){ int count[128]; int ch; for(ch= 0; ch!=128; ch++) count[ch]= 0; for(; (ch= getchar())!=EOF;){ count[ch]++; } for(ch= '0'; ch<='9'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } for(ch= 'A'; ch<='Z'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } for(ch= 'a'; ch<='z'; ch++){ if( count[ch]!=0 ) printf("%c %d\n", ch,count[ch]); } return o; } in countって出て40点変わらないよ・・・・ >>223 と>>224 は同じ人だよな? >>223 は100点が取れる完成プログラムだから、 こういうのは貼り付けるのは良くないから控えるようにしよう。 でもそのままだとコンパイルエラーが出るはず。 エラーメッセージをGoogle翻訳にでもかければ、 どこが間違ってるのか(何行目の何という文字が間違ってるのか)すぐにわかるよ。 それを修正すれば、もう100点だ。 出来たプログラムは貼り付けないでね。 すいません… 今5-4やってますが、(課題略) 実行を押すと数字並びの所(というか下)の結果が全て「0」になってしまいます。 試しに数字並びのプラログラムを上へ、英字を下へ入力すると今度は数字並びの結果(↑)はしっかり出て、逆に英字並び(↓)は「0」に… これはどういうことなのかわかりますかね? 5-2をやってるんですが 採点が0点です CW:1〜CW:58と下にずらっと出ます 何が間違いなんでしょうか・ >>227 詳しく見ないとわかりませんが… 恐らく英字並びではなく単語をカウントしてないですかね? 後、5-2の答えは既に授業にそのまま出てますよ。 >>226 if(〜)の文を数字と英字の二つ用意してると思うけど、両方を同じfor文の中に入れてるかな? for文を二つ作るのではないよ。 >>227 根本的にいろいろ間違ってそうなので。コード晒してみて。 まだ答に近くなってないみたいだから大丈夫だよ。 >>229 指摘ありがとうございます! for2つを1つにしてみましたが、 依然結果は変わりません… いれるというのは for分から{if〜}{if〜}で繋げるという意味ですよね? >>233 一応だけど、プログラムには本人のクセが必ず出るから、 誰が書いたものなのかわかりやすいんだ。 5chに書いた人が誰なのかわかってしまうから、 あっちに書くのかコッチにかくのかどちらかにしておいたほうがいいよ。 >>231 その通りだよ。 >for分から{if〜}{if〜}で繋げる これで間違っていない。 そこまでできていれば100点になるはずだけど。 結果が変わらないとは不可解。 二つのif文の違いは、isalpha(ch)かisdigit(ch)の違いだけ。 どうにも煮詰まったらコード晒してみて。 昨日から6-4プログラミングを8時間くらいやってようやく100点になったぞー! 次は7-4か… まだ8回には一切手を出せてない… >>234 6-4頑張ったな! これは無茶苦茶難しいやつだ。これをクリアできるとはすごい!! しかしだ、7-4はそれ以上だ。 というよりあの難しい6-4とは比較にならないくらいだよ。 数学が得意な人にとってはそうでもないのかもしれないけど。 ちなみに8回は7回と違っては簡単だから、 そっちを先にやっつけてしまうのがお奨めだよ。 >>233 早速ですがお力添えをお願いします… ca= cw= state= 0; for(; (ch=getchar())!=EOF;){ if( state==0 && isalpha(ch) ) ca++; state= (isalpha(ch) ? 1:0 ); }{ if( state==0 && isdigit(ch) ) cw++; state= (isdigit(ch) ? 1:0 ); } printf("%d\n", ca); printf("%d\n", cw); 主に原因がありそうなのはこのあたりですよね >>236 ifの中にifを入れてる構造になってるね。 中にいれないで、二つのifは並列に並べたらいい。 ※ }{の行を消すだけでそうなるよ。 そのかわりに、staitを二つ用意するんだ。 s1とs2なんて感じでいい。 数字とアルファベットでステータスの記録を別々に行うんだ。 ちょっと表現がわかりにくいかな?すまん。 わからなかったらもう一度聞いてね。 >>237 その指摘ですぐ100点いけました! 改めて言われるとなんで出来なかったのかが不思議なくらいです… 分かりやすいアドバイスをありがとうございました! >>238 238だけじゃなく今までの全てがそうなんだけど、「出来ました!」って報告が何よりも嬉しい。 それがおれのモチベーションだよ。 みんな一緒にがんばろう! 227です5−2ですがこんな感じです #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int in,cw,state; in=0; cw=0; state=0; for( ; (in=getchar())!=EOF ; ) { state=(isalpha(in) ? 1 : 0 ); cw++; if( isalpha(in) && state==0) printf("state:%d\n",state); printf("CW:%d\n",cw); } printf("%d\n",cw); return 0; } エ、どの講義ですか? >>240 ごめん。もうこの時間酔っぱらってるから適切なアドバイスできないかもしれない。 if(state==0 && isalpha(in)) cw++; state=(isalpha(in) ? 1:0); } 君のコードのある部分を上記に書き換えればOK。 上記コードの意味がわかる人だろうっていうのが前提ね。 明日になればシラフでもっとまともなアドバイスができるかもしれないけど、 今日はこれで勘弁してね。 5-2 こんな感じ? #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int ch; int ca; ca=0 for(; (ch=getchar())!=EOF;) { if( isalpha(ch)) ca++; if( islower(ch)) ca++; if( isdigit(ch)) ca++; } printf("%d\n",ca); return 0; } >>242 いやいや、ずいぶん悪くなってる。 >>240 に対する>>241 をもう一度読み返してみて。 if(state==0 && isalpha(in)) cw++; state=(isalpha(in) ? 1:0); } これに差し替えてって言ってるけど、それが含まれてないじゃない? すっかり酔っぱらったので、今日は店じまいです。 この後は明日返事するね。 がんばって! #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int in,cw,state; in=0; cw=0; state=0; for( ; (in=getchar())!=EOF ; ) { { if(state==0 && isalpha(in)) cw++; state=(isalpha(in) ? 1:0); } printf("state:%d\n",state); printf("CW:%d\n",cw); printf("%d\n",cw); return 0; } エラー出るんだけど5−2 いみわかんねえ >>244 10行目と11行目に { がダブってるからだよ。 >>243 意や意味わかってないよ #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int in,cw,state; in=0; cw=0; state=0; for( ; (in=getchar())!=EOF ; ) { if(state==0 && isalpha(in)) cw++; state=(isalpha(in) ? 1 : 0 ); } printf("state:%d\n",state); printf("CW:%d\n",cw); printf("%d\n",cw); return 0; } 書き換えたが state:0 CW:12 12とでる これstateとCWいらなくない?けしちゃだめなの? >>246 必要な出力がもうすでにでてますね。 課題に必要な出力は1個なので他を消せば終わりです そう言えばもう4-5が納期超えたんだよね。 頑張れみんな。 エラーと出たらメッセージをコピぺしよう。 知ってるお兄さん達の確認時間が省けるから。 >>246 すでに>>247 が答えてくれてるけど、stateとCWはいらないね。 それはそのコードを書いた人が変数の中身を書きだして プログラムの動きを確認しようとしているもの。 他人のコードを参考にするのはいいけど、理解せずにまるごとコピペじゃダメだよ。 >>247 さん ありがとう!とけました! 続けて5−3やってるんですけど数字を一個一個カウントしてしまってる。連なっているものを一個としてカウントさせるにはどうしたらいいんですかね・・ #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int in,cw; for( ; (in=getchar())!=EOF ; ) { if( isdigit(in)) cw++; isdigit((in) ? 1 : 0 ); } printf("%d\n",cw); return 0; } >>255 ファイル名「data1.txt」を開くので、当然fopenを使うよ。 >>256 講義資料の40ページから81ページでやりかたを解説されてるよ。 全部読まなくても80, 81ページにはほとんど答が書かれてる。 >>254 福祉では難しい科目の話題は出てないね。 福祉の人の書き込み少なくなっちゃった。 来年はどうなるかわからないけど、福祉は今のところは大丈夫。 プログラミングみたいに地獄そうな教科はないよ。 どちらかというと、導入科目が情報寄りで、てんてこ舞いしてる。 >>258 いや数字の連なりを1カウントするやり方なんてどこにも書いてないが? >>258 講義資料通りにうってもコンパイルエラーが出てしまいます どこが間違ってるのでしょうか?? #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int cw,state; cw=0; state=0; for( ; (ch=getchar())!=EOF ; ) { if( state==0 && isalpha(ch) ) cw++; state=(isalpha(ch) ? 1 : 0 ); } printf("%d\n",cw); return 0; } 61.1% 2-1 239名 (61.1%) コピペ 51.3% 2-4 200名 (51.3%) 変数 for文 37.7% 3-4 147名 (37.7%) 変数 for文 15.9% 4-4 62名 (15.9%) 条件分岐 20.5% 5-4 80名 (20.5%) ライブラリ 6.7% 6-4 26名 (6.7%) 配列 1.5% 7-4 6名 (1.5%) 長桁計算 2.6% 8-4 10名 (2.6%) 引数 第四回より第五回の方が合格者数多いことに注目。 第七回より第八回も同じ。 四回、七回で行き詰った人は五回、八回を先に済ませてしまおう。 うーん、6-3のプログラムの建て方がわからない。 入力がただファイルになっただけなのにもうこんがらがってしまう… 高3なんですが映像の専門卒業後ここ編入若しくは他大学入学しようかなと考えてます 安いのが一番重視している点なんですが編入で入ったとして授業ついていけなかったらどうしようとここ見て思いました… プログラミング1からでしかも編入でってのは厳しそうですかね 5-3なのですが、このプログラムだと33点しか取れません。どなたかヒントを 頂けないでしょうか。 #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int in,cw,state; in=0, cw=0; state=0; for( ; (in=getchar())!=EOF ; ) { if(state==1 && isdigit(in)) cw++; state=(isdigit(in) ? 1 : 0 ); } printf("%d\n",cw); return 0; } 惜しいところまでいってるね。 ヒントを言うと答え言っちゃってるみたいなもんだから言えないけど、あと一息! >>270 うーん、そのどこがどう惜しいかがイマイチよく分からないんですよね。完全に手詰まりです >>268 この程度でむずかしそうだと思うのならついていくのは無理だと思う >>269 5-2は出来てるの? 5-2と5-3の課題を見比べて、何が違うか理解できればすぐ出来るよ 6-3難しいなあ char word[data1.txt]; みたいなことは書けないのかな? >>275 書けるよ、4-1でやったことがまたここで入ってくる >>272 そんなコメント誰も求めてねーよ。 お前は人に対して思いやりがないんだなあ、、かわいそうに 5−4なんだけど #include <stdio.h> #include <ctype.h> int main(int argc, char* argv[]){ int in,cw,ch,state; cw=0; state= 0; for( ; (in=getchar())!=EOF ; ) { if( state==0 && isalpha(ch)) cw++; if( state==0 && isdigit(in)) cw++; state= (isdigit(in) ? 1 : 0 ); state= (isalpha(ch) ? 1 : 0 ); } printf("%d\n",cw); return 0; } で採点するとセグメンテーションフォルトが発生しましたで採点してくれないんだが・・・ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる