X



トップページ生涯学習
1002コメント392KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名無し生涯学習
垢版 |
2018/11/01(木) 12:51:55.96ID:8asb699G0
公式サイト 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大阪 総合校舎)
 名古屋 名古屋駅前サテライトキャンパス (総合校舎スパイラルタワーズ)

設置者 学校法人 日本教育財団(旧学校法人モード学園)
0219名無し生涯学習
垢版 |
2018/11/14(水) 12:24:54.38ID:CsnZf6Qp0
>>207
これ以上ないくらいわかりやすいです。
お陰で解けました、ありがとうございます
0220名無し生涯学習
垢版 |
2018/11/14(水) 12:41:50.81ID:V5n2DB030
>>218 40点になる
入力には何を入れるの?
0221名無し生涯学習
垢版 |
2018/11/14(水) 12:51:00.05ID:R6KjqRLs0
>>220
大文字と小文字の順番が逆。
採点コーナーの失敗例を見ればすぐにわかるよ。
0222名無し生涯学習
垢版 |
2018/11/14(水) 15:49:14.67ID:V5n2DB030
>>221
いれかえたらえらーでたけど?
0223名無し生涯学習
垢版 |
2018/11/14(水) 15:50:06.33ID:V5n2DB030
#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;
}
0224名無し生涯学習
垢版 |
2018/11/14(水) 15:52:24.29ID:V5n2DB030
in countって出て40点変わらないよ・・・・
0225名無し生涯学習
垢版 |
2018/11/14(水) 17:12:14.84ID:s/2m770+0
>>223>>224は同じ人だよな?
>>223は100点が取れる完成プログラムだから、
こういうのは貼り付けるのは良くないから控えるようにしよう。
でもそのままだとコンパイルエラーが出るはず。
エラーメッセージをGoogle翻訳にでもかければ、
どこが間違ってるのか(何行目の何という文字が間違ってるのか)すぐにわかるよ。
それを修正すれば、もう100点だ。
出来たプログラムは貼り付けないでね。
0226名無し生涯学習
垢版 |
2018/11/14(水) 20:07:20.88ID:2juI7YUE0
すいません…
今5-4やってますが、(課題略)
実行を押すと数字並びの所(というか下)の結果が全て「0」になってしまいます。
試しに数字並びのプラログラムを上へ、英字を下へ入力すると今度は数字並びの結果(↑)はしっかり出て、逆に英字並び(↓)は「0」に…
これはどういうことなのかわかりますかね?
0227名無し生涯学習
垢版 |
2018/11/14(水) 20:20:30.95ID:V5n2DB030
5-2をやってるんですが
採点が0点です
CW:1〜CW:58と下にずらっと出ます

何が間違いなんでしょうか・
0228名無し生涯学習
垢版 |
2018/11/14(水) 20:26:49.63ID:2juI7YUE0
>>227
詳しく見ないとわかりませんが…
恐らく英字並びではなく単語をカウントしてないですかね?
後、5-2の答えは既に授業にそのまま出てますよ。
0229名無し生涯学習
垢版 |
2018/11/14(水) 20:42:51.44ID:ex/tzvk80
>>226
if(〜)の文を数字と英字の二つ用意してると思うけど、両方を同じfor文の中に入れてるかな?
for文を二つ作るのではないよ。
0230名無し生涯学習
垢版 |
2018/11/14(水) 20:47:41.72ID:ex/tzvk80
>>227
根本的にいろいろ間違ってそうなので。コード晒してみて。
まだ答に近くなってないみたいだから大丈夫だよ。
0231名無し生涯学習
垢版 |
2018/11/14(水) 21:11:51.58ID:2juI7YUE0
>>229
指摘ありがとうございます!
for2つを1つにしてみましたが、
依然結果は変わりません…

いれるというのは
for分から{if〜}{if〜}で繋げるという意味ですよね?
0232名無し生涯学習
垢版 |
2018/11/14(水) 21:58:13.80ID:ex/tzvk80
>>233
一応だけど、プログラムには本人のクセが必ず出るから、
誰が書いたものなのかわかりやすいんだ。
5chに書いた人が誰なのかわかってしまうから、
あっちに書くのかコッチにかくのかどちらかにしておいたほうがいいよ。
0233名無し生涯学習
垢版 |
2018/11/14(水) 22:04:36.71ID:ex/tzvk80
>>231
その通りだよ。
>for分から{if〜}{if〜}で繋げる
これで間違っていない。
そこまでできていれば100点になるはずだけど。
結果が変わらないとは不可解。
二つのif文の違いは、isalpha(ch)かisdigit(ch)の違いだけ。

どうにも煮詰まったらコード晒してみて。
0234名無し生涯学習
垢版 |
2018/11/14(水) 22:16:57.29ID:Q8j95+/I0
昨日から6-4プログラミングを8時間くらいやってようやく100点になったぞー!

次は7-4か…
まだ8回には一切手を出せてない…
0235名無し生涯学習
垢版 |
2018/11/14(水) 22:30:37.63ID:ex/tzvk80
>>234
6-4頑張ったな!
これは無茶苦茶難しいやつだ。これをクリアできるとはすごい!!

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

ちなみに8回は7回と違っては簡単だから、
そっちを先にやっつけてしまうのがお奨めだよ。
0236名無し生涯学習
垢版 |
2018/11/14(水) 22:37:18.94ID:2juI7YUE0
>>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);

主に原因がありそうなのはこのあたりですよね
0237名無し生涯学習
垢版 |
2018/11/14(水) 22:48:12.34ID:ex/tzvk80
>>236
ifの中にifを入れてる構造になってるね。
中にいれないで、二つのifは並列に並べたらいい。
※ }{の行を消すだけでそうなるよ。

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

ちょっと表現がわかりにくいかな?すまん。
わからなかったらもう一度聞いてね。
0238名無し生涯学習
垢版 |
2018/11/14(水) 22:55:43.57ID:2juI7YUE0
>>237
その指摘ですぐ100点いけました!
改めて言われるとなんで出来なかったのかが不思議なくらいです…
分かりやすいアドバイスをありがとうございました!
0239名無し生涯学習
垢版 |
2018/11/14(水) 23:02:26.54ID:ex/tzvk80
>>238
238だけじゃなく今までの全てがそうなんだけど、「出来ました!」って報告が何よりも嬉しい。
それがおれのモチベーションだよ。
みんな一緒にがんばろう!
0240名無し生涯学習
垢版 |
2018/11/14(水) 23:02:59.58ID:V5n2DB030
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;
}
エ、どの講義ですか?
0241名無し生涯学習
垢版 |
2018/11/14(水) 23:19:49.53ID:ex/tzvk80
>>240
ごめん。もうこの時間酔っぱらってるから適切なアドバイスできないかもしれない。

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

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

明日になればシラフでもっとまともなアドバイスができるかもしれないけど、
今日はこれで勘弁してね。
0242名無し生涯学習
垢版 |
2018/11/14(水) 23:23:18.70ID:V5n2DB030
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;
}
0243名無し生涯学習
垢版 |
2018/11/14(水) 23:29:36.70ID:ex/tzvk80
>>242
いやいや、ずいぶん悪くなってる。
>>240に対する>>241をもう一度読み返してみて。

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

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

すっかり酔っぱらったので、今日は店じまいです。
この後は明日返事するね。
がんばって!
0244名無し生涯学習
垢版 |
2018/11/14(水) 23:32:52.78ID:V5n2DB030
#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
いみわかんねえ
0246名無し生涯学習
垢版 |
2018/11/14(水) 23:44:40.10ID:V5n2DB030
>>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いらなくない?けしちゃだめなの?
0247名無し生涯学習
垢版 |
2018/11/15(木) 00:12:10.46ID:VNWn+5sB0
>>246
必要な出力がもうすでにでてますね。
課題に必要な出力は1個なので他を消せば終わりです
0249名無し生涯学習
垢版 |
2018/11/15(木) 00:55:09.66ID:XQ/dNN1p0
そう言えばもう4-5が納期超えたんだよね。
頑張れみんな。
0250名無し生涯学習
垢版 |
2018/11/15(木) 00:58:21.96ID:XQ/dNN1p0
>>244
カッコの数はあってるかい?
0251名無し生涯学習
垢版 |
2018/11/15(木) 00:58:32.30ID:XQ/dNN1p0
>>244
カッコの数はあってるかい?
0252名無し生涯学習
垢版 |
2018/11/15(木) 01:02:19.51ID:XQ/dNN1p0
エラーと出たらメッセージをコピぺしよう。
知ってるお兄さん達の確認時間が省けるから。
0253名無し生涯学習
垢版 |
2018/11/15(木) 06:13:52.13ID:dbVRhp/+0
>>246
すでに>>247が答えてくれてるけど、stateとCWはいらないね。
それはそのコードを書いた人が変数の中身を書きだして
プログラムの動きを確認しようとしているもの。

他人のコードを参考にするのはいいけど、理解せずにまるごとコピペじゃダメだよ。
0254名無し生涯学習
垢版 |
2018/11/15(木) 09:51:33.32ID:Y0bdvkLi0
みんな凄い勉強してるね!福祉の方は簡単なの?
0256名無し生涯学習
垢版 |
2018/11/15(木) 14:33:38.98ID:D7mjUvGT0
>>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;
}
0257名無し生涯学習
垢版 |
2018/11/15(木) 17:04:09.70ID:V4d+/6UJ0
>>255
ファイル名「data1.txt」を開くので、当然fopenを使うよ。
0258名無し生涯学習
垢版 |
2018/11/15(木) 17:11:48.11ID:V4d+/6UJ0
>>256
講義資料の40ページから81ページでやりかたを解説されてるよ。
全部読まなくても80, 81ページにはほとんど答が書かれてる。
0259名無し生涯学習
垢版 |
2018/11/15(木) 17:13:16.05ID:V4d+/6UJ0
>>254
福祉では難しい科目の話題は出てないね。
福祉の人の書き込み少なくなっちゃった。
0260名無し生涯学習
垢版 |
2018/11/15(木) 17:42:18.67ID:NTwra3u8a
来年はどうなるかわからないけど、福祉は今のところは大丈夫。
プログラミングみたいに地獄そうな教科はないよ。

どちらかというと、導入科目が情報寄りで、てんてこ舞いしてる。
0261名無し生涯学習
垢版 |
2018/11/15(木) 20:23:38.50ID:Y0bdvkLi0
導入科目選べるんじゃないの?難しいのは何?
0262名無し生涯学習
垢版 |
2018/11/15(木) 23:30:48.54ID:D7mjUvGT0
>>258いや数字の連なりを1カウントするやり方なんてどこにも書いてないが?
0263名無し生涯学習
垢版 |
2018/11/15(木) 23:42:57.63ID:D7mjUvGT0
>>258
解決したありがとう
0264名無し生涯学習
垢版 |
2018/11/16(金) 05:38:24.14ID:52baXVGe0
>>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;

}
0266名無し生涯学習
垢版 |
2018/11/16(金) 19:09:13.35ID:mwDvM4Tr0
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%)  引数

第四回より第五回の方が合格者数多いことに注目。
第七回より第八回も同じ。
四回、七回で行き詰った人は五回、八回を先に済ませてしまおう。
0267名無し生涯学習
垢版 |
2018/11/16(金) 20:02:43.05ID:sdwyvXYb0
うーん、6-3のプログラムの建て方がわからない。
入力がただファイルになっただけなのにもうこんがらがってしまう…
0268名無し生涯学習
垢版 |
2018/11/16(金) 23:22:29.82ID:xWVD6tCe0
高3なんですが映像の専門卒業後ここ編入若しくは他大学入学しようかなと考えてます
安いのが一番重視している点なんですが編入で入ったとして授業ついていけなかったらどうしようとここ見て思いました… プログラミング1からでしかも編入でってのは厳しそうですかね
0269名無し生涯学習
垢版 |
2018/11/17(土) 06:25:09.86ID:CGL5j8SC0
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;
}
0270名無し生涯学習
垢版 |
2018/11/17(土) 07:13:22.94ID:V14+grLE0
惜しいところまでいってるね。
ヒントを言うと答え言っちゃってるみたいなもんだから言えないけど、あと一息!
0271名無し生涯学習
垢版 |
2018/11/17(土) 07:33:00.84ID:CGL5j8SC0
>>270
うーん、そのどこがどう惜しいかがイマイチよく分からないんですよね。完全に手詰まりです
0272名無し生涯学習
垢版 |
2018/11/17(土) 09:11:27.96ID:RrmozdQB0
>>268
この程度でむずかしそうだと思うのならついていくのは無理だと思う
0273名無し生涯学習
垢版 |
2018/11/17(土) 10:58:57.49ID:ZwUitCl8p
>>269
5-2は出来てるの?
5-2と5-3の課題を見比べて、何が違うか理解できればすぐ出来るよ
0275名無し生涯学習
垢版 |
2018/11/17(土) 12:35:13.19ID:dRBpwTev0
6-3難しいなあ
char word[data1.txt];
みたいなことは書けないのかな?
0277名無し生涯学習
垢版 |
2018/11/17(土) 14:28:10.76ID:xfP4HNxN0
>>272 そんなコメント誰も求めてねーよ。
お前は人に対して思いやりがないんだなあ、、かわいそうに
0278名無し生涯学習
垢版 |
2018/11/17(土) 14:35:22.29ID:xfP4HNxN0
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;
}
で採点するとセグメンテーションフォルトが発生しましたで採点してくれないんだが・・・
0279名無し生涯学習
垢版 |
2018/11/17(土) 15:41:35.01ID:dRBpwTev0
>>276
すいません全くわかりません
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
#define fn "data1.txt"
char line[data1.txt];
char word[data1.txt];
int n;
char *p;
FILE *f, *g;
f= fopen(fn, "p"); g= stdout;
fgets(word,data1.txt,stdin);
...
こう書いてみましたがエラーいっぱい出てしまいました
0280名無し生涯学習
垢版 |
2018/11/17(土) 16:10:18.14ID:ZwUitCl8p
>>279
丸々写したらエラーになっちゃうよ。
4-1でやったのは複写、だけど今回はファイルを開くだけでいいんだよ、まず要らないのがあるからそれを消して見て。
0283名無し生涯学習
垢版 |
2018/11/17(土) 17:19:45.45ID:OoUCz4T00
>>268
プログラミングに興味持てそうなら大丈夫だと思うよ。ここまでのプログラムスレ化を見ればわかると思うけど。


ただ講義だけでなんとかしようとすると辛い。自分で調べるようにしないと。
0284名無し生涯学習
垢版 |
2018/11/17(土) 17:24:05.00ID:OoUCz4T00
>>283
激しく乱文しちゃった

言いたかったのは
プログラミングに興味持てそうなら大丈夫だと思うよ。

ただ講義だけでなんとかしようとすると辛い。自分で調べるようにしないと。
ここまでのプログラムスレ化を見ればわかると思うけど。
0285名無し生涯学習
垢版 |
2018/11/17(土) 18:41:28.84ID:9gZj5zoq0
>>278
stateは『並び』の状態であるか否かは記録する変数だよ。
英字と数字で同じいれものに記録してたら記録にならない。
別のいれものを用意するんだ。
0286名無し生涯学習
垢版 |
2018/11/17(土) 21:39:38.23ID:BftH3cgM0
7-1の講義で出た1/nのプログラム、あれは何を1と定義して出来上げてるのか全く分かりません…
どなたか教えてください!
0287名無し生涯学習
垢版 |
2018/11/18(日) 00:13:54.58ID:u52czSVP0
5-4って第4講のやり方必要?
0288名無し生涯学習
垢版 |
2018/11/18(日) 00:45:16.41ID:ZiAgf/lQ0
>>286
%のことかな。
%は割り算の余りを意味します。
0289名無し生涯学習
垢版 |
2018/11/18(日) 00:46:27.50ID:ti6akc9m0
>>285
別の入れ物ですか?どういうこと?

それとなんかセグメンテーションフォルトとかいうエラーが発生するんだけどこれなに?
採点も実行もロクにできないんだけど。
0290名無し生涯学習
垢版 |
2018/11/18(日) 01:05:35.38ID:ZiAgf/lQ0
>>289
セグメンテーションエラーにはいろいろあるけど、この場合でいうとchとinの初期値が定義されていないからかな。

でも結果は多分上手くいかないと思う。
0291名無し生涯学習
垢版 |
2018/11/18(日) 01:11:12.37ID:ZiAgf/lQ0
>>290
inはgetcharで値が入るからいいとして、問題となるのはchだね。chには値が入ってないのにisalphaするからセグメンテーションエラーになる。
0292名無し生涯学習
垢版 |
2018/11/18(日) 01:18:20.92ID:3jAFJG7l0
>>289
入れ物とは変数のこと。
英字用の変数と数字用の変数をそれぞれ用意するんだ。
今のコードの変数『cw』と『state』に英字も数字もどちらも入れ込もうとしてるからそれぞれを数えるのは無理。

セグメンテーションエラーは、
変数inは
in=getchar())!=EOF
ここで代入されてるけど、
変数cwには何も代入されていないから。

inとchは数字と英字に変数をわけている。
だけど『cw』と『state』は・・・
0293名無し生涯学習
垢版 |
2018/11/18(日) 01:43:20.09ID:u52czSVP0
ここでプログラミングの質問に対して教えてくれる人ってやっぱり元々やったことある人なのかね
0294名無し生涯学習
垢版 |
2018/11/18(日) 06:41:44.92ID:AIZUIxeH0
>>293
ずっとここで教えてきたけど、実は素人の初学者だよ。
0295名無し生涯学習
垢版 |
2018/11/18(日) 17:04:26.49ID:bv0cqGOA0
>>288
なるほど、だからr=r%nと表記されてるところがあるのですね。
今7-1の課題を行ってますが小数点以下が反映されません…
どなたか助言頂けませんか?
失礼ですが下にプログラム貼らせていただきます
#include <stdio.h>
int main(int argc, char *argv[]){
int n,m;
int r, q, i, j, k;
scanf("%d%2d\n", &n, &m);
int rr[n], qq[n];
r= 1; k= 0;
for(i= 1; r!=0 && k==0; i++){
rr[i]= r;
r*= 10;
q= r/n; qq[i]= q;
r= r%n;
for(k= i; k!=0 && rr[k]!=r; k--);
}
printf("%d",n);
printf("/");
printf("%d",m);
printf(" = ");
printf("%d",n/m);
printf(".");
for(j= 1; j!=i; j++){
if( r!=0 && j==k ) printf("'");
printf("%d", qq[j]);
}
printf("\n");
return 0;
}
0296名無し生涯学習
垢版 |
2018/11/18(日) 18:48:22.67ID:u52czSVP0
6-1なのですが、このプログラムには何が足りないのでしょうか
#include <stdio.h>
#include <string.h>

int main(int argc, char *argy[1]){
#define LINESIZE 100
char line[LINESIZE];

for(;fgets(line,LINESIZE,stdin)!=NULL;){
printf("%d> ", (int)strlen(line)-1);
fputs(line, stdout);
}

return 0;
}
0297名無し生涯学習
垢版 |
2018/11/18(日) 18:52:49.40ID:vBW5Msb60
>>295
mとnが逆
r= 1;が間違い
(後で出てくるr/nは1/nという意味になってしまう。お題はm/n)

これだけでは完成しないけどかなり近づくはず。
0298名無し生涯学習
垢版 |
2018/11/18(日) 19:05:04.44ID:vBW5Msb60
>>296

for(;fgets(line,LINESIZE,stdin)!=NULL;){
これだけでは行番号を数えられないので、forの(  )カッコ内で
i=1と初期化し、繰り返す度にi++とすればiが行番号になる。

forの波カッコ{  }内の最初に行番号を出力する。3桁の幅を取って。

その次に行内の文字数を数える
for(ch=0; line[ch]!='\n';ch++);
このchを出力する。
0299名無し生涯学習
垢版 |
2018/11/18(日) 21:55:51.95ID:u52czSVP0
こんなプログラムになりました
#include <stdio.h>
#include <string.h>

int main(int argc, char *argy[1]){
#define LINESIZE 100
char s [42line[LINESIZE];

for(i=1; fgets(line,LINESIZE,stdin)!=NULL; i++ ){
for(ch=0; line[ch]!=`\n`;ch++);
printf("%d> ", (int)strlen(line)-1);
fputs(line, stdout);
}

return 0;
}>>298
0300名無し生涯学習
垢版 |
2018/11/18(日) 22:00:22.08ID:lYEjFXlc0
>>296

42[ Oh where, oh where has my little dog gone?
30[ Oh where, oh where can he be?
46[ With his ears cut short and his tail cut long,
26[ Oh where, oh where is he?
26[ Oh where, oh where is he?

26[ Oh where, oh where is he?

こうなるんだが?
0301ふぉr
垢版 |
2018/11/18(日) 22:49:58.57ID:vBW5Msb60
>>299
char s [42line[LINESIZE];
この行は意図がよくわからない。
"s"と"42"がどのような意味をもつのか。
どちらも必要ないのでは?

for(i=1; fgets(line,LINESIZE,stdin)!=NULL; i++ ){
この行、完璧です。

for文の中で、まず最初に行番号であるiを出力すること。(3桁の幅も忘れずに)

次にコレ。
for(ch=0; line[ch]!=`\n`;ch++);
ここは完璧。問題ない。

その後、
printf("%d> ", (int)strlen(line)-1);
これも意図が良くわからない。
"["を出力し、次にchを出力する、そして"]"を出力する。
0302名無し生涯学習
垢版 |
2018/11/18(日) 23:09:53.08ID:u52czSVP0
>>301
よく分かんないので明日やってみます
0303名無し生涯学習
垢版 |
2018/11/18(日) 23:58:25.57ID:gOQAh1RZ0
>>297
ご指摘ありがとうございます。
問題を理解し、m,nは逆に、r=mへと変更しました!
基礎で申し訳ないのですが、nの範囲を指定するのは
for分を使えばいいのですかね…?
0304名無し生涯学習
垢版 |
2018/11/19(月) 00:00:57.42ID:B2fYN1a30
>>290さん
いや・・・今食い久野を教えてほしいんですが・・・もう時間がないので
0305名無し生涯学習
垢版 |
2018/11/19(月) 00:01:53.90ID:B2fYN1a30
>>292さん

もう時間がないので教えてくださいそれでもわかりません。
0306名無し生涯学習
垢版 |
2018/11/19(月) 06:10:00.35ID:bRPAGXNB0
>>303
nの範囲?
1 < n < 9500
これのことを言ってるのかな。
これは標準入力に与えられる値がこの範囲にありますよというだけで、
プログラムには何も各必要ないよ。
バカでかい数値が入力された場合を考慮する必要はないってこと。
0308名無し生涯学習
垢版 |
2018/11/19(月) 09:09:43.90ID:cEH51Dp20
>>306
え!?

標準入力
10000 8191
提出プログラムの標準出力
10000/81 = 123.1234'567901234

というようにnがある一定の数値を読み込めなくなったので必要だと思ってました…
じゃあプログラムが根本的に違うのかな
0309名無し生涯学習
垢版 |
2018/11/19(月) 11:54:58.69ID:pwDNYFMSM
>>308
nである8191は9500以外なので問題文のとおり。
いずれにしてもそこは今作るべきプログラムに関係ないので無視して進めよう。
0311名無し生涯学習
垢版 |
2018/11/19(月) 12:12:45.96ID:pwDNYFMSM
>>308
採点では0点になるだろうけど、そのプログラムの完成度はもう90%以上。
根本的に間違ってないので、小さなミスを修正するだけだよ。
0312名無し生涯学習
垢版 |
2018/11/19(月) 14:48:33.74ID:2c25f7Hf0
>>308 です。
8191の所は無事に解決しました、ありがとうございます!
ただ、出力が上手くいかないですね…
何故か少数第一が削除された状態で反映されてしまいます…
入力1
71 8
出力1
71/8 = 8.75
みたいな感じです、いったい何なんだ…
0313名無し生涯学習
垢版 |
2018/11/19(月) 18:37:54.93ID:fY1oiwIQ0
>>312

int rr[n], qq[n];
ではなく、
int *rr, *qq;
と宣言しておいて、

nを読み込んだ後に、
rr= calloc(n, sizeof(int));
qq= calloc(n, sizeof(int));
と配列を作る。

callocを使うには
#include <stdlib.h>
も必要。

割り算を繰り返して配列に値を入れ込むfor文の外(前)に、
1回目の割り算を事前にやっておく。
for文の中では2回目以降が実施される。
  for文の上(前)に
  q= r/n;
  r= r%n;

これで100点。
0314名無し生涯学習
垢版 |
2018/11/19(月) 22:10:07.91ID:zi5xCIQ40
>>313
ここ見逃してました、おかげで100点いけましたありがとうございます!
0315名無し生涯学習
垢版 |
2018/11/19(月) 22:57:58.78ID:B2fYN1a30
>>307

え、どういうこと?もう一度はるね

#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(state1==0&&isalpha(ch)) cw++;
if(state2==0&&isdigit(in)) cw++;
state2= (isdigit(in) ? 1 : 0 );
state1= (isalpha(ch) ? 1 : 0 );
}


printf("%d\n",cw);

return 0;
}
0316名無し生涯学習
垢版 |
2018/11/19(月) 22:58:27.82ID:B2fYN1a30
これどこがセグメンテーションエラーでてるの?
0317名無し生涯学習
垢版 |
2018/11/20(火) 04:23:24.81ID:vLv6ObvU0HAPPY
>>315

if(state1==0&&isalpha(ch)) cw++;
if(state2==0&&isdigit(in)) cw++;
cw1, cw2に変わってない。

isdigit(ch)
isdigit(in)
(ch)か(in)かどちらかに統一。

int in,cw,ch,state;
追加した変数の宣言ができていない。

state2= (isdigit(in) ? 1 : 0 );
state1= (isalpha(ch) ? 1 : 0 );
なぜ1と2を逆にした?

printf("%d\n",cw);
cw1とcw2に変わってない。

そもそも何をやろうとしているのかわかっていない模様。英字並びを数えるコードは講義で示されている。
これを英字と数字を数える、に編集するのが狙い。
なのに出力が1個だけという時点で課題を理解してないなというのがわかるよ。
1と2というのは英字を数える入れ物と数字を数える入れ物という意味だよ。
そこをまとめてしまったり一部を逆にしたりすれば、それぞえを数えることができないよ。

上記を修正すればとりあえず100点とれるけど、なぜなのかを良く理解したほうがいいよ。
0318名無し生涯学習
垢版 |
2018/11/20(火) 04:49:16.97ID:0sC2EqO20HAPPY
>>312
うまく出力出来ないです・・・
どこが間違ってるのか教えて下さい・・・
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況