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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:55:25 ]
あなたが解けない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++の宿題を片付けます 102代目
pc11.2ch.net/test/read.cgi/tech/1197132472/

103 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 12:57:36 ]
動くのはたまたまじゃないが、要素数が分かってるからやる必要はないかもな。

104 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:00:24 ]
配列の要素数を指定してないんだからsizeofの方が自然じゃね?
*month[12]とかしてるなら12でもいいけど。

105 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:02:44 ]
それだと文字数が12の予感

106 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:03:58 ]
一度他の変数に限界値保存して比較したほうがいいな。
forループ抜けるまで変動はしないのだから、毎回sizeof2つ使って除算までしてたら無駄過ぎる。
あとbreakする前にputsすればいいところを、わざわざif文外に持ってくる理由も分からん。

107 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:08:55 ]
static忘れてね?

108 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:11:11 ]
忘れてた。

109 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:22:35 ]
sizeof(array) / sizeof(* array)は(コンパイル時に確定するから)定数だよ。

110 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:24:20 ]
>>105
アホがいるw

111 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 13:37:35 ]
>>110
すんませんでした。



112 名前: ◆gDKJL3vNys mailto:sage [2008/01/16(水) 14:30:34 ]
>>99
レスありがとうございます
それで全然かまわないのでよろしくお願いします
お手数おかけし申し訳ありません

113 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 17:58:06 ]
[1] 授業単元: C言語
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5782.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:visual studio 2005
 [3.3] 言語: C言語
[4] 期限: 今日中です。。。
[5] その他:よろしくお願い致します。

114 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 19:01:05 ]
>>113
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5783.txt

Switchを再入力させる条件が読み取れなかったので、
その辺は自身で修正して。

115 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 19:06:48 ]
>>113
おいらもできた。マルチバイト文字セットをつかってくれ
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void) {
#define BUFSIZE 256
char buffer[BUFSIZE]; unsigned char val = 0; int bitpos, bitnum, i;
while (1) {
printf("\nBit number : 7 6 5 4 3 2 1 0\n" "Bit :");
for (i=7; i >=0 ; --i) printf( ((val >> i) & 1) ? " 1" : " 0");
while (1) {
printf("\n\ninput change bit : ");
fgets(buffer, BUFSIZE, stdin);
bitpos = atoi(buffer);
if (buffer[0] == '.') { return 0; }
else if (isdigit(buffer[0]) && (bitpos >= 0 && bitpos <= 7)) { break; }
puts("\nSorry. Input 0-7 number.\n" "(. is end)");
}
while(1) {
printf("\nSwitch on(1) or off(0) ? : ");
fgets(buffer, BUFSIZE, stdin);
bitnum = atoi(buffer);
if (isdigit(buffer[0]) && (bitnum == 0 || bitnum == 1)) {
val = (bitnum == 1) ? (val | (1 << bitpos)) : (val & ~(unsigned char)(1 << bitpos));
break;
}
puts("\nSorry. Input 0 or 1.");
} }
return 0;
}

116 名前:114 mailto:sage [2008/01/16(水) 19:16:28 ]
あ、バイトじゃなくてビットだから間違ってるorz

117 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 19:21:30 ]
>>113の人気に嫉妬しつつ書いてみた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5784.txt

118 名前: ◆gDKJL3vNys mailto:sage [2008/01/16(水) 19:36:27 ]
>>99
自分なりに調べてみましたが
仰られる通り
3664ではシステムクロック信号はΦ16MHzで
周波数16MHzでは1ステートは1/16MHz=0.0625μsになるようです
遅くなり申し訳ありませんがよろしければご参考ください

119 名前:114 mailto:sage [2008/01/16(水) 19:37:29 ]
>>114の修正版。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5785.txt

120 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:00:39 ]
>>114
>>115
>>117
本当にありがとうございます。

121 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:35:15 ]
[1] 授業単元:コンパイラ
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5786.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:どちらでも可
[4] 期限: 1月17日10:00まで
[5] その他の制限:特に無し
よろしくお願いしますm(__)m



122 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 21:33:08 ]
#include <stdio.h>

int main(void)
{
char buf[100], delim[] = "=)(+*-/.";
char *p, *q;

printf("入力 : ");
fgets(buf, sizeof(buf), stdin);

for (p = buf; *p != '\0'; p++) {
for (q = delim; *q != *p && *q != '\0'; q++);
if (*q)
printf("\n%c\n", *p);
else
putchar(*p);
}
return 0;
}

123 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:38:26 ]
>>121
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5787.txt

124 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 22:51:02 ]
[1] 授業単元:プログラミング
[2] 問題文:
番号(整数4桁)と氏名(文字型30バイト)から構成される構造体を定義し、データを入力してその内容を表示するプログラムを作成しなさい。
なお、プログラムの終了条件は、ゼロ以下の番号が入力された時点とする。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:1月23日
[5] その他の制限:

よろしくお願いします。

125 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:07:56 ]
#include <stdio.h>

struct _data{
int number;
char name[30];
};

int main()
{
int i, j, n;
char buf[100];
struct _data data[100];
for (i = 0; i < 100; i++) {
printf("number : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);
if (n < 0)
break;
data[i].number = n;
printf("name : ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%s", data[i].name);
}
for (j = 0; j < i; j++)
printf("%d %s\n", data[j].number, data[j].name);
return 0;
}
配列でよかったのだろうか?

126 名前:デフォルトの名無しさん [2008/01/16(水) 23:08:55 ]
>>118
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5788.txt

一応修正版、割り込みとかなしにしました
ビットシフト "<<" とかがわからんとかの話じゃないことを祈る

127 名前:デフォルトの名無しさん [2008/01/16(水) 23:17:40 ]
>>118
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5789.txt

連投すまん、ビットシフトも抜いた

128 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:24:37 ]
>>102
ありがとうございます!
おかげで助かりました。

129 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 23:38:43 ]
>>121
#include<stdio.h>
int main(void){
char buf[100+1];
for(;;){
if(fscanf(stdin, "%100[A-Za-z0-9]", buf)!=1)
if(fscanf(stdin, "%1[(+*/.),-]", buf)!=1){
if(fscanf(stdin, "%1[\n]", buf)!=1) fprintf(stderr, "\nError: unexpected character.\n");
break;
}
puts(buf);
}
return 0;
}

130 名前:デフォルトの名無しさん [2008/01/16(水) 23:55:12 ]
ITEM *insert(ITEM **root, char*str)
{
ITEM *pos;
ITEM *tmp;
tmp = (ITEM *) *malloc(sizeof (ITEM));//領域取得
if(tmp == NULL){//取得領域失敗
return NULL;
}
//取得した領域の初期化
memset((void *)tmp, '\0', sizeof(ITEM));
strcpy(tmp -> str , str); //入力された文字列を領域に設定
//*rootに保存
if(*root == NULL){ //リストが空か?
*root = tmp ;
}
else{//リストの末尾を探して追加
pos = *root;
while(pos -> next != NULL){ //次はあるか?
pos = pos -> next;
}
pos -> next = tmp;
}
return tmp;
}
入力された文字列をリストに格納するプログラムの一部です。
しかしこれだと最後に入力した文字列が表示されなくて困っています。
おそらくこの部分に問題があると思うのですが、おかしい部分はあるでしょうか?

131 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 00:04:49 ]
>>130
スレ違い
宿題だというなら>>1を読んでもう一度よく考えてみよう。



132 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:03:39 ]
こういうのって再帰使って処理するほうが楽だと思うんだけど。

tmp->nextがNULLじゃ無いんじゃない?

133 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:05:50 ]
NULLが0な処理系ならmemsetでNULLになってね?

それより、俺は返り値の意味があるのかとかmallocの前の*は何なのかとか気になるけど。

134 名前:デフォルトの名無しさん [2008/01/17(木) 01:11:41 ]
>>132
指摘ありがとうございます。
tmp->nextがNULLじゃ無いんじゃない? ってのは
while(pos -> next != NULLのことでしょうか?

>>133
mallocの前の*は、単なる消し忘れでした。

135 名前: ◆gDKJL3vNys mailto:sage [2008/01/17(木) 01:18:59 ]
>>127
ありがとうございます!
これからコンパイルして動作確認してみます
色々本当にありがとうございました

136 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:22:32 ]
LEDを赤く光らせたり青く光らせたりすると面白そう

137 名前:134 [2008/01/17(木) 01:41:51 ]
すいません。
自己解決しました。
なんかホントに的外しな質問をしてしまいましたw

138 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:54:44 ]
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):正数nとbを10進数としてキーボードから入力すると、
 nをb進数で表示するプログラムを作成せよ。
 実行例
 24[enter]
 8[enter]
 24(10) = 30(8)
[3] 環境
 [3.1] OS:window
 [3.2] コンパイラ名とバージョン:BCC
 [3.3] 言語:C
[4] 期限:1/17
[5] その他の制限:特にありません

139 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:55:52 ]
b進数の範囲は?

140 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 01:57:06 ]
>>139
すみません、2~36でお願いします

141 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 02:14:42 ]
>>138
#include<stdio.h>
const char *s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void conv(int n,int b){
if(n>0){
conv(n/b,b);
putchar(*(s+n%b));
}
}
int main(void){
int n,b;
scanf("%d",&n);
scanf("%d",&b);
printf("%d(10)=",n);
conv(n,b);
printf("(%d)\n",b);
return 0;
}
てきとー。おやすみなさい。



142 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 04:45:59 ]
[1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):文字列として入力した式(一行)を計算し、その値を表示するプログラム。
[3] 環境
 [3.1] OS:windows XP
 [3.2] コンパイラ名とバージョン:Visual Studio 8
 [3.3] 言語:C
[4] 期限:1/18
[5] その他の制限:少なくとも2つの2桁の整数に対する計算(四則演算)ができること。

どうかよろしくお願いしますm( _ _ )m


143 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:46:29 ]
【時間切れ】 (1/16)
>40

【未解決問題】
pc11.2ch.net/test/read.cgi/tech/1199515728/986 期限切れだが早めに (pass:c)

>>142 1/18
pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18
>>86 1/22
pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限

144 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:51:33 ]
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):円周上の点の複数の座標から円の中心(a,b)や半径rを求める
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C++
[4] 期限: 無期限
[5] その他の制限: 特になし

145 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 08:57:26 ]
>>144
点は3つでいいのかな?

146 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:07:47 ]
>>145
100個ぐらいからです・・・。
まったくわからないんです。よろしくお願いします。。。

147 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:17:34 ]
円を特定するには、一直線上にない異なる3点で必要十分じゃね?

148 名前:144 mailto:sage [2008/01/17(木) 09:21:01 ]
すいません。問題間違いました。

正しくは、100個の座標からそれが円であるかどうか(完璧にきれいな円でなくてもよい)を判定するプログラムの作成でした。

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

149 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:25:05 ]
判定方法は提示してもらわんとねぇ。

150 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 09:28:13 ]
>>149
すいません!ハフ変換を使って判定します。
色々と足りないところだらけで申し訳ありません。。。

151 名前:デフォルトの名無しさん [2008/01/17(木) 12:52:31 ]
[1] 授業単元: プログラミング入門
[2] 問題文
(1)走行距離10kmまでは基本料金の6000円。10kmを超えた場合は、超えた距離に対して1kmあたり50円が加算される。
(2)深夜料金10時以降5時までは最終的な料金を2割増しする20キロを超えると1割引とする。
(3)迎車を使用した場合は400円として(1)〜(3)を入力して料金を出力するプログラムを作れ。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:関数まで(初期の簡単なプログラムです)




152 名前:デフォルトの名無しさん [2008/01/17(木) 12:53:06 ]
151続き
(1)までのプログラム
#include<stdio.h>
main()
{
int run,price;
printf("走行距離(km)を入力せよ:");
scanf("%d",&run);
if(run<=10)
{
printf("料金は6000円です\n");
}
else
{
price=(run-10)*50+6000;
printf("料金は%d円です\n",price);
}
}

(2)と(3)お願いします。


153 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:09:10 ]
「2割増しする20キロ」とか、「(1)〜(3)を入力」とか、随分ややこしいな。

154 名前:デフォルトの名無しさん [2008/01/17(木) 13:19:22 ]
最初に乗ったキロと深夜かどうかなどの入力をさせてやろうとしたんですが・・・。できなくてとりあえず(1)までやってみました。ややこしくてすいません。

155 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 13:32:41 ]
落ち着け、>153は皮肉だ。
以下、問題を列挙
・深夜料金の適用条件
例えば乗車時刻が21:59だったら? 或いは4:59だったら?
・迎車との関係
例えば呼んだのが21:59だったら? また、迎車時刻を指定されることはある?
・消費税の考慮
・タクシー料金にしては論外に高い初乗り料金

156 名前:デフォルトの名無しさん [2008/01/17(木) 13:39:10 ]
>155
指摘ありがとうございます。

判定条件が指定されてないので、今回は乗車時刻が22時〜5時に一秒でもかかっていたら深夜料金として計算します。
迎車は有無のみで課金します。もし迎車を使用して深夜であれば最終的な料金は乗った距離の値段×深夜割増+迎車料金で出します。

消費税は考慮しません。確かに問題文法外な値段ですね^^;教授が意地悪なので・・・。

以上の点宜しくお願いします。

157 名前:デフォルトの名無しさん [2008/01/17(木) 15:41:20 ]
#include <stdio.h>
#include <malloc.h>
#define buffer_size 10
int main(int argc ,char *argv[])
{
FILE *fp;
fpos_t *start_fpos,*end_fpos;
char *buffer;
int n,option;
option=getopt(argc,argv,"rw");
switch(option){
case 'w':
fp=fopen(argv[1],"w");
buffer=(char *)malloc(buffer_size);
printf("文字列を書き込んでください\n");
scanf("%s",buffer);
fprintf(fp,buffer);
free(buffer);
break;
}
fclose(fp);
return 0;
}
指定したバッファサイズが入力文字数よりも小さい場合、
セグメンテーションエラーがでます。
#defineを変えないでmallocを使い書き加えるには何の関数を使えばいいですか?
ヒントをくださいませんか?よろしくお願いします。

158 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 15:47:11 ]
>>157
buffer=(char *)malloc(buffer_size*100);

159 名前:デフォルトの名無しさん [2008/01/17(木) 15:57:02 ]
[1] 授業単元: C言語入門
[2] 問題文
キーボードから入力された文字列に指定した文字が何個
含まれているか表示するプログラムを作りなさい。

動作例:


 キーから文字を数文字入力してください= alpha-dog

 調べる文字を入力してください= a

 入力された文字列の中に a は、2 個ありました。


[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: Microsoft Visual C++ 2005 Express Edition
 [3.3] 言語: C
[4] 期限: 1月17日
[5] その他の制限:

160 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:20:20 ]
>>159
#include <stdio.h>
int main(void)
{
int i,num=0;
char str[100],ch;
printf("文字列を入力してください:");
gets(str);
printf("探す文字を入力してください:");
scanf("%c",&ch);
for(i = 0;str[i];i++)if(str[i]==ch)num++;
printf("%c は %d 個見つかりました",ch,num);
return 0;
}

161 名前:157 [2008/01/17(木) 16:42:11 ]
正確な文字数でメモリ確保する方法ないですか?
ヒントください。



162 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 16:47:01 ]
文字列が入力されるまで長さがわからないなら、事前にその文字数分確保する方法はないだろ。
多目に確保するのがどうしてもイヤならリストにでもしろよw

163 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 17:09:18 ]
>>161
scanfを使わない

164 名前:デフォルトの名無しさん [2008/01/17(木) 18:10:39 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):整数をm個入力してソートし、その後(2分)検索をn回行うプログラムを作りなさい(mとnは入力して決める)。ただし、できるだけポインタを利用した関数を作成して用いなさい。
[3] 環境
 [3.1] OS: (Windows Vista)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C)
[4] 期限: [2008年1月18日12:00まで]
[5] その他の制限:

お願いします。

165 名前:デフォルトの名無しさん [2008/01/17(木) 18:18:26 ]
>>161
多めに確保して、改めてmallocで宣言するくらいだな。

166 名前: ◆cPUZU5OGFs mailto:sage [2008/01/17(木) 18:56:26 ]
前スレ986の2分木の者です。
何とか解決出来たので>>143のリストから削除お願いします。
もし取り掛かってる方いましたらありがとうございました。

167 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:53:12 ]
コンパイルは通るのですが、「メモリが"written"になることはできませんでした」というエラーが出てばっかりで、やりきれない気持ちでいっぱいになりました。
forループと複雑な計算を大量にしていると起こりやすい気がするのですが、その場合に考えられる特定の原因ってありますか?

168 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:56:50 ]
ポインタじゃねえの?

169 名前:デフォルトの名無しさん [2008/01/17(木) 19:59:44 ]
[1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク):kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5790.txt
[3] 環境
 [3.1] OS: Windows、Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 2008年1月17日21:00まで
[5] その他の制限: 図があるためリンクを押すとzipを開くようになっています。
            問題と図は無題.bmpです。ウイルスではありません。

お願いします。

170 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 19:59:52 ]
>>168
試しにforループ内のiを逐一表示してみたのですが、i++なのに何故か途中でとんでもない数字に飛んだりします。
ポインタの扱いを間違っているって事ですか?

171 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:00:11 ]
>>167
文章は読めたのですが、「こいつは一体何がいいたいんだ?」という疑問が出てばっかりで、
やりきれない気持ちでいっぱいになりました。
ソースを晒せばすぐに原因が分かる気がするのですが、それをしない特定の理由ってありますか?



172 名前:デフォルトの名無しさん [2008/01/17(木) 20:00:19 ]
>>169
すみません、URLをまちがえました

173 名前:デフォルトの名無しさん [2008/01/17(木) 20:01:11 ]
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5790.zip

174 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:09:58 ]
>>142
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5791.cpp

175 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:17:50 ]
>>169
#include <stdio.h>
#include <stdlib.h>
int route(int m, int n)
{
if (m == 1 || n == 1) return 1;
else return route(m - 1, n) + route(m, n - 1);
}

int main(int argc, char *argv[])
{
if (argc != 3)
return 1;
int m = atoi(argv[1]), n = atoi(argv[2]);
printf("%d", route(m, n));
return 0;
}

176 名前:デフォルトの名無しさん [2008/01/17(木) 20:23:58 ]
>>175
実行してみたのですがなにも起こりませんでした・・・

177 名前:167 mailto:sage [2008/01/17(木) 20:26:46 ]
>>171
やりきれない気持ちにさせてしまい申し訳ありません。私が分からないだけでよくある話かと思い、気軽に質問してしまいました。反省します。
プログラムが変な挙動をして強制終了する部分は下リンク先の大きなforループ内です。iが100を超えた瞬間にpointnの数値がオーバーフローします。プログラム自体は3ファイルに分かれていて長いので、ここに原因がなければ諦めます。

[1] 授業単元: 応用プログラミング
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5792.txt
[3] 環境
 [3.1] OS: windowsXP
 [3.2] gcc32
 [3.3] cpp

178 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:31:59 ]
>>177
症状が再現する最小のソースを示すのが礼儀だぞ。
widthやheightがどんな値を取るかもわからないでどうして答えられると思う?

179 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:34:28 ]
なんでiが100超えるん?

180 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:36:16 ]
>>179
ばっふぁおーばーふろー があれば簡単さw

181 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:36:50 ]
>>176
引数に1以上与えればなんか出るはずなんだがな



182 名前:デフォルトの名無しさん [2008/01/17(木) 20:40:12 ]
>>181
すみません、こちらのミスでした。
ちゃんと実行できました。
ありがとうございました

183 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:42:47 ]
>>179
バッファオーバーフローのテスト
コンパイラが自動変数をどこに配置するかによっても結果が変わるので
必ずしも何かが起こるとは限らない

/* 最適化をオフにしてコンパイルしてね */
#include <stdio.h>

int main(void){
int x=123;
int y[1]={456};
int z=789;

printf("x=%d z=%d\n", x, z);
y[1]=0;
printf("x=%d z=%d\n", x, z);

return 0;
}

184 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:47:55 ]
point[100]なんだからiが100になっちゃいかんだろ。

185 名前:183 mailto:sage [2008/01/17(木) 20:50:44 ]
>>177
i が pointn の数値以上になるということは
//後略
の部分に問題がある可能性が高いよ


>>179
ごめん勘違いしてた

186 名前:167 mailto:sage [2008/01/17(木) 20:52:22 ]
>>178
最小に纏め上げるのが困難なもので…。
>>184
それでした。直した結果完璧に動きます。恥ずかしすぎる…。

みなさんご迷惑おかけしました。すれ汚しすみません。ありがとうございました。

187 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 20:59:58 ]
別にまとめる必要すらないだろ。
まあ大方、全体を見せたくないとか言うんだろうが

188 名前:デフォルトの名無しさん [2008/01/17(木) 21:13:50 ]
>>167
pointn = (int)((rand()/(double)(RAND_MAX+1.0f))*100);//コア数
これだろ、、おかしいの。

189 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:19:01 ]
>>174
文字列の式は固定ではなく、手動での入力なのです・・・。
自分の説明が不足していました、すみません。
あげていただいたプログラムを参考に、自分でももう少し頑張ってみます。

190 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:23:10 ]
>>188
それ自体は0-99の乱数を発生させるだけで、おかしくなくね?
キャストはなくてもいいけど、あってまずいもんでもないし。

191 名前:デフォルトの名無しさん [2008/01/17(木) 21:33:53 ]
>>190
ぉぉぅ、たしかに普通に見間違えた。
>>167 なんでもないから>>188は普通にスルーしてくれ。
かき乱してすまん。



192 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:34:26 ]
これだから情報を小出しにする奴は嫌いだ。。
どうせ原因は他にあるのに。

193 名前:デフォルトの名無しさん [2008/01/17(木) 21:39:10 ]
自分でここに原因があるって思って見つけられないときは
大方別のところに原因がある。
長かろうが短かろうが、主題さえはっきりしてれば別段読み解くのは難しくない。

てことで>>167ソースplz

194 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 21:41:21 ]
もう終わってるんだけどw

195 名前:デフォルトの名無しさん [2008/01/17(木) 23:56:16 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5794.txt
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:VisualStudio2005
 [3.3] 言語: C
[4] 期限:1月22日
[5] その他の制限: 特にないです


196 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:07:14 ]
【時間切れ】 (1/17)
>>151

【未解決問題】
>>164 1/18 12:00
>>142 1/18 >>172(手動入力)
pc11.2ch.net/test/read.cgi/tech/1199515728/824 1/18

>>86 1/22
>>195 1/22
pc11.2ch.net/test/read.cgi/tech/1199515728/229 1/31
>>79 無期限
>>144 無期限 問題文>>148

197 名前:デフォルトの名無しさん [2008/01/18(金) 00:07:39 ]
>インターネット上でファイルの転送に利用されるプロトコルは?(20点)
>[1] FTP, [2] POP, [3] PPP, [4] SMTP << 1
>正解です。

これってPOP&SMTPもファイル転送で使わね?添付ファイルてきな意味で。

198 名前:デフォルトの名無しさん [2008/01/18(金) 00:13:10 ]
>>144は最小二乗法の式作ってとくところからだな

199 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 00:24:39 ]
>>197


200 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 07:26:58 ]
>>pc11.2ch.net/test/read.cgi/tech/1199515728/824 
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5795.cpp


201 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 08:06:12 ]
>>164
#include <stdio.h>
#include <stdlib.h>
int cmp( const void * l, const void * r ) { return *((int*)l)-*((int*)r); }
int main( int argc, char ** args ) {
int m, n, i, * data;
printf( "input m :" ); scanf( "%d", &m );
printf( "input n :" ); scanf( "%d", &n );
data = ( int * )calloc( m, sizeof( int ) );
if ( ! data ) { puts( "no memory."); exit(1) ; }
for ( i = 0; i < m; ++i ) scanf( "%d", &data[ i ] );
qsort( data, m, sizeof( int ), cmp );
for ( i = 0; i < n; ++i ) {
int * p, q;
printf( "search for >" ); scanf( "%d", &q );
p = bsearch( &q, data, m, sizeof( int ), cmp );
if ( p ) printf( "%d found at %d, %d\n", q, 1 + ( p - data ), data[ ( p - data ) ] );
else printf( "not found.\n" );
}
free( data );
return 0;
}




202 名前:デフォルトの名無しさん [2008/01/18(金) 10:28:31 ]
[1] 授業単元:プログラミング
[2] 問題文:問題@
      商品番号・商品名・個数・単価を対象とする構造体の配列を利用し、
      データを入力して、一覧表を表示するプログラムを作りなさい。ただし、
      各データごとに金額を、最後に合計金額を出しなさい。

      問題A
      上の問題の構造体の配列を利用し、データを入力した後、商品番号を
      並び替えを行い、その結果を一覧表として表示するプログラムを
      作りなさい。

[3] 環境
 [3.1] OS: (WindowsVISTA)
 [3.2] コンパイラ名とバージョン: (borland)
 [3.3] 言語: (C)
[4] 期限: ■■緊急■■本日1月18日正午まででお願いします。
[5] その他の制限: 特にありません。

203 名前:デフォルトの名無しさん [2008/01/18(金) 12:42:14 ]
[1] 授業単元:プログラミング
[2] 問題文:文字列を逆順にコピーする関数xcopyをポインタを用いて作り、確認のためのプログラムを作りなさい。ただし、xcopy(char*to,char*from)とします。なお、対象とするデータは通常の英数字とします。
[3] 環境
 [3.1] OS: (Windows VISTA)
 [3.2] コンパイラ名とバージョン: (borland)
 [3.3] 言語: (C)
[4] 期限: 1月18日
[5] その他の制限:

前102代目に書き込んだんですが見れなくなってしまったのでもう一度お願いします。






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

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

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