【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大阪 総合校舎) 名古屋 名古屋駅前サテライトキャンパス (総合校舎スパイラルタワーズ) 設置者 学校法人 日本教育財団(旧学校法人モード学園) >>158 5チャン見てるやつが何いってるの? お前も同類だよここに書き込みなんかしてる時点でwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww >>158 本来なら学校で教えるべき内容を、学校が教えてないんだよ。 ゼロから自習しようにも締切があって時間足りないし。 >>151 s+= d;【読み込んだ値dを合計値に加算する/正しい】 if( d>M ) d= M;【読み込んだ値dがMより大きい場合、dにMの値を代入する/間違い】 if( d<m ) m= M;【読み込んだ値dがmより小さい場合、mにMの値を代入する/間違い】 >>154 s+= d;【読み込んだ値dを合計値に加算する/正しい】 if( d>M ) M= d;【読み込んだ値dがMより大きい場合、Mにdの値を代入する/正しい】 if( d<m ) M= d;【読み込んだ値dがMより大きい場合、Mにdの値を代入する/間違い】 >Mにmを、Mにsをじゃないのか? これはscanfの次の行の事を言ってるんだろ。 今間違ってるのはそこじゃなくて条件分岐のとこだよ。 >>154 ついでに、 [m= M; s=M;]これを「Mにmを、Mにsを」と言ってるのもまだ方向を間違ってる。 正しくは「mにMを、sにMを」だ。 [m= M; s=M;]これ自体は間違ってないから修正しなくていい。 この命令が何をやってるのかが十分に理解できてないので、 代入についてもう一度勉強しなおしておこう。 #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]){ #define fn "data1.txt" #define gn "data2.txt" FILE *f, *g; f= fopen(fn, "r"); g= fopen(gn,"r"); if( f==NULL){ printf("NG:%s\n",fn); exit(-1); } g= fopen(gn, "r"); if( g==NULL){ printf("NG:%s\n",gn); exit(-1); } int cf, cg; while( (cf= fgetc(f))!=EOF && (cg= fgetc(g))!=EOF ){ if( cf!=cg ) break; } printf("\n"); printf("cf: "); if(cf==EOF)printf("EOF\n");else printf("%c\n",cf); printf("cg: "); if(cg==EOF)printf("EOF\n");else printf("%c\n",cg); if( !(cf==EOF && fgetc(g)==EOF) ) printf("%s and %s differ.\n", fn,gn); fclose(f); fclose(g); return 0; } (続き) でコンパイルして txt1と2をそれぞれ作成して追加をして実行したらそれぞれの文字が違うと表示された。ここまではよし。 さらにそれを採点すると0点。なぜ? 条件には、 data1.txt, data2.txt が共に尽きた時 same content data1.txt と data2.txt とで異なる文字が現れた時 different characters appear と記載あるがこれは標準入力にこの英語をかけって事? 4−2です >>159 >u9S9qZh40 正直、このコメント見て教える気がなくなった。 助けようという有識者は、発言見てから判断する良いと思うよ。 私はおりました。 >>164 >>165 data1.txt, data2.txt が共に尽きた時 「same content」と出力せよ data1.txt が先に尽きた時 「shorter: data1.txt」と出力せよ data2.txt が先に尽きた時 「shorter: data2.txt」と出力せよ data1.txt と data2.txt とで異なる文字が現れた時 「different characters appear」と出力せよ という意味だよ。 printf("cf: ");【cf: と出力する/間違い】(なぜ?) if(cf==EOF)printf("EOF\n");【data1.txtが先に終わったら「EOF\n」と出力する】(なぜ?) 出力する文字列が正しくないから0点なんだ。 printfのあたりを全て見直せばOK。 点数が表示されるところのすぐ下で失敗例を見ることができるから、 それを見れば何が間違ってたのかすぐにわかる。 課題文がわかりにくくても、これを見れば何を求められているのかすぐにわかるよ。 166 気持ちはわかるけどここはわからない人間に対して批判をするようなところではないから君は降りてもいいと思うよご自由に。 もっと広い心を持てると良かったね。 >>167 さん #include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]){ #define fn "data1.txt" #define gn "data2.txt" FILE *f, *g; f= fopen(fn, "r"); g= fopen(gn,"r"); if( f==NULL){ printf("NG:%s\n",fn); exit(-1); } g= fopen(gn, "r"); if( g==NULL){ printf("NG:%s\n",gn); exit(-1); } int cf, cg; while( (cf= fgetc(f))!=EOF && (cg= fgetc(g))!=EOF ){ if( cf!=cg ) break; } printf("\n"); printf("cf: "); if(cf==EOF)printf("EOF\n"); printf("%c\n",cf); printf("cg: "); if(cg==EOF)printf("EOF\n"); printf("%c\n",cg); if( !(cf==EOF && fgetc(g)==EOF) ) printf("%s and %s differ.\n", fn,gn); fclose(f); fclose(g); return 0; } どうですか? >>169 どうもこうも、前のとほとんど変わってないじゃん。 printf("cf: "); if(cf==EOF)printf("EOF\n"); printf("%c\n",cf); このコードを日本語で書くと、 「cf: 」と出力して、もしdata1.txtが先に尽きた時「EOF\n」と出力し、data1.txtの文字列を出力する。 となる。 お題は、data1.txt が先に尽きた時「shorter: data1.txt」(data1.txtのほうが短かった)と出力せよ。 まったく違う。 以降も全て同じで、お題で求められている出力と全く違う出力をしてるので合格しないよ。 「cf: EOF」とか、「data1.txt and data2.txt differ.」などと出力せよとはお題に書かれていない。 採点をやったとき、点数が表jいされているすぐ下にある失敗例を見ると何が間違ってるのかすぐにわかるよ。 171さん いや、失敗等見ても何が違うのか全然わかりませんよ、、できる人はわかると思いますけど。 >>172 169のコードだとエラーになるので164のコードで説明すると、 失敗例1(二つのファイルが同じだったとき) 【作ったプログラムの出力】 cf: EOF cg: 【正解の出力】 abcde fgh i same content これだけ見れば、二つのファイルが同じだったときにはファイルの中の文字列を出力して、 改行して、「same content」と出力するのが正しいんだとわかる。 それに対して、 cf: EOF cg: と出力してるから正しくない。 「data1.txtが短い時は"cf: EOF\ncg:"と出力する」ってコードが書けてるんだから、 出力する文字列を正しくするだけでいいんだよ。 data1.txtが短いときは、"shorter: data1.txt"と出力するんだよ。 条件分岐で4パターンの出力を作ってね。 他の失敗例も同じように見比べるんだよ。 >>173 尽きた場合ってのが良くわかりません意味が。 実行を何回も押して行くと急にかわるんですか? FILE *f, *g; f= fopen(fn, "r"); g= fopen(gn,"r"); if( f==NULL){ printf("NG:%s\n",fn); exit(-1); } g= fopen(gn, "r"); if( g==NULL){ printf("NG:%s\n",gn); exit(-1); } int cf, cg; while( (cf= fgetc(f))!=EOF && (cg= fgetc(g))!=EOF ){ if( cf!=cg ) break; } printf("\n"); printf("cf: "); if(cf==EOF)printf("EOF\n"); printf("%c\n",cf); printf("cg: "); if(cg==EOF)printf("EOF\n"); printf("%c\n",cg); if( !( cf=EOF\ncg:&& fgetc(g)==EOF) ) printf("%s and %s differ.\n", fn,gn); fclose(f); fclose(g); return 0; } てこと? >>174 二つのファイルに書かれた文字列を一文字目から順に比較して、同じ文字であるかどうかを判断する。 data1.txtの内容が「ABCDE」 data2.txtの内容が「ABC」 だっとしたら、data2.txtが先に尽きている、ということ。 比較すべき文字が先に無くなることをお題では尽きるって言ってる。 講義では「おしまいになる」と言ってる。 もしかして、 printf("cf: "); この命令がどういう意味かわからないで書いてる? これは「cf: 」という文字列を標準出力に書き出せって意味だよ。 11/11 17:00 2-1 234名 (60.0%) コピペ 2-4 193名 (49.5%) 変数 for文 3-4 134名 (34.4%) 変数 for文 4-4 47名 (12.1%) 条件分岐 5-4 50名 (12.8%) ライブラリ 6-4 13名 (3.3%) 配列 7-4 1名 (0.3%) 長桁計算 8-4 5名 (1.3%) 引数 2-1コピペの上昇が止まった。 第八回が公開された。7回よりもずっと簡単。 >>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ページにはほとんど答が書かれてる。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる