[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/15 06:15 / Filesize : 299 KB / Number-of Response : 887
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++の宿題を片付けます 104代目



1 名前:デフォルトの名無しさん [2008/02/04(月) 23:32:19 ]
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 www.linux.or.jp/JM/index.html
【過去ログ検索】        chomework.sakura.ne.jp/
【wiki】               www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 103代目
pc11.2ch.net/test/read.cgi/tech/1200318925/

99 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:29:41 ]
>>98
ありがとうございます。えっと、つまり…どの部分をどう変えればいいんでしょうか…orz

100 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:35:24 ]
>>99
int year = 2008;
int month = 2;
int first_dow = 5; /* 1日は金曜日 */
を変えればいい。
year, monthはそれぞれscanf()か何かで入力すればいいし、first_dowは問題に書いてある通り。
>(課題では,前回のプログラムを使って1日の曜日を計算する)
つまり、「前回のプログラム」がないと作れない。

101 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 13:37:59 ]
>>100の優しさに発情した

102 名前:デフォルトの名無しさん [2008/02/09(土) 13:55:43 ]
ありがとうございます。
すいません これもできれば...

問?
関数定義に関する次の記述中の()に入れる適切な字句を解答群の中か
ら選べ。なお、同じ解答を複数回使用してもよい。

関数の基本構成は次のようになっている。

記憶クラス 型 関数名(引数の型と名前)
{
宣言と文
}

関数の記憶クラスには、その関数をほかのモジュールから参照できる (1) 、
その関数をほかのモジュールから参照できない (2) があり、特に指定しない場
合は (3) になる。
関数の型は、その関数が (4) 文で戻すデータの型である。また、特殊な型と
して (5) があり、戻り値をもたないことを示す。型が (6) の戻り値
を使用する場合には、省略することができる。
関数でデータのやりとりをするには引数を用いる。関数の定義側の変数を
(7) と呼び、この関数を呼びだす側の引数を (8) と呼ぶ。

(1)〜(3)、(5) (6)の解答群
ア char イ extern ウ int エ static オ void
(4)の解答群
ア break イ continue ウ exit エ goto オ return
(7) (8)の解答群
ア 定数 イ 仮引数 ウ 元引数 エ 実引数 オ ポインタ変数


103 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:04:51 ]
>>102
(1)extern
(2)static
(3)extern
(4)return
(5)void
(6)int
(7)仮引数
(8)実引数

104 名前:デフォルトの名無しさん [2008/02/09(土) 14:06:27 ]
問?
ファイル入出力に関する次の記述の正誤を、解答群の中から選べ。

(9) fopen関数のエラー時の戻り値は NULL である。
(10) ファイルのオープンモードを ゙a゙ (追加書き込み)と指定した場合、ファイルが存
在しない場合はエラーとなる。
(11) プログラム中に fopen関数を使用した場合、 fclose関数を記述していないとコ
ンパイルエラーが発生する。
(12) fscanf関数のエラー時の戻り値は NULL である。
(13) fgets関数のファイル終了時の戻り値は EOF である。
(14) fgets関数は読み込んだ文字列の最後に ゙\0゙ を付加する。
(15) fgetc関数及びgetc関数は、ファイルから1文字ずつ読み込む。
(16) ungetc関数はファイルから読み込んだ文字を、まだ読んでいなかったものとし
て扱う。

解答群
ア 正しい イ 誤り



105 名前:デフォルトの名無しさん [2008/02/09(土) 14:08:55 ]
どなたか 問7 問8の解答を教えていただけると ありがたいのですが..



106 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:11:01 ]
>>104
(9) ○ (10) (多分)× (11) × (12) (0がNULLと同等に扱えるから)○
(13) × (14) ○ (15) ○ (16) (なんか表現が微妙だが)○

107 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:15:39 ]
>>106
(12) について
fscanf は入力エラーのとき EOF を返す



108 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:15:48 ]
ungetcはストリームに戻すというイメージがある

109 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:36:44 ]
>>100
ありがとうございます!!本当に助かりました!

110 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:40:35 ]
{
*buffer = '0' + ((char)(data >> 8) & 0x0F);
if(((data >> 8) & 0x0F) > 9)
*buffer += 7;
buffer++;
*buffer = '0' + ((char)(data>>4) & 0x0F);
if(((data>>4) & 0x0F) > 9)
*buffer += 7;
*buffer++;
*buffer = '0' + ((char)data & 0x0F);
if((data & 0x0F) > 9)
*buffer += 7;
}
これは、10ビットバイナリ値を3桁の16進数へ変換するらしいのですが
これを4桁の10進数にするには、どのように書けば良いのでしょうか。
cは全くの初心者で、本来はで基礎から勉強すれば良いのですが、すぐに
この部分だけのソースが欲しいのです。だれか、お助けください。

111 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:46:49 ]
>>110
sprintf(buffer, "%04d", data);

112 名前:110 mailto:sage [2008/02/09(土) 14:55:51 ]
>>111
ありがとうございます。こんな早く対応して頂けるなんて感謝です。
おかげさまで4桁の数字が表示されました。

ただ、プログラム全体としては、桁が増えた分動かなくなってしまいました。
もう少し、頑張ってみます。
今後とも、どうぞよろしくお願いします。

113 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 14:55:58 ]
>>110
{
int i;
for (i = 12; i >= 0; i -= 4)
*buffer++ = "0123456789ABCDEF"[(data >> i) & 15];
}

114 名前:デフォルトの名無しさん [2008/02/09(土) 14:56:41 ]
問7

プログラムの説明

このプログラムの目的は、コマンドラインより入力されたビット列を15ビットごとに
パリティビットを付加し、16進数で表示することである。
コマンドラインから渡される引数には、ビット列のほかに偶数パリティ、奇数パリティ
を選択するパラメータがある。
ビット列は255ビット以内の任意の長さであり、15ビットの倍数に満たない場合は、
足りないビットには0を挿入する。
なお、コマンドラインの入力に間違いはないものとする。

コマンドラインの書式

プログラム△ビット列(任意の長さ)△パリティの指定



115 名前:デフォルトの名無しさん [2008/02/09(土) 14:59:55 ]
パリティの指定
0 偶数パリティ
1 奇数パリティ

※「△」は1文字以上の空白文字を示す。

コマンドラインの例 (プログラム名が「toi7」の場合)
toi7 0101001100101010001010010010101011010 0

処理手順
@ コマンドラインより渡されたビット列を配列にコピーする。
A 配列に格納された文字列を、先頭から1文字ずつ取り出し以下の処理を行う。
・取り出した文字(ビット)の1の個数をカウントする。
・15ビットの数値に変換するために、変換後の数値を左に1ビットシフトし、数値
に変換した文字(ビット)とのビット演算を行う。
B15文字ごとに以下の処理を行う。
・変換後の数値を左に1ビットシフトする。なお、ビット列が15文字に満たない場合は、足りない分左にシフトする。
・カウントした1の個数から、パリティビットを付加する。偶数パリティであれば
1の個数が偶数になるように、奇数パリティであれば奇数になるようにパリティ
ビットを付加する。
・パリティビットを付加した変換後の数値を16進数で表示する。


116 名前:110 mailto:sage [2008/02/09(土) 15:08:17 ]
>>113
ありがとうございます。 4桁の数字が、ちゃんと表示されました。
ただ、10進数の表示をしたいのですが英字まで表示されてしまいます。
引き続き、アドバイス頂けた助かります。
ほんと、すみません。

117 名前:デフォルトの名無しさん [2008/02/09(土) 15:18:50 ]
実行結果 (プログラム名が「toi7」の場合)
C:\>toi7 0101001100101010001010010010101010010 0
532B
1495
A401
※「C:\>」はコマンドプロンプトを示す。





118 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:22:36 ]
>>117
#include <stdio.h>

int str2bit(char *str, char *pal, int , int);

int main(int argc, char **argv)
{
int i = 0;
int cnt = 0;
int hyoji = 0;
int res = 0;
char array[256];

memset(array, 0, sizeof(array));
memcpy(array, argv[1], strlen(argv[1]));

for ( i = 0 ; i < strlen(array); i++ ) {
if ( i && !(i % 15) ) { /* 区切り */
/* bit化 */
res = str2bit(array, argv[2]
, hyoji * 15, strlen(array));
fprintf(stdout, "0x%4x\n", res);
hyoji++;
}
}
res = str2bit(array, argv[2], hyoji * 15, strlen(array));
fprintf(stdout, "0x%4x\n", res);

return 0;
}


119 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:24:15 ]
>>118の続き
int str2bit(char *str, char *pal, int cur, int max)
{
int res = 0;
int i = 0;
int cnt =0;
char t_byte[16+1];

memset(t_byte, 0, sizeof(t_byte));

for ( i = 0; i < 15; i++ ) {
t_byte[i] = ( cur + i >= max ) ? '0' : str[cur + i];
if ( t_byte[i] == '1' ) {
cnt++;
res += 1;
}
res <<= 1;
}

if ( *pal == '0' ) { /* 偶数パリティ */
if ( cnt % 2 )
res++;
} else { /* 奇数パリティ */
if ( !(cnt % 2 ) )
res++;
}
return res;
}
できたから載せただけ。

120 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:29:45 ]
>>119
特定しましたよ。

121 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:34:26 ]
>>120
何を特定できた??

122 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:36:01 ]
>>115 入力チェックは一切していない
#include<stdio.h>

void encode(char *bits, int parity)
{
unsigned short value=0;
int i, bitnum=0;

for(i=0;bits[i];i++)
{
value=(value<<1)+bits[i]-'0';
bitnum+=value&1;
if((i+1)%15==0)
{
printf("%04X\n", (value<<1)+((bitnum+parity)&1));
value=0;
bitnum=0;
}
}
if((i%15))
{
value<<=(15-(i%15));
printf("%04X\n", (value<<1)+((bitnum+parity)&1));
}
}

int main(int argc, char *argv[])
{
if(argc==3) encode(argv[1], atoi(argv[2]));

return 0;
}

123 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:43:15 ]
[1] 授業単元:プログラミング入門演習
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6023.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: (2月12日まで)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

プログラムの一部 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6024.txt

コンパイルできてもセグメントエラーorz どなたかお願いします。



124 名前:110 mailto:sage [2008/02/09(土) 17:59:53 ]
{
int i;
for (i = 12; i >= 0; i -= 4)
*buffer++ = "0123456789"[(data >> i) & 9];
}

アドバイスいただいた、プログラムを10進数表示させようと上のように書き換えたのですが
このように書くと0189しか表示されません。
こんな簡単な奴ふざけるなと思わせてしまって申し訳ないのですが
どうか、教えていただけないのでしょうか。
初心者のスレかくのが本来ですが、マルチぽくなるのでこのまますみません。

125 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:14:58 ]
>>124
data>>iで済むのは16進数だからであって、
10進数で同じ方法は考えないほうがいい。

126 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:20:09 ]
>>124
{
unsigned tmp;
for(tmp=1000;tmp>0;tmp/=10)
{
*buffer++=((data/tmp)%10)+'0';
}
}

127 名前:110 mailto:sage [2008/02/09(土) 18:37:44 ]
>>125>>126

アドバイスありがとうございます。無事に動作するようになりました。
ASMを勉強していてASMでの書式など有る程度把握出来てきたのですが
c言語は、書式がまるっきり分からず困っていました。
c言語は生活に十分必要な物だと思いますのでこれを機に勉強をしようとおもいます。

とても困っていたので、ほんと感謝の気持ちでいっぱいです。
ありがとうございました。



128 名前:デフォルトの名無しさん [2008/02/09(土) 19:32:03 ]
>>117の続き

プログラム

/*パリティビットの生成*/
#include <stdio.h>
#include <string.h>

main(int argc,char *argv[])
{
char dum[256];
int num,cnt;
int i = 0,j;

(41) ;
while(dum[i] != `\0`){
num = cnt = 0; for(j=0;j<15 && dum[i] != `\0`;j++){
(42) ;
num <<= 1;
(43);
}
for (;j < 16; j++)
num <<= 1;
if ( (44) == (1 ー ( (45) ー '0')))
num |= 1;
printf("%x\n",num);
}
}


129 名前:デフォルトの名無しさん [2008/02/09(土) 19:44:13 ]
>>128

すいませんm(_ _)m

しばらく書き込み出来なかったもんで..

上記の(41)〜(45)を答えるんですが..

(41)の解答群
ア dum = argv イ dum = argv[1] ウ strcpy(dum,argv) エ strcpy(dum,argv[1])
(42)の解答群
ア cnt += 1 イ cnt += dum[i] + 1 ウ cnt += dum[i] - `0' エ cnt += dum[i] + `1'
(43)の解答群
ア num |= dum[i] - `0' イ num |= dum[i++] - `0' ウ num &= dum[i] - `0' エ num &= dum[i++] - `0'
(44)の解答群
ア cnt イ cnt / 2 ウ cnt % 2 エ cnt * 2
(45)の解答群
ア argv[1] イ *argv[1] ウ argv[2] エ *argv[2]

です

130 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:05:59 ]
[1] 授業単元:プログラミング
[2] 問題文:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6025.txt

input.txt: kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6026.txt

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C
[4] 期限:2月13日正午
[5] その他の制限:

計算式の記述が分かり辛いですが、どうぞよろしくお願いいたします。

131 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:31:45 ]
>>130
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6027.txt

132 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 01:19:11 ]
>>131
ありがとうございます!

133 名前:デフォルトの名無しさん [2008/02/10(日) 02:10:32 ]
>>114 >>115 >>117
プログラム >>128
解答群 >>129

すいませんm(_ _)m どなたか解答をお願いします。



134 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:15:38 ]
(42):ウ
(43):イ
(44):ウ
(45):ウ

但し(41)の答えが何なのか、これが分らない

135 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:19:59 ]
ごめん、(45)はエだ。

但し(41)の答えがn(ry
自分でやってくれ

136 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 03:21:16 ]
>>134
エ じゃないかな

137 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 04:10:18 ]
>>136
一つくらい自分でやらせようとしてたんだが…




138 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 04:12:39 ]
入門書に確実に載ってる問題を質問するようなヤツが考えるわけもない
ググってもすぐ分かるというのに

139 名前:デフォルトの名無しさん [2008/02/10(日) 10:34:58 ]
すいませんm(_ _)m ありがとうございます。

(41)エ
(42)ウ
(43)イ
(44)ウ
(45)エ


これでOKでしょうか?



140 名前:デフォルトの名無しさん [2008/02/10(日) 11:03:41 ]
#include <stdio.h>
main()
{
char x[3][7] = {"first","second","third"};
char *z[3] = {"first","second","third"};
char **p;


p = z;
p++;
@ printf("%c\n",**p);
A printf("%s\n",*p+1);
B printf("%s\n",*(p+1)+1);

これだと xの要素数は21個で ポインタ配列zの要素数は19個
@ABのprintfの表示は @がs Aがecond Bがhird
でいいですかね?

141 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:35:41 ]
>>123
これで合ってるのかな。srandがよくわからない。。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6028.c

>>140
合ってる


142 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:18:18 ]
>ポインタ配列zの要素数は19個
3個だろ

143 名前:54 [2008/02/10(日) 15:24:52 ]
答えてくれたみなさんありがとうございます!!
めっちゃかんしゃです。

144 名前:デフォルトの名無しさん [2008/02/10(日) 15:38:46 ]
度々大変すいませんm(_ _)m どなたか解答をお願いします。
プログラム

/*語尾変換プログラム*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int f_read(void);
int w_cnv(int ln);

#define CHRSIZE sizeof(char)

char str[20][(254 + 2)* CHRSIZE * 2 + sizeof(char)];

main()
{
int ln;
int i;
int cnt;

ln = f_read();
cnt = w_cnv(ln);
for(i=0;i<ln;i++) printf("%s",str[i]);
printf("\n文章中を%d件変換し、\n",cnt);
printf("文末を%d件付加しました。\n",ln);
}
/*ファイル入力*/
int f_read(void)
{
FILE *fp;

145 名前:デフォルトの名無しさん [2008/02/10(日) 15:39:16 ]
続き
char buf[256];
int cnt = 0;

if((fp = fopen("word.dat","r")) == NULL){
printf("入力ファイルがオープンできません\n");
exit(1);
}
while( (46) != NULL)
(47) ;
fclose(fp);
return(cnt);
}
/*変換*/
int w_cnv(int ln)
{
int i;
int cnt = 0;
char w_str[256];

for(i=0;i<ln;i++){
while( (48) != NULL){
strcpy(w_str,strstr(str[i],"な") + CHRSIZE * 2);
strcpy(strstr(str[i],"な"),"にゃ");
(49) ;
cnt++;
}
strcpy( (50) ,"にゃ\n");
}
return(cnt);
}

146 名前:デフォルトの名無しさん [2008/02/10(日) 15:40:31 ]
(46)の解答群
ア fgets(buf,255,fp) イ fgets(fp,buf,255) ウ fscanf("%s",buf,fp) エ fscanf(fp,"%s",buf)

(47)の解答群
ア strcpy(buf,str[cnt++]) イ strcpy(buf,str[cnt+1],buf) ウ strcpy(str[cnt++],buf) エ strcpy(str[cnt+1],buf)

(48)の解答群
ア strcat(str[i],"な") イ strchr(str[i],"な") ウ strcpy(str[i],"な") エ strstr(str[i],"な")

(49)の解答群
ア strcat(w_str,str[i]) イ strcat(str[i],w_str) ウ strcpy(w_str,str[i]) エ strcpy(str[i],w_str)

(50)の解答群
ア strchr(str[i],`\0') イ strchr(str[i],`\n') ウ strchr(w_str[i],`\0') エ strchr(w_str[i],`\n')

文中の「な」を「にゃ」に変換し、さらに文末の語尾に「にゃ」を付加して表示するプログラムです
(46)〜(50)の答はどうなりますかね?

147 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:16:12 ]
>>146
うざいからうpロダ使ってくれないかな。



148 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:03:18 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6029.txt
[3]
環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C
[4] 期限:2月13日
[5] その他の制限:

前回は本当にありがとうございました。
今回もよろしくお願いいたします。


149 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:42:59 ]
>>148
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6030.txt

150 名前:デフォルトの名無しさん [2008/02/10(日) 18:09:40 ]
[1] 授業単元:パターン認識
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6031.lzh
[3]
環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2月13日
[5] その他の制限:
動的計画法についての課題です。問題が図表付きなので圧縮しています。

151 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:25:53 ]
>>149
ありがとうございました。

152 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:05:23 ]
[1] 授業単元:プログラミング
[2] 問題文:入力された文字列を逆に並べて表示せよ(例:TOKYO→OYKOT)
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語:C
[4] 期限:2008年2月13日8:00まで
[5] その他の制限:#include <stdio.h>で使える命令のみ
            一次元配列のみ

153 名前:デフォルトの名無しさん [2008/02/10(日) 21:10:05 ]
[1]プログラミング
[2]時計の針2本がなす角(中学入試の算数問題でよく出題される問題)
問:キーボード上から時と分を入力し、その時間とそれを指す長針・短針
のなす角を求める。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6032.c
[3] 環境
 [3.1] OS:Windows
 [3.2] bcc32
 [3.3] 言語: C
[4] 期限: [2008年2月12日まで]
[5]その他の制限:
入力・計算・出力部分は必ず関数化し、mainの中でそれらを呼び出すようにする

なす角θを計算する部分は成功しましたが(そこまでの完成版はリンクしたプログ
ラムを参照)、キーボード上から入力した時間をうまく表示することができません。出力は、

??:?? なす角:??°

とします。どうか宜しくお願いします。

154 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:11:22 ]
>>152
#include <stdio.h>

int main(void)
{
char *p, str[256];

scanf("%s", str);

p = str;

while(*p) p++;
while(p--!=str) putchar(*p);

return 0;
}


155 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:02 ]
>>154
自分の技量不足で申し訳ありませんが質問してもよろしいでしょうか?
関数の*pの*は何か意味があるのでしょうか?

156 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:35 ]
>>153
>>149

157 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:35 ]
>>153
void output(int s, int t, double r1)
{
printf("%d:%d なす角:(%.1f)°\n", s, t, (double)r1);
}
にしてh1とm1渡すだけじゃね?



158 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:24:52 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6033.txt
[3] 環境
 [3.1] OS: Win XP
 [3.2] コンパイラ名とバージョン: visual studio 2005
 [3.3] 言語: C
[4] 期限: 2008年2月12日午前7時00分
[5] その他の制限:色々な処理方法があるそうですが、
  なるべくレベルが低い方法でよろしくおねがいします。

159 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:27:27 ]
>>155
間接参照。

160 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:30:03 ]
>>159
ありがとうございます!

161 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 21:56:55 ]
>>158
#include <stdio.h>

static int su[9], cnt;

void perm(int *a, int j){
    int i;
    if(j == 9){
        int x = 0, y = 0;
        for(i = 0; i < 6; i++) x = 10*x + a[i];
        for(i = 6; i < 9; i++) y = 10*y + a[i];
        if(x%y == 0){
            printf("%d / %d = %d\n", x, y, x/y);
            cnt++;
        }
        return;
    }
    for(i = 0; i < 9; i++)
        if(su[i] == 0){
            su[i] = 1;
            a[j] = i + 1;
            perm(a, j + 1);
            su[i] = 0;
        }
}

int main(void){
    int a[9];
    perm(a, 0);
    printf("合計パターン数 = %d\n", cnt);
    return 0;
}

162 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:35:42 ]
>>158
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6034.txt

163 名前:デフォルトの名無しさん [2008/02/10(日) 23:00:27 ]
>>144
>>145
>>146

ですが
解答はいかがでしょうか...

携帯からで見づらくて大変すいません...m(_ _)m



164 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:02:13 ]
>>163
>>1

165 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:15:13 ]
さすがに携帯にうpろだはきつくね?

166 名前:デフォルトの名無しさん [2008/02/10(日) 23:15:22 ]
153です。

157番さんのおっしゃる通りにしたら、「output関数における呼び出し時のパ
ラメータが足りない」というエラーが出ました。157番さんの通りにプログラム
を設計するなら、mainの中でoutputなどの各種呼び出しをどのようにすれば良い
のか教えて下さい。プログラミングの基本である自学自習を心掛けていますが
この呼び出し関数の設計などはあまり得意な方でないのでどうかお願いします。

167 名前:123 mailto:sage [2008/02/10(日) 23:15:37 ]
>>141
ありがとうございます。実行してみたのですが生成される乱数が全て0になってしまいます。
srand関数を使って乱数の種を定めた時のプログラミング例を載せてみます。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6036.c 
どうかお願いします。



168 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:35:33 ]
>>166
お前どうやって>>153まで自分で出来たんだ?
得意じゃないってレベルじゃねーぞ
output(h1, m1, show1);

169 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:37:49 ]
誰かの回答だろ

170 名前:153 [2008/02/10(日) 23:57:48 ]
正直に言うと今までに扱った内容を参考にしながらでした。
それでも不足部分は沢山あるのでそれを補えるよう努力しなければと思い
ます。

ちなみにコンパイルできました。ありがとうございました。

171 名前:デフォルトの名無しさん [2008/02/11(月) 00:13:35 ]
質問!

エラーがでたわけではないのですが、VC++2003.NETで
ビットマップ画像をインポートして追加しようとしたのですが、
実行するとその画像が表示されません!
実行の際には画像が切り替わっている様子がうかがえるのですが、表示されないのです。
新規作成で追加するとちゃんと表示されるのですが・・。

どなたか原因分かる方いますか?

172 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:13:39 ]
double→int→doubleとか意味不明なことしてるし、
設計を見直すべき。

173 名前:デフォルトの名無しさん [2008/02/11(月) 00:17:52 ]
>>146です

すいません 荒らしてしまって...

携帯からなんで うp無理みたいです...

なんかいろいろほんとすいませんでしたm(_ _)m



174 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:21:45 ]
>>167
「10 動的に確保したメモリの解放」
これが抜けてる以外は問題なさそうだけど。

試しに実行してみたら、ちゃんと乱数生成されてるし。

175 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:30:32 ]
>>174
pc環境とか関係するんですかね?とりあえず学内pcにファイルを移して実行してみます。
本当にありがとうございました。

176 名前:50 mailto:sage [2008/02/11(月) 00:30:47 ]
>>65〜73、87の書込みをしてくださった方々
一番難しい課題Bを解いていただき、ありがとうございましたm(__)m


177 名前:デフォルトの名無しさん [2008/02/11(月) 00:51:27 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6037.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:Visual C++ 2005
 [3.3] 言語: C
[4] 期限: 2月13日
[5] その他の制限:特にありません




178 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 01:48:02 ]
>>173
うpろだが使えないとしても、>>1読んでテンプレくらいは使って欲しいところ
まぁ推奨になってるからどうしてもテンプレは使いたくないってのなら止めないけど

179 名前:デフォルトの名無しさん [2008/02/11(月) 11:21:06 ]
>>144
>>145
>>146
携帯からの投稿自体 無理がありました すいませんでした...m(_ _)m

できれば解答をいただけると幸いです..



180 名前:デフォルトの名無しさん [2008/02/11(月) 14:34:02 ]
[1] 授業単元:
[2] 問題文:
 文字列を入力させ、それを表示するプログラムを作成せよ。
 ただし、文頭にaが入力された場合はそれを表示せず、
 数値が入力された場合はエラーとしてもう1度入力させること。

【実行例】
  入力=jgmttgad18j
 ※エラー※数値が入力されました。
 もう1度入力してください
  入力=aaaiaueokaki

  出力=iaueokaki

[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C++
[4] 期限:2008年2月11日22:00まで
[5] その他の制限:

先生が、ヒントで「フラグを使うとできるかも」といってました!

よろしくお願いします!

181 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:54:09 ]
>>180
#include <iostream>
#include <string>
using namespace std;
int main()
{
while(1) {
cout << "入力=";
string s;
cin >> s;
if( s.find_first_of( "0123456789" ) == string::npos ) {
cout << "出力=" << s.substr( s.find_first_not_of( "a" ) ) << "\n";
break;
} else {
cout << "数値が含まれるので、再度入力してください。\n";
}
}
return 0;
}

182 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:40:08 ]
>>180
#include <stdio.h>
#include <string.h>

int main(void)
{
char str[256];
int top;
printf("入力:");
start:
top=0;
fgets(str,256,stdin);
again0:
if(str[top]>=48&&str[top]<=57){
printf("再入力:");
goto start;
}
if(top++<strlen(str))goto again0;
top=0;
again1:
if(str[top]=='a'){
top++;
goto again1;
}
printf("出力:");
again2:
printf("%c",str[top++]);
if(str[top]!=NULL)goto again2;
return 0;
}

183 名前:デフォルトの名無しさん [2008/02/11(月) 18:57:58 ]
>>181
>>182
ありがとうございます!
できれば入力に
cin.getlineとか使うくらいの初歩のでもやってほしいんですが..(><)
入力だけでいくと
#include<iostream.h>

main()
{
char a[50] ;

cout<<"a=" ;
cin.getline(a,50) ;
}

こんな感じで・・
サーセン(・_・、)

184 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:38:23 ]
>>180

#include <iostream>
#include <string>
#include <boost/regex.hpp>

int main() {
    while (true) {
        std::cout << "入力: ";
        std::string line;
        if (!std::getline(std::cin, line))
            break;
        boost::regex re_num("\\d+");
        if (boost::regex_search(line, re_num)) {
            std::cout << "※エラー※数値が入力されました" << std::endl;
            std::cout << "もう一度入力してください" << std::endl;
            continue;
        }
        boost::regex re_str("^a+");
        std::cout << "出力: "
            << boost::regex_replace(line, re_str, "") << std::endl;
        break;
    }
}

185 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:41:23 ]
>>183
それなら>>180
cin >> s;

char sz[50]; cin.getline(sz,50); s=sz;
にすればいいが、
初歩というのは、もしかしてstringを使うなと言ってる?

186 名前:デフォルトの名無しさん [2008/02/11(月) 19:46:40 ]
>>184
>>185

ありがとうございます!!


stringをならってません(・_・、)
ごめんなさい↓

187 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 20:00:14 ]
>>186
#include <iostream>
using namespace std;

bool hasDigit( const char* pstr )
{
while(*pstr) {
if( isdigit(*pstr) )
return true;
pstr ++;
}
return false;
}

int main()
{
while(1) {
cout << "入力=";
char sz[50];
cin.getline( sz, sizeof(sz) );
if( !hasDigit( sz ) ) {
char* p;
for( p=sz; *p=='a'; p++ );
cout << "出力=" << p << "\n";
break;
} else {
cout << "数値が含まれるので、再度入力してください。\n";
}
}
return 0;
}



188 名前:デフォルトの名無しさん [2008/02/11(月) 22:32:23 ]
[1] 授業単元: プログラム テスト
[2] 問題文 kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6038.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.3] 言語:C言語
[4] 期限: できれば、早いとありがたいです。


よろしくお願いいたします。



189 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:44:53 ]
[1] 授業単元:プログラミング
[2] 問題文
四問あります
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6039.zip
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: visual stdio
 [3.3] 言語: C
[4] 期限: 2月13日の昼まで

190 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:46:32 ]
>>188
アウエイ
(50)は解なし。強いてあげればイか。

191 名前:189 mailto:sage [2008/02/11(月) 22:48:29 ]
すいません
>>189には不備がありました

課題1には二つ問題があるのですが
一つtxtファイルが入ってません
それを書き直したものにしますので少々待っててください

192 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:58:36 ]
[1] 授業単元:プログラミング
[2] 問題文
5問あります
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6040.zip
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: visual stdio
 [3.3] 言語: C
[4] 期限: 2月13日の昼まで
[5]ご迷惑をおかけして申し訳ありません
  期限を13日としていますが出来ればなるべく早くお願いします

193 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:07:15 ]
>>192
どれも最近見た気がするが、これって何処の課題なんだろ。
最後の二つは、ちょっと前に俺がうpしたから間違いない。

194 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:15:21 ]
>>193
本当ですか
よろしければその解答を頂けないでしょうか

195 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:18:41 ]
>>194
ちょっと前にうpしたって言ってるじゃん。
ホントに欲しけりゃ、スレから探して持っていけばいいさ。

196 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:30:16 ]
>>195
ありがとうございます
4と5は解決しました

197 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:36:55 ]
アイムジャグラーちっとも勝てません。なぜでしょうか?
ttp://www.borujoa.org/upload/source/upload16700.lzh
↓参考ページ。
ttp://www.htv-net.ne.jp/~dark/suro%20aimu%20jagura-.html



198 名前:デフォルトの名無しさん [2008/02/11(月) 23:37:55 ]
>>190さん
ありがとうございます。

まぁ結果的に2級は落ちましたが..

少しは勉強になったのでよかったです

皆さん いろいろ迷惑をかけましたがありがとうございましたm(_ _)m



199 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 23:40:13 ]
試験の問題だったのか。
この程度だと、あんまり取る意味なさそうな気も。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<299KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef