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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 12:30:56 ]
あなたが解けない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++の宿題を片付けます 108代目
pc11.2ch.net/test/read.cgi/tech/1211980711/


338 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:47:02 ]
>>337
int main(void){
QUEUE_TYPE x;

initQueue();

while(1) {
printf("整数を入力して下さい:\n");
scanf("%d",&x);
if (x<0) break;
if(x % 2) {
printf("dequeue() %d : ",dequeue());
printQueue();
}
else {
enqueue(x);
printf("enqueue(%d) : ",x);
printQueue();
}
}

while(!chkEmpty()){
printf("dequeue() %d : ",dequeue());
printQueue();
}

return 0;
}


339 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:53:10 ]
>>338
すばやい回答ありがとうございました!

340 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 16:56:53 ]
[1] 授業単元:
Cプログラミング
[2] 問題文(含コード&リンク):()
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6883.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)

[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
6月16日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
>>337の続きの課題なのですが・・
よろしくお願いします

341 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:16:43 ]
while(1) {
printf("整数を入力して下さい:\n");
scanf("%d",&x);
if (x<0) break;
if(x % 2) {
dequeue(&Q);
printQueue(&Q);
}
else {
enqueue(x, &Q);
printf("enqueue(%d) : ", x);
printQueue(&Q);
}
}

342 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:23:16 ]
>>341
ありがとうございます。

しかし、
負の数字-100を入力した場合に、実行例に在るとおりに
dequeue します: キューの中 [ 20 30 ]
dequeue します: キューの中 [ 30 ]
dequeue します: キューの中 [ ]
空状態のためデキューできません。

と表示されないのと、奇数の数字35等を入力した場合にdequeue しますという文字が表示されません。
それとやはり、デキューされた値を表示するのは難しいのでしょうか?

343 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:37:10 ]
if(x % 2) {
dequeue(&Q);
printQueue(&Q);
}

if(x % 2) {
dequeue(&Q);
printf("dequeue します: ");
printQueue(&Q);
}


q=Q.front;以下はそのまま使ってる?

344 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:47:19 ]
>>343
すいません、q=Q.front;以下も一緒に消してしまっていました。
負の数の時のも無事いけました!
デキューされた値を表示するのは無理でしょうか?

345 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:54:28 ]
dequeue()関数をいじっていいなら337のみたいに返り値でdequeueしたのを戻せばいいんだけど。

346 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:55:56 ]
void dequeueを↓に変更

int dequeue(struct queue *Q){ /* デキューする関数 dequeue の定義 */
struct cell *q; /* キューの先頭(デキューされるセル)を指す*q の宣言 */
int x;
if(Q->front == NULL) { /* Q->front がNULL(キューが空状態)であれば */
printf("空状態のためデキューできません。\n"); /* 左記のメッセージを画面に表示して */
exit(1); /* プログラムを終了 */
}
else { /* Q->front がNULL(キューが空状態)でなければ */
q=Q->front; /* ポインタ変数*q はキューの先頭を指す */
x=q->element;
Q->front = (Q->front)->next; /* キューの先頭(Q->front)を置き換える */
free(q); /* デキューされたセルのメモリを解放 */
}
if(Q->front == NULL){ /* Q->front がNULL(キューが空状態)であれば */
Q->rear = NULL; /* キューの初期化 */
}
return x;
}

あとmain()内の
dequeue(&Q);
printf("dequeue します: ");

printf("dequeue() %d : ",dequeue(&Q));
にすればいけると思う



347 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:56:53 ]
あれ、dequeueを変えない方が良かったか?

348 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:57:33 ]
>>250-251
>>255
ありがとうございます。助かりました

349 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 17:59:56 ]
>>347
いいんじゃね?
main()を変えてって指定があるのは337の問題の方だけだし

350 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:09:16 ]
>>346
ありがとうございました!見事に動作しました

351 名前:340 mailto:sage [2008/06/12(木) 18:17:57 ]
何度もすいません、>>337と同じ内容を実施するプログラムと書いてあるので、
>偶数(0 を含む)である場合は、その整数をエンキューする。キューがフル状態である場合には、
>その整数をエンキューせず、『enqueue : フル状態のためエンキューできません。』と表示した後、プログラムを終了する。
の部分も付け加えなければいけないと思うのですが、
この部分はどうすればよいのでしょうか?
恐らくmain以外もいじくってよいと思います。。
よろしくお願いします

352 名前:309 mailto:sage [2008/06/12(木) 18:24:29 ]
まだ、待ってます。
期限は過ぎてますが、遅れてでもいいので提出したいです。
>>309
>>319

353 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 18:28:17 ]
>>351
>>340の場合は、要素が入る度にmallocでqueueのサイズを増やしてるから、
キューがフルである状態というのがそもそもない。
だからその部分は必要ないはず。
まあ、もしもそれを分かっていて、mallocするメモリが存在しなかった場合の話をしているなら、
enqueue内の

p=(struct cell *)malloc(sizeof(struct cell)); /* エンキューするセルを指すポインタ変数*p の獲得 */

if((p=(struct cell *)malloc(sizeof(struct cell)))==NULL){
printf("enqueue : フル状態のためエンキューできません。\n");
exit(1);
}
とすればおk

354 名前:340 mailto:sage [2008/06/12(木) 18:30:09 ]
>>353
なるほど、そうなのですか!無知な発言申し訳ないです。
本当に助かりました

355 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 21:37:58 ]
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6886.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C
[4] 期限:明日中
[5] その他の制限:
1kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6884.c
2-1kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6885.c
自分で作れた所までです。
2-2はよくわかりませんでした
お願いします

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語: C
[4] 期限:明日中
[5] その他の制限:
お願いします

356 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:18:12 ]
[1] 授業単元:C言語
[2] 問題文http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6888.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 6月15日日曜日(早いと助かります)
[5] その他の制限:できるだけ簡単に
お願いします



357 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:19:55 ]
[1] 授業単元:C言語
[2] 問題文kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6888.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 6月15日日曜日(早いと助かります)
[5] その他の制限:できるだけ簡単に
お願いします


358 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:16:39 ]
>>278をおねがいします

359 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 00:18:43 ]
>>352
どれがわかんないの?
int main(void)
{
//文字列入力

//置き換えられる文字入力
//その文字列が最初に入力した文章ないにあるかチェック
//無いときの処理

//置き換える文字列入力

//置き換え前文字列表示

//置き換え処理

//置き換え後文字列表示

return(0);
}

360 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:21:21 ]
[1] 授業単元:C++プログラミング
[2] 3つの整数を入力し、入力値を昇順に入れ替える処理を作成する。
  ソート処理は関数を使って作成し、処理結果は関数の外で行う。
  ソート関数は引数がポインタ、参照の2種類の関数をオーバーロードで作成する

 出力イメージ:
  "整数を3つ入力しなさい"
  "入力した値は15,1,12"
  "昇順に並び替えると1,12,15"
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:bcc
 [3.3] 言語:C++
[4] 期限:6月14日
[5] その他の制限:どうぞ宜しくお願いします

361 名前:309 mailto:sage [2008/06/13(金) 01:22:57 ]
>>359
・指定した文字列が含まれているか判定
・無いときの処理
・置き換え方
特に置き換える際は、どうやって文字を置き換えているのかさっぱり分からないです。

自分で分からないものを煮詰めても、まったくす進まないので、丸投げで全部作っていただきたく思います。

362 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:26:13 ]
>>309
#include <stdio.h>
#include <string.h>
#define BUFF_SIZE 1024
void ex(char *dest, char *src,char *a,char *b){
    while(*src!='\0'){
        if(strncmp(src,a,strlen(a))==0){
            strncpy(dest,b,strlen(b));
            src+=strlen(a);
            dest+=strlen(b);
        }
        else
            *dest++=*src++;
    }
    *dest='\0';
}
int main( void )
{
    char buf[BUFF_SIZE],src[BUFF_SIZE],dest[BUFF_SIZE],a[BUFF_SIZE],b[BUFF_SIZE];
    printf("文字列を入力せよ : ");
    fgets(buf,BUFF_SIZE,stdin);
    sscanf(buf,"%[^\n]",src);
    printf("置き換え元を入力せよ : ");
    fgets(buf,BUFF_SIZE,stdin);
    sscanf(buf,"%[^\n]",a);
    printf("置き換え後を入力せよ : ");
    fgets(buf,BUFF_SIZE,stdin);
    sscanf(buf,"%[^\n]",b);
    ex(dest,src,a,b);
    printf("結果 : %s\n",dest);
    return 0;
}

363 名前:362 mailto:sage [2008/06/13(金) 01:30:54 ]
fgetsに引っ付いてくる改行文字除去するのにもっとスマートなやり方があるかもしれんが
優秀な方がつっこんでくれるに期待して

一応>>311の通りに置きかえ


364 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:36:46 ]
\nの置き換えなら
if((p=strchar(buf, '\n'))!=NULL) *p = '\0';
ってやるのが一般的か?

365 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:37:45 ]
strcharじゃなくてstrchrだな

366 名前:デフォルトの名無しさん [2008/06/13(金) 02:52:16 ]
[1] 授業単元:C言語
[2] コマンドラインから数字の文字列を入力して、
  unsigned intの範囲外の値が入力された場合は
  エラー文を返す。それ以外は入力値を標準出力する。

  例) 入力 → 出力
  例1) "4294967295" → 4294967295
  例2) "4294967296" → 入力値が範囲外です。
[3] 環境
 [3.1] OS:Ubuntu
 [3.2] コンパイラ名とバージョン:gcc4
 [3.3] 言語:C
[4] 期限:6月15日
[5] その他の制限:特にありません。isdigit()は使うと思います。

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



367 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:05:53 ]
[1] 授業単元: プログラミング実験
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 6889
[3] 環境
 [3.1] OS windows
 [3.2] コンパイラ名とバージョン: Visual studio2005
 [3.3] 言語: C
[4] 期限 本日13時まで
[5] その他の制限:特になし

よろしくお願いします


368 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:08:52 ]
>>358
>>280をスルーしたからスルーされてるのかなー?

369 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:10:02 ]
sum1 += (the[i] - mea1[i]) * (the[i] - mea1[i]);
sum2 += (the[i] - mea2[i]) * (the[i] - mea2[i]);

370 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:11:20 ]
[1] 授業単元: プログラミング実験
[2] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 6889
[3] 環境
 [3.1] OS windows
 [3.2] コンパイラ名とバージョン: Visual studio2005
 [3.3] 言語: C
[4] 期限 本日13時まで
[5] その他の制限:特になし

よろしくお願いします


371 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:12:30 ]
>>366
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
unsigned int u = ~0;
double d;
if(argc!=2) return 0;
d = atof(argv[1]);
if(d - u > 0) printf("入力値が範囲外です。\n");
else printf("%u", (unsigned int)d);

return 0;
}


372 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:12:32 ]
2重投稿すみませんorz

373 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:13:47 ]
>>361

> 文字列をn文字比較する関数:strncmp(str1,str2,n)
を使ってくれといっているのに
> ・指定した文字列が含まれているか判定
が分からないとは。

自分が分からないものを他人に作ってもらって分かったふりして
提出する程度の人だからしょうがないけど。

374 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:22:47 ]
>>369
解決しました
ありがとうございました

375 名前:366 mailto:sage [2008/06/13(金) 03:29:05 ]
>>371
早速ありがとうございます。
ただ以下の箇所でSIGSEGVが発生してしまいます。
 d = atof(argv[1]);

376 名前:366 mailto:sage [2008/06/13(金) 03:32:44 ]
char *argvとしていました。申し訳ありません。



377 名前:366 mailto:sage [2008/06/13(金) 03:38:31 ]
>>371
0未満の値を入力すると大きな値が出力されてしまいます。
例) -1 → 4294967295

378 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 03:49:43 ]
>>377
符号無しが範囲だから、0未満は範囲外として良いん?

379 名前:366 mailto:sage [2008/06/13(金) 03:56:17 ]
>>378
0〜4294967295以外はエラーという事でお願いします。
こんな感じでしょうか?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
unsigned int u = ~0;
double d;
if(argc!=2) return 0;
d = atof(argv[1]);
if(d - u > 0) printf("入力値が範囲外です。\n");
else if(d < 0) printf("入力値が範囲外です。\n");
else printf("%u", (unsigned int)d);

return 0;
}

380 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:00:55 ]
if(d - u > 0 || d < 0) とすると一つにまとめられるよ

381 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:01:39 ]
あと小数点を入れられた時はどうすんの?その辺りも教えて

382 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:09:29 ]
っつか、int型って時点で小数点以下は無視かと。
範囲って言うと・・・どうなん?>質問者
まぁ、切り落としちゃえば良い話だろうけど

383 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:14:20 ]
>>381
>>382
ここでは小数を想定していないので、
「不正な形式です。」と表示させたいです。
文字列が0〜9の数字で構成されているかチェックする必要が
ありそうです。

384 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:17:03 ]
エラーの種類は最初に確定しとかないと後出しで条件つけるなって怒られるよ

385 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:34:29 ]
ほっほっほ、麻呂がクソースを書くでおじゃるから、待ってたもう

386 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:36:41 ]
入力された文字列が正しい範囲のC言語の意味での符号無し整数を
表しているかどうかは、次の方法を取るべきであろう。
まず、文字に不正な文字が含まれていないか検査する。
これは文字列を先頭からスキャンし、不正な('0'~'9'以外の)文字が
含まれているか否かをチェックし、検出された場合は、エラー出力
して終了する。
4294967295は10桁なので、スキャンが終わった段階で、長さ
??以上あった場合はエラーとしたいが、それは間違いである。
先頭に?が何個継続しているかで、文字列の長さが100あっても
正しく範囲にあるかも知れない。
最初に?ではない文字が出た位置を記憶(これを実質開始位置とする)し、
文字終端の位置と比較して、差を取り、??桁より大きい場合はこの時点
でエラー出力して終了して良い。
以降文字列の開始点が上記実質開始位置であるとして考える。
文字列の長さが?桁未満の場合は、正常終了できる。
??桁の時が問題であり、先頭の文字が?以下の時は正常数量
?以上の時はエラー終了とする。
?桁目を見て、?以下の場合は正常終了、?以上の時はエラー終了する。
?桁目を見て、?以下の場合は正常終了、?以上の時はエラー終了する。
以降同様の処理を1桁目まで書く。



387 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:41:08 ]
>>366
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6890.c
麻呂のクソースを喰らうでおま〜

388 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:43:11 ]
しまった、flgの設定が不適切だったでおじゃる、ちと直してくるでおまる

389 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:47:12 ]
>>366
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6891.c
今度こそ、喰らうでおじゃる

390 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 04:50:34 ]
>>389
間違ってる

391 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:18:31 ]
>>366
strtoulを使い、エラーチェックすれば簡単。
if (先頭が数字でない || *endがNULでない || errnoがERANGE && 結果がULONG_MAX) 不正な形式です。
longがunsigned intの大きさが異なるなら、これにさらにチェックを加えれば良い。

ライブラリ関数を使わないのであれば、
unsigned int r, s; int i;
for (r = 0, i = 0; s = r * 10 + argv[1][i] - '0'; i++, r = s)
if (r > s || argv[1][i]が数字でない) 不正な形式です。
かな。こちらは自信なし。

392 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:20:14 ]
不等号の向きが逆だお。

393 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:37:32 ]
>>390
アッーーー!って、見つけちゃったあなた、罰ゲームとして修正しておまっ

394 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:40:44 ]
どこが間違ってるか分からないなら素直に教えてくださいって言えよ。

395 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 05:59:48 ]
>>394
またお前か・・・態度でバレバレ。桁が同じだったときの
各桁の大小の評価のところだろ。面倒だから後はあんたがやっとけw

396 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:05:37 ]
教えてくださいって言えよ。
教えてくださいって 教えてくださいって 言えよ。 言えよ。

これはハマるぜ、この程度のことでここまで偉そうに出来るやつって
日ごろ相当つまらないことで恩着せがましい態度で嫌われてんぞw



397 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:09:10 ]
どこが間違っているか分かっているなら素直に答えてやるよっておっしゃってぇ〜

398 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:24:19 ]
ミスったら自分で修正しないか?

399 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:24:25 ]
アルェー、結果がおかしかったから間違っているとだけ言ったけど
本当はコードのどこが間違っているか分かってなかったのかYO!

400 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:25:04 ]
1時間かけてようやく分かった癖にw

401 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:25:25 ]
>>398
> どこが間違ってるか分からないなら素直に教えてくださいって言えよ。
って指摘したら指摘した奴が率先して口先だけじゃないってことを
証明するためにも、修正しないか?ウホッ?

402 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:30:05 ]
ミス指摘されて逆ギレってみっともなさすぎるな

403 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:59:32 ]
>>400
> 1時間かけてようやく分かった癖にw
そもそも、ソースを書いた本人じゃないし、俺はw
指摘した奴が詳細を把握してないのに、何言ってんだお前?w
どうせ数日前に現れた蛇足野郎だろ?w
あれを蛇足なんて言う程度の低さだから、どうせ口先だけだろ。

404 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 07:07:05 ]
一体誰と戦ってるんだw

405 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 07:29:16 ]
漢は黙ってソースうp

406 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 07:36:14 ]
ここで空気読めない俺がミスを指摘
if(argv[1][i] < uim[i]) break;
を追加するだけ。



407 名前:デフォルトの名無しさん [2008/06/13(金) 09:12:35 ]
>>366
もうこんなのでいいんじゃないか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 0〜9の文字以外の表現だと不正な値になる unsigned int のパーサ
unsigned int parse(const char *str){
  unsigned int u=0;
  for(; str!='\0'; str++){ u+=u*10+(*str-'0'); }
  return u;
}
int main(int c, char **a){
  unsigned int u = parse(a[1]);
  char us[11];
  sprintf(us, "%u", u);
  if(strcmp(us, a[1])!=0) printf("unsigned int の範囲外です");
  else printf("%u", u);
}


408 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:24:25 ]
なにそのコード、ふざけてるの?

409 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:45:08 ]
>>317
まじだあああああああ
ありがとうございます(つд⊂)エーン

410 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:55:33 ]
(つд・)∩チラッ

411 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:59:29 ]
>>407
実行してから貼れよ
>for(; str!='\0'; str++){ u+=u*10+(*str-'0'); }
いくらなんでもこれはひどすぎだろ

412 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 10:27:07 ]
>>368
すいません、見落としてました
ピボットのとり方が変わってもソート結果が変わることはないので、
原因はほかにあると思うんですがよろしくお願いします

413 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:11:33 ]
>>408
ふざけてはないと思う。よく見れば単なるタイプミス
*が抜けてて+が余計についてる。
for(;str !='¥0'...→for(;*str !='¥0'...
u+=u*10...→u=u*10...

貼る時に、インデント付けようと、コピペじゃなく
ブラウザのtextareaに直接タイプしたんじゃなかろうか(想像)

ただし実行して確かめてみたコードだとしても、
>>366の要求をほぼ満たしてるとは言い切れないと思う。
>>366は、>>407のコードを修正して実行出来たのかな?

414 名前:55 mailto:sage [2008/06/13(金) 14:51:43 ]
[1] 授業単元:グラフ理論2
[2] 問題文:
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6843.txt
[3] 環境
 [3.1] 言語:C

スルーだったので、少しばかり自分でやってみました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6893.txt
初心者の自分にはこの程度が限界です。
ヘルプをお願いいたします。

415 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:55:00 ]
>>366
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6894.txt

416 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:03:42 ]
>>408 コードを書かないくせに、相変わらず茶化しだけの屑か



417 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:06:44 ]
コードを読めるだけましじゃね?

418 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:14:45 ]
コードを読めなくても文句は言える
コードを書くまで信用するな

419 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:16:10 ]
そうそう、結果で判断すりゃそれまで。指摘するなら具体的にどこが?
言わないと、かなり印象が悪いぞ。例え間違っているのがわかっていても
何でお前はそれを指摘したか?逆に言い返されると、お前がわかってないだの
茶化すから余計に悪い。

420 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:18:00 ]
>>415
小数点を入力したときがおかしい

421 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:25:23 ]
>>415
手持ちのgccでチェックしたが、
[Suma]:~ Asagiri$ ./6894 4199999999
4199999999
[Suma]:~ Asagiri$ ./6894 4200000000
範囲外です。

となった

422 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:42:28 ]
>>366
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6896.c
クソースを改良したでおまる

423 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:49:33 ]
>>421
>415はstrcmp()の戻り値の仕様を誤解しているらしい。

424 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:49:46 ]
>>415
strcmp の返り値に注意

425 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:52:52 ]
ttp://www.bohyoh.com/CandCPP/C/Library/strcmp.html
> 等しければ0、s1がs2より大きければ正の整数値、
> s1がs2より小さければ負の整数値を返す。

426 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:55:23 ]
>>423
否strcmpの仕様がおかしい。1,-1,0のいずれかを返すべき



427 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:58:38 ]
標準関数の仕様にケチをつけるか・・・だから駄目なんだよ、お前はw

428 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:58:46 ]
文字同士の差を直接返すほうが、差の正負で1と-1にするより単純だから

429 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:12:04 ]
>>426
バーカ
ISO/IEC 9899:1999を読んでから言え

430 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:12:56 ]
>>425
そこの実現例、nはどっから湧いてきたんだ?

431 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:40:42 ]
>>430
確かに、実装例はおかしいね・・・サイト管理者に聞いてみw

432 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:43:06 ]
>>430
そう思って strncmp のとこも見に行ったw

433 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:50:14 ]
柴田望洋さんって日本人の中ではまともな本を書く人なんだが
こういう間違いを犯す事もあるんだな

434 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:57:13 ]
しょっちゅうだろ。

435 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 16:58:04 ]
難しいコトする時は誰でも気を付けるけど
簡単なことは気が抜けちゃうんだよ

436 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:02:04 ]
日本語でおkな出版物はどこにでもあるさ。
映像コンテンツに於いても、映画ではあまりそういうことはないが
アニメなんて日本語でおk日本語でおkなものも少なくないw



437 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:46:24 ]
[1] C
[2] 問[1] 1^1+2^2+3^3+4^4+……99^99を1000で割った値を求めよ。
  問[2] 1から20までの数すべてで割り切れる最小の正整数を求めよ。
[3] 環境
 [3.1]  LINUX
 [3.3] C
[4]6月16日
[5]なし
2問も書いて厚かましいかもしれませんが
よろしくお願いします

438 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:19:22 ]
>>437 とりあえず問1だけ
#include <stdio.h>
unsigned int f(unsigned int a,unsigned int b,unsigned int m)
{
    /* a^b (mod m) */
    unsigned int x=1;
    while(b!=0){
        if(b%2==0){
            a=(a*a)%m;
            b=b/2;
            
        }
        else{
            x=(x*a)%m;
            b=b-1;
        }
    }
    return x;
}
int main( void )
{
    int i;
    int answer=0;
    for(i=1;i<=99;i++)
        answer=(answer+f(i,i,1000))%1000;
    printf("1^1+2^2+3^3+...+99^99≡%d (mod 1000)",answer);
    return 0;
}
実行結果:1^1+2^2+3^3+...+99^99≡920 (mod 1000)
a^b ( mod m)の値を返す関数の引数やら色々unsigned int になってるけど
気に入らなかったらこのくらいの計算ならintに変えても大丈夫だろう
というか、答えあってるのかな・・・これ






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

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

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