トップページ⇒tech
1001コメント485KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/04/20(金) 00:35:41
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

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

【前スレ】
C/C++の宿題を片付けます 85代目
http://pc11.2ch.net/test/read.cgi/tech/1175129517/
0232デフォルトの名無しさん2007/04/26(木) 16:23:33
>>228
#include <stdio.h>
#include <math.h>
int main()
{
double foo;
printf("実数入力==>");
scanf("%lf", & foo);
// int化版
printf("四捨五入:%d\n", (int) (foo + .5));
// c90版
printf("四捨五入:%g\n", floor(foo + .5));
// c90版
printf("四捨五入:%g\n", round(foo));

return 0;
}
0233228の者ですが2007/04/26(木) 16:24:52
229>それが問題集に書かれてるのはこれだけなんですよ(・_・;)
0234デフォルトの名無しさん2007/04/26(木) 16:25:14
>>231
#include <stdio.h>
int main()
{
int a = 10;
int b = 7;
double syo = static_cast<double>(a) / static_cast<double>(b);
printf("syo:%.3g\n", syo);
return 0;
}
0235デフォルトの名無しさん2007/04/26(木) 16:25:48
>>205
Cならborlandをお勧めするのだけど(手軽だから)、
C++とかをやるようになると、eclipseとかの新しいコンパイラの方が良い。
ただし、微妙に安定しない。

VisualStudioも良いのだけど、#include<stdafx.h>とかの特殊な部分が含まれるから、微妙に抵抗は感じる。
standard editionとかなら、VisualStudioを使うのもいい。重いけど。
ただし、VisualStudioは初学者向けではない。
0236デフォルトの名無しさん2007/04/26(木) 16:25:56
>>232
round()はc99だな。って、コメントの間違いか。
0237デフォルトの名無しさん2007/04/26(木) 16:26:38
>>235
Eclipseはいつからコンパイラになりましたか?
0238デフォルトの名無しさん2007/04/26(木) 16:27:14
>>237
ごめんなさい。
gccですね。
0239デフォルトの名無しさん2007/04/26(木) 18:40:43
VC++Toolkit2003最強伝説
ごめんなさい。言ってみたかっただけです。
0240デフォルトの名無しさん2007/04/26(木) 19:38:24
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
番号(整数型)、氏名(20字以内)、年齢(整数型)、血液型(文字列)を
一組とした構造体配列(要素数2人分)を用意する。
キーボードからの2人分のデータを入力し構造体配列へ格納後表示しなさい。
氏名はfgetsを用いブランク(空白)を含む入力も可能とすること。
入力部分、表示部部は関数を用い関数の引数にはポインタを使用すること。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:2007年4月28日まで
[5] その他の制限: 特になし

よろしくお願いします。
0241デフォルトの名無しさん2007/04/26(木) 20:40:38
[1] 授業単元:C言語
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3875.txt  >>22の問題(>>30-31さんに書いていただいた)ものの機能拡張です。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:金曜17時まで
[5] 制限:なし。
よろしくお願いします。

0242デフォルトの名無しさん2007/04/26(木) 21:51:42
1] 授業単元: C言語
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3877.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン
 [3.3] 言語:C
[4] 期限:出来るだけ早めでお願いします。無理言ってすいません。
[5] その他の制限: 現在習っているのが制御文、配列、文字と文字列、関数です。初心者なのでよろしくお願いします。
0243デフォルトの名無しさん2007/04/26(木) 22:15:20
>>242
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3878.txt
0244デフォルトの名無しさん2007/04/26(木) 22:34:39
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] Linux
 [3.2] gcc 3.36
 [3.3] C
[4] 2007年4月27日
[5] 非再帰で且つ要素数が奇数でも2^n個でもソートできるようなマージソート関数をお願いします。
再帰かけるとスタックオーバーフローの恐れがあるので非再帰版も作ることにしました。
よろしくお願いします
02452432007/04/26(木) 22:37:19
あしもた、calculate関数にしないとだめなのね。ちと待て。
02462432007/04/26(木) 22:42:09
>>242
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3880.txt

ごめん、他の作業をしていたので気を取られてた。
0247デフォルトの名無しさん2007/04/26(木) 23:03:33
初めまして。大学1年生です。

[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 1000個までの、整数あるいは少数を打ち込んで、
その平均と標準偏差を表示することのできるプログラムを作成せよ。
[3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 2007年5月5日まで]
[5] その他の制限:特にないです。
Windows xp Visual Studioを使っております。

よろしくお願いします。 
0248デフォルトの名無しさん2007/04/26(木) 23:07:58
1000個でも少数とは……
一体どれだけあれば気が済むんだ?
0249デフォルトの名無しさん2007/04/26(木) 23:11:02
>>248
いや少数じゃなくて小数の間違いだと思うよ
0250デフォルトの名無しさん2007/04/27(金) 00:31:11
>>244
書いてみたけど何か遅いな。こんなものなのかな
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3881.txt
0251デフォルトの名無しさん2007/04/27(金) 00:38:55
>>250
すごく・・・早いです・・・


どうもありがとうございます
読んでみます
0252デフォルトの名無しさん2007/04/27(金) 00:44:58
理論的にはマージソートはクイック・ソートの1/2程度の速度は出る
はずなんだが、このプログラムは標準関数qsort()の1/10程度の
速度しか出てないような気がする。もっと改良できるはずなんだが
0253デフォルトの名無しさん2007/04/27(金) 00:47:12
マージでぇ?
0254デフォルトの名無しさん2007/04/27(金) 01:17:25
>>247
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3882.txt
0255デフォルトの名無しさん2007/04/27(金) 01:24:02
>>253
http://www.codereading.com/algo_and_ds/algo/merge_sort.html

たとえばこれ。再帰版なんだが、>>250より遥かに高速だ。
>>250は元々シーケンシャルアクセスしかできないデバイスに適用できる
アルゴリズムで、コピーの回数が相当多いため遅くなっているのだと思う。
0256デフォルトの名無しさん2007/04/27(金) 23:10:56
おいっ、どうした?もっと宿題を出せゴルァ!
0257デフォルトの名無しさん2007/04/27(金) 23:24:18
>>256
ちょwwww
お前コテとトリップつけてこのスレに居座ってくれ。
俺はGW中は答える暇がないと思うので。
0258デフォルトの名無しさん2007/04/27(金) 23:27:42
宿題を○投げする奴もGWの終わりギリギリに
ならないと投げてこないと思う。

まさにゆとり。
0259デフォルトの名無しさん2007/04/27(金) 23:28:35
だな。
0260デフォルトの名無しさん2007/04/27(金) 23:36:26

[1] 授業単元:cプログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3883.txt
 [3] 環境
 [3.1] OS:Windows xp
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: G.W明け
[5] その他の制限:特になし。 お願いします。
0261デフォルトの名無しさん2007/04/27(金) 23:37:10
どうせGW終わり頃にスレ探すだろうから今言ってもしょうがないけど、
俺GW暇だからちょっと難しい問題でもがんばっちゃうYO



といっても休みはカレンダー通りだけどな・・・ orz もっと寝ていたい
0262デフォルトの名無しさん2007/04/28(土) 00:08:29
>>260
fflush(stdin);は環境依存かも
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3884.txt


お酒の見ながらやったから間違ってても気にしない
0263デフォルトの名無しさん2007/04/28(土) 00:15:49
printfの位置がなんか間違ってるな
まぁそこらへんは自分で工夫してちゃんと表示されるようにがんばれ
0264デフォルトの名無しさん2007/04/28(土) 00:54:15
>>260
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3888.txt
0265デフォルトの名無しさん2007/04/28(土) 00:57:29
[1] 授業単元:プログラミング�U
[2] 問題文(含コード&リンク):
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3885.txt

 weather_3.datの中身↓
 http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3886.txt

 [3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C
[4] 期限: なるべく早く、お願いします。できれば朝までにお願いします。
[5] for文でお願いします。なるべく簡単にお願いします。

すみません、問題が多いですがよろしくお願いします。
0266デフォルトの名無しさん2007/04/28(土) 01:55:37
おい、お前ら、出番です。ぎりぎりちゃんがきましたよ?


「なるべく早く」やれって
0267デフォルトの名無しさん2007/04/28(土) 02:06:16
>>265
weather_3.datのEOFは最後のデータ(その場合117)の後ろかい?
出来れば最後のデータの後ろには改行コードを入れてくれれば良いのだが・・・
0268デフォルトの名無しさん2007/04/28(土) 02:22:00
>>265
とりあえず練習1、配列でって言ってるしweather_3.datの中身固定ってことで決め打ちしたからな
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3889.c
練習2の上記の操作ってどれよ?
02692682007/04/28(土) 02:25:05
あ、ゴミ入れたままでやんの、適当に消しといて
02702652007/04/28(土) 02:43:31
>>266
ごめんなさい。
>>267
たぶんそうだと思います。
>>268
ありがとうございます。
すみません、weather_3.datの中身は本当はわからない状態で出すんです。
あとweather_3.datは端末エミュレータから入力して
やっているんです。
emacs ~~.c > weather_3.dat 見たいな感じで…
あとARRAY_SIZEってなんでしょうか?

ごめんなさい。こんな時間に…
0271デフォルトの名無しさん2007/04/28(土) 02:59:01
>>270
練習3
練習2の処理を行ったあと,もう一度別のループで奇数番目のデータを配列bの残り部分に移動せよ.
結果が正しいことを確かめよ.

> 配列bの残り部分
とはなんぞや?何が残り?
02722682007/04/28(土) 03:05:15
>>270
こういうことでいいのか?C89では配列の要素数は定数でしか指定できないから
C99では変数でもできるけどやったことないので他の人に頼んでください
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3891.txt

練習1と2の違いは何ぞや?
0273デフォルトの名無しさん2007/04/28(土) 03:16:08
>>265
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3892.txt
自分でもなんだかよく分からず、きんもぉ〜〜〜☆なソースになったがw
0274デフォルトの名無しさん2007/04/28(土) 03:19:44
並び替えは、要するに基本選択法ってことか?並び替えも課題だよな・・・
02752682007/04/28(土) 03:29:59
配列でってあるからrealloc使わなかった俺の立場なんてどうでもいいですよね(´・ω・`)
0276デフォルトの名無しさん2007/04/28(土) 03:33:24
ってか、出題者のレベルが低そうな気がしてならんのだが・・・
0277デフォルトの名無しさん2007/04/28(土) 03:34:08
出題者というのはここで質問している人の授業の担当者という意味ね
0278デフォルトの名無しさん2007/04/28(土) 03:36:38
んー、どっちかというと多分この問題の出し方だと生徒の
全体の実力に合わせて問題作っている感じがするんだけど。

専門学校かも?
0279デフォルトの名無しさん2007/04/28(土) 03:42:48
Cの講義やり始めたばっかならこの時期の問題としては考え難いし
一年以上経ってるなら逆に心配になってくる
0280デフォルトの名無しさん2007/04/28(土) 07:42:59
誰か無視されてる問題もやってやれよ。
0281デフォルトの名無しさん2007/04/28(土) 08:44:36
>280
お前がやってやればいいだろ。
02822652007/04/28(土) 09:30:55
皆さんごめんなさい!
皆さんが使っている関数?が難しくて全然わからないです…

問題文はそのまま書いたので1、2の違いはなんとも…
>>279
去年の前期で一度単位を落としてしまいまして、少し遅いんです。

これまでに習ってプログラミングをやるときに使ったのは
#include <stdio.h>,#include <math.h>,#include <stdlib.h>,
main関数,int,double,printf,scanf,while,if,for
だけなんです。
前回の配列部分も休んでしまってわからないんです。
だからそれ以外はさっぱり…です…


0283デフォルトの名無しさん2007/04/28(土) 09:57:59
>>282
そんな態度だから単位落すんだよ。休んだから配列が分らないだ?
教科書を読めば分るだろ。黄金週間中に教科書を頭から読んで
練習問題やりまくれば何とかなるよ。あと、問題文が凄く分りにくいから
出題者に文句言って、分りやすく作り直してもらった方が良さげ
02842652007/04/28(土) 11:44:03
確かにそうですね...
授業でてないからってそれじゃあだれですよね.

そこでプログラミングC言語の専門書買って最初から勉強しようと思うのですが
おすすめの専門書ありませんか?
0285デフォルトの名無しさん2007/04/28(土) 11:49:57
教科書は無いの?
専門書なんか買っても金の無駄だと思うけど
できれば単位取るのを諦めて、他の道へ進むのを考えるのがオススメ
02862652007/04/28(土) 12:05:37
>>285
教科書はありますが,少しわかりにくくて...

最近,大学やめることを悩んだんですよね...
今の勉強がおもしろくないし,ついていけてない.
いろんな人に相談して,やりたいことないのにやめるのは
やっぱりよくないということで,通い続けているんです.
特にプログラミングがついていけてなくて...
関係ないレスになってしまってすみません.
0287デフォルトの名無しさん2007/04/28(土) 12:08:08
>>286
さっさとやりたいことを見つけてやめればいいだろ
プログラミングを勉強するより、そっちに努力しろ
0288デフォルトの名無しさん2007/04/28(土) 13:08:47
>>282
問題文は順を追ってプログラムを完成させるような感じみたいだが・・・
それほど難しいもんでもないと思うが・・・。関数だって難しいもんは使ってへんよ?
アルゴリズムが分からんだけじゃね?
0289デフォルトの名無しさん2007/04/28(土) 14:25:06
>それほど難しいもんでもないと思うが・・・
何を作れと指示されているのかの解釈が難しいんだよね

・「配列aに読み込み,別の配列bにデータが逆順となるよう入れ替えよ」とは
 配列aから配列bにコピー、ってこと?
・「配列bに上記の操作をしてデータを移動せよ.」とは
 むーぶ?
 例えば配列aから配列bにコピー後、配列aの内容を0クリア、でいい?
・「もう一度別のループで奇数番目のデータを配列bの残り部分に移動せよ.」
 上に倣って、元の要素が配列のサイズの半分以下という条件で、
 配列bの奇数番目のみをコピーしつつ0クリア、でいい?

あまりに問題に抜けが多くて想像して作ってもいいけど難易度高すぎ
(...ひょっとして授業中に前提となるものが提示済みなのか?)
0290デフォルトの名無しさん2007/04/28(土) 14:37:31
泳げない奴は(ry
0291デフォルトの名無しさん2007/04/28(土) 15:05:33
浮き輪でもビート版でも使って泳げば良いのさ。パンがないならケーキを(ry
0292デフォルトの名無しさん2007/04/28(土) 15:10:51
>ビート版
ハリウッド板南極物語は、動物のお医者さん犬だったorz
0293デフォルトの名無しさん2007/04/28(土) 15:25:15
>>291
じゃ、君がビート版に
0294デフォルトの名無しさん2007/04/28(土) 16:40:40
>164
>>>159 問2 番兵をINT_MAXにしたが、INT_MAXを入力されるとかなわんなあ
>a[10] = INT_MAX; /* 番兵 */
>for (i = 0; a[i] != INT_MAX; i++)
>if (a[i] == x) {
>printf("%d\n", i);
>return 0;
>}

番兵の使い方が間違っているZo

a[10] = x; /* 番兵 */
for (i = 0; a[i] != x; i++)
 ;
if(i<10) printf("%d\n", i); else printf("-1\n");
0295デフォルトの名無しさん2007/04/28(土) 17:07:01
番兵は、

・検索対象の値そのものを配列の末尾に加えておく。
・すると、ループの最後まで行けば必ず見つかるので、終了判定はいらない。
・見つかったのが目標物なのか番兵かは、添え字がどこまで進んだかで判定。

というものだな。
0296デフォルトの名無しさん2007/04/28(土) 17:14:30
条件判定の数を削減するために置くダミーのデータ
0297デフォルトの名無しさん2007/04/28(土) 17:17:48
http://ja.wikipedia.org/wiki/%E7%95%AA%E5%85%B5
0298デフォルトの名無しさん2007/04/28(土) 17:20:18
>>297
英語のほうを見ると1.の用法(¥0で文字列終了とか)しか書いてないな。
0299デフォルトの名無しさん2007/04/28(土) 17:53:36
>>286
好きなことで分からないなら何故調べようとしない?
配列が分からないなら分からないなりに簡単なコード書いてみて
それいじくるところから始めてもう一度教科書読めよ
関数名くらいぐぐれ
0300デフォルトの名無しさん2007/04/28(土) 17:58:24
ttp://www.bohyoh.com/CandCPP/C/Library/index.html
漏れはここを参照している
0301デフォルトの名無しさん2007/04/28(土) 18:00:23
>>299
よく読むだ、しむらぁ〜
「やりたいこと」ではなく「やりたいことない」だぁ
0302デフォルトの名無しさん2007/04/28(土) 18:09:32
>>241
消してしまったか。
0303デフォルトの名無しさん2007/04/28(土) 18:16:34
>>301
それで結局授業出てないならやめるべきだな…
0304デフォルトの名無しさん2007/04/28(土) 18:21:18
金の無駄
やりたいことないからとりあえず大学って
うらやましぃ〜
大学卒業したかったよorz
0305デフォルトの名無しさん2007/04/28(土) 18:52:52
>>265
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3894.txt
0306デフォルトの名無しさん2007/04/28(土) 18:57:36
feofっていうのはなんて便利なんだ……
0307デフォルトの名無しさん2007/04/28(土) 19:12:14
数値データ以外に英数文字が入ってたり 113a みたいな数値+文字とか入ると
scanfの書式設定で%dとint型変数の指定はいただけない
0308デフォルトの名無しさん2007/04/28(土) 19:13:32
>>302 再うpしました。よろしくお願いします。

[1] 授業単元:C言語
[2] http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3895.txt
>>22の問題(>>30-31さんに書いていただいた)ものの機能拡張です。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:
[5] 制限:なし。
よろしくお願いします。


0309デフォルトの名無しさん2007/04/28(土) 20:06:11
fscanfもfgetsとsscanfに代えるべき?
0310デフォルトの名無しさん2007/04/28(土) 20:07:35
fscanf?
0311デフォルトの名無しさん2007/04/28(土) 20:15:01
文字データが数値を扱う型の変数に入るような状況を避ける措置がしてありゃおkかと。
まぁ、細かいことを言ってたらキリがなくなるんで、あとは個人で追求するだけ追及かね。
宿題は目的が果たせていりゃとりあえずおk。
0312デフォルトの名無しさん2007/04/28(土) 20:39:29
そっかfscanf(stdin,...)と変わらないんだったな…
じゃあとりあえずはfgetsとstrtol使っとけばおk?
0313デフォルトの名無しさん2007/04/28(土) 21:03:02
>>308
適当です。線形リストのが楽だ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3897.zip
0314デフォルトの名無しさん2007/04/28(土) 21:22:08
>>308
文字から整数にしてみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3898.txt
03152652007/04/28(土) 22:37:59
皆さんすみませんでした。
最初から勉強し直してみます。
0316デフォルトの名無しさん2007/04/28(土) 22:48:01
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
英文字列の指定した範囲を逆順にするプログラムを次のように書け。
(1)文字列は下のものをmainに文字配列として用意する:
Google agreed to its largest acquisition yesterday, reaching a deal to purchase DoubleClick.
(2)逆順にする範囲はキーボードから入力する。この範囲を第m番目と第n番目(0≦m<n)として
mとnが、妥当な数値(つまり、文字配列の添字範囲内)であることもチェックする。
(3)関数pswapを利用する。つまり、与えられた文字配列の上で2つの文字[文字ペア]を入れ替
えることを繰り返すことで全体(指定範囲の文字列)を逆順にする。文字ペアとして何に着目す
ればよいか考える。
(4)出力は、入力した文字列と逆順にした文字列(を含む全体文字列)、および最後に逆順にした文
字ペアとする。
【実行結果】
Initial: Google agreed to its largest acquisition yesterday,reaching a deal to purchase DoubleClick.
0と91の間の整数を2つ入力せよ: 2 5
Swapped: Goolge agreed to its largest acquisition yesterday,reaching a deal to purchase DoubleClick.
Last pair: l & g
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:なし
[5] その他の制限:なし
0317デフォルトの名無しさん2007/04/28(土) 22:55:52
(0≦m<n) なんとなく顔に見えた、すまそ。 (0>m<0)
03183162007/04/28(土) 22:57:48
#include
void pswap(char *a,int,int);
main() {
char a[]="Google agreed to its largest acquisition yesterday,reaching a deal to purchase DoubleClick.";
int m,n,x,y;
printf("Initial: %s\n",a);
printf("0と91の間の整数を2つ入力せよ: ");
scanf("%d %d", &m,&n);
if((m>=0)&&(n>=0)&&(m<n)&&(n<strlen(a) - 1 ){
while(m<n){
m++;
n--;}
pswap(a,m,n);
printf("Swapped: %s\n",a);
printf("Last pair: %c & %c\n",x,y); }
else
printf("添字の値が範囲外です!\n"); }
void pswap(char *a,int m,int n) {
int temp;
temp=*(a+m);
*(a+m)=*(a+n);
*(a+n)=temp; }
途中までやってみたのですが、Last pairの意味がよく分からないので解説していただけると有難いです。
0319デフォルトの名無しさん2007/04/28(土) 23:08:30
>>318 入れ替えをした範囲の両端の文字じゃない?
03203162007/04/28(土) 23:25:41
実行例を間違えていました。
Swapped: Goelgo agreed to its largest acquisition yesterday,reaching a deal to purchase DoubleClick.
0321デフォルトの名無しさん2007/04/28(土) 23:27:26
外側から入れ替えていって最後に入れ替えたペアのことだろ。
03223162007/04/28(土) 23:32:24
>316さん、321さん
有難う御座います。助かりました。
できれば、どの様なコードになるか教えていただけませんか?
0323デフォルトの名無しさん2007/04/28(土) 23:37:27
316は自分だろうと
03243162007/04/28(土) 23:41:59
すみません間違えました。
>319さん
有難う御座いました。
あと、自己解決できました。
皆様、有難う御座いました。
0325デフォルトの名無しさん2007/04/28(土) 23:43:28
>316
こんなんでどうよ?
#include <stdio.h>
#include <string.h>
void swap(char *a, int n)
{
     char temp;
     temp = *a;
     *a = *(a + n);
     *(a+n) = temp;
}
int main(void)
{
     char str[] = "Google agreed to its largest acquisition yesterday, reaching a deal to purchase DoubleClick";
     int m, n, i, len = strlen(str);
     printf("Initial:%s\n", str);
     printf("0から%dの間の数字を2つ入力せよ:", len);
     scanf("%d %d", &m, &n);
     if(m<0 || n<0 || m>len || n>len || m>n) return 1;
     while(n-m>0) {
          swap(str+m, n-m);
          m++;
          n--;
     }
     printf("Swapped:%s\n", str);
     printf("Last pair:%c & %c", str[++n], str[--m]);
     return 0;
}
0326デフォルトの名無しさん2007/04/29(日) 00:22:05
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
モンテカルロ法による面積の近似手順により、
領域a = {(x,y)|x≧1,y≧2,(x-1)^2 + (y-2)^2 ≦1}の面積の近似値を計算するプログラムを作成し、これを利用してn=10000とした場合の上の領域の面積、および円周率πの近似値を求めよ。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) WinXP
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)Borland C++
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)明後日
0327デフォルトの名無しさん2007/04/29(日) 00:34:15
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
1.レポート課題内容: ./a.out 5 2 4 6 8
の形で使うと,その逆転した順に結果を打ち出すプログラムを作れ。
2../a.out n
の形で使うと,指定された個数 n だけ乱数を発生して整列し,その結果を出力するプログラムを仕上げよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc 3.4 
[3.3] 言語: C
[4] 期限: 2007年4月30日
[5] その他の制限
リンクによるリスト処理の形で仕上げてください。
どなたかよろしくお願いします
0328デフォルトの名無しさん2007/04/29(日) 00:36:08
失礼しました。>327の期限は4月30日の23時59分までです
0329デフォルトの名無しさん2007/04/29(日) 00:42:17
またまた失礼します。
>327の問題1は
link reverse(link x){
link t, y= x, r= NULL;
while( y!=NULL ){
t= y->next; y->next= r;
r= y; y= t; }
return r;
}
問題2は
struct node heada, headb;
link t, u, x, a= &heada, b;
for(i= 0, t= a; i<N; i++){
t->next= malloc(sizeof *t);
t= t->next; t->next= NULL;
t-> item= rand()%1000;}
b= &headb; b->next= NULL;
for(t= a->next; t!=NULL; t= u){
u= t->next;
for(x= b; x->next!=NULL; x= x->next)
if( x->next->item > t->item ) break;
t->next= x->next; x->next= t; }
を元に作ってください。本当に失礼しました
0330デフォルトの名無しさん2007/04/29(日) 00:48:41
>>326
およそ3
0331デフォルトの名無しさん2007/04/29(日) 00:53:11
[1] 授業単元:情報数学基礎
[2] 問題文(含コード&リンク):
(1)(0,6)×(0,1)の長方形領域Ωをne個の合同な三角形に分割し一連の番号1,2,...,neをつけ、その頂点の座標を出力するプログラムを作れ。
なおneはキーボードから入力するものとし、分割が不可能な場合はerrorを返せ。
[実行結果]
neを入力 12
1 (○,○) (○,○) (○,○)
.
.
.
12 (○,○) (○,○) (○,○)

(2)Ω内の任意の点Pがどの三角形に属しているか求めるプログラムを作れ。
[実行結果]
Pを入力 3.0 0.5
三角形○
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: VC.NET
 [3.3] 言語:C++
[4] 期限:無期限
[5] その他の制限:特に無し
■ このスレッドは過去ログ倉庫に格納されています