2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【2018年4月開学】東京通信大学Part.3

1 :名無し生涯学習:2018/11/01(木) 12:51:55.96 ID:8asb699G0.net
公式サイト 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大阪 総合校舎)
 名古屋 名古屋駅前サテライトキャンパス (総合校舎スパイラルタワーズ)

設置者 学校法人 日本教育財団(旧学校法人モード学園)

161 :名無し生涯学習:2018/11/10(土) 01:29:03.29 ID:ddS6goZN0.net
>>159
本来なら学校で教えるべき内容を、学校が教えてないんだよ。
ゼロから自習しようにも締切があって時間足りないし。

162 :名無し生涯学習:2018/11/10(土) 05:58:04.73 ID:1bNtWe2J0.net
>>152
s+= d;【読み込んだ値dを合計値に加算する/正しい】
if( d>M ) d= M;【読み込んだ値dがMより大きい場合、dにMの値を代入する/間違い】
if( d<m ) m= M;【読み込んだ値dがmより小さい場合、mにMの値を代入する/間違い】

>>155
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の次の行の事を言ってるんだろ。
今間違ってるのはそこじゃなくて条件分岐のとこだよ。

163 :名無し生涯学習:2018/11/10(土) 06:17:06.31 ID:1bNtWe2J0.net
>>155
ついでに、
[m= M; s=M;]これを「Mにmを、Mにsを」と言ってるのもまだ方向を間違ってる。
正しくは「mにMを、sにMを」だ。
[m= M; s=M;]これ自体は間違ってないから修正しなくていい。
この命令が何をやってるのかが十分に理解できてないので、
代入についてもう一度勉強しなおしておこう。

164 :名無し生涯学習:2018/11/10(土) 06:24:57.62 ID:1bNtWe2J0.net
>>156
正しい。

165 :名無し生涯学習:2018/11/10(土) 11:06:18.77 ID:u9S9qZh40.net
#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;
}

166 :名無し生涯学習:2018/11/10(土) 11:06:59.92 ID:u9S9qZh40.net
(続き)
でコンパイルして
txt1と2をそれぞれ作成して追加をして実行したらそれぞれの文字が違うと表示された。ここまではよし。
さらにそれを採点すると0点。なぜ?
条件には、 data1.txt, data2.txt が共に尽きた時
same content
data1.txt と data2.txt とで異なる文字が現れた時
different characters appear
と記載あるがこれは標準入力にこの英語をかけって事?

4−2です

167 :名無し生涯学習:2018/11/10(土) 11:55:04.70 ID:tl23aBn50.net
>>160
>u9S9qZh40

正直、このコメント見て教える気がなくなった。
助けようという有識者は、発言見てから判断する良いと思うよ。

私はおりました。

168 :名無し生涯学習:2018/11/10(土) 12:18:10.39 ID:1bNtWe2J0.net
>>165
>>166
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。

点数が表示されるところのすぐ下で失敗例を見ることができるから、
それを見れば何が間違ってたのかすぐにわかる。
課題文がわかりにくくても、これを見れば何を求められているのかすぐにわかるよ。

169 :名無し生涯学習:2018/11/10(土) 13:19:26.83 ID:u9S9qZh40.net
166
気持ちはわかるけどここはわからない人間に対して批判をするようなところではないから君は降りてもいいと思うよご自由に。
もっと広い心を持てると良かったね。

170 :名無し生涯学習:2018/11/10(土) 13:34:27.33 ID:u9S9qZh40.net
>>168さん
#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;
}
どうですか?

171 :名無し生涯学習:2018/11/10(土) 16:57:11.08 ID:S/ND73+U0.net
数学以外のレスを下さい!

172 :名無し生涯学習:2018/11/10(土) 17:04:13.97 ID:1i4jRkVO0.net
>>170
どうもこうも、前のとほとんど変わってないじゃん。

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いされているすぐ下にある失敗例を見ると何が間違ってるのかすぐにわかるよ。

173 :名無し生涯学習:2018/11/10(土) 17:12:21.40 ID:u9S9qZh40.net
171さん

いや、失敗等見ても何が違うのか全然わかりませんよ、、できる人はわかると思いますけど。

174 :名無し生涯学習:2018/11/10(土) 17:31:23.88 ID:1bNtWe2J0.net
>>173
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パターンの出力を作ってね。
他の失敗例も同じように見比べるんだよ。

175 :名無し生涯学習:2018/11/10(土) 23:41:21.48 ID:u9S9qZh40.net
>>174

尽きた場合ってのが良くわかりません意味が。
実行を何回も押して行くと急にかわるんですか?

176 :名無し生涯学習:2018/11/10(土) 23:51:38.12 ID:u9S9qZh40.net
>>174ん〜よくわからん

177 :名無し生涯学習:2018/11/10(土) 23:52:53.04 ID:u9S9qZh40.net
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;
}
てこと?

178 :名無し生涯学習:2018/11/11(日) 06:33:30.66 ID:KMb0MzIE0.net
>>175
二つのファイルに書かれた文字列を一文字目から順に比較して、同じ文字であるかどうかを判断する。
data1.txtの内容が「ABCDE」
data2.txtの内容が「ABC」
だっとしたら、data2.txtが先に尽きている、ということ。
比較すべき文字が先に無くなることをお題では尽きるって言ってる。
講義では「おしまいになる」と言ってる。

もしかして、
printf("cf: ");
この命令がどういう意味かわからないで書いてる?
これは「cf: 」という文字列を標準出力に書き出せって意味だよ。

179 :名無し生涯学習:2018/11/11(日) 17:05:56.05 ID:kkHhgN8G01111.net
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回よりもずっと簡単。

180 :名無し生涯学習:2018/11/11(日) 17:21:53.53 ID:BR6fK4p101111.net
>>179
ついに2-1が60%到達ですね。
7ー4は厳しそうな感じ。

ありがとうございます。

181 :名無し生涯学習:2018/11/11(日) 17:23:30.59 ID:BR6fK4p101111.net
>>179
ついに2-1が60%到達ですね。
7ー4は厳しそうな感じ。

ありがとうございます。

182 :名無し生涯学習:2018/11/11(日) 17:57:22.65 ID:HkDNcTH+01111.net
普段IT関連企業で仕事している人間が
Cの演習となるとこんなにももろいものなのか

183 :名無し生涯学習:2018/11/11(日) 18:07:11.36 ID:FgPQxCI201111.net
こんな問題をあっさりクリアできないと、前途多難だな

184 :名無し生涯学習:2018/11/11(日) 19:15:19.93 ID:6TFwbznO01111.net
Cだからできないんだつて言つてるやつ
Cに責任なすりつけるのかよ

185 :名無し生涯学習:2018/11/11(日) 22:35:14.32 ID:9YKug7GS0.net
>>178だから要するにこのこぴぺはなにも書き換える必要はないって事?
言ってる意味がわからないよ。

どこを変えればいいのだから結局。
txtの中身?1をabcde
2をabcにして先に2が尽きることにして実行すればいいの?

186 :名無し生涯学習:2018/11/11(日) 23:05:51.46 ID:KMb0MzIE0.net
>>185
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"に書き換えるの。
最初からずっとそう言ってるよ。

187 :名無し生涯学習:2018/11/11(日) 23:27:29.95 ID:9YKug7GS0.net
>>186
ありがとう、ここまで教えてくれて。

どうかんがえても言われてることがわからないや。
留年確定であきらめるわ。

188 :名無し生涯学習:2018/11/11(日) 23:43:12.47 ID:Fpdc6P7s0.net
>>184
Cの問題ではないな。そもそもプログラミング適性が無いってこった。

189 :名無し生涯学習:2018/11/11(日) 23:52:34.70 ID:KMb0MzIE0.net
>>187
あきらめんな。

書き換えるってのはこうやるの。
誤 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〜
を使って出力を変えるんだ。

190 :名無し生涯学習:2018/11/11(日) 23:53:17.22 ID:KMb0MzIE0.net
>>187
つづき

後半の話は難しいからまだ後でいい。
とにかく
printf("EOF\n")
というまったく求められていない出力を
printf("same content\n");
printf("shorter: data1.txt\n");
printf("shorter: data2.txt\n");
printf("different characters appear\n");
に書き換える。
それができれば次の話(条件分岐の話)ができる。

191 :名無し生涯学習:2018/11/11(日) 23:54:04.72 ID:BR6fK4p10.net
>>182
このスレの前の方にSEになれってという指導があったけどそれはあってるけど、誰かがプログラミングをやらなければならないという前提でこのレベルだとこの国は終了ですね。

プログラミングできないSEってお笑いしかない。

192 :名無し生涯学習:2018/11/12(月) 00:44:18.45 ID:MW4wFdH80.net
>>191
その通り。
文科省は平成になってから日本の教育を根底からダメにしてきた。

193 :名無し生涯学習:2018/11/12(月) 01:06:41.50 ID:waQg4oMI0.net
1ヶ月ちょっとに詰め込む内容と課題量じゃないだろって話 政治の批判ならよそでやってくれ

194 :名無し生涯学習:2018/11/12(月) 08:43:50.27 ID:bYWLDtw30.net
>>192
文科省だけでないよ。丸投げしソフトハウスを買い叩くITゼネコン、受注欲しさにバーゲンセールする営業とそれを承認する経営。

こんなんだからデベロッパーがいなくなった。北米だとプログラマーはそれなりの地位で給与もいい。

こんなに苦労しても報われない。
だからプログラミングできない自称SE様に流れてしまう事象もあると思う。

195 :名無し生涯学習:2018/11/12(月) 10:36:39.03 ID:MW4wFdH80.net
>>194
そうだね。

日本が落ちぶれた原因がそこにある。
円安にしないと生き残れない日本企業。
円安にすると、日本国民が貧乏になるのに。

196 :名無し生涯学習:2018/11/12(月) 12:22:07.68 ID:1uotlDPR0.net
>>187
この大学に留年はないのでは?
他大学生ですか?

197 :名無し生涯学習:2018/11/12(月) 18:23:25.63 ID:7Q3zZgh60.net
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)]++;
}
ってやったらエラーになっちゃった

198 :名無し生涯学習:2018/11/12(月) 19:33:27.44 ID:ejIBsQ610.net
>>197
isdigitやislowerなどは一切必要ないよ。
これらは数字だったら真を返す、小文字だったら真を返す、といった関数。

おそらく課題文を読み間違えてる。
数字が何個だったか、小文字が何個だったかを数えるのではない。
出現した各文字の個数を数えるんだ。数字が全部で何個だったかは必要ない。

第五回講義資料の98ページにほとんど答に近いコードが書かれてるよ。
少しは編集が必要だけど、すぐにわかるだろう。

199 :名無し生涯学習:2018/11/12(月) 21:46:58.78 ID:7Q3zZgh60.net
>>198
ありがとうございます!おかげでできました!
自分で考えると斜め上のこと書いちゃうな(´・ω・`)

200 :名無し生涯学習:2018/11/13(火) 00:18:25.27 ID:HGVHbF1Y0.net
今更だけど…
4-1の標準出力が「NG:date.txt」とずっと表示されてるのに、点数が100点で合格になっているのが個人的にすごいモヤモヤする。
何を基準にこの点なのか理解できない

201 :名無し生涯学習:2018/11/13(火) 00:53:21.50 ID:HGVHbF1Y0.net
>>200
4-2を受講しないでやってたから意味がわかってなかった。スレ汚し失礼

202 :名無し生涯学習:2018/11/13(火) 01:16:12.54 ID:4XpmsaAi0.net
>>201
全然OK

203 :名無し生涯学習:2018/11/13(火) 03:02:58.41 ID:Q2CXBvufp.net
留年あるよ

204 :名無し生涯学習:2018/11/13(火) 23:43:29.14 ID:Sh006ReA0.net
>>189さん
ありがとう。今日仕事休みだから試してみる。ギリギリまで粘ってみるよ。

君みたいな同じ学生がいるとは。

やめろとかこんなのもわからないのかとか批判しかしないで初学を馬鹿にするやつらとは人間性が違うな本当に。

205 :名無し生涯学習:2018/11/14(水) 01:26:27.61 ID:FR4mAi36p.net
>>198,198
横からすいません!
と言うことは5-1はある一定の文字列から記号を省くのではなく、「数字」「大文字」「小文字」と定義をして出力するのでしょうか?どうしても記号が邪魔で悩んでます…

206 :名無し生涯学習:2018/11/14(水) 06:14:10.06 ID:ex/tzvk80.net
>>204
よく戻ってきたね。
第四回の課題は実際難しくて、第五回になるとまた簡単になるよ。(講義の中に答が示されてる)
煮詰まったら次の問題を先にやるのも悪くないよ。
締切を過ぎても「再提出」ができるから焦ることはない。

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の文字列が尽きていなかったら】になる。

がんばれー

207 :名無し生涯学習:2018/11/14(水) 10:47:37.11 ID:V5n2DB030.net
>>206

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]);
}
講義のを打ってコンパイルしたら何でかエラーが出るんだけど・・・

208 :名無し生涯学習:2018/11/14(水) 11:18:16.42 ID:R6KjqRLs0.net
>>205

そうじゃない。また問題を読み間違ってる。
「数字」「大文字」「小文字」を数えるのではなく、
0は何回出てきたか
1は何回出てきたか
2は何回出てきたか

9は何回出てきたか

Aは何回出てきたか
Bは何回出てきたか
Cは何回出てきたか

Zは何回出てきたか

aは何回出てきたか
bは何回出てきたか
cは何回出てきたか

zは何回出てきたか

これを数えるんだ。
>>198をもう一度読み返して。

209 :名無し生涯学習:2018/11/14(水) 11:24:44.65 ID:V5n2DB030.net
>>208
それってこの過大にある左の入力画面の?

210 :名無し生涯学習:2018/11/14(水) 11:28:12.25 ID:V5n2DB030.net
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かいとかってこと?

そんなコード講義でどこで教えてるの?

211 :名無し生涯学習:2018/11/14(水) 11:30:26.65 ID:R6KjqRLs0.net
>>207
最初に
#include <stdio.h>
#include <ctype.h>
が抜けている。

最後に
return 0;
}
が抜けている。

[tolower(ch)]++;
この行が講義のと違ってるよ。一文字抜けてる。

212 :名無し生涯学習:2018/11/14(水) 11:33:44.36 ID:V5n2DB030.net
#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;
}

213 :名無し生涯学習:2018/11/14(水) 11:34:23.43 ID:R6KjqRLs0.net
>>210

まさにその通り。
講義資料の86ページから99ページまでで教えてるよ。
98, 99ページにはほとんど答が書いてあるから、それを軽く編集するだけでできあがる。
講義内のコードはaからzまでのぶん。
これに0から9までとAからZまでを付け加えればいいんだ。

214 :名無し生涯学習:2018/11/14(水) 11:42:08.13 ID:R6KjqRLs0.net
>>212
数字は1から9じゃなくて0から9ね。

count[tolower(ch)]++;
これは大文字を小文字に変換する命令。
課題は大文字と小文字を同じに扱うんじゃなくて別の文字として扱えと言ってる。だからこれはいらない。
そして、aからzまでのコードを付け加える。

今のままだと、AからZまでを数えるコードは書かれてるけど、その前に大文字を小文字に変換してるからAからZまで存在しないことになってて数えられていない。
count[ch]++;
に書き換えてみて。

215 :名無し生涯学習:2018/11/14(水) 11:48:42.99 ID:V5n2DB030.net
書き換えたけどえラー出るよ?

216 :名無し生涯学習:2018/11/14(水) 11:50:51.98 ID:V5n2DB030.net
#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]);
}

217 :名無し生涯学習:2018/11/14(水) 11:50:54.23 ID:R6KjqRLs0.net
>>215
さすがにコード見れなきゃ答えようがない。

218 :名無し生涯学習:2018/11/14(水) 11:51:22.53 ID:V5n2DB030.net
returnはここでは省略

219 :名無し生涯学習:2018/11/14(水) 11:54:10.27 ID:R6KjqRLs0.net
>>216
最後に
return 0;
}
が抜けている。

count[ch]++
の後ろに一文字足りない。

220 :名無し生涯学習:2018/11/14(水) 12:24:54.38 ID:CsnZf6Qp0.net
>>208
これ以上ないくらいわかりやすいです。
お陰で解けました、ありがとうございます

221 :名無し生涯学習:2018/11/14(水) 12:41:50.81 ID:V5n2DB030.net
>>219 40点になる
入力には何を入れるの?

222 :名無し生涯学習:2018/11/14(水) 12:51:00.05 ID:R6KjqRLs0.net
>>221
大文字と小文字の順番が逆。
採点コーナーの失敗例を見ればすぐにわかるよ。

223 :名無し生涯学習:2018/11/14(水) 15:49:14.67 ID:V5n2DB030.net
>>221
いれかえたらえらーでたけど?

224 :名無し生涯学習:2018/11/14(水) 15:50:06.33 ID:V5n2DB030.net
#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;
}

225 :名無し生涯学習:2018/11/14(水) 15:52:24.29 ID:V5n2DB030.net
in countって出て40点変わらないよ・・・・

226 :名無し生涯学習:2018/11/14(水) 17:12:14.84 ID:s/2m770+0.net
>>224>>225は同じ人だよな?
>>224は100点が取れる完成プログラムだから、
こういうのは貼り付けるのは良くないから控えるようにしよう。
でもそのままだとコンパイルエラーが出るはず。
エラーメッセージをGoogle翻訳にでもかければ、
どこが間違ってるのか(何行目の何という文字が間違ってるのか)すぐにわかるよ。
それを修正すれば、もう100点だ。
出来たプログラムは貼り付けないでね。

227 :名無し生涯学習:2018/11/14(水) 20:07:20.88 ID:2juI7YUE0.net
すいません…
今5-4やってますが、(課題略)
実行を押すと数字並びの所(というか下)の結果が全て「0」になってしまいます。
試しに数字並びのプラログラムを上へ、英字を下へ入力すると今度は数字並びの結果(↑)はしっかり出て、逆に英字並び(↓)は「0」に…
これはどういうことなのかわかりますかね?

228 :名無し生涯学習:2018/11/14(水) 20:20:30.95 ID:V5n2DB030.net
5-2をやってるんですが
採点が0点です
CW:1〜CW:58と下にずらっと出ます

何が間違いなんでしょうか・

229 :名無し生涯学習:2018/11/14(水) 20:26:49.63 ID:2juI7YUE0.net
>>228
詳しく見ないとわかりませんが…
恐らく英字並びではなく単語をカウントしてないですかね?
後、5-2の答えは既に授業にそのまま出てますよ。

230 :名無し生涯学習:2018/11/14(水) 20:42:51.44 ID:ex/tzvk80.net
>>227
if(〜)の文を数字と英字の二つ用意してると思うけど、両方を同じfor文の中に入れてるかな?
for文を二つ作るのではないよ。

231 :名無し生涯学習:2018/11/14(水) 20:47:41.72 ID:ex/tzvk80.net
>>228
根本的にいろいろ間違ってそうなので。コード晒してみて。
まだ答に近くなってないみたいだから大丈夫だよ。

232 :名無し生涯学習:2018/11/14(水) 21:11:51.58 ID:2juI7YUE0.net
>>230
指摘ありがとうございます!
for2つを1つにしてみましたが、
依然結果は変わりません…

いれるというのは
for分から{if〜}{if〜}で繋げるという意味ですよね?

233 :名無し生涯学習:2018/11/14(水) 21:58:13.80 ID:ex/tzvk80.net
>>233
一応だけど、プログラムには本人のクセが必ず出るから、
誰が書いたものなのかわかりやすいんだ。
5chに書いた人が誰なのかわかってしまうから、
あっちに書くのかコッチにかくのかどちらかにしておいたほうがいいよ。

234 :名無し生涯学習:2018/11/14(水) 22:04:36.71 ID:ex/tzvk80.net
>>232
その通りだよ。
>for分から{if〜}{if〜}で繋げる
これで間違っていない。
そこまでできていれば100点になるはずだけど。
結果が変わらないとは不可解。
二つのif文の違いは、isalpha(ch)かisdigit(ch)の違いだけ。

どうにも煮詰まったらコード晒してみて。

235 :名無し生涯学習:2018/11/14(水) 22:16:57.29 ID:Q8j95+/I0.net
昨日から6-4プログラミングを8時間くらいやってようやく100点になったぞー!

次は7-4か…
まだ8回には一切手を出せてない…

236 :名無し生涯学習:2018/11/14(水) 22:30:37.63 ID:ex/tzvk80.net
>>235
6-4頑張ったな!
これは無茶苦茶難しいやつだ。これをクリアできるとはすごい!!

しかしだ、7-4はそれ以上だ。
というよりあの難しい6-4とは比較にならないくらいだよ。
数学が得意な人にとってはそうでもないのかもしれないけど。

ちなみに8回は7回と違っては簡単だから、
そっちを先にやっつけてしまうのがお奨めだよ。

237 :名無し生涯学習:2018/11/14(水) 22:37:18.94 ID:2juI7YUE0.net
>>234
早速ですがお力添えをお願いします…

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);

主に原因がありそうなのはこのあたりですよね

238 :名無し生涯学習:2018/11/14(水) 22:48:12.34 ID:ex/tzvk80.net
>>237
ifの中にifを入れてる構造になってるね。
中にいれないで、二つのifは並列に並べたらいい。
※ }{の行を消すだけでそうなるよ。

そのかわりに、staitを二つ用意するんだ。
s1とs2なんて感じでいい。
数字とアルファベットでステータスの記録を別々に行うんだ。

ちょっと表現がわかりにくいかな?すまん。
わからなかったらもう一度聞いてね。

239 :名無し生涯学習:2018/11/14(水) 22:55:43.57 ID:2juI7YUE0.net
>>238
その指摘ですぐ100点いけました!
改めて言われるとなんで出来なかったのかが不思議なくらいです…
分かりやすいアドバイスをありがとうございました!

240 :名無し生涯学習:2018/11/14(水) 23:02:26.54 ID:ex/tzvk80.net
>>239
238だけじゃなく今までの全てがそうなんだけど、「出来ました!」って報告が何よりも嬉しい。
それがおれのモチベーションだよ。
みんな一緒にがんばろう!

241 :名無し生涯学習:2018/11/14(水) 23:02:59.58 ID:V5n2DB030.net
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;
}
エ、どの講義ですか?

242 :名無し生涯学習:2018/11/14(水) 23:19:49.53 ID:ex/tzvk80.net
>>241
ごめん。もうこの時間酔っぱらってるから適切なアドバイスできないかもしれない。

if(state==0 && isalpha(in)) cw++;
state=(isalpha(in) ? 1:0);
}

君のコードのある部分を上記に書き換えればOK。
上記コードの意味がわかる人だろうっていうのが前提ね。

明日になればシラフでもっとまともなアドバイスができるかもしれないけど、
今日はこれで勘弁してね。

243 :名無し生涯学習:2018/11/14(水) 23:23:18.70 ID:V5n2DB030.net
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;
}

244 :名無し生涯学習:2018/11/14(水) 23:29:36.70 ID:ex/tzvk80.net
>>243
いやいや、ずいぶん悪くなってる。
>>241に対する>>242をもう一度読み返してみて。

if(state==0 && isalpha(in)) cw++;
state=(isalpha(in) ? 1:0);
}

これに差し替えてって言ってるけど、それが含まれてないじゃない?

すっかり酔っぱらったので、今日は店じまいです。
この後は明日返事するね。
がんばって!

245 :名無し生涯学習:2018/11/14(水) 23:32:52.78 ID:V5n2DB030.net
#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
いみわかんねえ

246 :名無し生涯学習:2018/11/14(水) 23:44:26.26 ID:ex/tzvk80.net
>>245
10行目と11行目に { がダブってるからだよ。

247 :名無し生涯学習:2018/11/14(水) 23:44:40.10 ID:V5n2DB030.net
>>244
意や意味わかってないよ
#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いらなくない?けしちゃだめなの?

248 :名無し生涯学習:2018/11/15(木) 00:12:10.46 ID:VNWn+5sB0.net
>>247
必要な出力がもうすでにでてますね。
課題に必要な出力は1個なので他を消せば終わりです

249 :名無し生涯学習:2018/11/15(木) 00:37:17.03 ID:w5npQn/Ja.net
(´・ω・`)アマゾンポイント乞食に朗報です!!期間限定で3000ポイント貰いましょう。
お得な情報はこちらから↓↓
http://rio2016.5ch.net/test/read.cgi/lifesaloon/1537823749/419/

250 :名無し生涯学習:2018/11/15(木) 00:55:09.66 ID:XQ/dNN1p0.net
そう言えばもう4-5が納期超えたんだよね。
頑張れみんな。

251 :名無し生涯学習:2018/11/15(木) 00:58:21.96 ID:XQ/dNN1p0.net
>>245
カッコの数はあってるかい?

252 :名無し生涯学習:2018/11/15(木) 00:58:32.30 ID:XQ/dNN1p0.net
>>245
カッコの数はあってるかい?

253 :名無し生涯学習:2018/11/15(木) 01:02:19.51 ID:XQ/dNN1p0.net
エラーと出たらメッセージをコピぺしよう。
知ってるお兄さん達の確認時間が省けるから。

254 :名無し生涯学習:2018/11/15(木) 06:13:52.13 ID:dbVRhp/+0.net
>>247
すでに>>248が答えてくれてるけど、stateとCWはいらないね。
それはそのコードを書いた人が変数の中身を書きだして
プログラムの動きを確認しようとしているもの。

他人のコードを参考にするのはいいけど、理解せずにまるごとコピペじゃダメだよ。

255 :名無し生涯学習:2018/11/15(木) 09:51:33.32 ID:Y0bdvkLi0.net
みんな凄い勉強してるね!福祉の方は簡単なの?

256 :名無し生涯学習:2018/11/15(木) 13:36:02.88 ID:T87gIJgF0.net
6-3はfopen使うんでしょうか?

257 :名無し生涯学習:2018/11/15(木) 14:33:38.98 ID:D7mjUvGT0.net
>>248さん

ありがとう!とけました!
続けて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;
}

258 :名無し生涯学習:2018/11/15(木) 17:04:09.70 ID:V4d+/6UJ0.net
>>256
ファイル名「data1.txt」を開くので、当然fopenを使うよ。

259 :名無し生涯学習:2018/11/15(木) 17:11:48.11 ID:V4d+/6UJ0.net
>>257
講義資料の40ページから81ページでやりかたを解説されてるよ。
全部読まなくても80, 81ページにはほとんど答が書かれてる。

260 :名無し生涯学習:2018/11/15(木) 17:13:16.05 ID:V4d+/6UJ0.net
>>255
福祉では難しい科目の話題は出てないね。
福祉の人の書き込み少なくなっちゃった。

総レス数 1009
319 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200