[表示 : 全て 最新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/

545 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 05:06:37 ]
>>540
15パズルの任意の局面は、
(A)
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15

(B)
1 2 3 4
5 6 7 8
9 10 11 12
13 15 14

のいずれかからスタートした入れ替え操作で到達可能という意味.
(A)を(B)にする入れ替え操作は存在しない。(証明は簡単)

546 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 05:54:00 ]
>>519
亀レスだし、VCないからcursesライブラリ使ってだけど、できたからうpってみる
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6126.txt

547 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 09:17:44 ]
>>539
#include <iostream>
using namespace std;
#define XX 99
int parity(int *board) {
  int p = 0;
  for (int i = 0; i < 16; ++i)
    if (board[i] == XX) p ^= !(i & 4);
    else 
      for (int j = i+1; j < 16; ++j)
        if (board[i] > board[j]) p = !p;
  return p;
}
int main() {
  int board[] = {
     1,XX, 2, 4,
     5, 6, 3, 8,
     9,10, 7,11,
    13,14,15,12
  };
  printf("parity = %d\n", parity(board));
}

548 名前:519 mailto:sage [2008/03/06(木) 10:14:55 ]
まだ完成してはいないのですが、どうにか15パズルの課題、仕上げることが出来そうです。
>>546さん、>>547さん、
また、今まで助言を下さった方々、本当にありがとうございました。

549 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 19:13:46 ]
>>545
それを、あらかじめ、判定するという、話なんですが

550 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:07:33 ]
>>549
#define HEIGHT 4
#define WIDTH 4

typedef struct tab_board_t{
int num[HEIGHT][WIDTH];
}board_t;

int is_solvable(board_t *board){
int ret=1, x, y;

for(y=0;y<HEIGHT;y++){
for(x=0;x<WIDTH;x++){
ret=(ret+(board->num[y][x]/WIDTH-y))&1;
ret=(ret+((board->num[y][x]%WIDTH)-x))&1;
}
}
return ret;
}
/*
但し、完成した状態の定義を
board_t board={{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15}};
とする
*/

551 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:34:23 ]
>>550
間違ってるな

552 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 20:43:44 ]
>>550
{{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,15,14,13}}を、与えると、1が、返ってきて、しまいましたが、、、
未完の、大作と、評価して、おきます

553 名前:550 mailto:sage [2008/03/06(木) 21:50:12 ]
>>550 の修正版 (完成した状態の定義は board_t board={{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,SPACE}}; とする)
#define HEIGHT 4
#define WIDTH 4
#define BOARD_SIZE ((HEIGHT)*(WIDTH))
#define SPACE ((BOARD_SIZE)-1)
typedef struct tag_board_t{ int num[BOARD_SIZE]; }board_t;

int swap(int *a, int *b){
int c; c=*a; *a=*b; *b=c;
return (*a!=SPACE && *b!=SPACE); // 空白との交換はカウントしない
}

int sign(int a){ return (a>0)?1:(a<0)?-1:0; } // 数値の符号を返すだけ

int is_solvable(board_t *board){
int check_pos, swap_pos, target_pos, swap_count=0;
int diff_x, diff_y;
board_t work;
work=*board;
for(check_pos=0;check_pos<WIDTH*HEIGHT;check_pos++){
for(target_pos=0;work.num[target_pos]!=check_pos;target_pos++);
while(work.num[check_pos]!=check_pos){
diff_x = (check_pos%WIDTH) - (target_pos%WIDTH);
diff_y = (check_pos/WIDTH) - (target_pos/WIDTH);
if(diff_x) swap_pos=target_pos + sign(diff_x);
else swap_pos=target_pos + sign(diff_y)*WIDTH;
swap_count+=swap(&work.num[target_pos], &work.num[swap_pos]);
target_pos=swap_pos;
}
}
return (swap_count%2==0);
}



554 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:34:55 ]
547 のほうが数段美しいな。非破壊的だし。

555 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:52:37 ]
[1] 授業単元: ひまつぶし
[2] 問題文(含コード&リンク):()

大きな川のこちらの岸辺に n 艘の船がある。
船 j は川を t_j 分で渡ることができる。

船を動かすとき、二艘繋いで動かすこともできる。
このときは、遅い船の時間だけかかってしまう。

こちらの岸辺にある船をすべて向こうの岸辺に
持って行くためにかかる最短時間を求めよ。

入力:
船の艘数 n (≦ 1000000)
各船が川を渡る時間 t_1, ..., t_n

出力:
最短時間

[3] 環境
 [3.1] OS: 問わず
 [3.2] コンパイラ名とバージョン: 問わず
 [3.3] 言語: どちらでも可
[4] 期限: 03/10 まで
[5] その他の制限: 特になし。

556 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:57:38 ]
>>555
全部、同時に、出港すれば、、、、

557 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:58:45 ]
全ての船が一斉に渡り始めればいいので、
t_1からt_nの中の最小値が答え。

558 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:59:15 ]
最大値だったw

559 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:01:23 ]
プログラム必要なしw

560 名前:555 mailto:sage [2008/03/07(金) 01:07:34 ]
条件の後出しですんません、船の運転手は 1 人です。

よくある問題設定なので書かなくても察してくれると思ってた・・・。

561 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:09:32 ]
甘いな、そんな素直に解釈するような連中だと思うのか?w

562 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:13:16 ]
2艘を繋いだり外したりする時間は考慮しなくていいのか?

563 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:13:46 ]
「二艘繋いで動かすこともできる。』と、いうのは、1+2=3という、意味ですか、それとも、1+1=2と、いう意味ですか?



564 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:22:15 ]
一番早い船に乗って、往復して一艘ずつ曳航すればいいのかな。
int required_time(int* t, int n)
{
if(n<=0) return 0;
else if(n==1) return *t;
else return std::accumulate(t, t+n, 0) + *min_element(t, t+n) * (n-1);
}

565 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:27:01 ]
最後のところ訂正
else return std::accumulate(t, t+n, 0) + *std::min_element(t, t+n) * (n-2);

566 名前:555 mailto:sage [2008/03/07(金) 01:28:44 ]
>>565
船の速さが 1 2 5 10 のとき、その解法だと 19 になりますが
最適解は 17 です({1,2}, {1}, {5,10}, {2}, {1,2})

567 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:35:27 ]
それ以前に19になるか?

568 名前:555 mailto:sage [2008/03/07(金) 01:44:05 ]
実行して気づきました。問題文が不十分だったんですね。

> 遅い船の時間だけかかってしまう。
は、遅い船のスピードに支配される、という意味で使っていました。

ああ、もうぼろぼろ・・・

569 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:37:08 ]
キニスルナ(・∀・)
春休み中はスレも停滞するし、暇つぶしの問題は歓迎だろ。
ただ、2つの場所を種々の条件で移動する問題はなぞなぞの要素が強いと思われ。

570 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:54:01 ]
作業系の問題よりは暇つぶしにはいいんじゃねーの?
まあ俺はわからんけど

571 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:10:30 ]
個別の数値が決まってる奴はこの手のなぞなぞの定番だけど、一般化は考えたことなかったな。
少し考えてみようか。
解けない気がするけどw

572 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 13:47:35 ]
若干強引だけどこれでいけるか?

int required_time(int* t, int n)
{
int t_temp;
switch(n){
case 1: return t[0];
case 2: return t[1];
case 3: return t[0] + t[1] + t[2];
case 4: return t[0] + 3 * t[1] + t[3];
default:
t_temp = 2 * t[0] + 3 * t[1] + t[n-1];
t[1] = t[0];
return temp_t + required_time(t + 1, n - 3);
}
}

573 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 19:59:42 ]
>>572
なんかちがわね? t[] = {1,3,4,4} のとき
そのプログラムだと 1 + 3*3 + 4 = 14 だけど
(1,3)->, <-(1), (1,4)->, <-(1), (1,4)-> で13 になるよ



574 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 22:43:47 ]
>>555
また、お前か

575 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 01:34:16 ]
>>555
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6128.txt
総当りでやってみた。100万艘とかは無理w
でもいろいろやってみると、以下が鉄則のようにみえる。
一、速い二艘を往復に使うべし
一、遅い方の船から二艘ずつを組にして渡るべし

576 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 16:08:31 ]
[1] 授業単元:プログラミング演習
[2] 問題文:データ構造スタックを用いた逆ポーランド電卓の作成
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C
[4] 期限: 3月中

初心者です
四則演算が行える電卓を作りたいのですが、よろしくお願いします。

577 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 11:12:29 ]
宿題ではないのですが
[1] 授業単元:n/a
[2] 問題文(含コード&リンク):n/a
[3] 環境
 [3.1] OS: (WindowsXPproSP2)
 [3.2] コンパイラ名とバージョン: (bccフリー版最新)
 [3.3] 言語: (どちらでも可)
[4] 期限: (無期限)
[5] その他の制限: ()
基本的なノリは成分分析やバーコードバトラーです。
・任意の文字列(桁数固定表記の数値がメイン)を任意のリスト(*)に基づいて一字ごとに点数化し、その和を返すプログラム。
・a.txtファイル内に一行毎に一個の文字列を記録した文字列を、上記で丸ごと処理しc.txtファイル(**)として返すプログラム。
リスト自体は別個に独立したb.txtファイルで。
* リストの書式は丸投げですが、二軸マトリックス(x軸…対象文字列内の位置、y軸…対象となる文字の内容)でお願いします。
** 点数が一行に一個ずつ並んでるだけです。
cd実行後のコマンドは"enscore a.txt b.txt c.txt"みたいな感じで。
例:"14159265358979323846"を点数化したい場合
x(左からA〜T),y(上から0〜10)。尚、y=10は数字以外の場合に適用されます、だから大小区別の英数字ならy=0〜62になります。
以下、該当部分が()で括られています。
{y=0|8,56,88,114,100,88,67,10,12,116,107,18,126,60,92,42,44,3,41,73}
{y=1|(124),56,(46),41,81,15,126,95,86,17,105,80,126,71,35,5,107,109,118,15}
{y=2|122,61,19,107,96,(50),128,96,64,46,6,18,73,69,44,(69),33,83,8,27}
{y=3|84,57,100,128,38,88,86,52,(110),7,42,43,23,101,(47),45,(1),81,6,99}
{y=4|3,(116),77,62,88,45,32,1,17,101,59,20,27,26,69,18,41,81,(24),107}
{y=5|25,17,13,(2),108,120,7,(98),123,(65),121,122,116,91,40,109,70,13,73,23}
{y=6|2,19,7,44,91,121,(88),10,58,98,123,109,119,93,88,40,88,99,112,(33)}
{y=7|72,83,32,66,88,86,63,104,27,2,106,84,(7),9,73,18,0,64,6,118}
{y=8|51,75,79,16,102,98,78,51,48,31,(118),36,110,47,12,68,98,(17),106,80}
{y=9|68,109,114,49,(53),70,84,9,62,67,1,(44),80,(117),0,79,16,84,66,56}
{y=10|60,34,105,58,73,99,110,127,9,61,115,23,45,60,39,80,36,3,14,101}
124+116+46+2+53+50+88+98+110+65+118+44+7+117+47+69+1+17+24+33}
=1229

578 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 15:58:16 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
0001.jpg 0002.jpg 0003.jpg ....というファイルを順に読み込み、
動画として表示するアプリケーションを作成せよ。
   問題文全文
  kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6131.txt
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語:C++
[4] 期限:[2008年3月15日まで]
[5] その他の制限:
FLTKを使用する。
映像を直接扱うクラスやライブラリは使わない。(e.g., mpegs)
  kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6132.txt
上は、自分でやったとこまでです。初心者なので訳が分からなくなってます。
あと、問題文が英語で本当にすみません。



579 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 16:55:37 ]
>>577
Cで作ってみた
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6133.txt

580 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 21:11:36 ]
>>579
ありがとう、夜勤から帰ったらためしてみる。まずは取り急ぎ

581 名前:デフォルトの名無しさん mailto:sage [2008/03/10(月) 22:57:24 ]
>>576
当方の環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6134.txt
K&R2 4.3 よりも無駄に長く汚くなってしまいました。とりあえず、そっちを読んでください。

582 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:55:05 ]
>>581
バグがありました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6135.txt

583 名前:577 mailto:sage [2008/03/11(火) 11:25:18 ]
>>579
折角作って頂いたのに本当に申し訳ないんだが、enscoreコマンド実行時にリストの中身と計算過程の表示を省くには何処を削ればいいんでしょう?
処理個数が多くなりそうなので…。



584 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 12:40:59 ]
>>583
あれ?リストの中身表示、計算過程って表示されちゃってる?
#define DEBUG ってなってなければ、表示されない(プログラムの実行コードに含まれない)はずなんだけど・・・
コンパイラによってデフォルトで DEBUG ついちゃうのかな?

まぁ、#ifdef DEBUG 〜 #endif の間を削除しちゃえばいいさぁ〜

585 名前:デフォルトの名無しさん [2008/03/12(水) 11:51:16 ]
宿題じゃないいんですけれども
[1] 授業単元:独学
[2] 問題文(含コード&リンク):stl
[3] 環境
 [3.1] OS: ubuntu
 [3.2] コンパイラ名とバージョン: g++
 [3.3] 言語: c++
[4] 期限: (無期限)
[5] その他の制限:
stlの使い方について質問です。今リストの中に1,2,4,8,16,32,64
と入っているんですが、"erase" を使って5番目の数字を削除して中身を表示し、
その後に3番目の数字を削除して表示。 そして、"insert"を使って3番目と4番目の
数字の間に7を入れて表示という感じにするにはどうしたらいいんですか?
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
int main(){
list<int> mylist;
for(int i=1; i<=64; i *= 2)
mylist.push_back(i);
cout<<endl;

list<int>::const_iterator itr1;
for(itr1 = mylist.begin(); itr1 != mylist.end(); itr1++)
cout<< *(itr1)<<" ";
return 0;
}

586 名前:デフォルトの名無しさん mailto:sage [2008/03/12(水) 13:18:17 ]
>>585
スレ違い。
初心者歓迎スレでもSTLスレでもお好きな方ヘどうぞ。

587 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 00:15:41 ]
あー・・・春だなぁ。5〜6月までは、あんまりネタがないのかなぁ。

588 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 02:20:40 ]
今のうちに、C/C++とかアルゴリズムを勉強しておくといいんじゃね。
Structure and Interpretation of Computer Programs (SICP)辺りを読むのも良いかもな


589 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 16:58:40 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):約分を行う関数を作成せよ。
  ただし、分子と分母をメンバとする構造体を用いて、分数を表す。
  構造体タグには、typedefによってBUNSUという名前をつけて使用する。
[3] 環境
 [3.1] OS:WindowsXP SP2
 [3.2] コンパイラ名とバージョン:Developer studio
 [3.3] 言語:C++
[4] 期限:無制限
[5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6136.txt
*1〜2の、約分処理と関数の呼び出し方がわかりません。
もしよければお願いします。

590 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 17:07:56 ]
>構造体タグには、typedefによってBUNSUという名前をつけて使用する。
は?
C++に構造体タグなんてありませんが。構造体名自体が型として使えるので、typedefする必要もありませんが。

591 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 18:21:48 ]
どっちかといえば期限無制限に突っ込むべきだろ

592 名前:デフォルトの名無しさん mailto:sage [2008/03/13(木) 21:20:13 ]
俺の半分は優しさで出来ています
#include<stdio.h>
typedef struct bunsu{
int bunshi;
int bunbo;
} BUNSU;
int getgcd(int m, int n){
while(m*n){ if(m>n) m%=n; else n%=m; }
return m+n;
}
void yakubun_p(BUNSU *x){
int gcd;
gcd = getgcd(x->bunshi, x->bunbo);
x->bunshi /= gcd;
x->bunbo /= gcd;
}
int main(void){
BUNSU a;
printf("分子?"); scanf("%d", &a.bunshi);
printf("分母?"); scanf("%d", &a.bunbo);
printf("%d / %d = ", a.bunshi, a.bunbo);
yakubun_p(&a);
printf("%d / %d\n", a.bunshi, a.bunbo);
return 0;
}

593 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:31:46 ]
>>592
ありがとうございました。
C言語をはじめたばかりですが、がんばっていこうと思います!



594 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:54:42 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
VisualC++を使用して「はさみ将棋」を作成せよ。
テクスト、授業で配布したプリントのほかにも、自分で参考となる資料を集めて利用しても構わない。
[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C++
[4] 期限: 2008年3月28日まで
[5] その他の制限:特になし。ただ、出来るだけ平易な文で作っていただけると助かります。

595 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 01:15:00 ]
てst

596 名前:541 mailto:sage [2008/03/14(金) 01:59:06 ]
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):ls -lの加え-a、-w、-F結果が表示出来るようにしなさい
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限:2008年3月17日まで

kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6140.c

前回は助けて頂きありがとうございました。
↑自力でここまで作ってみたのですが、-a、-wなどの部分を作成がまったく見当がつきません。
助けて頂けるとありがたいです、よろしくお願いします。

597 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 04:50:33 ]
>>593
ちょっと待て。
> [3.3] 言語:C++
>C言語をはじめたばかりですが、がんばっていこうと思います!
おまいさんは、何語を習っているのかさえ判っていなかったのか?

598 名前: ◆nUWYoBn0RQ [2008/03/14(金) 16:48:25 ]
助けてください。
課題で
c言語の文字列ソートで
char * month[]={"january" ,"february", "march","april","may","june","july"}
をアルファベット順にソートかつ大文字に変えて表示するやり方
がわかりません。
教えてください。今日までなので時間がありません。
お願いします

599 名前:サッカー [2008/03/14(金) 17:09:48 ]
1] 授業単元:プログラミング
[2] 問題文 :c言語の文字列ソートで
char * month[]={"january" ,"february", "march","april","may","june","july"}
をアルファベット順にソートかつ大文字に変えて表示しろ。
[3] 環境
 [3.1] OS: windowsxp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C言語
[4] 期限: 2008年3月15日まで

助けてください。
やり方が全くわかりません。
教えてください。
お願いします






600 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 17:43:58 ]
>>599
ほいよ
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void*a,const void*b){return strcmp(a,b);}
int main(void){
    char * month[]={"january" ,"february", "march","april","may","june","july"};
    const int N = sizeof month / sizeof * month;
    int i;
    qsort(month , N , sizeof * month , cmp);
    for(i=0;i<N;++i){
        const char*it;
        for(it=month[i];*it;++it)putchar(toupper(*it));
        puts("");
    }
    return 0;
}


601 名前:600 mailto:sage [2008/03/14(金) 17:46:38 ]
わりい一行バグってた。cmpを置き換えてくれ
int cmp(const void*a,const void*b){return strcmp(*(char**)a,*(char**)b);}


602 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 17:50:09 ]
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
1、,学籍番号と名前と年齢からなる構造体「学生」を定義して、以下の二人の「学生」を
 作りなさい。
 ・学籍番号1番、「青木三郎」20歳
 ・学籍番号2番、「加藤武雄」21歳
2,「学生」の学籍番号、名前、年齢を設定する関数を作り、1の問題を行いなさい。
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Borland C++
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) できるだけ早く
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
クラスの作り方がよくわかりません。
よろしくお願いします。


603 名前:サッカー [2008/03/14(金) 17:53:30 ]
マジ天才です。
助かりました。
ありがとうございます。



604 名前: ◆zCS1o.kilU [2008/03/14(金) 18:17:37 ]
1] 授業単元:プログラミング
[2] 問題文 :mystrlen関数作成せよ。プロトタイプはint mystrlen (char*);
またmain関数からmystrlen関数を呼び出し自分の名前の長さを求め
      なさい。
  実行例「   ”山田太郎”は0008バイトです   」
[3] 環境
 [3.1] OS: windowsxp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C言語
[4] 期限: できるだけ早くお願いします。
[5] strlen関数使用禁止

お願いします。





605 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:27:16 ]
>>604
好きなんどーぞ
int mystrlen(char*p){
    return strcspn(p,"");
}
int mystrlen(char*p){
    return (char*)memchr(p,0,-1) - p;
}
int mystrlen(char*p){ 
    return strchr(p,0) - p; 


606 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:27:23 ]
>>602
struct Gakusei {
    int num; char* name; int age;
    void set(int _num, char* _name, int _age) {
        num = _num; name = _name; age = _age;
    }
};
int main() {
    // 1
    Gakusei g1 = {1, "青山三郎", 20};
    Gakusei g2 = {2, "加藤武雄", 21};
    // 2
    g1.set(1, "青山三郎", 20);
    g2.set(2, "加藤武雄", 21);
}

607 名前: ◆zCS1o.kilU [2008/03/14(金) 18:40:28 ]
ありがとうございます。
もうひとつだけお願いがあります。1] 授業単元:プログラミング
[2] 問題文 :キーボードから西暦と月を入力するとカレンダーを
      表示するプログラムを作成せよ
[3] 環境
 [3.1] OS: windowsxp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C言語
[4] 期限: できるだけ早くお願いします。
[5] scanf使用不可. fgetsでお願いします。

お願いします


608 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 18:44:19 ]
>>604
当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4 です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6142.txt

609 名前: ◆zCS1o.kilU [2008/03/14(金) 19:03:27 ]
そうなんですか。
ありがとうございます。

610 名前: ◆TJ9qoWuqvA [2008/03/14(金) 19:55:04 ]
教えてください。
わからないよ〜。
最後にこれができないと
単位がもらえないよ。

611 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 20:06:27 ]
>>610
お前が誰だかわからないよ

612 名前:607 [2008/03/14(金) 20:21:56 ]
607
です。ありがとうございます。
もうひとつだけお願いがあります。1] 授業単元:プログラミング
[2] 問題文 :キーボードから西暦と月を入力するとカレンダーを
      表示するプログラムを作成せよ
[3] 環境
 [3.1] OS: windowsxp
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C言語
[4] 期限: できるだけ早くお願いします。
[5] scanf使用不可. fgetsでお願いします。

お願いします



613 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 21:20:32 ]
>>607
>>612
当方で確認した環境は cygwin/WindowsXP, 処理系はgcc3.4.4 です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6143.txt



614 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:21:48 ]
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):データ構造・スタックの作成
[3] 環境
 [3.1] OS: windows vista
 [3.2] コンパイラ名とバージョン: bcc32
 [3.3] 言語: C
[4] 期限: できるだけ早く

www2.uploda.org/uporg1305086.txt
↑スタックとして、これを使用したいと思います。
しかし、整数しか扱えず、浮動小数点数のプッシュが行えません。
関数の返却値をdouble型に変更してみたり、確保する型の変更など
試してみましたが、うまくいきませんでした。

浮動小数点数を扱える様に変更をよろしくおねがいします。

615 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:25:22 ]
ksk

616 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:39:38 ]
>>614
当方で確認した環境はcygwin/WindowsXP, 処理系はgcc3.4.4です。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6144.txt

617 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:47:22 ]
>>616
614です。
ありがとうございます。
実行してみたところ、一か所エラーがでてしまいました。13行目ですが、
エラー E2034 13: 'void *' 型は 'double *' 型に変換できない(関数 StackAlloc(Stack *,int) )

処理系の違いによるものでしょうか。
何か対策がありましたら教えて頂けると助かります。

618 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:49:54 ]
>>617
元のファイルもコンパイルできなかったのかな?

619 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:50:46 ]
>>617
if ((s->stk = (double *)calloc(max, sizeof(double))) == NULL) {
でどうでしょうか?

620 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 22:59:48 ]
614です。

>>618
614のファイルでは、整数のみ扱える状態でコンパイル、実行が行えました。

>>619
実行できました。ありがとうございます。
本当に助かりました。
このスタックを用いてプログラムの作成を行うのですが、
また解らないことがありましたら、質問させていただけたらと思いますので
その際はよろしくお願いいたします。

621 名前:デフォルトの名無しさん [2008/03/14(金) 23:08:12 ]
>>617
C++としてコンパイルしているだろ?

622 名前:607 [2008/03/14(金) 23:21:48 ]
613さんありがとうございます。たすかりました。

623 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 23:33:12 ]
614です。

>>617
拡張子を.cpp としてコンパイルしていました。
Cでコンパイルしたところ動きました。
ご指摘ありがとうございます。今後気を付けます。

>>619
訂正していただいたのにすみませんでした。
言語をCとせずにコンパイルしていたのが原因でした。
616が動作することも確認できました。

ありがとうございました。



624 名前:616 mailto:sage [2008/03/15(土) 05:59:16 ]
>>620
該当行は double のときは、calloc() -> malloc() に訂正しておいてください。

625 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 07:40:55 ]
>>596
後半だれてたから、読みづらいソースになってるかもしんないけど、
一応できたからうp。参考程度にどうぞ (間違ってたらごめんね)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6145.txt

626 名前:デフォルトの名無しさん [2008/03/15(土) 09:00:05 ]
英文字A-Zに対して、異なる二つの文字ごとに得点が与えられているとします
最も得点が高くなる文字列を求めたい

例えば3文字で次のように得点が与えられていれば
AB 1
AC 5
BA 2
BC 3
CA 10
CB 1

BCA の得点13が最高得点


627 名前:デフォルトの名無しさん [2008/03/15(土) 09:02:50 ]
英字(26文字)を、1-1000までの数字に置き換えても求められるプログラムがよいです
計算量が増えますから、総当たりが難しいです

628 名前:626 [2008/03/15(土) 09:17:13 ]
巡回セールスマンで最短を最長に変えたものと同じですね
距離をマイナス倍すれば(例えば10から引く)巡回セールスマンと一致しますね

629 名前:デフォルトの名無しさん [2008/03/15(土) 09:29:21 ]
でももとの位置へ戻ってこなくて良いところが違いますが・・・
レンタカーやタクシーで巡回するようなものです

630 名前:541 mailto:sage [2008/03/15(土) 10:48:04 ]
>>625
ありがとうございます。
参考にさせて頂きます。

631 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:06:09 ]
>>626
同じ点(文字)を二度以上通ってもいいですか?
もし、いいなら単純な動的計画法が適用できる気が。

632 名前:デフォルトの名無しさん [2008/03/15(土) 11:13:59 ]
>>631
おなじ文字を何度も使ったら値は無限に増えます
ACACACACA・・・・とか 一度だけの並べ替えにしてください

633 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:17:26 ]
>>632
ACA で終わりじゃないの?



634 名前:デフォルトの名無しさん [2008/03/15(土) 11:21:06 ]
一度だけの使用で、最も高得点になるものを求めたいです
文字は全て使わなくても良いですが、全部使った方が高得点になります

635 名前:626 [2008/03/15(土) 11:35:08 ]
すみません 設定を間違えました 出直してきます

636 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 12:01:14 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):英和辞書を作成せよ。
辞書データはプログラム開始時にファイル(ファイル名はdic.dat)より読み込みメモリ上にリスト構造を構築する。
以下これをリストという。
次の機能をメニューで選べるようにすること。(機能ごとに関数にしておく)
(1)検索:英単語(半角)を入力すると、リストより検索して日本語(全角)の意味を表示する。
(2)追加:新しい単語とその意味をキーボードより入力し、リストに追加する。
(3)修正:リストのデータを修正する。
(4)削除:リストより任意の単語を削除する。
(5)保存:リストをファイルに保存する。
(6)終了:プログラムの終了。もしデータが変更されているのに保存されていない時は、
保存せず終了して良いか確認する処理を行う。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio 2005
 [3.3] 言語:C
[4] 期限:3月中
[5] その他の制限:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6146.txt

お願いします。

637 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:01:11 ]
>>634
>文字は全て使わなくても良いですが、全部使った方が高得点になります
それは得点配分しだいじゃないか?

638 名前:デフォルトの名無しさん [2008/03/15(土) 20:00:13 ]
>>636
STLのmapをCに移植すればいいんじゃね?

639 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:03:22 ]
リスト構造で実現しろって言ってるのに。

640 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:08:23 ]
>>639は出世しないタイプ

641 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 20:29:04 ]
>>638
これがマリー・アントワネットの力か……

642 名前:デフォルトの名無しさん [2008/03/15(土) 21:14:11 ]
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
 標準入力からファイル名を受け取り、ファイル内容を以下のように要素毎に整列し出力せよ
  入力ファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6147.txt
  出力ファイル:kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6148.txt
[3]
環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc3.4
 [3.3] 言語:C
[4] 期限:3月20日
[5] その他の制限:
 入力するファイルの行数は1000行以内とする

「Perlの方が楽かもねぇ」と言われてもどっちもわからず・・・

643 名前:デフォルトの名無しさん [2008/03/16(日) 05:45:48 ]
>>642
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6149.c



644 名前:642 mailto:sage [2008/03/16(日) 06:50:08 ]
>>643
6日かけてもロクにできなかったのに・・・ありがとうございます
ソース内容理解して説明できるよう頑張ります

645 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 11:29:30 ]
>>594
取り合えず動く程度の簡易なもの(非VC++)。
ルールはググって上2つぐらいをざっと見ただけなんでもしかしたら間違ってるかも。
役に立つか分かりませんが参考程度にどうぞ。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6150.txt







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

前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