C/C++の宿題片付けます 130代目
レス数が1000を超えています。これ以上書き込みはできません。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題片付けます 129代目
http://pc12.2ch.net/test/read.cgi/tech/1247438792/
0002デフォルトの名無しさん
2009/08/14(金) 09:33:520003デフォルトの名無しさん
2009/08/14(金) 10:55:130004デフォルトの名無しさん
2009/08/14(金) 10:59:01奴ら社会に出て苦労してるだろうなw
0005デフォルトの名無しさん
2009/08/14(金) 11:29:09学生時代に理解できなかった分野へわざわざ進もうと思うだろうか
でもその矛盾に気がつかないままカリキュラムに流されるアホもいるんだろうな
で、速効でクビになって最近の若いやつらはとか情報系の大卒は使えんとか言われるわけだ
0006デフォルトの名無しさん
2009/08/14(金) 11:33:58しても大丈夫な場合が多いですし回答者どうしで相互チェックもそれな
りに行われているとも思いますが、それでも求められているもの
と異なる場合があり得ます
★回答者は質問点プレで記載されている処理系上で動作するように
回答すれば良いのですが、他の処理系でコンパイル可能だが
著しく動作が異なるとか動作しない場合は処理系依存と明記した
ほうがいいと思います。
(ライブラリが無く他の処理系ではコンパイル不能な場合はこの
限りではありません)
0007デフォルトの名無しさん
2009/08/14(金) 15:56:04プログラミング
[2] 問題文(含コード&リンク):
適当な事例問題(ex.最初のN個の素数を印字せよ)を作成し、5ステップ以上で段階的詳細化せよ。
[3] 環境
[3.1] OS: Windows XP
[3.2] Micro Soft Visual C++ 2008
[3.3] 言語: C言語
[4] 期限: 2009年8月14日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
制限は特にありません。
各ステップの理論などを、プログラムのコメント文、処理構造を構造化言語で表現してもらえるとありがたいです。
事例問題はなんでも構いません、むしろ簡単な事例だとありがたいです。
少々長い問題ですが申し訳ありません、お願いします。
0008デフォルトの名無しさん
2009/08/14(金) 20:09:39そういうの丸投げしたらばればれでしょ
0009デフォルトの名無しさん
2009/08/14(金) 21:12:560010デフォルトの名無しさん
2009/08/14(金) 21:14:37条件がつきたされました。
[1] 授業単元:インタラクティブコミュニケーション
[2] 問題文(含コード&リンク):関数の呼び出し」、「配列」、「ポインタ」のすべてを使用したプログラムを
作成せよ。プログラミング力 + オリジナリティ、文字列、再帰が本質的な要素
として含まれていれば加点。
[3] 環境
[3.1] OS: WindowsXP
[3.2] Visual Studio 2005
[3.3] 言語:C言語
[4] 期限: 8月17日(月)17:00(早いほうが望ましい)
[5] その他の制限: 習ったのはttp://www.ncc-1701.jp/kakei/InteractiveComm/IM_top.htmlに載ってる事です。
この範囲内で作って頂けると嬉しいです。
#include <windows.h>は使わないようにお願いします。
出来れば色んな方の作品があることが望ましいです。
(new)ソースコードには「何をしようとしている」プログラムなのか等がわかるように適宜コメントを付ける。
よろしくお願いします。
0011デフォルトの名無しさん
2009/08/14(金) 21:18:45なんと\(^o^)/
0012デフォルトの名無しさん
2009/08/14(金) 21:42:220013デフォルトの名無しさん
2009/08/14(金) 22:46:53すいません、では金額を入力すると札と銭を判定するプログラムという仮定でどうでしょう?
ex)
金額: 26324
10000: 2枚
5000: 1枚
1000: 1枚
500: 0枚
100: 3枚
10: 2枚
5: 0枚
1: 4枚
これを段階的にお願いしたいです。
0014デフォルトの名無しさん
2009/08/14(金) 23:00:530015デフォルトの名無しさん
2009/08/14(金) 23:26:18大学を晒したところで有益になることがあると思いますか?
0017デフォルトの名無しさん
2009/08/14(金) 23:35:49いや、晒すって程のもんでもないだろ
>>10の出してるページのインデックスページにちゃんと四国大学って書いてるんだし
0018デフォルトの名無しさん
2009/08/14(金) 23:40:40T大学のK先生
002010
2009/08/14(金) 23:47:07その情報だけならHP見たらわかりますからねえ
ちなみにメールは学内アドからしか送れないはずですがどうしました?
0021デフォルトの名無しさん
2009/08/14(金) 23:56:00学内アドから外部に送れないのは知ってるけど
外部から学内に送れないとは聞いたことない
実際1回目の課題についてヤフメで質問したらちゃんと返ってきたよ
002210
2009/08/15(土) 00:04:06知らなかった・・・
学内→学外は可能ですけどね
0023デフォルトの名無しさん
2009/08/15(土) 00:04:510024デフォルトの名無しさん
2009/08/15(土) 01:04:00メールのやりとりもできるし、メッセでお話もできますよん
0025デフォルトの名無しさん
2009/08/15(土) 19:27:44ラウンジの9904.txt
適当に書いて適当にしかチェックしてないからバグ見つけたら自分で直せ
わかんないことへの質問は受け付けない
0026デフォルトの名無しさん
2009/08/15(土) 19:44:490027デフォルトの名無しさん
2009/08/15(土) 21:33:44gcc -mno-cygwin
オプションで
#include <conio.h>
getch();
が使えました。
0028デフォルトの名無しさん
2009/08/16(日) 16:35:26ありがとうございます。
質問させてください、既婚ですか?よかったら・・・
まぁ自分男ですがww
0029デフォルトの名無しさん
2009/08/16(日) 16:52:19003010
2009/08/17(月) 04:51:40[1] 授業単元:インタラクティブコミュニケーション
[2] 問題文(含コード&リンク):関数の呼び出し」、「配列」、「ポインタ」のすべてを使用したプログラムを
作成せよ。プログラミング力 + オリジナリティ、文字列、再帰が本質的な要素
として含まれていれば加点。
[3] 環境
[3.1] OS: WindowsXP
[3.2] Visual Studio 2005
[3.3] 言語:C言語
[4] 期限: 今日の17:00
[5] その他の制限: 習ったのはttp://www.ncc-1701.jp/kakei/InteractiveComm/IM_top.htmlに載ってる事です。
この範囲内で作って頂けると嬉しいです。
#include <windows.h>は使わないようにお願いします。
出来れば色んな方の作品があることが望ましいです。
(new)ソースコードには「何をしようとしている」プログラムなのか等がわかるように適宜コメントを付ける。
よろしくお願いします。
0031デフォルトの名無しさん
2009/08/17(月) 06:23:09[1] 授業単元:夏休みの課題(テーマが見つかりません)
[2] 問題文(含コード&リンク):今まで学んだ「関数の呼び出し」、「配列」、「ポインタ」のすべてを使用したプログラムを作成せよ。
プログラミング力 + オリジナリティ、文字列、再帰が本質的な要素として含まれていれば加点。
[3] 環境
[3.1] OS: WindowsXP
[3.2] Visual Studio 2005
[3.3] 言語:C言語 <windows.h> は使わないようにお願いします。
[4] 期限: 今日
[5] その他の制限: 習ったのは http://www.ncc-1701.jp/kakei/InteractiveComm/IM_top.html に載ってる事です。
ソースコードには「何をしようとしている」プログラムなのか等がわかるように適宜コメントを付ける。";
0032デフォルトの名無しさん
2009/08/17(月) 06:33:510033デフォルトの名無しさん
2009/08/17(月) 10:01:42>>25のプログラムをちょこちょこっと書き換えれば文字列以外はできるなw
>>31
改行コード処理されなくね?w
0034デフォルトの名無しさん
2009/08/17(月) 11:18:51>>31はC++だし
0035デフォルトの名無しさん
2009/08/17(月) 12:28:38#include <stdio.h>
int sub(const unsigned char *data){
int bytes, length, lines;
printf("%s", data);
for(bytes=0, length=0, lines=0; data[bytes]; bytes++) { // bytes = strlen(data);
length++;
if(data[bytes] == '\n') lines++;
if(data[bytes] > 0x7f) { // S-JISの漢字は1文字が2バイト(ここの条件文だけは段階的に詳細可)
if(! data[++bytes]) break; // 漢字の1バイトで終了となった場合
}
}
printf("%d bytes, %d 文字, %d 行\n", bytes, length, lines);
return 0;
}
int main(){
static const unsigned char data[] =
"[1] 授業単元:夏休みの課題(テーマが見つかりません) " "\n"
"[2] 問題文(含コード&リンク):今まで学んだ「関数の呼び出し」、「配列」、「ポインタ」のすべてを使用したプログラムを作成せよ。 " "\n"
" プログラミング力 + オリジナリティ、文字列、再帰が本質的な要素として含まれていれば加点。 " "\n"
"[3] 環境 " "\n"
" [3.1] OS: WindowsXP " "\n"
" [3.2] Visual Studio 2005 " "\n"
" [3.3] 言語:C言語 <windows.h> は使わないようにお願いします。 " "\n"
"[4] 期限: 今日 " "\n"
"[5] その他の制限: 習ったのは http://www.ncc-1701.jp/kakei/InteractiveComm/IM_top.html に載ってる事です。 " "\n"
" ソースコードには「何をしようとしている」プログラムなのか等がわかるように適宜コメントを付ける。" "\n";
return sub(data);
}
003610
2009/08/17(月) 16:26:07ありがとうございます。
これはどういったプログラムなのでしょうか?
また
int main(){
static const unsigned char data[] =
"[1] 授業単元:夏休みの課題(テーマが見つかりません) " "\n"
"[2] 問題文(含コード&リンク):今まで学んだ「関数の呼び出し」、「配列」、「ポインタ」のすべてを使用したプログラムを作成せよ。 " "\n"
" プログラミング力 + オリジナリティ、文字列、再帰が本質的な要素として含まれていれば加点。 " "\n"
"[3] 環境 " "\n"
" [3.1] OS: WindowsXP " "\n"
" [3.2] Visual Studio 2005 " "\n"
" [3.3] 言語:C言語 <windows.h> は使わないようにお願いします。 " "\n"
"[4] 期限: 今日 " "\n"
"[5] その他の制限: 習ったのは http://www.ncc-1701.jp/kakei/InteractiveComm/IM_top.html に載ってる事です。 " "\n"
" ソースコードには「何をしようとしている」プログラムなのか等がわかるように適宜コメントを付ける。" "\n";
return sub(data);
}
の部分は何を意味してるのでしょう?
003710
2009/08/17(月) 16:55:330038デフォルトの名無しさん
2009/08/18(火) 18:34:08文字列のquicksortやれ。オリジナリティ以外の条件は満たすだろう。
003938
2009/08/18(火) 18:34:490040デフォルトの名無しさん
2009/08/18(火) 20:54:55再帰といえば‥‥‥、エイトクイーンとかはどうですか?
0041デフォルトの名無しさん
2009/08/18(火) 23:27:530042デフォルトの名無しさん
2009/08/19(水) 04:36:09[2] 問題文(含コード&リンク):問題の基準に従い、
任意のローカルフォルダに置いた、指定したwords.txtの指定行から指定した行数の英単語を読み込み、
マージソートをして表示するプログラムを作成せよ。
同じようにヒープソートや基数ソートのプログラムも作成せよ。
問題の定義はhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9906.txt
指定されたwords.txtはサイズが大きいので他ロダに
http://www1.axfc.net/uploader/Ne/so/60050.txt&key=msortからDLしてください
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VC 2008
[3.3] 言語:C言語
[4] 期限:2009年8月21日まで
[5] その他の制限:細かい指定はファイルに書いてある通りです。ポインタと整列アルゴリズムまで習いました。
0043デフォルトの名無しさん
2009/08/19(水) 19:27:44[2] 問題文(含コード&リンク):C言語のみで円グラフを作成せよ。
問題文と自分でガンガッタ途中経過は↓にあります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9907.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:VC 2008
[3.3] 言語:C言語
[4] 期限:2009年8月21日
[5] その他の制限:C言語のみ(++や#は不可)
0044デフォルトの名無しさん
2009/08/19(水) 20:17:35面倒だからプロジェクトごとうpしてくれ
http://loda.jp/endraw/?id=1
つ「ぷろじぇくと(2.4M)」
0046デフォルトの名無しさん
2009/08/19(水) 21:38:050047デフォルトの名無しさん
2009/08/19(水) 22:11:260048デフォルトの名無しさん
2009/08/20(木) 00:48:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9908.txt
円を分割するまではやったから
文字入れとかC89でやりたいとかは自分でやってくれ
double rad=(point[0]/i)*2*3.141592;//ラジアン算出
double x=sin(rad)*10;
double y=-cos(rad)*10;
Pie(hdc,
0, 0, rc.right, rc.bottom,
(int)x+rc.right/2, (int)y+rc.bottom/2, rc.right/2, 0);
返信遅れてすいません
非常に助かります、ありがとうございました
これからどこを間違っていたかチェックしてみます
0051デフォルトの名無しさん
2009/08/20(木) 21:33:18ビデオメモリを直接叩くとかしないとw
0052デフォルトの名無しさん
2009/08/21(金) 00:03:380053デフォルトの名無しさん
2009/08/21(金) 00:05:39お安い御用だ!
char* memmem(char *p, unsigned int len1, char *q, unsigned int len2){
return NULL;
}
0054デフォルトの名無しさん
2009/08/21(金) 00:06:56おいおい、何か引数はもらってるんだから使わなきゃダメだろ
0055デフォルトの名無しさん
2009/08/21(金) 00:10:550056デフォルトの名無しさん
2009/08/21(金) 00:11:320057デフォルトの名無しさん
2009/08/21(金) 00:15:25[2] 問題文(含コード&リンク):10×10マスの碁盤の内から、scanf命令で入力した2値をx,y座標として、
その座標部分を塗りつぶし四角"■"で表示しなさい。それ以外は"□"でマス表示するものとします。
両者とも0から9までが入力されるものとします(エラー判定不要)。
入力時の問い合わせメッセージは自由に表示させて下さい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++ 2008
[3.3] 言語:C言語
[4] 期限: 2009年8月24日まで
[5] その他の制限:C言語のみ 多次元配列使用不可
0058デフォルトの名無しさん
2009/08/21(金) 00:17:30(void)p, (void)len1, (void)q, (void)len2;
return NULL;
}
/* 冗談 */
0059デフォルトの名無しさん
2009/08/21(金) 00:22:49p[len1] = '\0';
q[len2] = '\0';
return strstr(p, q);
}
0060デフォルトの名無しさん
2009/08/21(金) 00:23:00return strstr(p,q);
}
これでそれなりに動くんじゃね?
0061デフォルトの名無しさん
2009/08/21(金) 00:29:40[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):10×10マスの碁盤の内から、scanf命令で入力した2値をx、y座標として、
その座標部分を塗りつぶし四角"■"で表示しなさい。それ以外は"□"でマス表示するものとします。
両者とも0から9までが入力されるものとします(エラー判定不要)。
入力時の問い合わせメッセージは自由に表示させて下さい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++ 2008
[3.3] 言語:C言語
[4] 期限: 2009年8月24日まで
[5] その他の制限:C言語のみ(++、#不可) 多次元配列使用不可
よろしくお願いします。
0062デフォルトの名無しさん
2009/08/21(金) 00:39:12#include<stdio.h>
int main(void){
int x, y;
int data[10*10]={0};
while(1){
fprintf(stderr, "\nInput x y : ");
scanf("%d %d", &x, &y);
data[y*10+x]=1-data[y*10+x];
printf("\n");
for(y=0;y<10;y++){
for(x=0;x<10;x++) printf("%s", data[y*10+x]?"■":"□");
printf("\n");
}
}
return 0;
}
0063デフォルトの名無しさん
2009/08/21(金) 00:44:12動作は遅いが作り上げるまでが早い
char* memmem(char *p, unsigned int len1, char *q, unsigned int len2){
unsigned int i;
if(len1<len2) return NULL;
for(i=0;i<len1-len2;i++,p++){
if(memcmp(p, q, len2)==0) return p;
}
return NULL;
}
回答を待ちきれなければBM法でググればソースが落ちてるよ
0064デフォルトの名無しさん
2009/08/21(金) 00:56:06BM法、BMH法を上回る超速アルゴリズムで実装した。比べてみな。
char* memmem(unsigned char *p, unsigned int N, unsigned char *q, unsigned int M){
unsigned int n,k,t[256];
for(n=0 ;n<256; n++) t[n] = M+1;
for(n=0; n<M; n++) t[ q[n] ] = M-n;
n=0;
while(n+M<=N){
if( memcmp(&p[n], q, M)==0 ) return (char*)(p+n);
n += t[ p[n+M] ]; } return NULL; }
006564
2009/08/21(金) 01:00:43検索の歴史 一文字進化するのに掛かった年数は、なんと… http://d.hatena.ne.jp/siokoshou/20060325
「たった一文字」進化するのに掛かった年数が。なんと。10年!! スゲーーーー!ありえない〜。一文字ですよ、一文字。
10年間誰もあと一文字に気づかなかったんだねぇ。こうやってみるとSundayすごい。すごすぎる。
006661
2009/08/21(金) 02:28:50非常に言いにくいんですが、問題文に抜けがありました。
[1] 授業単元:C言語プログラミング
[2] 問題文(含コード&リンク):「for/while命令で表示した」10×10マスの碁盤の内から、
scanf命令で入力した2値をx、y座標として、
その座標部分を塗りつぶし四角"■"で表示しなさい。それ以外は"□"でマス表示するものとします。
両者とも0から9までが入力されるものとします(エラー判定不要)。
入力時の問い合わせメッセージは自由に表示させて下さい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:Visual C++ 2008
[3.3] 言語:C言語
[4] 期限: 2009年8月24日まで
[5] その他の制限:C言語のみ(++、#不可) 多次元配列使用不可
本当に申し訳ありません。よろしくお願いします。
0067デフォルトの名無しさん
2009/08/21(金) 02:29:42>>62の何が不満なの?
006861
2009/08/21(金) 02:55:20int data[10*10]={0}; の所でいきなり10×10マスの盤を表示させて
いるのかと思いましたが、for(y=0;y<10;y++){ for(x=0;x<10;x++)〜〜
の所で表示させるマス数を指定していたようでした。
for/whileでマス表示させていないと勘違いしていました。
本当にプログラム自体がド素人なので。
006961
2009/08/21(金) 02:59:12stderr
data[y*10+x]=1-data[y*10+x];
printf("%s", data[y*10+x]?"■":"□");
上記は何を表していますか?
0070デフォルトの名無しさん
2009/08/21(金) 03:07:13標準エラー出力
反転
表示
0072デフォルトの名無しさん
2009/08/21(金) 07:27:40相当度胸のある奴だなw
0073デフォルトの名無しさん
2009/08/21(金) 08:30:57#include <stdio.h>
int main(void)
{
int i, x, y;
scanf("%d", &x);
scanf("%d", &y);
for(i=0; i<y; i++) puts("□□□□□□□□□□");
for(i=0; i<x; i++) printf("□");
printf("■");
for(i=x+1; i<10; i++) printf("□");
putchar('\n');
for(i=y+1; i<10; i++) puts("□□□□□□□□□□");
return 0;
}
0074デフォルトの名無しさん
2009/08/21(金) 10:19:04putchar('\n');
上記は何を表していますか?
って言われそうw
0075デフォルトの名無しさん
2009/08/21(金) 10:28:57#include<stdio.h>
int main(void) {
int x, y;
int data[10*10]={0}; // data[0]を0で初期化、他のdataは0が設定される。
while(1) {
// 10x10の表を出力します。
for(y=0; y<10; y++) {
for(x=0; x<10; x++)
if(data[y*10+x] != 0) // 1なら"■"、0なら"□"を出力。
printf("■");
else
printf("□");
printf("\n");
}
printf("\nInput x y : ");
if(scanf("%d %d", &x, &y) != 2) {
scanf("%*s"); continue; // 値の入力に失敗した場合。
}
if(x<0 || y<0 || x>9 || y>9) continue; // 入力した値のチェック
data[y*10+x] = 1; // 指定の位置は1に変更。
}
}
0078デフォルトの名無しさん
2009/08/23(日) 18:08:27並び替えの基準が不明瞭です。問題の並び替えの例が間違っていませんか?
007978
2009/08/23(日) 19:20:010080デフォルトの名無しさん
2009/08/23(日) 21:47:160081デフォルトの名無しさん
2009/08/24(月) 02:53:150082デフォルトの名無しさん
2009/08/26(水) 19:08:20[2] 問題文 クワインマクラスキー法をC言語で実現
[3] 環境
[3.1] OS: Vista
[3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C言語
[4] 期限: 2009年9月4日
0083デフォルトの名無しさん
2009/08/27(木) 02:07:13[2] 問題文: 2が一番小さい素数,3が2番目に小さい・・・i番目に小さい素数を返す関数nthprime(i)を作り、
再帰呼び出しを利用した形で書け。この関数を用いて、1〜100番目の素数までを表示させよ
[3] 環境
[3.1] OS: Vista
[3.2] コンパイラ名とバージョン:任意
[3.3] 言語:C言語
[4] 期限: 2009年8月28日
0084デフォルトの名無しさん
2009/08/27(木) 02:38:32nthprime(2) = 3
nthprime(3) = 5
ってなる再帰関数をつくるのか?
なんか激しく効率悪い気がするが。
0085デフォルトの名無しさん
2009/08/27(木) 05:40:10#include <stdio.h>
int nthprime(int n)
{
int i, m;
if (n <= 0) return 0;
if (n == 1) return 2;
for (m = nthprime(n-1) + 1; /* 無限ループ */; ++m) {
for (i = 2; i*i <= m; ++i) {
if (m % i == 0) break;
}
if (i*i > m) return m;
}
}
int main(void)
{
int i;
for (i = 1; i <= 100; ++i) {
printf("%d\n", nthprime(i));
}
return 0;
}
0086デフォルトの名無しさん
2009/08/27(木) 08:51:07再帰呼び出しの中で表示していいなら呼び出しは一回で済むんだが。
0087デフォルトの名無しさん
2009/08/27(木) 09:10:15配列のサイズを事前に見積もれるのが前提条件になるものの
関数内にstaticな配列を用意してやって既知の素数をキャッシュするという手もある。
0088デフォルトの名無しさん
2009/08/27(木) 09:24:58再帰を使う意味がわかんねーよw
0089デフォルトの名無しさん
2009/08/27(木) 10:37:08[2] 問題文:構造体triangeleはメンバとして、各頂点の座標を表す構造体pointのp1,p2,p3を持つ。
また関数show_triangleはtriangleの内容を表示する。
乱数を利用してtriangleのインスタンスを1つ作成し、関数show_trianglwを利用して、その内容を表示せよ。
[3] 環境
[3.1] OS: Vista
[3.2] コンパイラ名とバージョン:任意
[3.3] 言語:C言語
[4] 期限: 2009年8月30日
0090デフォルトの名無しさん
2009/08/27(木) 12:27:31[2] 問題文 クワインマクラスキー法をC言語で実現
[3] 環境
[3.1] OS: Vista
[3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C言語
[4] 期限: 2009年9月4日
0091デフォルトの名無しさん
2009/08/27(木) 19:34:36俺以外のこのスレの住人は誰も答えられない。
0092デフォルトの名無しさん
2009/08/27(木) 19:46:09http://sourceforge.net/projects/qmcs/
0093デフォルトの名無しさん
2009/08/27(木) 20:18:22サーバー/クライアント型のTCPソケットプログラミングを行うとする。
サーバーをA、クライアントをBとしたときAはlisten()状態となることで
Bからの通信を受け付ける状態となる。ここで悪意のある第三者が
Cというクライアント型のアプリケーションを作成した。このCがAに
接続してしまうとAが悪意のある動きをしてしまう。そこでBというアプリ以外からの
通信を受け付けないためにはどうすればよいか。
0094デフォルトの名無しさん
2009/08/27(木) 20:23:39AとBが通信を行う際には決められた符号が必要なようにする
0095デフォルトの名無しさん
2009/08/27(木) 22:15:160096デフォルトの名無しさん
2009/08/27(木) 22:26:55入力した単語(英語・日本語)について,
会話を想定し何らかの応答を表示するプログラム(人工知能プログラム)を作成せよ.
想定会話シーンとして,その名称をプログラム実行時の冒頭に表示せよ.
応答する単語数の制限は特には設けない.
ヒント
�@ 文字列のキーボードからの入力
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char data[256];
fscanf(stdin, “%s”, data);
�A 文字列の一致の確認
if (strncmp(data, “hello”, strlen(“hello”)) == 0 ) {
printf(“%s”, “Nice too meet you.\n”;
}
�B 無限ループ
while(1) {
ヒント�@やヒント�Aの内容
}
#終了はControl-C
以上です。よろしくお願いします!
0097デフォルトの名無しさん
2009/08/27(木) 23:27:35テンプレに従わない馬鹿の課題はやりません
0098デフォルトの名無しさん
2009/08/28(金) 00:22:14ちゃんとやるには大変なんだけど、そういう学科なのか?
0099デフォルトの名無しさん
2009/08/28(金) 00:23:390100デフォルトの名無しさん
2009/08/28(金) 11:39:12[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9913.txt
上記URLの改変で、画像の90度回転・任意回転するプログラムを作る
任意回転の場合、画像を読み込む際に読み込み空白部分を埋め、斜めじゃなく正しく横に読み込ませる
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2009-9-1
0101デフォルトの名無しさん
2009/08/28(金) 13:08:34これはマルチバイトとANSIの話になってくるのでしょうか?テキストコードがなんであれ、
文字化けせずに自動的に綺麗に読み込んでくれるようにするにはどうすればいいのですか?
0102デフォルトの名無しさん
2009/08/28(金) 13:09:320103デフォルトの名無しさん
2009/08/28(金) 14:09:32> テキストコードがなんであれ、文字化けせずに自動的に綺麗に読み込んでくれる
世の中のエディタがこうなってくれればいいのにねぇ
0104かm
2009/08/28(金) 14:10:10[2] 問題文:
Excelからデータを抽出し表示させるプログラムを作れ。
・Excelは「会社名」「部署名」「管理No.」の項目とする。
・提出はexeファイルとソースを提出すること。
・プログラムは会社名を選択するとそれに付随した「部署名」「管理No.」が表示される。
※尚、会社名は同じ名前のものが複数ある場合全て表示させること。
[3] 環境
[3.1] OS:WinXP Pro
[3.2] VC
[3.3] 言語:C
[4] 期限:2009年09月08日
[5] その他の制限:制限なし
よろしくお願いします。
0105デフォルトの名無しさん
2009/08/28(金) 14:18:49CSVファイルじゃなくってxlsから抜き出せっていうのか?
C言語実習でSDKの仕様はどこまで認められてるの?
つーか、ファイルフォーマットの指定がどうなってるの?
0106デフォルトの名無しさん
2009/08/28(金) 15:29:37ねーんだよカス
0107デフォルトの名無しさん
2009/08/28(金) 15:42:39あんじゃん、何パチこいてんの?
0108デフォルトの名無しさん
2009/08/28(金) 15:50:33内部取扱的に基本的にはうにこーど使うのが一番いいんだけどネ
ASCIIだのなんだのを使ってるとAPI周りの関数を使う時にうにこーどに変換して処理するから面倒っぽ
010996
2009/08/28(金) 21:46:54訂正しましたのでどなたかお願いします!
[1] 授業単元: Cプログラミング
[2] 問題文(含コード&リンク): 入力した単語(英語・日本語)について,
会話を想定し何らかの応答を表示するプログラム(人工知能プログラム)を作成せよ.
想定会話シーンとして,その名称をプログラム実行時の冒頭に表示せよ.
応答する単語数の制限は特には設けない.
ヒント
�@ 文字列のキーボードからの入力
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char data[256];
fscanf(stdin, “%s”, data);
�A 文字列の一致の確認
if (strncmp(data, “hello”, strlen(“hello”)) == 0 ) {
printf(“%s”, “Nice too meet you.\n”;
}
�B 無限ループ
while(1) {
ヒント�@やヒント�Aの内容
}
#終了はControl-C
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Microsoft Visual C++
[3.3] 言語: C・C++どちらでも可
[4] 期限: 2009年9月2日0:00まで
[5] その他の制限: 特にありません
011098
2009/08/28(金) 22:29:59ならいいわ
0111デフォルトの名無しさん
2009/08/28(金) 22:30:500112デフォルトの名無しさん
2009/08/28(金) 22:33:170113デフォルトの名無しさん
2009/08/28(金) 22:34:01toupper して strstr の方がよくね
とかいうの?
全て小文字、行頭決めうちでそれ以外は pardon me? でおk
0114デフォルトの名無しさん
2009/08/28(金) 23:16:17[2] 問題文:unsigned long の値を10進数の文字列に変換する関数を作成しなさい。
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: 2009年8月30日
011596
2009/08/28(金) 23:58:10機械工学科です!
0116デフォルトの名無しさん
2009/08/29(土) 00:06:33[2] 問題文(含コード&リンク): NEXTブロックを生成、一時中断、コンティニュー
[3] 環境
[3.1] OS: Vista
[3.3] 言語: C++
[4] 期限: 明日
0117デフォルトの名無しさん
2009/08/29(土) 00:41:3010進数の文字列にしなさいの意味がわからない
10000000って値があったら10000000って文字列を作れってこと?
>>116
明日ってなめてんのかって>>114も明日かよっ
0118デフォルトの名無しさん
2009/08/29(土) 00:46:16完全なC++脳か?
0119デフォルトの名無しさん
2009/08/29(土) 00:46:280120デフォルトの名無しさん
2009/08/29(土) 00:50:27ビット演算で各桁切りだしてひっつければいいのかとおもった・・・
0121デフォルトの名無しさん
2009/08/29(土) 01:31:40ビット演算でやるんだ?
どうぞどうぞ
0122デフォルトの名無しさん
2009/08/29(土) 07:28:090123デフォルトの名無しさん
2009/08/29(土) 09:47:51で、ぷよぷよでもつくればいいの?
0124デフォルトの名無しさん
2009/08/29(土) 09:50:020125デフォルトの名無しさん
2009/08/29(土) 14:39:37授業単元を見落としましたね
0126デフォルトの名無しさん
2009/08/29(土) 19:21:44#include <stdio.h>
char* ul2dec(char* buf, unsigned long val)
{
unsigned long keta = 1000000000;
unsigned long temp;
int i;
int j = 0;
int flag = 0;
for (i = 0; i < 10; ++i) {
temp = val / keta;
val -= (temp * keta);
keta /= 10;
if (temp) { flag = 1; }
if (flag) {
buf[j] = temp + '0';
++j;
}
}
buf[i] = '\0';
return buf;
}
int main(void)
{
char buf[32];
printf("[%s]\n\n", ul2dec(buf, (unsigned long )-1));
printf("[%s]\n\n", ul2dec(buf, 1234567890));
printf("[%s]\n\n", ul2dec(buf, 9));
printf("[%s]\n\n", ul2dec(buf, 0));
return 0;
}
0127名無しさん@そうだ選挙に行こう
2009/08/30(日) 04:48:14[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9914.txt
問題の内容はテキスト内に書きました。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C言語
[4] 期限:9月5〜10日
[5] その他の制限:C言語のみ
期限ですが出来れば早い方が好ましいです。
すみませんが宜しくお願い致します。
0128名無しさん@そうだ選挙に行こう
2009/08/30(日) 04:53:21#include <stdio.h>
#include <math.h>
int main(void)
{
double pi, r1, r2, h, V;
pi = atan2(1.0, 0.0) * 2.0;
printf("外径(m) = ");
scanf("%lf", &r1);
printf("内径(m) = ");
scanf("%lf", &r2);
printf("高さ(m) = ");
scanf("%lf", &h);
V = pi * h * (r1 * r1 - r2 * r2);
printf("中空円筒の体積:%lf(m^3)\n", V);
return 0;
}
0129名無しさん@そうだ選挙に行こう
2009/08/30(日) 05:14:12は、ッ早い!?
本当にありがとうございます。
0130名無しさん@そうだ選挙に行こう
2009/08/30(日) 05:30:18先生によっては「これ何?」って聞く人がいそうだから
0131名無しさん@そうだ選挙に行こう
2009/08/30(日) 05:33:49細かい所まですみません、ありがとうございます
0132名無しさん@そうだ選挙に行こう
2009/08/30(日) 06:35:020133名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:02:26#ifndef M_PI
#define M_PI 3.14159265358979
#endif
こんなのもわからないの?
0134名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:07:50いやたまにね #define 使うと
「それ何ですかあ?」という出題者が多いのよ
0135名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:09:51VC++でM_PI使うなら普通こうだろw
0136名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:12:000137名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:15:56[2] 特に指定はされず 適当に作って来いとのこと
[3] 環境
[3.1] WindowsXP
[3.3] 言語: C++
[4] 期限 9月5日
[5]制限
よろしくお願いします
0138名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:16:39適当すぎるだろw
0139名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:19:52int main() { while(1);}
0140名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:20:190141名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:24:43でも本当にわからないんです;
例えばif文を使って とかのほうがいいですかね?
0142名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:27:14それなら言い訳立つだろ
0143名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:34:08調べてみましたが
なんとかなりそうなので
がんばります
ありがとうございました
0144名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:37:25状態遷移表が書ければ楽だが逆に言えば遷移表を思いつけない人には
簡単に見えて実は難しい問題になってしまう
0145名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:39:25難しい解き方を考えてるんだな
0146名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:41:200147デフォルトの名無しさん
2009/08/30(日) 22:45:09[1] 授業単元:物理 自己学習
[2] 問題文(含コード&リンク):http://www.astro.phys.s.chiba-u.ac.jp/netlab/summer-school/TEXTBOOK/text1.pdf
ここの11ページにあるような図を書きたいけど参考にするものがなくてよく分かりません
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:g++ 4.3.3
[3.3] 言語: C++
[4] 期限:無期限だけど早めに解決したいです
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
とくになし
お願いします
0148デフォルトの名無しさん
2009/08/30(日) 23:18:03上の図1.3(x-t)の方なのか、それとも、図1.4(x-n)の方なのか
x-tの方は、Xを叩くかSDLとかOpenGLでシコシコするか
x-nの方は、gnuplotでも使ったら楽と思う、図(グラフ)を描くだけならね
グラフを描くソフトウェア作りたいのならgnuplotのソースコードを眺めたらいいと思う
0149デフォルトの名無しさん
2009/08/30(日) 23:20:410150147
2009/08/30(日) 23:33:34x-uの方です
グラフを書きたいというか(1.16)式を使って各点のデータ出したいです
とりあえず作ったけどだめでした
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9916.cpp
0151デフォルトの名無しさん
2009/08/30(日) 23:46:4817 for(i=0;i<=N-1;i++){
18 for(j=1;j<=100-1;j++)
19 u[i+1][j] = u[i][j] - (1.0/2) * nu *(u[i][j+1] - u[i][j-1]);
20
21 }
たぶんこうか、論理式をさらっと見て、文法チェックしてみた
17行目と19行目を変更した
0152デフォルトの名無しさん
2009/08/31(月) 00:02:15ありがとうございます
端がちょっとおかしいけど中心部は例のようにできました
0153デフォルトの名無しさん
2009/08/31(月) 19:37:03#include <stdio.h>
#define BUFFER_SIZE 32
char *ultos_recur(char *buf, unsigned int num, char *bufend){
if (num >= 10) {
buf = ultos_recur(buf, num / 10, bufend);
}
if (buf != bufend) {
*buf++ = num % 10 + '0';
}
return buf;
}
void ultos(char *buf, unsigned int num, int buffer_size){
*ultos_recur(buf, num, buf + buffer_size - 1) = '\0';
}
int main()
{
char buf[BUFFER_SIZE];
unsigned int val;
val = (unsigned int)-1;
ultos(buf, val, BUFFER_SIZE);
printf("[%u] -> [%s]\n\n", val, buf);
ultos(buf, val, 4);
printf("[%u] -> [%s]\n\n", val, buf);
val = 1234567890;
ultos(buf, val, BUFFER_SIZE);
printf("[%u] -> [%s]\n\n", val, buf);
val = 9;
ultos(buf, val, BUFFER_SIZE);
printf("[%u] -> [%s]\n\n", val, buf);
return 0;
}
0154デフォルトの名無しさん
2009/08/31(月) 21:36:51例えば
typdef struct AAAAA{
int a;
int b
}AAAAA_t;
のような構造体がある場合、
get(int param)
{
?????
}
を下記のようなmain関数から呼び出すと、paramに上記構造体のアドレスが返却されるという
ものを実装してますが
どうしてもうまくいきません。
宜しくお願いします。
int main(void)
{
get( ??? );
}
0155デフォルトの名無しさん
2009/08/31(月) 22:04:56引数は何だ?
0156デフォルトの名無しさん
2009/08/31(月) 22:07:54マルチかいたずらか分からないけどこっちはスルー推奨
0157デフォルトの名無しさん
2009/08/31(月) 22:10:52C言語なら俺に聞け(入門篇) Part 52
http://pc12.2ch.net/test/read.cgi/tech/1250446591/593
0158デフォルトの名無しさん
2009/08/31(月) 22:14:560159デフォルトの名無しさん
2009/08/31(月) 22:16:55[1]C言語基礎
[2]再帰呼び出しを用いずに配列のクイックソートをする関数
void qsort_without_recursion(
void *target ,
size_t each_size,
size_t num_of_elements,
int (compare*)( const void*,const void*)
);
を実装し、テストプログラムを付けて提出
[3] Ubuntu linux/Gcc 4.0/C言語
[4] 9/1 正午まで
0160デフォルトの名無しさん
2009/09/01(火) 04:34:27void get(int *p)
{
*p = &AAAAA_t;
}
int main(void)
{
int addr;
get(&addr);
}
携帯からだと疲れるorz
0161デフォルトの名無しさん
2009/09/01(火) 04:42:09int main(void)
{
int (*mn)();
mn=&main;
mn();
}
0162デフォルトの名無しさん
2009/09/01(火) 04:49:15Ha, ha, ha...
0163159
2009/09/01(火) 20:56:22期待して損しました。
0164デフォルトの名無しさん
2009/09/01(火) 21:08:16はいどうも。
0165デフォルトの名無しさん
2009/09/01(火) 22:15:220166デフォルトの名無しさん
2009/09/01(火) 22:18:42教科書見ればそのまま出てるからなあ
0167デフォルトの名無しさん
2009/09/01(火) 22:31:41何かしらバグってる、そんなロジック
0168デフォルトの名無しさん
2009/09/02(水) 00:21:07クイックソート 再帰 使わない でズバリでてくるよね。
助詞取ってぐぐるだけなのになぁ。
0169デフォルトの名無しさん
2009/09/02(水) 01:30:350170デフォルトの名無しさん
2009/09/02(水) 02:08:37わざわざ待ってたわけでもないだろ
0171デフォルトの名無しさん
2009/09/02(水) 02:26:25http://oku.edu.mie-u.ac.jp/~okumura/algo/archive/
の algo.lzh の中の
qsort2.c
がそうだよ
なんでぐぐろうとしないの?
0172デフォルトの名無しさん
2009/09/02(水) 02:49:55ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9919.txt
とりあえず作ってみた
ファイルフォーマット等、何も指定されてないから都合のいいようにした
ソースが汚いのはご勘弁
0173デフォルトの名無しさん
2009/09/02(水) 03:08:06エラー出まくりなんですけど
エラー E2453 quine1.c 139: 'void' 型のサイズは未知あるいはゼロ (関数 add_vec )
エラー E2453 quine1.c 135: 'void' 型のサイズは未知あるいはゼロ (関数 add_vec )
エラー E2453 quine1.c 142: 'void' 型のサイズは未知あるいはゼロ (関数 add_vec )
エラー E2453 quine1.c 145: 'void' 型のサイズは未知あるいはゼロ (関数 add_vec )
エラー E2453 quine1.c 148: 'void' 型のサイズは未知あるいはゼロ (関数 add_vec )
エラー E2453 quine1.c 159: 'void' 型のサイズは未知あるいはゼロ (関数 resize_vec )
エラー E2453 quine1.c 173: 'void' 型のサイズは未知あるいはゼロ (関数 clear_vec )
エラー E2453 quine1.c 181: 'void' 型のサイズは未知あるいはゼロ (関数 free_vec )
エラー E2453 quine1.c 241: 'void' 型のサイズは未知あるいはゼロ (関数 add_terms_uniq )
エラー E2453 quine1.c 242: 'void' 型のサイズは未知あるいはゼロ (関数 add_terms_uniq )
エラー E2453 quine1.c 280: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 281: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 287: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 288: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 300: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 302: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 325: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 328: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
エラー E2453 quine1.c 332: 'void' 型のサイズは未知あるいはゼロ (関数 get_main_term )
以下省略
0174デフォルトの名無しさん
2009/09/02(水) 03:33:14こういいのこして
いとじゅんさんは逝った
0175デフォルトの名無しさん
2009/09/02(水) 03:49:38>>173
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9920.txt
これで大丈夫なはず
0176デフォルトの名無しさん
2009/09/02(水) 16:52:36[2]
(1) 「ようこそC言語へ」という文字列を表示し改行するコード
printf関数を使う。
(2)「 ようこそC言語へ」と表示し改行してから「C言語をはじめましょう」
と表示し改行するコード。ただしprintfは一回しか使ってはならない。
[3] Windows Vista/Visual C++ 2008/C言語
[4] 9/10まで
0177デフォルトの名無しさん
2009/09/02(水) 17:06:341番
#include <stdio.h>
int main(void){
printf("ようこそC言語へ\n");
return 0;
}
2番
#include <stdio.h>
int main(void){
printf("ようこそC言語へ\nC言語をはじめましょう\n");
return 0;
}
0179デフォルトの名無しさん
2009/09/02(水) 19:07:55基礎の基礎だからね
0180デフォルトの名無しさん
2009/09/03(木) 01:40:04[1]講座名 やさしいC言語
[2]
(1)引数pTという名前のint型のポインタ変数を持つdouble値を返す
avgという関数を定義し,pTに長さ5の整数配列が渡されるものとして
その平均値を返すようにコードして下さい。局所変数はdouble型の
もの1個でsumという名前にすること。整数変数はiという名前の
もお1個を使用することが出来ます。pTが指す変数は[]で参照しない
で下さい。関数内で使用出来る数字は0と5のみとします。
+=演算子を必ず使用してください。
(2) 必要なヘッダファイルをインクルードした後、avg関数を先行定義し
main関数を定義して下さい。長さ5の整数配列testと整数i,double変数
ansを定義出来ます。これ以外の変数は定義しないで下さい。
先ず1回のprintf文を使って
「5人のテストの点数を入力して下さい」と表示し改行してください。
scanf文,for文を使ってtest配列変数に読み込んでください。
ans変数にavg関数の結果を入れて、1回のprintf文で
「5人の平均点はxx.xxxxxxx...です。」という形式で表示し改行して下さい。
★if,while,do while文では{}を省略しないで下さい。
★関数の宣言、定義の箇所は/*XXX関数の宣言*/という具合にコメントを入れて下さい。
[3] Windows Vista/Visual C++ 2008/C言語
[4]9/10迄(インフル騒動の行方によってはのびる可能性もありw)
0181デフォルトの名無しさん
2009/09/03(木) 01:49:54(1)
double avg(int *pT)
{
double sum;
int i;
sum = 0;
for(i = 0; i < 5; i++){
sum += *(pT + i);
}
return sum / 5;
}
0182デフォルトの名無しさん
2009/09/03(木) 01:51:13(2)
#include <stdio.h>
/* avg 関数の定義 */
double avg(int *pT)
{
double sum;
int i;
sum = 0;
for(i = 0; i < 5; i++){
sum += *(pT + i);
}
return sum / 5;
}
/* main関数の定義 */
int main()
{
int test[5], i;
double ans;
printf("5人のテストの点数を入力してください\n");
for(i = 0; i < 5; i++){
scanf("%d", &test[i]);
}
ans = avg(test);
printf("5人の平均点は%lfです。\n", ans);
return 0;
}
0183180
2009/09/03(木) 02:17:22ありがとうございます。
それにしても激速な回答驚いてます。
問題が難しくて困ってたとこでした。
問題文自体意味がちんぷんかんぷんでした。
こういうの早くやるのには、良い参考書とか
サイトとかあるんでしょうか?
0184デフォルトの名無しさん
2009/09/03(木) 02:34:58作って遊ぶっていうのが一番近道だと思う。
ジャンケン作って戦略ジャンケンに進化させるとか。
とにかく書く。んで、わからんことはネットを漁る。
なるべく環境依存を払いつつ、デバッガで値を確認しながら、細かくデバッグって言うのも身につくと思う。
俺はそれで覚えた。
0185181,182
2009/09/03(木) 02:53:08教科書を読んで勉強する方が得意なら、その辺の参考書なりWebサイトなりを見て勉強すればいい。
問題を解いて勉強する方が得意なら、参考書なりWebサイトなりを参考にしつつ、
その辺にある問題を解くとか、>>184の言うように何か作ってみるといい。
お題を与えておく。
・数当てゲーム(とりあえず、ランダムな数字をヒントなしに当てさせる→次はヒント(答えが正解より大きいか小さいか)を与えられるようにしてみる)
・high and low(ググれば出てくると思う)
とか、ね。
0186デフォルトの名無しさん
2009/09/03(木) 03:20:35参考書じゃ高橋麻奈さんの「やさしいC」がぴったりだと思う
0188デフォルトの名無しさん
2009/09/03(木) 07:21:06[2] 問題文(含コード&リンク):
入力した任意の小数5つを降順にソートし出力する
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:初心者用講座 配列を用いる
助けてください
0189デフォルトの名無しさん
2009/09/03(木) 07:33:24「C言語による アルゴリズム事典」 奥村春彦著 技術評論社
も座右の書としておくといいですよ。
0190189
2009/09/03(木) 07:34:390191デフォルトの名無しさん
2009/09/03(木) 08:07:44>>188
#include <stdio.h>
int main(void)
{
int i,j;
double a[5],temp;
for(i=0; i<5; i++){
printf("%d:",i+1);
scanf("%lf",&a[i]);
}
printf("\n\n");
for(i=0; i<4; i++)
for(j=i+1; j<5; j++)
if(a[i] < a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
for(i=0; i<5; i++)
printf("%f\n",a[i]);
return 0;
}
0192デフォルトの名無しさん
2009/09/03(木) 08:13:03MSDNライブラリ、C、C++の仕様書
0193188
2009/09/03(木) 09:15:13ありがとうございます
0194デフォルトの名無しさん
2009/09/03(木) 11:14:400195デフォルトの名無しさん
2009/09/03(木) 11:26:35[2] 問題文(含コード&リンク):
第7章 総合理解度チェック3
継承と継承の際のassignment operator (=)について質問があります。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9922.cpp
上記のファイルをコンパイルすると以下のように出力します
output>>
Coord::operator= // why?
Show quadrant: 1
(o3=o1) X: 10, Y: 10
why?の部分で、なぜQuadオブジェクトを作成しているのに
そのベースであるCoordの方の=オペレータが呼ばれるのでしょうか。
また、Quad の=オペレータがQuad operator=(Coord ob)
というふうに、Coordをパラメータとして受け取ってますが
なぜQuadとして受け取らず、Coordとして受け取るのでしょうか。
詳しい解説お願いします・・
[3] 環境
[3.1] OS: Mac
[3.2] コンパイラ名とバージョン: C++
[3.3] 言語: C++
[4] 期限: 本日中
[5] その他の制限:特にないです
0196デフォルトの名無しさん
2009/09/03(木) 11:39:150197デフォルトの名無しさん
2009/09/03(木) 12:23:30以下のように出力しねーよ
operator+とかどこに消えた?
0198デフォルトの名無しさん
2009/09/03(木) 12:36:04デフォルト代入演算子でぐぐれ
0199デフォルトの名無しさん
2009/09/03(木) 12:51:33[2] 問題文(含コード&リンク):
正負混合で入力した任意の2進数5つを絶対値の昇順にソートし出力する
さらに元の数の加算を求めよ
(ただ加算するだけでなくソートしたことを踏まえて計算すること)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C
[4] 期限: 本日中
[5] その他の制限:初心者用講座
この問題の狙いは情報落ちを防ぐための方法を考えろとのことです
すみませんまた詰まりました助けてください
0200デフォルトの名無しさん
2009/09/03(木) 13:30:06#include <stdio.h>
#include <math.h>
int main(){
char buf[1024]={0};
char Num[5];
char T=0;
int i=0,j=0;;
printf("Input Binary Digit! signed flag is 8th bit!!\n");
for(j=0;j<5;j++){
scanf("%s",buf);
T=0;
for(i=7;i>=0;i--) T|=((buf[i]=='0' ? 0:1)<<(7-i));
printf("%d\n",T);
Num[j]=T;
}
printf("\n");
for(i=0;i<5;i++){//バブルソート
for(j=i;j<5;j++){
if(abs(Num[i])>abs(Num[j])){
T= Num[i];
Num[i]=Num[j];
Num[j]=T;
} } }
j=0;
for(i=0;i<5;i++){
printf("%d\n",Num[i]);
j+= Num[i];
}
printf("Total => %d",j);
return 0;
}
0201デフォルトの名無しさん
2009/09/03(木) 13:32:09整形してみてくれ。
0202デフォルトの名無しさん
2009/09/03(木) 14:06:36ありがとうございます
0203デフォルトの名無しさん
2009/09/03(木) 14:37:11それバブルソートじゃないからw
0204デフォルトの名無しさん
2009/09/03(木) 14:46:220205デフォルトの名無しさん
2009/09/03(木) 14:49:08バブルソートならNum[j] と Num[j+1] を比較するよ
0206デフォルトの名無しさん
2009/09/03(木) 14:57:290207デフォルトの名無しさん
2009/09/03(木) 14:59:54反例お願いします。
0208デフォルトの名無しさん
2009/09/03(木) 15:00:59選択ソートじゃない?
0209デフォルトの名無しさん
2009/09/03(木) 15:01:23セレクションソートに似てるって言えるかもしれんが、
交換回数が無駄に多いw
0210デフォルトの名無しさん
2009/09/03(木) 15:04:140211205
2009/09/03(木) 15:07:22ソートは確実におkでした
0212デフォルトの名無しさん
2009/09/04(金) 00:36:420213デフォルトの名無しさん
2009/09/04(金) 00:37:28ごめ
0214デフォルトの名無しさん
2009/09/04(金) 02:19:07[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9923.txt
問題の内容はテキスト内に書きました
3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C言語
[4] 期限:9月5〜10日
[5] その他の制限:C言語のみ
早く出来れば好ましいです。
すみませんが宜しくお願い致します。
0215デフォルトの名無しさん
2009/09/04(金) 02:58:460216デフォルトの名無しさん
2009/09/04(金) 10:06:48�A
#include<stdio.h>
main(void)
{
double x,y;
for(x=-3.0; x<3.1; x+=0.1){
y= (3 * x + 2) * x - 6;
printf("x=%4.1lf : y=%lf\n",x,y);
}
return 0;
}
0217デフォルトの名無しさん
2009/09/04(金) 10:14:44�B
#include<stdio.h>
main(void)
{
double x,y;
double minx,miny=100;
double maxx,maxy=-100;
double sum=0;
int count=0;
for(x=-3.0; x<3.1; x+=0.1){
y= (3 * x + 2) * x - 6;
if(miny > y){miny=y;minx=x;}
if(maxy < y){maxy=y;maxx=x;}
sum+=y;count++;
}
printf("yの最小値は x=%4.1lf のとき y=%lf をとる。\n",minx,miny);
printf("yの最大値は x=%4.1lf のとき y=%lf をとる。\n",maxx,maxy);
printf("xが-3.0〜3.0の値をとるとき、yの平均値は %lf である。",sum/count);
return 0;
}
0218デフォルトの名無しさん
2009/09/05(土) 07:51:15任意の2進数というと、16bit、32bitにかぎらないように
思うのですが、55bitなどというのもありですか?
0219デフォルトの名無しさん
2009/09/05(土) 07:58:300220デフォルトの名無しさん
2009/09/05(土) 08:00:210221214
2009/09/05(土) 09:25:370222デフォルトの名無しさん
2009/09/05(土) 10:23:01たとえば10進数の-15なら -1111 なんじゃね?
「負数は補数で〜」なんて指定はないから。
0223デフォルトの名無しさん
2009/09/05(土) 11:32:030224デフォルトの名無しさん
2009/09/05(土) 11:49:02ところで、-を付けたり、ケタ数指定しなくても、正なら頭に0付けるとかでdou?
0225デフォルトの名無しさん
2009/09/05(土) 11:52:44正負混同って明記してあるってことは、二進数の負値の扱いを重視してそうだし
0226デフォルトの名無しさん
2009/09/05(土) 13:25:55回答した者だが、特に制限が無い以上、PCの制限に依存するのは仕方ないと思う。
入力に32個も2進入力するのは面倒なので8ビットにしたんだが。
55bitとかそういう物を扱うなら、器はPC側の制限で64bitになるし、longlongはまだ枯れてないしなぁ。
0227デフォルトの名無しさん
2009/09/05(土) 13:33:40文字列で受け取って・・・問題見てないけど
0228デフォルトの名無しさん
2009/09/06(日) 20:04:39__/´ ' ノ
ン- 、/_
/゙ ``ヽミ\
/=、 ィ==、 ,}:::ヽ
f゙-o-l‐l-o- ト、 }`:::::::i
弋__ノ _ヽ_ノ `!::::::リ
{ `__^ー'、 ..:: レ゙^lヽ
l '´⌒`ヽ` : : ::{_ノ <やるき!げんき!いわ キッ!キッ!キッ!
'、゙、 __ ソ .: : : イ`
0229228
2009/09/06(日) 20:05:220230デフォルトの名無しさん
2009/09/07(月) 14:27:53どなたか宜しくお願いいたします。
0231デフォルトの名無しさん
2009/09/07(月) 14:39:47テンプレ書いてくれ。
0232デフォルトの名無しさん
2009/09/07(月) 15:51:37改行が多すぎて書き込めない
0233デフォルトの名無しさん
2009/09/07(月) 15:53:04にテンプレ書き込みました。
0234デフォルトの名無しさん
2009/09/07(月) 17:26:12http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9927.txt
0235デフォルトの名無しさん
2009/09/07(月) 18:41:01ありがとうございました。
0236デフォルトの名無しさん
2009/09/08(火) 00:35:22[2] 問題文(含コード&リンク):
任意の数xの例で説明すると(x-1)!+1 がもしxで割り切れるならばxは素数であると言え、
割り切れないならばxは、素数ではないと言える。このような素数を判別することができる
定理をウィルソンの定理と呼ぶ。
入力した値の階乗を求めるプログラム(4桁まで対応)を改良して、ウィルソン
の定理による素数判定を実装せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9928.txt
素数ならば素数です。素数でないならば素数ではありません。と表示しなさい。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C言語
[4] 期限:9月11日
[5] その他の制限:基本的に制限はないが、極力ライブラリに頼らずに実装すること。
プログラムは分かりやすく書くようにつとめること。
よろしくお願いします。
0237デフォルトの名無しさん
2009/09/08(火) 00:42:19[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9929.cpp
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9930.cpp
上のやつで行列式求めようとするとSegmentation faultがでてしまいます。
gdbで調べたら225行目のbufのところがおかしいみたいですがどうおかしいかわかりません
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C++
[4] 期限:無期限
お願いします
0238デフォルトの名無しさん
2009/09/08(火) 01:19:46添字を1から始めていることは触れないが
ポインタの意味わかってないだろ
220行付近
//double **a = p_top;
matrix a = *this;
にでもするか
p_topのコピーを作って使うようにすればいいよ
0239デフォルトの名無しさん
2009/09/08(火) 01:22:20ありがとうございます
まだポインタについて未熟なんでもっと勉強しときます
添え字は1から始めれるように上のほうでちょこっと変えました
0240デフォルトの名無しさん
2009/09/08(火) 01:35:380241236
2009/09/08(火) 01:47:21サンプルのプログラムは1から9999までの範囲の任意の数字の階乗
を返します。14以上の階乗でもオーバーフローしないために多倍長
演算になっています。
よろしくお願いします。
0242デフォルトの名無しさん
2009/09/08(火) 01:50:16へぇ、こんな定理があったんだねぇ
けど、4桁の階乗ってだいぶ大きそうだね
0243デフォルトの名無しさん
2009/09/08(火) 01:58:46Excelでfact関数使って4桁の数字の階乗出してみたけど大きすぎるぞw
0244デフォルトの名無しさん
2009/09/08(火) 02:02:050245デフォルトの名無しさん
2009/09/08(火) 02:04:18すっげー計算遅いよな
0246デフォルトの名無しさん
2009/09/08(火) 02:33:560247デフォルトの名無しさん
2009/09/08(火) 02:38:49多倍長の割り算がめんどくね?
0248デフォルトの名無しさん
2009/09/08(火) 02:57:13てか、多倍長の割り算とかやったことね・・・。
0249デフォルトの名無しさん
2009/09/08(火) 02:59:553
5
7
11
101
164
685
919
こんだけ表示して終わりにするとかw
0250デフォルトの名無しさん
2009/09/08(火) 03:07:430251デフォルトの名無しさん
2009/09/08(火) 03:13:54#include<stdio.h>
void mydiv(int x, int y, int *div, int *mod){
int i, result=0;
for(i=1;x>y;i*=2,y*=2);
for(;i>0;i/=2,y/=2){
if(x>=y){
result+=i;
x-=y;
}
}
if(div) *div=result;
if(mod) *mod=x;
}
int main(void){
int x=101, y=13, div, mod;
mydiv(x, y, &div, &mod);
printf("%d\n", div);
printf("%d\n", mod);
return 0;
}
0252デフォルトの名無しさん
2009/09/08(火) 03:15:07減算も必要だったw
0253デフォルトの名無しさん
2009/09/08(火) 03:15:560254デフォルトの名無しさん
2009/09/08(火) 03:22:530255>>242=>>254
2009/09/08(火) 04:17:40ヤターデキタヨー
あまり検証はしてないけど、たぶんこれで。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9932.txt
4桁前提の処理なのであしからず。
0256デフォルトの名無しさん
2009/09/08(火) 04:27:01なぜ素数に限りそういうことが言えるのかわかってないと
良いアルゴリズムは見いだしにくい鴨
(それでも篩法と較べてもそんなに効率は良い方法じゃない)
0257デフォルトの名無しさん
2009/09/08(火) 04:38:26掛け算一回毎に余りをとるほうが圧倒的に高速かつ多倍長つかわなくて済むんだよねw
0258デフォルトの名無しさん
2009/09/08(火) 04:40:390259>>242=>>254
2009/09/08(火) 04:45:44もとの努力がだいぶなくなってしまって切ないな。
#include <stdio.h>
main(){
int n,i;
int mod;
/* 値を入力 */
printf("素数判定を行いたい数値を入力して下さい\n");
scanf("%d",&n);
if(n<0){
return -1;
}
/* (n-1)! % n を算出 */
mod = 1;
for(i=2; i<=n-1; i++){
mod = (mod * i) % n;
}
/* (n-1)! + 1 が nで割り切れる == (n-1)! % n + 1 が n */
if (mod+1==n){
printf("素数です。\n");
}else{
printf("素数ではありません。\n");
}
return 0;
}
0260デフォルトの名無しさん
2009/09/08(火) 04:54:03俺が課題出されたときなら間違いなくその方向で出してたな
あげくに、
//これ普通に余りが0か判定するコードのほうが速くね?
//結局乗算してる分遅いやん?
とかコメントに書いておくw
0261デフォルトの名無しさん
2009/09/08(火) 04:57:27>>260
>>258
0262>>242=>>254
2009/09/08(火) 04:59:59ごめんなさい、ちょっと意図を汲み取れませんでしたorz
寝ますね><
0263257=260
2009/09/08(火) 05:11:42課題を出す側じゃなくて受ける側として書いてた。
つまり単に問題文を出した教授に嫌味を加えたコメント書いてるだけw
>>261
正直>>259とほとんど同じなんだよね。しかもC++で書いてるしw
まぁ一応出しとくか
#include<iostream>
using namespace std;
int isPrime(unsigned long x){
unsigned long a = 1;
for(unsigned long i=1;i<x;++i)
a = (unsigned long long)a*i%x;
return a==x-1;
}
int main(){
unsigned long v;
cin>>v;
if (isPrime(v)) cout << "素数です。\n";
else cout << "素数ではありません。\n";
}
0264デフォルトの名無しさん
2009/09/08(火) 06:09:06これ具体的に何を入れたら素数ですと表示されるのかな
0265デフォルトの名無しさん
2009/09/08(火) 06:13:050266デフォルトの名無しさん
2009/09/08(火) 06:19:240267236
2009/09/08(火) 07:20:21ありがとうございました。助かりました。いくつか実行確認してみましたが
無事に動作しています。
>>ALL
感謝です。
>>264
以下の様な素数表の数字を使えば大丈夫です。
http://www.nikkei-science.com/page/magazine/puzzle/puzzle0309/prime.txt
>>266
効率はかなり悪いと習いました。
0268デフォルトの名無しさん
2009/09/08(火) 07:27:24>>259なら正しく表示される
0269デフォルトの名無しさん
2009/09/08(火) 07:45:03適当に素数を入力してみたら、素数ですって表示されるんだけど。
0270デフォルトの名無しさん
2009/09/08(火) 07:47:240271デフォルトの名無しさん
2009/09/08(火) 07:51:150272デフォルトの名無しさん
2009/09/08(火) 07:55:391009を入れると素数ではありませんと表示される
0273デフォルトの名無しさん
2009/09/08(火) 07:58:040274デフォルトの名無しさん
2009/09/08(火) 07:59:05素数ですって表示されたよ<1009
0275デフォルトの名無しさん
2009/09/08(火) 08:01:05素数ではありません
と表示される
コンパイラによって違うのか?
gcc4.4.1使ってるんだが
0276デフォルトの名無しさん
2009/09/08(火) 08:09:0823 /* [変更] 1からn-1まで順にかけ算 */
24 for(i=1; i<=n-1; i++){
ここだろ、元のソースと変わっているところ
ちなみに2595桁が1010の時の桁数だったので直観した
0277デフォルトの名無しさん
2009/09/08(火) 08:09:38for (i = 1; i <= n - 1; i++) {
が
for (i = 1; i <= n; i++) {
になってたわ
0278デフォルトの名無しさん
2009/09/08(火) 08:27:260279デフォルトの名無しさん
2009/09/08(火) 09:06:450280デフォルトの名無しさん
2009/09/08(火) 09:09:12意識しなくとも長桁計算が出来るんで整数絡みの問題をちょっと
やってみるのはCよりかあってるかも
0281デフォルトの名無しさん
2009/09/08(火) 11:18:42strtokは文字列を書き換えてしまうので×
forループでピリオドが出るまで空回しするのがベストでしょうか?
0282デフォルトの名無しさん
2009/09/08(火) 11:33:04コピーしてstrtok
0283デフォルトの名無しさん
2009/09/08(火) 11:49:290284デフォルトの名無しさん
2009/09/08(火) 12:20:500285デフォルトの名無しさん
2009/09/08(火) 12:24:290286デフォルトの名無しさん
2009/09/08(火) 13:09:51え、整形中に-1が消えた?
一緒に仕事したくないでござる!
0287デフォルトの名無しさん
2009/09/08(火) 13:18:07それよりboost::bigintはまだなのか
0288デフォルトの名無しさん
2009/09/08(火) 13:26:51Cに移植中
なぜかC版の本には多倍長演算は載っていない
GNUで出て来たからだろうな
0289デフォルトの名無しさん
2009/09/08(火) 13:29:58俺は、ビット配列作ってそこからBigInt作ろうとしたが、
BigIntの足し算が作れなかった。足し算って意外と論理的に作るの難しくない?
0290デフォルトの名無しさん
2009/09/08(火) 13:32:15すまん、かなりバリバリにアセンブラで書いたから加算は楽勝だったw
0291デフォルトの名無しさん
2009/09/08(火) 13:43:35論理的にってFullAdder並べるだけじゃダメなの?
性能はお察しになるかも
0292デフォルトの名無しさん
2009/09/08(火) 14:27:30すごいなぁ。
>>291
いやー、Wikipedia見ながら書いてたんだが、なんかうまくロジックが組めなかった。
俺、あほス。orz
0293デフォルトの名無しさん
2009/09/08(火) 16:13:00strrchr( str, '.' );
0294デフォルトの名無しさん
2009/09/08(火) 17:07:18そっちで書き直します。
0295デフォルトの名無しさん
2009/09/08(火) 17:50:35[2] 問題文(含コード&リンク):画像を読み込んで1次・2次微分を行い、エッジ抽出処理を
行うプログラムを作りなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] (gcc 3.4
[3.3] 言語: (C/C++/どちらでも可)
[4] 期限:特にありません。
[5] その他の制限: 私自身ハード(回路)を学んでいまして、いざソフトを学ぶとなると、
プログラミングはお手上げでした。大変ご足労をおかけすると思いますが、
はじめからのプログラムを教えていただけますか?#includeから。
よろしくお願いします。
0296デフォルトの名無しさん
2009/09/08(火) 17:57:08入出力画像のファイル形式は?
使えるライブラリの指定はあるの?
0297デフォルトの名無しさん
2009/09/08(火) 18:02:31OpenCV
使ったことないけど。
0298デフォルトの名無しさん
2009/09/08(火) 21:29:22画像処理でググればいくらでもでてきそうな気がするけどな・・・。
とりあえずは、bmpファイルから始めて見るといいよ。
0299デフォルトの名無しさん
2009/09/08(火) 21:33:14#includeからワロタ
0300デフォルトの名無しさん
2009/09/08(火) 21:46:27移植作業は順調に進んでいます
しかし、元の多倍長数に結果を重ね書きできるものと出来ないものが
混在しているため、演算子の多重定義が出来にくい状況にあります
ここは速度を多少犠牲にしても統一化を図った方がいいかもしれません
取り敢えず9999!の演算速度はかなり速いです
後は割り算ルーチンを移植してデモプログラムとしてネイピア数(e)とπを
10000桁ほど求めるプログラムを入れたらどこかにうpしたいと思います
0301デフォルトの名無しさん
2009/09/08(火) 23:07:370302デフォルトの名無しさん
2009/09/08(火) 23:26:58e や π程度なら、(多倍長)÷(単倍長) を実装するだけで十分かと。
(多倍長)÷(多倍長)は確かに難しいですね。
0303デフォルトの名無しさん
2009/09/08(火) 23:30:340304デフォルトの名無しさん
2009/09/08(火) 23:35:29そういう事になります
ですから全部重ね書きできるように改造します
>>302
まあそうですね
何か面白いデモプログラムがあればいいなと
多倍長演算の宿題はよく出るから一つリファレンス
となるようなたたき台を作っておけば後々楽かと
0305デフォルトの名無しさん
2009/09/08(火) 23:36:50>>255の解法は割とぐっときた。
元ソースのスタイルを崩してないところもぐっときた。
0306デフォルトの名無しさん
2009/09/08(火) 23:38:01それならCで組んだ方が利用頻度高そうな気が。。。
0307デフォルトの名無しさん
2009/09/08(火) 23:43:59そうですね
演算子の多重定義とメンバ関数と関数の多重定義を取り除けば
そのままCで使えるように書いています
0308デフォルトの名無しさん
2009/09/08(火) 23:50:59boost::operatorsを使うと += から + を自動的に作ってくれて楽だよ。- * /も同様に作ってくれるよ。
0309デフォルトの名無しさん
2009/09/08(火) 23:59:02ふーんありがとう
使ってみるわ
やっぱりa.LongMul(b)じゃ読みにくいですからね
a *= b; の方が遙かに読みやすい
0310デフォルトの名無しさん
2009/09/09(水) 00:18:52この時期は宿題が少ないからね
0311デフォルトの名無しさん
2009/09/09(水) 17:02:123の超階乗を出力するプログラムを作れ。
宿題じゃないから別に解かなくていいw
0312デフォルトの名無しさん
2009/09/09(水) 17:05:473$ならまだしも
0313デフォルトの名無しさん
2009/09/09(水) 17:13:590314デフォルトの名無しさん
2009/09/09(水) 17:26:463の超階乗 = 3$じゃないの?
0315デフォルトの名無しさん
2009/09/09(水) 17:31:552$の間違いだw
0316デフォルトの名無しさん
2009/09/09(水) 17:33:110317デフォルトの名無しさん
2009/09/09(水) 17:36:25プログラム作ってみろカス
あほ程時間をかけたら作れるだろうけどな
0318デフォルトの名無しさん
2009/09/09(水) 17:48:00桁や実行時間が無理なだけで。
0319デフォルトの名無しさん
2009/09/09(水) 17:50:09#include <iostream>
#include <boost/bigint.hpp>
using boost::bigint;
static const int initial_value = 3;
bigint factorial ( bigint x ) {
assert( x > 0 );
return ( x == 1 ) ? 1 : x*factorial(x-1);
}
bigint superfactorial_cp ( bigint x ) { // Clifford Pickover's definition
bigint result;
bigint fx = factorial(x);
bigint j = 1;
bigint c = fx;
for ( bigint i = 1; i <= fx; ++i ) {
for ( ; j <= c; ++j ) {
result *= fx;
}
c = result;
}
}
int main () {
std::cout << superfactorial_cp(initial_value) << std::endl;
}
0320デフォルトの名無しさん
2009/09/09(水) 17:51:262$なんて一瞬でできちゃうだろw
0321デフォルトの名無しさん
2009/09/09(水) 17:56:35return result;
を書き忘れた
0322デフォルトの名無しさん
2009/09/09(水) 17:58:28解いてようw
0323デフォルトの名無しさん
2009/09/10(木) 02:35:56[2] 問題文(含コード&リンク):CLIP構造体を操作して任意の秒数分切り出す関数の制作
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "aa-io.h
int main(void)
{
CLIP clip1;
CLIP *clip2;
int i;
MONO_PCM mono;
MONO_PCM *monop;
monop = &mono;
mono_wave_read(monop,"c:/sound/Startup.wav");
clip2 = &clip1;
mtoc(monop,clip2);
for(i=0; i<clip1.length; i++){
printf("%f\n",clip1.data[i]);
}
//monop= &mono;
//mono_wave_read(monop,"c:/sound/Startup.wav");
//mono_wave_write(monop,"c:/sound/sample.asc");
return 0;
}
[3] 環境
[3.1] OS: Window
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0)
[3.3] 言語: C
[4] 期限: ([2009年9月10日12:00まで]
[5] その他の制限: 特になし
詰まりました。よろしくお願いします
0324デフォルトの名無しさん
2009/09/10(木) 02:42:22aa-io.h を晒せ
0325デフォルトの名無しさん
2009/09/10(木) 02:59:58VisualStudio2008,C++.NETでアプリケーションの作成をやってるんだが
リストボックスにString型を入れたいんだがどうやればいい?
string a[10][10] = { …(初期化)… };
this->listBox1->Items->Add(a[0][0]);
とやると「1 番目の引数を 'std::string' から 'System::Object ^' に変換できません。」となる
配列aの初期化はできてるし、Add("あああ")にした場合は普通に動くんだけど…
0326デフォルトの名無しさん
2009/09/10(木) 03:13:47たとえば、 f( char *) にstring 型は渡せないのと同じ事。
0327デフォルトの名無しさん
2009/09/10(木) 03:14:54a[0][0].c_str()はchar * 型だ。
0328デフォルトの名無しさん
2009/09/10(木) 03:24:51http://www.google.com/search?hl=ja&num=60&newwindow=1&q=std%3A%3Astring++System%3A%3AString++%E5%A4%89%E6%8F%9B&lr=
0329デフォルトの名無しさん
2009/09/10(木) 03:28:57System::String^ s1 = gcnew System::String( s0.c_str() );
this->listBox1->Items->Add(s1);
で無理か? コンパイルしていない。
0330デフォルトの名無しさん
2009/09/10(木) 03:30:00C++/CLIで作らないとダメな理由はあるのかなぁ
0331デフォルトの名無しさん
2009/09/10(木) 03:32:48コンパイルしてないけど、流れから行けば
this->listBox1->Items->Add(a[0][0].c_str());
がいいのではないかと
0332デフォルトの名無しさん
2009/09/10(木) 14:36:03>>331
それだとエラー文のStringがCharになるだけで無理だった
>>329
>>330
Std::String→System::Stringでいけた!
ありがとう
Std::StringとSystem::Stringの使い分けがいまいちわからないわ…
0333デフォルトの名無しさん
2009/09/10(木) 15:35:09std::stringはC++の仕様にあるSTLの移植で、
System::Stringは.Netのネーティブ文字コンテナ。だと思う。
.Netを構築する際にはSystem::Stringに依存した構造になってるだろうから、
STLのアルゴリズムを使わないなら、後付であるSTLコンテナは使わないほうが良いかもしれない。
0334デフォルトの名無しさん
2009/09/10(木) 17:12:25std::stringも長さの情報を持っているのだから、System::String^ s1 = gcnew System::String( s0.c_str(), 0, s0.length() );としたい。
そして、2008ならそれはmsclr::interop::marshal_as<System::String^>(s0)で一発。
0335デフォルトの名無しさん
2009/09/11(金) 18:54:23[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9935.txt
[3] 環境
[3.1] OS:Windows/Vista
[3.2] コンパイラ名とバージョン:ビジュアルベーシック
[3.3] 言語: C++
[4] 期限: 2009年9月15日
[5] その他の制限:問題文のほうにも書いてありますが、難しい記述は使わないでください。また関数なども使わないそうです。
一応自分が途中までやっていたソースコードを乗せたので、似た感じに作っていただければ。よろしくお願いします。
0336デフォルトの名無しさん
2009/09/11(金) 18:59:52> [3.3] 言語: C++
,. -‐'''''""¨¨¨ヽ
(.___,,,... -ァァフ|
|i i| }! }} //|
|l、{ j} /,,ィ//|
i|:!ヾ、_ノ/ u {:}//ヘ
|リ u' } ,ノ _,!V,ハ |
/´fト、_{ル{,ィ'eラ , タ人
/' ヾ|宀| {´,)⌒`/ |<ヽトiゝ
,゙ / )ヽ iLレ u' | | ヾlトハ〉
|/_/ ハ !ニ⊇ '/:} V:::::ヽ
// 二二二7'T'' /u' __ /:::::::/`ヽ
/'´r -―一ァ‐゙T´ '"´ /::::/-‐ \
/ // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ
ノ ' / ノ:::::`ー-、___/:::::// ヽ }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ
0337デフォルトの名無しさん
2009/09/11(金) 19:06:03int main(void)
{
char str[100];
int i, j, c;
printf("文字列を100文字以内で入力してください\n");
scanf("%s", str);
printf("どの文字を削除いたしますか?");
scanf(" %c", &c);
for(i=j=0; str[i]; i++) if(str[i]!=c) str[j++] = str[i];
str[j] = '\0';
printf("%s\n", str);
printf("削除した文字は%d文字です\n", i - j);
return 0;
}
0338デフォルトの名無しさん
2009/09/11(金) 19:19:54Micro Soft Visual C++ 2008でしたwすいません。。
>>337
ありがとうございます!
今動作を確認しましたが、削除した文字が0文字のままで削除もされていないのですが、どこか間違っているのでしょうか・・?
0339デフォルトの名無しさん
2009/09/11(金) 19:21:09削除した文字が0文字なら削除されるわけないだろ
気違いか?
0340デフォルトの名無しさん
2009/09/11(金) 19:25:58・英数字は課題通り
・日本語(2バイト文字)は削除されなかった
339は、日本語を入力して実行確認したのではないだろうか
0341デフォルトの名無しさん
2009/09/11(金) 19:29:17すいません。説明が足りなかったです。
文字を「sea」と入力して、削除する文字を
aと入力しても「sea」のままで削除されないということです。
0342デフォルトの名無しさん
2009/09/11(金) 19:29:530343デフォルトの名無しさん
2009/09/11(金) 19:33:41VS2008だとscanf使うの推奨されてないしそれが原因かな?
0344デフォルトの名無しさん
2009/09/11(金) 19:41:29を一回目の scanf の後に追加すればいけたりする?
0345デフォルトの名無しさん
2009/09/11(金) 19:44:44ダメだな。
Bccだといけるし見た感じ337のソースは間違ってないと思う。
(記述の仕方が気に入らないがw)
0346デフォルトの名無しさん
2009/09/11(金) 19:44:470347デフォルトの名無しさん
2009/09/11(金) 19:45:20今入れて試してみましたが、削除が行われていませんでした・・
>>343
scanfは非推奨なのですか・・・。今まではこんなことはなかったのですが・・
0348デフォルトの名無しさん
2009/09/11(金) 19:46:170349デフォルトの名無しさん
2009/09/11(金) 20:00:510350デフォルトの名無しさん
2009/09/11(金) 20:03:19scanf("%c", &c)で1バイト書き込み
残り3バイトは…?
>>346にするか初期化しろって話だね
0351デフォルトの名無しさん
2009/09/11(金) 20:04:39なるほど!
0352デフォルトの名無しさん
2009/09/11(金) 20:04:45int main(void)
{
char str[100],c;
int i, j;
printf("文字列を100文字以内で入力してください\n");
scanf("%s", str);
printf("どの文字を削除いたしますか?");
scanf(" %c", &c);
for(i=j=0; str[i]; i++) if(str[i]!=c) str[j++] = str[i];
str[j] = '\0';
printf("%s\n", str);
printf("削除した文字は%d文字です\n", i - j);
return 0;
}
0353デフォルトの名無しさん
2009/09/11(金) 20:06:150354デフォルトの名無しさん
2009/09/11(金) 20:06:430355デフォルトの名無しさん
2009/09/11(金) 20:09:09bccでコンパイルしたexeだと問題なく動くんだぜw
↓これは難しい記述に当たる気がしないでもないw
for(i=j=0; str[i]; i++) if(str[i]!=c) str[j++] = str[i];
0356デフォルトの名無しさん
2009/09/11(金) 20:11:10>>350
>>352
今char c を入れて実行入れて実行したところ
上手くいきました。ありがとうございます!
>>353
>>354
>>355
bccを学校で使ってないので仕方ないです・・・
for(i=j=0; str[i]; i++) if(str[i]!=c) str[j++] = str[i];
は学校でも使っていたので問題ないです。
ほかにも助けていただいた方々ありがとうございました!
0357デフォルトの名無しさん
2009/09/11(金) 20:15:01>>352
指摘ありがとうございます。入れてみたら
削除に成功しました。
>>353
>>354
学校でbccを使っていないので仕方がないです・・
>>355
それくらいならば学校でも扱っていたので大丈夫です。
ほかにも助けていただいた方々ありがとうございました!
0358デフォルトの名無しさん
2009/09/11(金) 20:16:020359デフォルトの名無しさん
2009/09/11(金) 20:16:39反映されてた。2度書きすいません。。
0360デフォルトの名無しさん
2009/09/11(金) 20:19:09for(i=j=0; str[i]; i++) if(str[i]!=c) str[j++] = str[i];
見づらいし、バグの原因になりかねないし。
短かったら良いってもんじゃねぇよ、と。
0361デフォルトの名無しさん
2009/09/11(金) 20:28:530362デフォルトの名無しさん
2009/09/11(金) 20:29:50小さいことをきっちりとやってかないと大きいプログラムを書いた時に
ひどいことになる
0363デフォルトの名無しさん
2009/09/11(金) 20:31:01何の問題もない
0364デフォルトの名無しさん
2009/09/11(金) 20:33:59無駄な処理をしないよう努力を重ねないと
いざ完成したプログラムが遅くて使い物にならないんですね。
わかります。
0365デフォルトの名無しさん
2009/09/11(金) 20:34:21俺は仕事でもスパゲッティーコード量産してるけどなw
0366デフォルトの名無しさん
2009/09/11(金) 20:36:27いいぞもっとやれ
0367デフォルトの名無しさん
2009/09/11(金) 21:01:19for (i=j=0; str[i] != '\0'; i++)
{
if (str[i] != c)
{
str[j] = str[i];
j++;
}
}
見やすくなったし、バグの原因になりえなくなったかな?
0368デフォルトの名無しさん
2009/09/11(金) 21:06:16個人的には
str[j++]=str[i];
の方がバグになりにくい
0369デフォルトの名無しさん
2009/09/11(金) 21:17:18無駄に行数が増えて見辛い
0371デフォルトの名無しさん
2009/09/11(金) 21:32:48もっと分かりやすいコードかけよw
0372デフォルトの名無しさん
2009/09/11(金) 21:34:470373デフォルトの名無しさん
2009/09/11(金) 21:35:03俺としては、
↓にするだけでいいと思ってるw
for(i=j=0; str[i]; i++){
if(str[i]!=c){
str[j++] = str[i];
}
}
0374デフォルトの名無しさん
2009/09/11(金) 21:37:430375デフォルトの名無しさん
2009/09/11(金) 21:38:500376デフォルトの名無しさん
2009/09/11(金) 22:02:07http://unkar.jp/read/science6.2ch.net/sim/1252066026
0377デフォルトの名無しさん
2009/09/11(金) 23:29:170378デフォルトの名無しさん
2009/09/12(土) 03:06:36100の超階乗を表示するプログラムをつくれ。
0379デフォルトの名無しさん
2009/09/12(土) 03:09:220380デフォルトの名無しさん
2009/09/12(土) 05:34:36を限りなく効率化してみようぜ
試し割りの時点で効率的じゃないんだけどな。
0381デフォルトの名無しさん
2009/09/12(土) 06:10:17[2] 問題文(含コード&リンク): ガウス行列を既約ガウス行列に変形する関数を定義せよ
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 4.1
[3.3] 言語: C
[4] 期限: 9月18日
[5] その他の制限: 特になし
0382デフォルトの名無しさん
2009/09/12(土) 06:39:05http://nojiriko.asia/prolog/t310.html
こんなん見つけた
つまり過去ログを漁れ
そこに答えはある
0383デフォルトの名無しさん
2009/09/12(土) 07:19:37>>319,321
効率は果てしなく悪そうだが
0384デフォルトの名無しさん
2009/09/12(土) 09:31:050385デフォルトの名無しさん
2009/09/12(土) 09:59:150386デフォルトの名無しさん
2009/09/12(土) 10:19:260387デフォルトの名無しさん
2009/09/12(土) 17:31:100388デフォルトの名無しさん
2009/09/12(土) 17:33:230389デフォルトの名無しさん
2009/09/12(土) 18:29:290390デフォルトの名無しさん
2009/09/13(日) 15:00:18[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9936.txt
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限: 9月15日00:00迄
[5] その他の制限:
テキストに記載してあります。期限がかなり急なのですが助けていただけると非常に有難いです。
よろしくお願いいたします。
0391デフォルトの名無しさん
2009/09/13(日) 15:21:090392デフォルトの名無しさん
2009/09/13(日) 15:34:46[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9937.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
[3.3] 言語:C言語
[4] 期限:9月13〜15日
[5] その他の制限:問題はテキスト内に書きました。
すみませんが宜しくお願い致します
0393デフォルトの名無しさん
2009/09/13(日) 15:35:461以上って1含んじゃうけどいいのかよ・・・
0394デフォルトの名無しさん
2009/09/13(日) 15:40:22main()
{
int i,n,wa;
printf("正の整数を入力してください:");
scanf("%d",&n);
wa=0;
for(i=1;i<n;++i)
{
wa=wa+i;
}
printf("1から%dまでの和:%d\n",n,wa);
}
0395デフォルトの名無しさん
2009/09/13(日) 15:41:53scanf("%d", n);
wa=0;
for(i = 0; i<n;i++)
{
wa = wa + i;
}
0396デフォルトの名無しさん
2009/09/13(日) 15:43:39main()
{
int i,n,wa;
printf("正の整数を入力してください:");
scanf("%d",&n);
wa=0;
for(i=1;i<n+1;++i)
{
wa=wa+i;
}
printf("1から%dまでの和:%d\n",n,wa);
}
0397デフォルトの名無しさん
2009/09/13(日) 15:52:59もしかしたら解釈間違えているかも知れれないが、こんな感じで。
関数化は機能別にした。
あと、動作は保障しない。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9938.zip
0398デフォルトの名無しさん
2009/09/13(日) 16:15:13単語それぞれについて数えてたよ・・・ひーん
0399デフォルトの名無しさん
2009/09/13(日) 16:38:55おい
警告 W8004 dai3.c 7: 'p' に代入した値は使われていない (関数 WordCount )
警告 W8081 dai3.c 26: void 関数は値を返してはならない (関数 WordCuttert )
警告 W8067 dai3.c 36: 値を伴わない return と伴う return の両方が使われている (関数 WordCuttert )
警告 W8004 dai3.c 24: 's' に代入した値は使われていない (関数 WordCuttert )
警告 W8004 dai3.c 24: 'p' に代入した値は使われていない (関数 WordCuttert )
0400デフォルトの名無しさん
2009/09/13(日) 16:40:300401デフォルトの名無しさん
2009/09/13(日) 16:55:39あれ??ちょっと見てくる。
0402デフォルトの名無しさん
2009/09/13(日) 16:56:18>警告 W8081 dai3.c 26: void 関数は値を返してはならない (関数 WordCuttert )
これだけ致命的に間違っているが、他は特に問題ないね
0403デフォルトの名無しさん
2009/09/13(日) 16:57:03別に、致命的じゃないだろ。
0404デフォルトの名無しさん
2009/09/13(日) 17:08:10えーっと、VC9で互換性の警告しか出なかったから、見落としてた。
ポインタ*pはこういう使い方しないとstrtokが動作しないんですよ。
初期化で警告が出てるなら、NULLを消しても問題ないと思います。
WordCutterはコピペして作ったからおかしいところがあったんだなぁ。。。
いや、すまん。
int WordCutter(char *Fname){
FILE *fp;
char str[10240];
char *p=NULL,*s=NULL;
fp=fopen(Fname,"rt");
if(fp== NULL) return -1;
while(fgets(str,10240,fp) != NULL){
p=str;
while((s=strtok(p," \'\n-,.;"))!=NULL){
p=NULL;
printf("%s\n",s);/*表示*/
}
}
fclose(fp);
return 0;
}
>>400
それ防衛的でてきとーな文章だから信頼性は低いよ。(汗
0405デフォルトの名無しさん
2009/09/13(日) 17:16:39単語の文字数がほしかったら、WordCutterのstrtokからもらってるポインタsをstrlenすればいいとおもう。
0406デフォルトの名無しさん
2009/09/13(日) 17:20:24「それ文字」
0407デフォルトの名無しさん
2009/09/13(日) 17:25:31そういうこっちゃなくて、Hitした単語それぞれが、文章中にいくつあるかを数えるように作ってしまったって事w
問題文読み直してみると >>397 が正しいな、って
0408デフォルトの名無しさん
2009/09/13(日) 17:50:15あぁ、そういうことか。そういう風にも取れるなぁ。
俺の解釈が間違ってないといいんだけどねぇ。。。
0409デフォルトの名無しさん
2009/09/13(日) 18:00:09急な依頼を請け負って頂いて非常に助かりました。
ここまでしていただいた>>397->>408のみなさん、どうもありがとうございます。
0410デフォルトの名無しさん
2009/09/13(日) 18:44:18単語のヒットカウント。スタックオーバーフロー注意。あと動作は保障しない。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9939.zip
0411392
2009/09/14(月) 12:06:13非常に助かりました、本当にありがとうございます。
0412デフォルトの名無しさん
2009/09/15(火) 01:36:11[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9940.txt
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:Windows Visual Studio 2005 Professional
[3.3] 言語: C++
[4] 期限: 9月15日 21:00まで
[5] その他の制限: 標準ライブラリ使用可能だが、できるだけ分かりやすく記述すること。
データ圧縮・解凍は初めて習いましたので、
よろしく、お願いします。
0413デフォルトの名無しさん
2009/09/15(火) 02:14:54http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9941.c
0414デフォルトの名無しさん
2009/09/15(火) 02:58:46作ってみた。C++でSTL使ってるが配列としてしか使ってないから、知ってれば簡単に読めると思う。
あとファイルポインタの名前は見落としてたから、読み替えてくれ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9942.zip
STLは標準ライブラリの範疇だよね??
最後に、動作は保障しない。
0416デフォルトの名無しさん
2009/09/15(火) 22:40:29[1] 二次元配列
[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9944.txt
[3] windows visual studio2005
[3.1] OS: (Windows vista
[3.2] windows visual studio2005
[3.3] 言語: C
[4] 期限: 9月16日15時
[5] その他:途中まではやってあるのでそれっぽくやっていただければ何も文句などないです!
0417デフォルトの名無しさん
2009/09/16(水) 00:28:43#include <stdio.h>
int main(void){
int hairetu[11][11];
int i, n, x, y, next_x, next_y;
printf("数字を入力してください。ただし、10以下の数字を入力にしてください。\n奇数or偶数によって魔方陣を表示します");
scanf("%d",&n);
memset(hairetu, 0, sizeof(hairetu));
if(n%2 && n<12){
x=n/2;y=0;
for(i=1;i<=n*n;i++){
next_x=(x+1)%n;
next_y=(y+n-1)%n;
if(hairetu[next_y][next_x]){
next_x=x;
next_y=(y+1)%n;
}
hairetu[y][x]=i;
x=next_x;
y=next_y;
}
}
for(y=0;y<n;y++){
for(x=0;x<n;x++) printf(" %2d", hairetu[y][x]);
printf("\n");
}
return 0;
}
0418デフォルトの名無しさん
2009/09/16(水) 03:17:37http://d.hatena.ne.jp/ziom/20090619/p1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9945.c
0419デフォルトの名無しさん
2009/09/16(水) 18:33:39>>418
ありがとうございます!!!!
C言語って書いてたけどC++でした。でも問題ないのでこのまま生かせていただきます。感謝。
0420デフォルトの名無しさん
2009/09/18(金) 00:47:24[2] 問題文(含コード&リンク):
車のナンバーや電車の切符の裏などにある4桁の数字。その数字を四則演算し10にするというクイズを解くプログラムをお願いします。
1 2 3 4 と言う4つの数字であれば、すべて足せば10になりますし
2 3 5 7 は{(3+7)/2+5}で10になります。
数字の順番は変えてもOK(上のように2357を3725と並び替えている)
二つの数字をくっつけて1つにしてもOK(0 0 1 2を20-10)
数字を4つ入力し、全パターンを出力するプログラムをお願いします。
[3] 環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:GCC)
[3.3] 言語: C
[4] 期限: 9月21日(月)
[5] その他の制限: 制限無し よろしくお願いします。
0421デフォルトの名無しさん
2009/09/18(金) 10:56:56>二つの数字をくっつけて1つにしてもOK(0 0 1 2を20-10)
1,0,0,0→10,00→0010 みたいのもアリ?* + / -に加えた演算の一つとして考えていいのかな
0422デフォルトの名無しさん
2009/09/18(金) 13:50:031,0,0,0→10,00→0010 はアリだと思います。
0423デフォルトの名無しさん
2009/09/18(金) 15:27:040424デフォルトの名無しさん
2009/09/18(金) 15:40:200425デフォルトの名無しさん
2009/09/18(金) 15:50:09表示結果は (3+7)/2+5 みたいな形式じゃないとまずい?これが結構面倒なんだな
0426デフォルトの名無しさん
2009/09/18(金) 16:02:510427デフォルトの名無しさん
2009/09/18(金) 16:16:300428デフォルトの名無しさん
2009/09/18(金) 16:34:12(1+((2+3)+4)) = 10
((1+2)+(3+4)) = 10
((1+(2+3))+4) = 10
(((1+2)+3)+4) = 10
(1+(2+(4+3))) = 10
(1+((2+4)+3)) = 10
....
こんなのが5*4!=120通りも重複して表示される俺のプログラムゴミ過ぎる
0429デフォルトの名無しさん
2009/09/18(金) 16:38:35')' 直後が * / 以外の場合省略可 ってところになるのかな
0430デフォルトの名無しさん
2009/09/18(金) 18:51:520431デフォルトの名無しさん
2009/09/18(金) 19:02:384個の場合は15個だと思うけど、n個の場合がわかんね
>>420 をとりあえずやってみたけど、合ってる気がしないわ。まぁ何かの参考になれば
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9947.c
0432デフォルトの名無しさん
2009/09/18(金) 22:45:54[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9948.txt
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン:Micro Soft Visual C++ 2008
[3.3] 言語: C++
[4] 期限: 2009年9月20日まで
[5] その他の制限: あまり難しい表現は使わずに(大学一年からプログラムを始めたレベル)よろしくお願いします
0433デフォルトの名無しさん
2009/09/19(土) 02:29:00正直、自力でやれよってレベル
0434デフォルトの名無しさん
2009/09/19(土) 02:55:16#include <stdio.h>
int main(void) {
FILE *fp;
fp = fopen("data.txt", "a");
if (fp == NULL) {
printf("ファイルが開けませんでした\n");
} else {
char name[100];
int y, m, d;
while (scanf("%s %d %d %d", name, &y, &m, &d) != EOF) {
fprintf(fp, "%s %d %02d %02d\n", name, y, m, d);
}
}
return 0;
}
0435ぅゅ ◆e6.oHu1j.o
2009/09/19(土) 20:07:27else{
fprintf(fp,gets(""));
0436デフォルトの名無しさん
2009/09/20(日) 00:22:08[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9949.txt
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2008
[3.3] 言語: C
[4] 期限: 2009年9月22日まで
[5] その他の制限: まだ習い始めて半年ほどです。
#include <stdio.h>のみの使用でお願いします。
0437デフォルトの名無しさん
2009/09/20(日) 00:50:06これ本当に問題文を出題されたまま全文を書いてるのか?
1
#include <stdio.h>
int main(void)
{
double x[3], y[3], p = 0;
int i;
for (i = 0; i < 3; i++) { printf("input x[%d] >> ", i); scanf("%lf", &x[i]); }
for (i = 0; i < 3; i++) { printf("input y[%d] >> ", i); scanf("%lf", &y[i]); }
for (i = 0; i < 3; i++) p += x[i] * y[i];
printf("%f\n", p);
return 0;
}
0438デフォルトの名無しさん
2009/09/20(日) 00:56:192
#include <stdio.h>
int main(void)
{
int s = 1, n = 1, i;
for (i = 1; i < 20; i++) { s += n * 2; n *= 2; }
printf("%d\n", s);
return 0;
}
0439デフォルトの名無しさん
2009/09/20(日) 01:01:283
#include <stdio.h>
int main(void)
{
int n, i;
printf("正数を入力してください");
scanf("%d", &n);
for (i = 2; i <= n / 2; i++)
if (n % i == 0) { printf("素数ではない\n"); return 0; }
printf("素数\n");
return 0;
}
0440デフォルトの名無しさん
2009/09/20(日) 02:54:150441440 デフォルトの名無しさん
2009/09/20(日) 03:22:37int main(void)
{
int i;
double x[3], y[3], p;
for (i = 0; i < 3; i++) scanf("%lf", &x[i]);
for (i = 0; i < 3; i++) scanf("%lf", &y[i]);
printf("\nx=");
for (i = 0; i < 3; i++) printf("%lf ", x[i]);
printf("\ny=");
for (i = 0; i < 3; i++) printf("%lf ", y[i]);
for (p = 0, i = 0; i < 3; i++) p += x[i] * y[i];
printf("\nx*y=%f", p);
return 0;
}
0442デフォルトの名無しさん
2009/09/20(日) 08:15:10えっ?
0443デフォルトの名無しさん
2009/09/20(日) 09:53:07[2] 問題文(含コード&リンク):
1.適当な方程式 y = a x + b を定め、n 個の x に対してランダムな誤差を持つ y のサンプルデータを生成するプログラムを作成せよ。
出力形式は、例えば改行で区切られた1行ごとにスペース区切りで x, y の値を標準出力に書き出す。
ランダムな誤差に関しては、適当な範囲内の乱数を単純に各々の値に適用すればよい。
(本来は正規分布に従った乱数を用いる方が望ましい)
2.前問で作成したプログラムの出力から、最小二乗法により、逆に a, b を求めるプログラムを作成し、
求めた値に関して、前問のプログラムで設定した a, b に対する考察をせよ。
3.以上を二次方程式(y = a x^2 + b x + c)に対して繰り返し、a, b, c に関して考察せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: g++
[3.3] 言語: (C/C++/どちらでも可)
[4] 期限: 2009年09月24日
[5] その他の制限:g++で通常使えるライブラリーは使用しても問題ありません。
0444デフォルトの名無しさん
2009/09/20(日) 17:13:34[2] 問題文(含コード&リンク):比較:文字列2つ入力後、先頭から5文字を比較した結果を表示しなさい
[3] 環境
[3.1] OS:vista
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2008
[3.3] 言語:C
[4] 期限:
[5] その他の制限:strncmpを使った場合とそうでない場合二つお願いします。
0445デフォルトの名無しさん
2009/09/20(日) 17:54:48ttp://codepad.org/2B9jfieD
0446デフォルトの名無しさん
2009/09/20(日) 18:11:32line34=> else if ( result == 0 )
0447446 デフォルトの名無しさん
2009/09/20(日) 18:23:43#include <string.h>
int main(void) {
char s1[100];
char s3[100];
int result;
printf(">"); scanf("%s", s1);
printf(">"); scanf("%s", s3);
result = strncmp( s1, s3, (size_t)5 );
if ( result < 0 )
printf( "%s < %s\n", s1, s3 );
else if ( result == 0 )
printf( "%s = %s\n", s1, s3 );
else
printf( "%s > %s\n", s1, s3 );
return 0;
}
0448デフォルトの名無しさん
2009/09/20(日) 18:29:20char s1[100] = {0};
char s3[100] = {0};
したほがいんじゃね?
0449デフォルトの名無しさん
2009/09/20(日) 18:30:300450デフォルトの名無しさん
2009/09/20(日) 23:44:19ttp://codepad.org/So6fWPxB
boost が通常使えるライブラリーかどうかは聞くな
リンク先の Output で数字が全部 nan になってる_| ̄|○
ローカルではちゃんと表示されたんだが
0451デフォルトの名無しさん
2009/09/21(月) 00:07:42遅くなりましたがありがとうございました!
0452デフォルトの名無しさん
2009/09/21(月) 12:36:25[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9950.zip
STLのベクタークラスを改良したクラスを実装する課題。
zip内のコードは自分でトライしてみた分です。
問題分とヘッダーとCPPが入っています。
[3] 環境
[3.1] OS: Mac OS X 10.5
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C++
[4] 期限: 2009年09月22日
[5] その他の制限:問題文にある通りSTLはiostreamとcstdlibが使用可能です。
宜しくお願いします。
0453デフォルトの名無しさん
2009/09/21(月) 12:41:250454デフォルトの名無しさん
2009/09/21(月) 13:00:30基本的に問題文中にある各種演算子操作(+, +=, [], >>, <<, etc..)が出来れば良いのですが、
テンプレートを使ってデータタイプに関係なくランできることが望ましいです。
0455デフォルトの名無しさん
2009/09/21(月) 13:02:38OSX向けの環境ねーからやっても仕方ないか・・・
0456デフォルトの名無しさん
2009/09/21(月) 13:09:11後述になって申し訳ありませんが、
OSはLinux(Ubuntu)とWinでも可能です。
宜しければお願いします。
0457デフォルトの名無しさん
2009/09/21(月) 13:24:26文字化けしてるから無理だ...文字化けする前のファイル名は?(//^^)
0458デフォルトの名無しさん
2009/09/21(月) 13:36:16一応ファイル名変えて再うpしておきました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9951.zip
お手数お掛けします。
0459デフォルトの名無しさん
2009/09/21(月) 14:51:51dsexceptions.hってなんぞ?
0460デフォルトの名無しさん
2009/09/21(月) 14:59:40【dsexceptions.h】
#ifndef DS_EXCEPTIONS_H
#define DS_EXCEPTIONS_H
class UnderflowException { };
class IllegalArgumentException { };
class ArrayIndexOutOfBoundsException { };
class IteratorOutOfBoundsException { };
class IteratorMismatchException { };
class IteratorUninitializedException { };
#endif
が別ヘッダーで入ってました。
0461デフォルトの名無しさん
2009/09/21(月) 15:03:270462デフォルトの名無しさん
2009/09/21(月) 17:12:51意図が読めないものは放置してある。
あと、テンプレートのコードはヘッダに書かないと機能しない。
またはcppをヘッダにインクルードしないと無理。
というわけでヘッダにべた書きした。
ユニットテスト通すことだけ考えて作ったから後のカスタマイズはご自分で。
あと、動作は保障しない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9952.zip
あぁ、そうだ。俺の環境の都合でpragma使ってるけど、動かないなら消してくれ。というか書き換えてくれ。
0463デフォルトの名無しさん
2009/09/21(月) 17:55:360464デフォルトの名無しさん
2009/09/21(月) 18:10:160465デフォルトの名無しさん
2009/09/21(月) 18:57:19pragmaはともかくVC拡張使ったらまずいだろう
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9953.txt
0468デフォルトの名無しさん
2009/09/21(月) 21:11:22隣接要素を比較・交換することで気泡(最小要素)が徐々に上へ浮かんでいく感じのがバブルソート。
全要素を一通り比較して最小要素を1つ選択しておいてからそれを交換するのが選択ソート。
0469452
2009/09/21(月) 23:29:29遅くなりましたが、お二人とも大感謝です。
なるほどって部分が多く、参考になり助かりました!
ありがとうございます。
0470デフォルトの名無しさん
2009/09/21(月) 23:41:37そこで線形リストをつくり、そこにEが打たれるまでデータを追加していき、表示する課題がでました。
リストのデータは文字列と数字です。数字のほうは正常に表示されるのですが、文字列がうまくいきません。どなたか原因を教えてくださいませ
0471470
2009/09/21(月) 23:42:27#include<string.h>
#include<stdlib.h>
struct list{
char *name;
int packet;
struct list* next;
};
struct list head;
addlist(char name[],int packet){
struct list *p, *q, *newcell;
q = &head;
p = head.next;
while(p!=NULL){
q = p;
p = p->next;
}
newcell=malloc(sizeof(struct list));
newcell->name=name;
newcell->packet=packet;
newcell->next=p;
q->next=newcell;
}
main(){int packet;char name[512];struct list *p;
scanf("%s %d",&name,&packet);
while(strcmp(name,"E")){
addlist(name,packet);
scanf("%s %d",&name,&packet);
}
for( p=head.next;p!=NULL;p=p->next ){printf("%s %d\n", p->name ,p->packet);}
}
0472デフォルトの名無しさん
2009/09/21(月) 23:48:09nameの領域を別途確保し、strcpyする必要があるよ
0473デフォルトの名無しさん
2009/09/21(月) 23:48:16テンプレ書いてくれ。
Javaだとメモリのコピーはあんまり意識しないだろうけど、
ポインタはメモリを指してる数字を保持してるだけで、
それをコピーしたからってディープコピーされるわけがない。
0474デフォルトの名無しさん
2009/09/22(火) 02:32:02NULLが入ってるとはいえ、この書き方は気持ち悪い
0475デフォルトの名無しさん
2009/09/22(火) 03:09:080476デフォルトの名無しさん
2009/09/22(火) 03:41:340477デフォルトの名無しさん
2009/09/22(火) 03:48:010478470
2009/09/22(火) 10:16:42[1] 授業単元:??
[2] 問題文(含コード&リンク):>>471
[3] 環境
[3.1] OS:WindowsVista
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:連休中
[5] その他の制限: 特になし
それとあつかましいかとは思いますが出来れば回答ソースも乗せていただけるとありがたいです。
0479デフォルトの名無しさん
2009/09/22(火) 10:39:26を
newcell->name=malloc(strlen(name) + 1);
strcpy(newcell->name, name);
にすりゃいいんじゃね?
0480デフォルトの名無しさん
2009/09/22(火) 10:42:18listのchar *nameをchar name[512]
newcell->name = name を strcpy(newcell->name, name)
にするだけぢゃないの?
もしくは newcell->name = strdup(name) とか?
0481デフォルトの名無しさん
2009/09/22(火) 10:42:590482470
2009/09/22(火) 10:47:20ありがとうございます、言われたとおりにやればできました。
これで何とか先輩に怒られなくてすみそうです。
本当にありがとございました。
0483デフォルトの名無しさん
2009/09/22(火) 11:09:35[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9954.txt
[3] 環境
[3.1] OS: Windows XP, Linux RedHat
[3.2] コンパイラ名とバージョン:g++, exlipse
[3.3] 言語: C++
[4] 期限: 遅くとも9月23日まで
[5] その他の制限: 標準ライブラリ使用可能
C++書き始めて数ヶ月です。
どなたかのご助力、宜しくお願いします!
0484デフォルトの名無しさん
2009/09/22(火) 19:50:19こんな感じで、STL万歳。
アルゴリズムのヘッダ使えばもうちょっと短くなるかも。
一応、説明と自己満足のために色々べた書きした。
あと、動作は保障しない。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9955.zip
0485デフォルトの名無しさん
2009/09/22(火) 20:42:59手ごたえなさそうだったから凝ってシェルみたいにしてみた
ガイシュツだけど、よかったらどうぞー
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9956.cpp
0486485
2009/09/22(火) 21:43:29もし使うなら追加してね
0487デフォルトの名無しさん
2009/09/22(火) 21:52:590488484
2009/09/22(火) 22:02:00もうちょっと便利機能使えれば、もちょっと短くなるけど、出題者にとっての黒魔術にはしたくなかった。
なってるかも知れんけど。
テンプレートとイテレータが解れば解けると思ったんだけど。
あと、ここはC/C++のスレだしなぁ。
0489デフォルトの名無しさん
2009/09/22(火) 22:02:420490デフォルトの名無しさん
2009/09/22(火) 22:12:560491デフォルトの名無しさん
2009/09/22(火) 22:20:54「そんなものは今時必要無い」って言い張るんだよな
巣から出てこなければいいのに
0492デフォルトの名無しさん
2009/09/22(火) 22:24:410493デフォルトの名無しさん
2009/09/22(火) 22:31:570494デフォルトの名無しさん
2009/09/22(火) 22:35:090495デフォルトの名無しさん
2009/09/22(火) 22:49:370496デフォルトの名無しさん
2009/09/22(火) 22:57:520497デフォルトの名無しさん
2009/09/22(火) 23:03:58(゚ 3゚)チューしちゃうぞ
0498デフォルトの名無しさん
2009/09/22(火) 23:09:340499デフォルトの名無しさん
2009/09/22(火) 23:11:150500デフォルトの名無しさん
2009/09/22(火) 23:48:00>>484さんはXXXYYYZZZのなかからYYZZを見つけられますか?
これまで仕事で趣味で書いたプログラム全部書き直しですね.
0501デフォルトの名無しさん
2009/09/23(水) 00:20:450502動作は保障しない人
2009/09/23(水) 00:38:40数日でスーパーマンになる人発見。明日はX-Menだな。
>>500
普通のchar文字列なら、strstrつかわないか?
まぁ、普通にバグってたからそこだけ直したよ。ユニットテストしてるけど、条件がなかなか思い浮かばん。
あと、即興で書いたんで被害なんか無いぞ。
bool FindStr(std::list<char>::iterator& it,std::list<char>::iterator& end,char* str){
std::list<char>::iterator T;
int i=0;
while(it != end){
if(FindChar(it,end,str[0])==true){
T=it;
while(*T==str[i]){
i++;
T++;
if(str[i]=='\0') return true;
if(T == end) return false;
}
}else{
break;
}
i=0;
it++;
}
return false;
}
0503デフォルトの名無しさん
2009/09/23(水) 00:56:340504デフォルトの名無しさん
2009/09/23(水) 01:08:410505デフォルトの名無しさん
2009/09/23(水) 01:14:27なるほど、一時オブジェクトの参照って標準じゃないのね。知らんかったわ。
返り値にしたら駄目なのは解ってたが、そうだったのか。
便利なんだけどなぁ。。。
勉強になった。ありがとう。
0506デフォルトの名無しさん
2009/09/23(水) 01:19:31bool FindString(std::list<char>& Line,char* string){
std::list<char>::iterator beg= Line.begin();
std::list<char>::iterator end= Line.end();
return FindStr(beg,end,string);
}
雑食のほうが色々わかっていいんだろうけど、VCのインテリセンスから抜けるにはもう遅い。。。
0507デフォルトの名無しさん
2009/09/23(水) 01:34:350508デフォルトの名無しさん
2009/09/23(水) 01:39:08下はできるところまではやってみましたが、結果がうまくいきません
[1] 授業単元: プログラミング
[2] 問題文:4行4列のA行列と4行2列のB行列の積を求めよ
[3]環境[3.1]OS:vista[3.2]bcc 32[3.3]C言語
[4]期限:23日中
[5]
#include <stdio.h>
int main()
{ int i,j; int A[4][4]; float B[2][4],C[2][4];
//計算を行う行列の値を格納する。
for(i=0;i<4;i++) {
for(j=0;j<4;j++){
printf("A %d,%d\n",i+1,j+1);
scanf("%d",&A[i][j]);
}
}
for(s=0;s<4;s++) {
for(t=0;t<2;t++){
printf("B %.1f,%.1f\n",s+1,t+1);
scanf("%f",&B[s][t]);
}
}
//受け取った2つの行列の掛け算を行う。
for(i=0;i<4;i++){
for(j=0;j<2;j++){
C[i][j]=A[i][j]*B[i][j];
}
}
return 0;
}
0509動作は保障しない人
2009/09/23(水) 01:40:54みんながんばれ。
それじゃ、お休み。
0510デフォルトの名無しさん
2009/09/23(水) 01:43:020511デフォルトの名無しさん
2009/09/23(水) 01:45:02とりあえず行列の掛け算を紙に書いてみ?
0512デフォルトの名無しさん
2009/09/23(水) 01:48:35わけのわからない計算してますね
やり直してみます
0513デフォルトの名無しさん
2009/09/23(水) 01:52:41おやすみ。まァ、色んな誤解が解けたんだし
こいうトコでソース公開する利点を享受できたと思って、めげずに今後も頑張れよ
0514デフォルトの名無しさん
2009/09/23(水) 02:03:35値がおかしくなるようです。
もし教えていただけるならヒントだけでもお願いできないでしょうか
0515デフォルトの名無しさん
2009/09/23(水) 02:10:420516デフォルトの名無しさん
2009/09/23(水) 02:19:04その通りだったみたいです
何度もありがとうございました
0517デフォルトの名無しさん
2009/09/23(水) 02:37:57ttp://codepad.org/CxUnq93O
遅すぎた感じもするが、面白そうだったのでやってみた
29-31行目について誰か詳しい方いれば教えてください
0518デフォルトの名無しさん
2009/09/23(水) 15:56:54デストラクタがよきにはからってくれるんじゃないの?
0519デフォルトの名無しさん
2009/09/23(水) 16:33:32暇なときは、誰か興味深い課題を投げておくれよ
0520デフォルトの名無しさん
2009/09/23(水) 16:38:45問題出してみる期限は無期限。
1次不定方程式aX+bY=cの具体解を、ユークリッドの互除法で求める
プログラムを作成せよ。
ただし、定数項 c が、d=gcd(a,b) で割り切れないと、解は存在しない。
レポート本文には、ソースコードの主要な部分を掲載し、解説を付ける。
実行結果も掲載する。
0521デフォルトの名無しさん
2009/09/23(水) 16:39:41(1) 16桁までの正整数の加算ができるプログラムを実装せよ。
8桁以下と9桁以上で、下位桁と上位桁に分け、それぞれ加算する。繰上りに注意する。
被加数と加数は、1行ずつ入力する。各行の入力は、 1234 12345678 のように、8桁区切りで空白を入れる。
書式付入力 scanf(“%d”) では、16桁の正整数は入力できないためである。
ここで、1234 1234 は、1234 00001234 を意味する。8桁以下の場合、0 2345 のように入力する。
加算結果の出力は、1234 00005678 のように、8桁区切りとし、必要な0を補う。17桁目に繰上った場合も正しく出力する。
1234 00001234 や 5678 のように、より自然な入力が可能なように改良してもよい。
ただし、先頭に0がある数字列は、8進数と解釈されるので、少し工夫が必要である。
行入力 gets() と sscanf() を使う、文字入力 getchar() で先頭の0を読み捨てる(改行も自分で検出)、
文字配列を走査して0を飛ばす、数値変換 atoi() を使うなど。
(2) 8桁までの正整数の乗算ができるプログラムを実装せよ。入力は、12345678のように、区切りなしのままとする。
内部では、4桁以下と5桁以上で、下位桁と上位桁に分けて格納する。
乗法公式 A×B=(a1×1万+a0)×(b1×1万+b0)=(a1×b1)×1億+(a1b0+a0b1)×1万+(a0×b0) で展開して計算する。
繰上りに注意する。乗算結果は、16桁になる可能性がある。
0522デフォルトの名無しさん
2009/09/23(水) 16:40:39基数rと桁数n、有理分数の分子pと分母qを入力し、p/q をr進法で、小数点以下n桁までを表すプログラムを実装せよ。
ただし、0<p<q とする。0. の部分は省略する。また、n+1桁目は、切り捨てる。
レポート本文には、ソースコードの主要な部分を掲載し、解説を付ける。実行結果も掲載する。
2 1 2 2 ⇒ 10 ; 1/2 = 0.5[10] = 0.1[2]
5 124 1000 5 ⇒ 03022 ; 124/1000 = 0.124[10] = 0.03022‥[5]
0523436
2009/09/23(水) 16:43:16ありがとうございます。
問題文はこれですべてなんです。
2の問題ですが、答えがあわないです。
0524デフォルトの名無しさん
2009/09/23(水) 17:10:59ttp://codepad.org/IzVyC79o
0525431
2009/09/23(水) 17:43:13>>431で俺が質問した問題なんだけどね、レス無かったしもう一度
a, b, c, d という4個の要素があるとするよ
ここで、こいつを (a, b), (c, d) => ((a, b), (c, d)), ((a, b), c), d => (((a, b), c), d)
といった感じで、2組のタプルで囲っていくと、最終的に一つのタプルに纏まるよね
で、問題。
このようにして、2組のタプルでn個の要素(n > 1)を一つに纏めるパターンの数を求める関数unko(n)を作ってみそ
注意して欲しいのが、(A, B) = (A, B) であること。
つまり、(a, b) = (b, a) はあたりまえとして、((a, b), (c, d)) = ((c, d), (a, b)) も成り立つ
431を作るに当たって、総当りでパターンを生成するスクリプトを書いたんだけど、これによると、
n = 4, 5, 6 => unko(n) = 15, 945, 10395
ちなみに俺は解けてない。数学分かる人だったら簡単なんだろうな・・・考え方とかあったら教えて欲しいな
0526デフォルトの名無しさん
2009/09/23(水) 17:55:31n = 4, 5, 6, 7 => unko(n) = 15, 105, 945, 10395
不思議なことに、n >= 4だと、一桁目が全部5なんだよね
0527デフォルトの名無しさん
2009/09/23(水) 18:31:010528デフォルトの名無しさん
2009/09/23(水) 18:43:16[1] 授業単元:C++
[2] ない
[3.1] XP 自宅のPC
[3.2] cygwin
[3.3] C++
[4] 次の月曜日
cygwinの使い方に関する質問です。
1.cygwinの画面に表示されている文章をドラッグしてコピーすることが出来ません。
2.g++が動きません、エラー文は
bash: g++: command not found
大学のPCに元から入っているcygwinでは1,2のような事は起きません。
たしかCなら動きます。
家のPCにcygwinをDLするときに入れていないものがあると思うんですが
ググっても出てこないので何をどこに追加すればいいのか分からないです。
どなたかお願いします。
0529デフォルトの名無しさん
2009/09/23(水) 18:45:560530デフォルトの名無しさん
2009/09/23(水) 18:47:43g++は選択して入れないとデフォルトでインストールされない。
上に関しては設定の問題
0531デフォルトの名無しさん
2009/09/23(水) 18:51:473 1,2 3*1 3
3 <-
4 1,3 4*3 12
2,2 6*1/2 3
15 <-
5 1,4 5*15 75
2,3 10*3 30
105 <-
6 1,5 6*105 630
2,4 15*15 225
3,3 20*3*3/2 90
945 <-
7 1,6 7*945 6615
2,5 21*105 2205
3,4 35*3*15 1575
10395 <-
8 1,7 8*10395 83160 8=1C8
2,6 28*945 26460 28=2C8
3,5 56*105 5880 56=3C8
4,4 70*15/2 525 70=4C8 可換なので 1/2
116025 <-
0532デフォルトの名無しさん
2009/09/23(水) 18:54:53そこまでは理解できたのですが後で追加することできます?
0533デフォルトの名無しさん
2009/09/23(水) 18:56:49落としてきて入れるか、一度アンインストールして
再インストールするときに選択しときゃいい
0534デフォルトの名無しさん
2009/09/23(水) 18:58:17cygwin のインストーラをもう一回立ち上げて追加するパッケージを選ぶだけじゃないか?
0535531
2009/09/23(水) 19:01:018 1,7 8*10395 83160
2,6 28*945 26460
3,5 56*3*105 17640
4,4 70*15*15/2 7875
135135 <-
0536531
2009/09/23(水) 19:58:05#include <stdio.h>
long gcd(long a, long b){
long c;
while((c=a%b)) a=b,b=c;
return b;
}
long comb(int n, int r){
long d=1, u=1, t, i;
for(i=0;i<n;i++){
d*=(n-i);
t=gcd(u, d);
u/=t; d/=t; // 約分
u*=(r-i);
}
return u/d;
}
long unko(int n){
static long data[20]={0, 1, 1}, i, result;
if(n<1 || n>=20) return -1;
if(data[n]==0){
for(i=1,result=0;i<=(n-1)/2;i++) result+=comb(i, n)*unko(i)*unko(n-i);
if(i*2==n) result+=comb(i, n)*unko(i)*unko(n-i)/2;
data[n]=result;
}
return data[n];
}
int main(void){
int i;
for(i=2;i<=20;i++) printf("%10ld\n", unko(i));
return 0;
}
0537431
2009/09/23(水) 20:45:20乙
クソしながら考え直してたら、すげぇ簡単な問題だったわ・・・orz
よーは、こいうこった。
最後にくくったタプルの右側と左側には、それぞれ i個とj個(n = i + j)の要素がくる
その取り方は nCi (もちろん、i = jの場合は nCi / 2)で、右側と左側についても同じことを再帰的に繰り返して、
最終的に出てきた値を掛け合わせれば終わり。Fラン大の受験問題レベルでした。サーセン(涙)
0538531
2009/09/23(水) 22:19:550539532
2009/09/23(水) 22:48:290540デフォルトの名無しさん
2009/09/23(水) 22:58:43Fラン大には解けないよw
0541デフォルトの名無しさん
2009/09/23(水) 23:07:52変数 result は自動変数でないとダメだ
行数減らしのために考えなしに削るからこういう事に…
0542デフォルトの名無しさん
2009/09/23(水) 23:27:470543431
2009/09/23(水) 23:37:410544デフォルトの名無しさん
2009/09/24(木) 16:36:03ttp://codepad.org/MRXlPX7e
一度にたくさんはできないな。。まあ、おもしろかったが
0545デフォルトの名無しさん
2009/09/25(金) 13:40:54[1] 授業単元: 組み込みプログラミング
[2] 問題文(含コード&リンク):
uint8 flag = 0;
uint8 countDownFlag = 0;
と、状態を制御する2つのフラグがあるが、1つの state という状態を
格納する変数だけで状態を制御するよう書き直してください。
[3] 環境
[3.1] OS: winxp
[3.2] コンパイラ名とバージョン: VC2008EE
[3.3] 言語: C
[4] 期限: 本日16時まで
0546デフォルトの名無しさん
2009/09/25(金) 13:44:12if (flag == 0 && (REdata & 0x01) == 0x00) {
pattern++; // パターンをチェンジ
pattern = pattern % 6; // パターンを0から5で表現
jikan = setTime[pattern]; // セットタイムを時間に代入
flag = 1; // 処理済み
}
else if (flag == 1 && ((REdata & 0x01) == 0x01)) { // 処理済みで、スイッチ0を離した
flag = 0; // 処理待ち
}
if (countDownFlag == 1) {
if (jikan > 0) {
count++;
if (count > 50) { // かなりアバウトに1秒?
jikan--; // 表示時間を−1
count = 0;
}
}
}
if ((REdata & 0x02) == 0x00) {
countDownFlag = 1; // カウントダウンスタート
}
if ((REdata & 0x04) == 0x00) {
countDownFlag = 0; // カウントダウン停止
}
if ((REdata & 0x08) == 0x00) {
countDownFlag = jikan = pattern = 0; // すべてクリア
}
PORTC = LED_SEG[jikan % 10];
delay(10);
PORTC = LED_SEG[jikan / 10] | 0x80;
delay(10);
0547デフォルトの名無しさん
2009/09/26(土) 18:44:40ttp://codepad.org/hoJ3lue0
コードが汚かったので、一部書き直してみた
0548デフォルトの名無しさん
2009/09/27(日) 01:59:19[2] 問題文(含コード&リンク):
数独の解を求めるプログラムを作成せよ。
問題はテキストファイルに入力し、引数で指定して読み込む。
答えをプロンプトに出力し、Answer_ファイル名.txtとして出力する。(1.txt→Answer_1.txt)
問題の入力は、数字のあいているところを半角スペースとする。
例)
1 7
6 9
82 94
49 68
4 5
3 7
97 65
7
74 12
[3] 環境
[3.1] OS: Windows vista
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C言語
[4] 期限: 10月4日中
[5] その他の制限: 制限無し
0549>>548
2009/09/27(日) 02:00:46アンダーバーに置き換えます。
_1_____7_
_6_____9_
__82_94__
49_____68
___4_5___
__3___7__
__97_65__
________7
74_____12
0550デフォルトの名無しさん
2009/09/27(日) 07:47:32Visual Studio 使ってるのでコンパイルできなかったらゴメン
(数独) ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9959.c
0551デフォルトの名無しさん
2009/09/27(日) 12:09:40void number_place_read(const char *file_name, BOX question[9][9])
{
char buf[80]; //追加
:
}
// fgetc(fp); // 改行読み飛ばし
fgets(buf, 80, fp); // 改行読み飛ばし
}
0552デフォルトの名無しさん
2009/09/27(日) 14:47:52ttp://codepad.org/FxxI8YdL
boost に Bigint があれば、よかったのにな
0553デフォルトの名無しさん
2009/09/28(月) 00:09:40#include<stdio.h>
char symbol(int x){
static const char symbols[]="0123456789abcdefghijklmnopqrstuvwxyz";
if(x<sizeof(symbols)-1) return symbols[x];
return '?';
}
void hoge(int r, long p, long q, int n){
int i;
for(i=0;i<n;i++){
p*=r;
printf("%c", symbol(p/q));
p%=q;
}
printf("\n");
}
int main(void){
hoge(2, 1, 2, 2);
hoge(5, 124, 1000, 5);
return 0;
}
0554デフォルトの名無しさん
2009/09/28(月) 00:13:17パソコン教室とか開いたほうがいいんじゃない?天職だよ
0555デフォルトの名無しさん
2009/09/28(月) 01:56:23どこのジーザスだよ
0556デフォルトの名無しさん
2009/09/28(月) 02:28:53人のためになっていない人がいるだけです。
0557デフォルトの名無しさん
2009/09/28(月) 06:35:24ことわざって便利ね。
0558デフォルトの名無しさん
2009/09/28(月) 08:35:190559デフォルトの名無しさん
2009/09/28(月) 08:52:51先々週だったか、タケシの番組で見たのは。
ランダムに配置された3つの円に内接または外接する円。
8個を求める為の、方程式を求めるまたはグラフを描く。
0560デフォルトの名無しさん
2009/09/28(月) 09:42:21それって3つの円の中心が直線上に並んだときも8個になるの?
0561560
2009/09/28(月) 09:46:430562560
2009/09/28(月) 09:57:41その上で8個ならどうにかなるんじゃね?
0563デフォルトの名無しさん
2009/09/28(月) 20:49:15[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9960.zip
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual studio 2003
[3.3] 言語:どちらでも可
[4] 期限: 無期限
[5] その他の制限:なし
OpenGLの問題です。
もともとのプログラムだと効率が悪いので140〜160を改良しました。
この場合、他にどこをいじれば良いでしょうか?
0564デフォルトの名無しさん
2009/09/29(火) 00:47:24単純なGL固有の処理問題ならソース見て指摘もできるが
おもいきり、GL関係ないデータ処理の部分じゃねーかw
ディスプレイリストを作るとかVBOを使うとかじゃねーだろ
とにかく何をしていて何をしたいのか説明をしろ
0565563
2009/09/29(火) 11:29:53はい、説明します。
まずこのプログラムは最小の交差数を求めるプログラムなんです。
だけど交差を一つ一つ調べると処理時間がかなりかかってしまうんです。
そこで調べる交差を乱順列を使って効率的に調べられるようにしようとしてます。
0567デフォルトの名無しさん
2009/09/29(火) 23:31:56c言語がまだ初心者すぎてわからないのでどうかお願いします!
■プログラム1:
りんごが30個中、腐っていたりんごが10個あったとき、
腐っていないりんごを3人で分けると、
一人当たりのりんごの個数は何個になるか、計算し、
"一人あたりのりんごの個数"と"残ったりんごの個数"を
出力するプログラム。
■プログラム2:
上記プログラム1 のリンゴの個数などの数を scanfを使ってキーボードから
入力することで、任意の個数に対して計算できるように改良したプログラム。
ただし両プログラムの変数名は、最初のりんごの個数をapple、
腐っていたりんごの個数を bad_apple、人数をpersons、
一人当たりのりんごの個数を apple_for_one、余りをrest とすること。
お願いします!
0568デフォルトの名無しさん
2009/09/29(火) 23:32:38クルッ
. ハ,,ハ ミ _ ドスッ
/1べ:;:;:r─‐-! ( ゚ω゚ )彡―─┴┴─―
. /iィ.:.:.:.:ヾ|断だ!\ / つ お断りし / ハ,,ハ
/ヘ レj_.:.:.lるが! \ 〜′ /´ └―─┬/ ( ゚ω゚ ) お断りします
. /.:`ソ =三_`y‐i:! \ ∪ ∪ / / \
/.:::i゛:.. `ヾニノ j! .\ / ((⊂ ) ノ\つ))
./;;i::rミ、 ;:' '! . \∧∧∧∧/ (_⌒ヽ
丶iゝ``' ,:' ,t'! < お > ヽ ヘ }
` 丶 、 /rj! < の し 断 > ε≡Ξ ノノ `J
────────────< 予 ま >────────────
ハ,,ハ お断り<. 感 す り > ______
( ゚ω゚ ) します<. !! > / ./お だ ,!
__〃`ヽ 〈_ /∨∨∨∨\ / ! 断 が,!
γ´⌒´-−ヾvーヽ⌒ヽ /お断りします \ / ,ハ,,ハ ! り ,!
/⌒ ィ `i´ ); /. ハ,,ハ \ /( ゚ω゚ )`ー‐,!
/ ノ^ 、___¥__ / ( ゚ω゚ ) \ `ヽ、 \_,!
! ,,,ノ爻\_ _人 / .(| y |) \ `ヽ、ノ\,!
0569デフォルトの名無しさん
2009/09/29(火) 23:44:37■プログラム1:
#include <stdio.h>
int main(void)
{
int apple = 30, bad_apple = 10, persons = 3, apple_for_one, rest;
apple_for_one = (apple - bad_apple) / persons;
rest = apple - apple_for_one * persons;
printf("一人あたりのりんごの個数:%d\n", apple_for_one);
printf("残ったりんごの個数:%d\n", rest);
return 0;
}
■プログラム2:
#include <stdio.h>
int main(void)
{
int apple, bad_apple, persons, apple_for_one, rest;
printf("りんごの個数:");
scanf("%d", &apple);
printf("腐ったりんごの個数:");
scanf("%d", &bad_apple);
printf("人数:");
scanf("%d", &persons);
apple_for_one = (apple - bad_apple) / persons;
rest = apple - apple_for_one * persons;
printf("一人あたりのりんごの個数:%d\n", apple_for_one);
printf("残ったりんごの個数:%d\n", rest);
return 0;
}
0570デフォルトの名無しさん
2009/09/30(水) 12:37:32いきなりですみませんでした。
569さん
どうもありがとうございました!!!!
本当に助かりました!
0571デフォルトの名無しさん
2009/09/30(水) 21:37:01[2] 問題文(含コード&リンク):
米国への船便小包の郵便料金は以下の様に定められる。小包の重さを読み込み、その郵便料金を計算するプログラムを作成せよ。
但し、重量制限は20kg(20000g)までである。
1000g以下 1800円
10000g以下 1000gごとに550円の割り増し
20000g以下 1000gごとに550円の割り増し
(例・3000g 2900円 3001g 3450円 20000g 10250円)
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C)
[4] 期限: ([2009年9月30日24:00まで] )
どうか、よろしくお願いします。
0572デフォルトの名無しさん
2009/09/30(水) 21:49:4120000g以下の時は350円増です。
0573デフォルトの名無しさん
2009/09/30(水) 22:00:46#include<stdio.h>
long get_price(long weight){
long price=1800;
if(weight>20000) return -1;
if(weight>10000) price+=(weight-10000+1000-1)/1000*350,weight=10000;
if(weight>1000) price+=(weight-1000+1000-1)/1000*550,weight=1000;
return price;
}
#define HOGE(w) printf("%ldg %ld円\n", w, get_price(w))
int main(void){
HOGE(3000L);
HOGE(3001L);
HOGE(20000L);
return 0;
}
0574デフォルトの名無しさん
2009/09/30(水) 22:16:20半径rの3次元の球状にランダムにn個の点を置くにはどうしたらいいですか?
0575571
2009/09/30(水) 22:16:42もしご迷惑でなければ、もう一問解いていただけないでしょうか?
品物の値段と客の支払った額を読み込み、お釣りがある場合には、その額を貨幣(可能なら紙幣も)の種類と枚数で表示するプログラムを作成せよ。
例・ 値段は?→9800 (入力➀)
お預かりは?→10000 (入力➁)
お釣りは以下です。 (以下、表示される)
\100:2枚
例2・ 値段は?→1111
お預かりは?→10000
お釣りは以下です。
\5000:1枚 \1000:3枚 \500:1枚 \100:3枚 \50:1枚 \10:3枚 \5:1枚 \1:4枚
0576デフォルトの名無しさん
2009/09/30(水) 22:32:54#include<stdio.h>
void turi(long value, long unit, long foo){
if(unit<=0) return;
if(value/unit) printf("\\%ld:%ld枚 ", unit, value/unit);
turi(value%unit, unit/foo, (foo==2)?5:2);
}
int main(void){
long price, payment;
printf("値段は?");
scanf("%ld", &price);
printf("お預かりは?");
scanf("%ld", &payment);
if(payment>price){
printf("\nお釣りは以下です。\n");
turi(payment-price, 10000, 2);
}
if(payment==price) printf("\nお釣りはありません\n");
if(payment<price) printf("\n足りない\n");
return 0;
}
0577571
2009/09/30(水) 22:37:00これで最後ですので、どうかよろしくお願いします。
正の整数を入力すると、それをローマ字数字で表示するプログラムを作りなさい。
例: 1 I
4 IIII
5 V
9 VIIII
12 XII
46 XXXXVI
73 LXXIII
111 CXI
378 CCCLXXVIII
521 DXXI
1001 MI
0578デフォルトの名無しさん
2009/09/30(水) 22:39:09なので誰か解いてもらえないですか?
TY高速鉄道の運賃は、乗車する距離に応じて
値段が異なります。
1− 3キロ 200円
4− 5キロ 280円
6− 7キロ 350円
8− 9キロ 420円
10−11キロ 490円
12−14キロ 550円
15−17キロ 610円
(1キロ未満のは数は、1キロに切り上げます)
です
「引数」は「無し」
「戻り値」は「運賃」の関数
keisan3()
により、関数keisan3()内で乗車距離を
キーボード入力させ、main()関数内で、
運賃をprintf表示するプログラムを作成せよ。
なお、17キロより大きい値や、0キロ以下の数値の
キーボード入力をした場合、もう一度、乗車距離の
キーボード入力をやり直しさせるようにプログラム
すること。
[注意事項]
・乗車距離は double でキーボード入力できるものとする。
・運賃は main() 関数 内でprintf表示してください。
・運賃は整数とします。
・乗車距離に対する運賃の計算は if, else if 文により実現すること。
・キーボード入力のやり直しの箇所は、自分の創意工夫により
考えてみること。(ヒント:do while を使う)
お願いします
0579デフォルトの名無しさん
2009/09/30(水) 22:40:11失せろゴミ
0580デフォルトの名無しさん
2009/09/30(水) 22:41:310581デフォルトの名無しさん
2009/09/30(水) 22:47:120582デフォルトの名無しさん
2009/09/30(水) 22:47:13難しいと素直に言って、助けてもらう事の何が悪いんですか?
簡単に人の事を貶めるのは、あまり褒められた事ではないと思いますよ。
0583デフォルトの名無しさん
2009/09/30(水) 22:48:27#include<stdio.h>
void turi(long value, long unit, long foo, const char *bar){
int i;
if(unit<=0) return;
if(value/unit){
for(i=value/unit;i;i--) printf("%c", *bar);
}
turi(value%unit, unit/foo, (foo==2)?5:2, bar+1);
}
int main(void){
long value;
scanf("%ld", &value);
turi(value, 1000, 2, "MDCLXVI");
return 0;
}
0584571
2009/09/30(水) 22:53:53今日教えていただいた事は、しっかりと勉強して今後の役に立てたいと思います。
本当にありがとうございました。
0585デフォルトの名無しさん
2009/09/30(水) 22:54:12時間は有限です
屑にとっても優秀な人にとってもそれは変わりありません
あなたのような屑がいかに時間を使おうとなんの問題もありません
しかしあなたに質問された人の時間はそうではありません
他人の足を引っ張る前にまず自分で解決するために努力してください
0586デフォルトの名無しさん
2009/09/30(水) 22:56:01こんな問題の何がわからないのかがわからない
#include <stdio.h>
int keisan3(void) {
double d;
do {
printf("input distance >> "); scanf("%lf", &d);
} while (d <= 0 || d > 17);
if (d < 4) return 200; if (d < 6) return 280; if (d < 8) return 350;
if (d < 10) return 420; if (d < 12) return 490; if (d < 15) return 550;
return 610;
}
int main(void) { printf("UnChin: %d yen.\n", keisan3()); return 0; }
0587デフォルトの名無しさん
2009/09/30(水) 22:59:200588デフォルトの名無しさん
2009/09/30(水) 23:02:57#include<stdio.h>
#include<math.h>
long keisan3(){
long price_list[]={200, 280, 350, 420, 490, 550, 610};
long distance_list[]={3, 5, 7, 9, 11, 14, 17};
long i_distance;
static double distance=0.0;
int i;
printf("\n乗車距離を入力してください ");
scanf("%lf", &distance);
if(distance<=0.0 || distance>17.0){
printf("\n範囲外です\n");
keisan3();
}
i_distance=ceil(distance);
for(i=0;i<sizeof(price_list)/sizeof(price_list[0]);i++)
{
if(i_distance<=distance_list[i]) return price_list[i];
}
return -1;
}
int main(void){
printf("%ld円", keisan3());
return 0;
}
0589デフォルトの名無しさん
2009/09/30(水) 23:09:58#include <stdio.h>
#define _
int keisan3(void)
{
for(;_;)
{
char buf[256] = { 0 };
double d = 0;
printf("乗車距離を入力してください: ");
fgets(buf, sizeof(buf), stdin);
if(sscanf(buf, "%lf", &d) == 1)
{
if(d > 0.0 && d <= 3.0) return 200;
else if(d > 3.0 && d <= 5.0) return 280;
else if(d > 5.0 && d <= 7.0) return 350;
else if(d > 7.0 && d <= 9.0) return 420;
else if(d > 9.0 && d <= 11.0) return 490;
else if(d > 11.0 && d <= 14.0) return 550;
else if(d > 14.0 && d <= 17.0) return 610;
}
puts("0より大きく17以下の数値を入力してください。");
}
}
int main(void)
{
printf("運賃=%d\n", keisan3());
return 0;
}
0590デフォルトの名無しさん
2009/09/30(水) 23:11:09turiの中身を見ないまま、適当にprintf("¥n"); を追加して
見栄えを良くしようとしたら、
リカーシブしてるために変なところで改行しまくって吹いた。
0591デフォルトの名無しさん
2009/09/30(水) 23:11:12[2] 問題文(含コード&リンク):半径rの3次元の球状にランダムにn個の点を置くにはどうしたらいいですか?
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: c++
[4] 期限:なるべく早めにお願いします
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0592デフォルトの名無しさん
2009/09/30(水) 23:16:36#include<cstdlib>
double uniformed_rand(void)
{
return (rand()+1.0)/RAND_MAX;
}
int main(void){
long n=100;
double r=1.0;
for(n=0;n<100;)
{
double x=(uniformed_rand()*2-1)*r;
double y=(uniformed_rand()*2-1)*r;
double z=(uniformed_rand()*2-1)*r;
if(x*x+y*y+z*z<r*r) n++;
}
return 0;
}
0593デフォルトの名無しさん
2009/09/30(水) 23:29:03キレイで気に入りました。
distance_listで17を定義しているのに、
if(distance<=0.0 || distance>17.0)でハードコードしているのは残念です。
0595デフォルトの名無しさん
2009/09/30(水) 23:40:510596デフォルトの名無しさん
2009/09/30(水) 23:47:56[2]
N-Queen問題の解答の列挙をするプログラム
回転/鏡映で一致する複数の解は一個のみ出力すること
Nはコマンドラインで与える。(N>=3)
N-Queen問題:N個のチェスのQueenをNxNのマス目の上に並べる
横、縦、斜め(一般には二方向)のマスにはほかのQueenがあっては
ならない。
[3] Linux /GCC 4.0 /C
[4] 9/30まで
0597デフォルトの名無しさん
2009/10/01(木) 00:15:33期限切れ12分前に書き込むとはなかなかやるな
0598デフォルトの名無しさん
2009/10/01(木) 01:02:02コケてはならないなんてのは要求にない
0599デフォルトの名無しさん
2009/10/01(木) 02:13:48以下の問題で激しく悩んでいます。
[1] 授業単元:データ解析
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9962.zip
[3] 環境
[3.1] OS: Windows, (Linux)
[3.2] コンパイラ名とバージョン: GCC, VCも可
[3.3] 言語:C++
[4] 期限: 10/4
[5] その他の制限:AVL木についての詳細(お借りします)↓
http://lecture.ecc.u-tokyo.ac.jp/~yamaguch/pub/cp2-10/what-is-search-avl.html
0600デフォルトの名無しさん
2009/10/01(木) 03:01:52お役人じゃないんだから…
0601デフォルトの名無しさん
2009/10/01(木) 04:24:180602デフォルトの名無しさん
2009/10/01(木) 04:52:45ファイルに出力したいんですが最後の値しか反映されません
またx,y,zを配列にしたら値がものすごく小さくなります(x、y、zの後ろに[ ]をつけただけ)
for(n=0;n<100;)
{
x=(uniformed_rand()*2-1)*r;
y=(uniformed_rand()*2-1)*r;
z=(uniformed_rand()*2-1)*r;
if(x*x+y*y+z*z<r*r) n++;
std::cout << x << " " << y << " " << z<< std::endl;
std::ofstream randout("rand.dat");
randout << x <<" "<<y<<" "<<z<<std::endl;
}
0603デフォルトの名無しさん
2009/10/01(木) 05:38:21毎回ファイルを開いちゃダメだろ
0604デフォルトの名無しさん
2009/10/01(木) 09:51:46数字以外が入力されたときの対応は次の宿題かもしれない
0605デフォルトの名無しさん
2009/10/01(木) 10:30:28課題に書かれていないことをすると「習ってないから(ry」ってなる
0606デフォルトの名無しさん
2009/10/01(木) 11:17:19書いてないならやってもいい程度でいいだろ。
お役所仕事?元々丸投げすること自体悪いんだろ。文句言うな。
0607デフォルトの名無しさん
2009/10/01(木) 18:46:48if が成立したときだけファイルに書き込まないとダメだよ
0608デフォルトの名無しさん
2009/10/01(木) 19:11:440609デフォルトの名無しさん
2009/10/01(木) 20:17:30[2] 問題文(含コード&リンク):イテレーターを使ってルンゲクッタ法を解く
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C++
[4] 期限: 可能ならば今日中
[5] その他の制限: イテレーターの理解がいまいちです。
0610デフォルトの名無しさん
2009/10/02(金) 12:07:22[2] 問題文
課題文1
1990年比 温室効果ガス排出量を25%削減する事を目標とするとする。
以下は1990年の排出量を入力すると目標値を計算するプログラムであるが
正しく動かない。正しく動くよう修正せよ。
#include <stdio.h>
int main()
{double co2_amount_in_1990;
double co2_amount_target;
puts("1990年時の温室効果ガス排出量は何トン?");
scanf("%lf",&co2_amount_in_1990);
co2_amount_target=((100-25)/100)*co2_amount_in_1990;
printf("目標値は %f トンです",co2_amount_target);
}
課題文2
消費税を5%とする。 2個の物を買うときに一緒に買う場合と,
別々に会計をする場合と 消費税の1円未満の切り捨てにより、値段が
変わることがある。 例: 税抜き価格 30円の物と50円の物を一緒に買うと、84円だが、
別々に会計すると、31円+52円=83円となる。)
2個の物の税抜き価格をそれぞれ入力して、 一緒に買う場合と、別々に会計をする場合の税込み合計価格を
表示するプログラムを作成せよ。
[3] 環境
Windows,
言語:C++
[4] 期限: 10/8
よろしくお願いします!
0611デフォルトの名無しさん
2009/10/02(金) 13:07:580612デフォルトの名無しさん
2009/10/02(金) 13:23:50(100-25)/100
を
0.75
にすればいい
0613デフォルトの名無しさん
2009/10/02(金) 15:05:09課題文2
#include <stdio.h>
int main(void)
{
int a, b;
scanf("%d", &a);
scanf("%d", &b);
printf("一緒に買った場合:%d円\n", (int)((a+b)*1.05));
printf("別々に買った場合:%d円\n", (int)(a*1.05)+(int)(b*1.05));
return 0;
}
0614デフォルトの名無しさん
2009/10/02(金) 15:23:120615デフォルトの名無しさん
2009/10/03(土) 06:57:45[2] 問題文(含コード&リンク):
ソートされた2つの配列A[N], B[N]が与えられる。
AとBのそれぞれの要素を足して得られる、長さN*Nの配列、すなわち
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
C[i * N + j] = A[i] + B[j];
のC[]をソートした配列を、
およそN*Nに比例する時間で得るプログラムを作成せよ。
ただし、Nは4000以下、A[], B[]の要素は絶対値が2の28乗以下の整数であるとしてよい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 無期限
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ややこしくてなかなかできません・・・・・・
あと、N*Nに比例する時間っていうのもイマイチわかりません・・・・・・
0616デフォルトの名無しさん
2009/10/03(土) 07:20:17O(N^2)ってこととでしょ。
むしろ、その辺は授業で聞いてないと…って、授業に出てないからか。
0617デフォルトの名無しさん
2009/10/03(土) 07:21:360619デフォルトの名無しさん
2009/10/03(土) 07:27:530620デフォルトの名無しさん
2009/10/03(土) 07:31:02いや、バブルソートだとO(N*N*N*N)じゃね?
バケットソートで扱うには、要素の定義域が広すぎるような気がする。
ほかにO(n)のソートってあったっけ?
0621デフォルトの名無しさん
2009/10/03(土) 07:32:19O(n)じゃなくて良いのかな?
0622デフォルトの名無しさん
2009/10/03(土) 07:33:230623デフォルトの名無しさん
2009/10/03(土) 07:35:20言いたいことが分からないが、Cの長さN*N=nで、
O(n)のソートを適用しろと言う課題じゃないの?
0624デフォルトの名無しさん
2009/10/03(土) 07:35:46for(n=0; n<4000; n++) kosu[C[n]]++;
for(n=0; n<(1<<29); n++) if(kosu[n]) print(n, kosu[n]);
0625デフォルトの名無しさん
2009/10/03(土) 07:38:080626デフォルトの名無しさん
2009/10/03(土) 07:39:47N>=4000って言ってるから、charでは収まらないのでは?最大数はN*Nだhし。
0627デフォルトの名無しさん
2009/10/03(土) 07:40:350628デフォルトの名無しさん
2009/10/03(土) 07:41:56逆か、N<=4000
それにしても、最大16000000個のデータが同じ値に。
0629デフォルトの名無しさん
2009/10/03(土) 07:44:18for(n=0; n<N; n++) kosu[C[n]]++;
for(n=0; n<(1<<29); n++) printout( n, N * kosu[n] );
0630デフォルトの名無しさん
2009/10/03(土) 07:48:430631デフォルトの名無しさん
2009/10/03(土) 08:01:200632デフォルトの名無しさん
2009/10/03(土) 08:03:08最大4000個だろ。はじめのN個ソートすれば十分。
0633デフォルトの名無しさん
2009/10/03(土) 08:04:34mx[C[n]]++;
にしたらOK
0634デフォルトの名無しさん
2009/10/03(土) 08:11:32count_num(int n) {
for(i=0; i<tourokusu; i++) if(num[i]==n)break;
if( i >= tourokusu) { num[i]=n; cnt[i]=0; tourokusu++; }
cnt[i]++; }
for( n=0; n<N; n++) count_num(C[n]);
for(n=0; n<tourokusu; n++) printout( n, N * kosu[n] );
でおけ
0635デフォルトの名無しさん
2009/10/03(土) 08:15:39たとえば、
a[]={1,2,3};
b[]={1,2,3};
としたら、
c[]={2,3,4,3,4,5,4,5,6,}
で、N=3だけど、最初のNだけソートしてもダメじゃね?
0636デフォルトの名無しさん
2009/10/03(土) 08:20:380637デフォルトの名無しさん
2009/10/03(土) 08:23:10必要なメモリ量がすごいことになりそうだが。
0638デフォルトの名無しさん
2009/10/03(土) 08:24:17コストはよくわからないが。
0639デフォルトの名無しさん
2009/10/03(土) 09:03:04ソート済みの2配列を足しこんで、なおかつソートしたものをどうやって得るか。
A[i]+B[j]を選択的に出力するいい方法って無いもんかね?
0640デフォルトの名無しさん
2009/10/03(土) 11:25:00バブルソートは O(N*N)
だから要素数が 2N になっても O(2N*2N)→O(N*N) だよ
0641デフォルトの名無しさん
2009/10/03(土) 11:33:07>>635
N=3なら、cのサイズは9
cのサイズN*N=nに対して、バブルソートのコストはO(n*n)=O(N*N*N*N)
0642デフォルトの名無しさん
2009/10/03(土) 11:35:57ごめん、問題をよく読むべきだったな
0643デフォルトの名無しさん
2009/10/03(土) 11:37:34AとBからCを作るコストも考えるとすると、そのコストがソートに対して無視してよいほど小さいと言えなくてはいけないのだろうか。
0644デフォルトの名無しさん
2009/10/03(土) 12:08:44A+B→CもO(N*N)だから、気にしなくて良いのか。
064571
2009/10/03(土) 13:46:08[2] 問題文:
問題1
整数nを引数とし、n以下の正の奇数の総和を返す関数sum_odd(int n)と、n以下の正の偶数を返す関数sum_even(int n)を定義し、
これらを利用してキーボードから入力した正の整数nに対し、n以下の正の奇数、および偶数の総和をそれぞれ計算して表示するプログラムを作成せよ。
{出力例}
正の整数を入力してください:10
10以下の奇数の和は25です
10以下の偶数の和は30です
問題2
抵抗値がR1、R2、……、Rn(Ω)のn個の抵抗を並列接続した場合の合成抵抗値は、
それぞれの抵抗値の逆数の総和の逆数、すなわち
R = 1 / (1 /R1 + 1 /R2 + … + 1 /Rn)
となる。
実数型配列r[]とその要素数noを引数とし、r[]に格納した抵抗値から並列接続時の合成抵抗を上記の式を用いて計算して結果
を返す関数R_parallel(double r[], int no)を定義し、これを利用して任意の個数(個数は適当に決めてよい)の抵抗の並列接続時の合成抵抗を求めるプログラムを作成せよ。
{出力例}3個の抵抗の場合
抵抗1の抵抗値は:3
抵抗2の抵抗値は:4
抵抗3の抵抗値は:5
並列接続時の合成抵抗値は1.276596オームです
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限:10月5日9時まで
お願いします。
0646デフォルトの名無しさん
2009/10/03(土) 13:59:33ひとんちのコード丸パクリだけど、基数そーと
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9963.c
0647デフォルトの名無しさん
2009/10/03(土) 14:32:34[2] 問題文(含コード&リンク): キーボードから文字列を読み込んで、読み込んだ文字列が逆から読んでも同じ(回文のようなもの)文字列かどうかを判定するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows Xp (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C++
[4] 期限:なるべく早いほうがいいです。
[5] その他の制限:
0648デフォルトの名無しさん
2009/10/03(土) 15:09:46当方の環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
http://codepad.org/bTY8JRhu
日本語には対応していません。
0649デフォルトの名無しさん
2009/10/03(土) 15:35:45"要素は絶対値が2の28乗以下の整数"ってことはs=A[x]+B[y]は32ビット整数に収まるってことだよね?
そしたら カウンタ[4294967296] を用意して、++カウンタ[s] で何個あるか調べれば
ソートした配列をおよそN*Nに比例する時間で得られると思われ
0650デフォルトの名無しさん
2009/10/03(土) 15:37:53自分でこんなのを作っていたんですが、どうして動かなかったのか気になってしまって・・・
もしよかったら教えていただけませんか??
#include<stdio.h>
int main(void)
{
char str[50];
scanf("%s",str);
printf("%s",str);
int a,b,c,d;
for(a=0;str[a]!=0;++a);/*aの定義*/
for(b=0;(a-b)!=0;++b)/*bの定義*/
{
printf("%c",str[a-b-1]);
}
{
c=str[a];
d=str[a-b-1];
}
if(c==d) /*逆から読んでも同じ単語になる*/
{
printf("\n->yes\n");
}
else /*そうでない場合*/
{
printf("\n->no\n");
}
}
0651デフォルトの名無しさん
2009/10/03(土) 15:44:46当方の環境は WindowsXP, 処理系は cygwin(gcc 3.4.4) です。
問題1:http://codepad.org/yXfkMKNA
問題2:http://codepad.org/KWbLjyu7
0652デフォルトの名無しさん
2009/10/03(土) 16:26:15一回しか判定してない上、文字列の範囲外を比べてるからだろw
0653デフォルトの名無しさん
2009/10/04(日) 04:10:21メモリが爆発した
0654デフォルトの名無しさん
2009/10/04(日) 05:28:43>>629
0655デフォルトの名無しさん
2009/10/04(日) 06:00:38N*N回ループ
C[index[i]]でいちばん小さい物を取得
index[i]をカウントアップ
という流れでできるんじゃないかな
0656デフォルトの名無しさん
2009/10/04(日) 06:01:28スマソ
0657デフォルトの名無しさん
2009/10/04(日) 06:17:280658デフォルトの名無しさん
2009/10/04(日) 22:37:33[2] 関数(非回帰)
キーボードから自然数を入力し1からその自然数までの
二乗和を求めるプログラムを作成しなさい。
ただし二乗和を求める部分は関数(関数名をsqrsumとする)にすること。
[実行例]
自然数を入力して下さい. ←自然数の入力をうながすメッセージを表示
10 ←自然数を入力してEnter
1から10までの自然数の二乗和は371です. ←計算結果を表示する
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] C言語
[4] 期限:できれば明日の10時まで
よろしくお願いします!!
0659デフォルトの名無しさん
2009/10/04(日) 23:08:032乗和の定義を教えてください。
入力が 3 ならば
1 * 1 + 2 * 2 + 3 * 3 = 14
と考えていいのでしょうか。
この考え方から行くと 1 から 10 までの二乗和は 385 になるのですが。
こちらの環境は WindowsXP、処理系は cygwin(gcc 3.4.4)です。
http://codepad.org/FBZUlLYR
0660デフォルトの名無しさん
2009/10/04(日) 23:08:221から10までの2乗和は385だよな?
#include <stdio.h>
int sqrsum(int n)
{
int i, sum = 0;
for (i = 1; i <= n; i++)
sum += i * i;
return sum;
}
int main()
{
int n;
printf("自然数を入力して下さい. \n");
scanf("%d", &n);
printf("1から%dまでの自然数の二乗和は%dです. \n", n, sqrsum(n));
return 0;
}
0661デフォルトの名無しさん
2009/10/04(日) 23:11:04は C[] を作ってないから木がつかんかった...
>653
そーゆー時は、カウンタ配列を5000個くらい用意して数えるのを場合分けすればいいんじゃね?
0662661
2009/10/04(日) 23:17:59> for(n=0; n<(1<<29); n++) printout( n, N * kosu[n] );
の意味が和姦ねw
整数n と カウンタをN倍 すると何がどーなるって?
0663デフォルトの名無しさん
2009/10/04(日) 23:25:35int sqrsum(int n)
{
return n*(n+1)*(2*n+1)/6;
}
こうなるな
0664デフォルトの名無しさん
2009/10/04(日) 23:32:19説明不足ですみませんでした。。
(1の二乗+2の二乗+3の二乗…)でお願いします!
あと関数(非回帰)と書いてしまいましたが
関数(非再帰)の間違いです。
すみません。
0665デフォルトの名無しさん
2009/10/04(日) 23:37:20385でした。。
0666デフォルトの名無しさん
2009/10/04(日) 23:46:23たまに回帰と言うこともあるが、まあ、再帰か。どのみち訳語だけど。
0667デフォルトの名無しさん
2009/10/04(日) 23:59:42[1] C言語とアルゴリズム
[2] 関数(関数の再利用)
キーボードから2つの自然数を入力し、小さい自然数から大きい自然数までの二乗和を
求めるプログラムを作成。ただし小さい自然数から大きい自然数までの二乗和を求める関数
(関数名をsqrsum2とする)を新たに作成し、前に作成したsqrsum関数をsqrsum2関数から呼び出して
再利用すること。なおmain関数からはsqrsum2関数だけで呼び出すプログラムにしなさい。
また実行例のように2つの自然数の入力順序に依存しないようにすること。
[実行例�@]
2つの自然数を入力して下さい. ←自然数の入力をうながすメッセージを表示
4 10 ←自然数2つを入力してEnter
4から10までの自然数の二乗和は371です. ←計算結果を表示する
[実行例�A]
2つの自然数を入力して下さい. ←自然数の入力をうながすメッセージを表示
10 4 ←自然数2つを入力してEnter
4から10までの自然数の二乗和は371です. ←計算結果を表示する
[実行例�B]
2つの自然数を入力して下さい. ←自然数の入力をうながすメッセージを表示
1 10 ←自然数2つを入力してEnter
1から10までの自然数の二乗和は385です. ←計算結果を表示する
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] C言語
[4] 期限:明日の10時まで
何度もすみません。
よろしくお願いします!!
0668デフォルトの名無しさん
2009/10/05(月) 00:19:09{
if(num1>num2)
return sqrsum(num1)-sqrsum(num2);
return sqrsum(num2)-sqrsum(num1);
}
0669デフォルトの名無しさん
2009/10/05(月) 00:26:36元のプログラムが少し長いので、可能な方はメールにてお知らせいただければ、
問題文を添付させていただきたいと思っています。
よろしくお願い致します。
0670デフォルトの名無しさん
2009/10/05(月) 03:05:34面白いジョークだw
0671デフォルトの名無しさん
2009/10/05(月) 03:11:03>>1
なお、一般にVBのコードをgeneric-Cに置き換えるのは難しいし
推奨出来ない。
処理系依存な話になる(Windows特化とか)
0672デフォルトの名無しさん
2009/10/05(月) 03:14:16希望通り動作してるなら書き換えなくてもいいんじゃない?
どうしても処理速度が気に入らないならPCをハイスペックにするとかw
0673デフォルトの名無しさん
2009/10/05(月) 03:19:31#include <stdio.h>
int sqrsum(int n)
{
int i, sum = 0;
for(i=1; i<=n; i++) sum += i * i;
return sum;
}
int sqrsum2(int a, int b)
{
return sqrsum(b) - sqrsum(a-1);
}
int main(void)
{
int a, b;
printf("2つの自然数を入力して下さい.\n");
scanf("%d%d", &a, &b);
if(a > b) {
int temp = a;
a = b;
b = temp;
}
printf("%dから%dまでの自然数の二乗和は%dです.\n", a, b, sqrsum2(a,b));
return 0;
}
0674デフォルトの名無しさん
2009/10/05(月) 10:17:50問題文中のパート1と(g)で苦戦しています。
前述のパート2・3は自力でなんとか終えました。
[1] 授業単元:データ解析
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9964.zip
[3] 環境
[3.1] OS: Windows, (Linux)
[3.2] コンパイラ名とバージョン: GCC, VCも可
[3.3] 言語:C++
[4] 期限: 10/6
[5] その他の制限:AVL木についての詳細(お借りします)↓
http://lecture.ecc.u-tokyo.ac.jp/~yamaguch/pub/cp2-10/what-is-search-avl.html
宜しくお願いします。
0675デフォルトの名無しさん
2009/10/05(月) 10:36:11そんな宿題があるかよ。仕事または作業を注文する所ではない。金はらって他所でやれ。
0676デフォルトの名無しさん
2009/10/05(月) 16:35:56[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9965.txt
[3] 環境
[3.1] OS: Windows vista
[3.2] Visual C++ 2008
[3.3] 言語: C言語
[4] 期限: 2009年10月9日
[5] その他の制限: 問題文に従ってくれれば。
お願いします〜
0677デフォルトの名無しさん
2009/10/05(月) 19:58:53全然Visual Basicじゃない、Quick BasicのコードにSub〜End Sub付けただけ。
しかも識別子も処理フローもスパゲッティー。
リファクタリングは諦めて、コードーのトランスレートに努めた。
以下、グローバルにせざるを得なかった変数たち。
int n = 5;
int m = 5;
double fpr = 0.0;
int ot[100][20], rt[100][20], ro[100], fo[100];
int js[20][100], fj[20], tt[20], lj[20];
int wjs[20][100];
int wq[20][100], wj[20];
int tot[100], njs[100];
int otn[100][20], nrt[100][20], nro[100], nlj[20];
int joft[100];
int mjs[20][100];
int sgm[100], phi[100], bn[100];
int tet_, mtet_;
int i_, j_, je_, j1_, j_, k_, kk_, kq_;
int ineh_, ii_, jn_, mn_;
int mast_, sgmast_, nbn_, wjn_, wrk_, wtt_, rnd2_;
double Sum_, rnd1_, rndf_;
疲れたよ。
0678デフォルトの名無しさん
2009/10/05(月) 20:01:37なんでここに書いてんの?
0679デフォルトの名無しさん
2009/10/05(月) 20:29:38http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9967.txt
0680デフォルトの名無しさん
2009/10/05(月) 20:30:54酷さをみんなに知ってもらうため。
0681デフォルトの名無しさん
2009/10/05(月) 20:33:43おつかれさま
0682デフォルトの名無しさん
2009/10/05(月) 20:53:28分かるよなぁ…
正直、受ける人が出るとは思わなかった
0683デフォルトの名無しさん
2009/10/05(月) 21:01:13私の環境は Windows XP, 処理系は cygwin(gcc 4.3.2) です。
http://codepad.org/taGTbAUk
出力ファイルのフォーマットは与えられたプログラムに従いました。
0684683
2009/10/05(月) 21:02:370685デフォルトの名無しさん
2009/10/05(月) 22:09:260686デフォルトの名無しさん
2009/10/05(月) 22:13:44皆0点だったとしたら、‥‥‥、なるほどそうですね。
0687デフォルトの名無しさん
2009/10/05(月) 22:53:41明日から新しい範囲に入るけど先週復習みたいな感じでこれをやったんですが、これ分かる人教えてくれませんか。
whileとかあまり(%)とかを使うらしいんですが。
#include <iostream>
using namespace std;
int main() {
int num;
cout << "数字を入力してください"\n
cin >> num;
0688デフォルトの名無しさん
2009/10/05(月) 23:05:110689デフォルトの名無しさん
2009/10/05(月) 23:25:430690デフォルトの名無しさん
2009/10/05(月) 23:29:28#include <iostream>
using namespace std;
void print(int n, int b) {
if (n/b) print(n/b, b);
cout << (char)('0'+n%b);
}
int main() {
int num;
cout << "数字を入力してください\n";
cin >> num;
print(num, 2); cout << "\n";
print(num, 4); cout << "\n";
print(num, 8); cout << "\n";
return 0;
}
0691デフォルトの名無しさん
2009/10/05(月) 23:39:36構造体に全部入れてそのポインタを持ち回るか
C++ならクラスにすればいい
グローバル変数は嫌だあ(>_<)
0692デフォルトの名無しさん
2009/10/05(月) 23:39:40#include <iostream>
using namespace std;
int main() {
return 0;
}
これの中にwhileとかあまりを使っていくみたいなんですが、それが分かりません
0693デフォルトの名無しさん
2009/10/05(月) 23:51:102で割った物を2で割ったあまりが二桁目です
0694デフォルトの名無しさん
2009/10/06(火) 08:54:26[2] 問題文(含コード&リンク):
二次関数方程式 ax^2+bx+c=0 の係数a,b,cを入力し、答えを表示する関数 Quadratic を作りなさい。その関数を呼び出すmain 関数も作り、動作を確認しなさい。
関数型はintとする。パラメータの型は、int および double とする。
機能 2次方程式の解を求める(表示しない)
グローバル変数X1、X2に求めた答えを代入する
入力 a,b,c ax^2+bx+c=0 の係数
関数値 解の数、0なら係数 a が0、−1なら虚数解
aが0のとき、虚数解、重根のときはmain関数でメッセージを表示する。
sqrt()で平方根を求める(math.hをインクルードすること)
[3] 環境
[3.1] OS: Windows XP
[3.2] Micro Soft Visual C++ 2005
[3.3] 言語: C++言語
[4] 期限: 2009年10月9日
[5] 制限は特にありません。
すみませんが、よろしくお願いします。
0695デフォルトの名無しさん
2009/10/06(火) 09:40:13#include <math.h>
double X1, X2;
int Quadratic(double a, double b, double c)
{
double d = b * b - 4 * a * c;
if(a == 0) return 0;
if(d < 0) return -1;
if(d == 0) {
X1 = -b / (2 * a);
return 1;
}
X1 = (-b + sqrt(d)) / (2 * a);
X2 = (-b - sqrt(d)) / (2 * a);
return 2;
}
int main(void)
{
int n;
double a, b, c;
scanf("%lf%lf%lf", &a, &b, &c);
n = Quadratic(a, b, c);
if(n==-1) printf("虚数解です\n");
else if(n==0) printf("a=0です\n");
else if(n==1) printf("重解%.2fです\n", X1);
else printf("解は%.2f,%.2fです\n", X1, X2);
return 0;
}
0696デフォルトの名無しさん
2009/10/06(火) 19:26:17[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9968.txt
[3] 環境
[3.1] OS: Windows vista
[3.2] Microsoft Visual Studio 2008
[3.3] 言語: C
[4] 期限: 2009年10月7日
[5] 二次元変数とforループを使用
お願いします。
0697デフォルトの名無しさん
2009/10/06(火) 19:28:070698デフォルトの名無しさん
2009/10/06(火) 21:11:24私の環境は WindowsXP, 処理系は cygwin(gcc 4.3.2) です。
1:http://codepad.org/0mxu3Tvp
2:http://codepad.org/yJmq3nyq
3はどなたかお願いいたします。
0699デフォルトの名無しさん
2009/10/07(水) 08:52:33有難うございました。
0700デフォルトの名無しさん
2009/10/07(水) 10:28:03[2] 問題文(含コード&リンク):
stdio.hだけをincludeした状態で平方根を求める方法をかけ
[3] 環境
[3.1] OS: Windows vista
[3.2] Microsoft Visual Studio
[3.3] 言語: C
[4] 期限: 2009年10月7日
[5] math.hを使わずにやれということみたいです。
お願いします。
0701デフォルトの名無しさん
2009/10/07(水) 11:27:26桁数の制限はないの
小数1桁ぐらいならすぐできそう
0702デフォルトの名無しさん
2009/10/07(水) 13:30:29ヤなこったw
0703デフォルトの名無しさん
2009/10/07(水) 14:03:36動くような気がしてやってみたけど、提出はしない方が良い。
http://codepad.org/E2tw1ZoM
0704デフォルトの名無しさん
2009/10/07(水) 16:14:00提出しても問題はないと思う。
#include <stdio.h>
#define D 1.0e-8
int main(void)
{
double c = 2.0, x = 0.0;
while ((x * x > c && x * x - c > D) || (x * x < c && c - x * x > D)) x += D;
printf("sqrt(%f) = %f\n", c, x);
return 0;
}
0705デフォルトの名無しさん
2009/10/07(水) 17:40:55つ ニュートン法
0706デフォルトの名無しさん
2009/10/07(水) 18:28:09私の環境は Windows XP、処理系は cygwin(gcc 4.3.2) です。
http://codepad.org/lqRlCcaP
由緒正しき開平法で処理しています。#define M で小数点以下何桁まで求めるかを定義しています。ただし M はあまり大きくできません。
0707デフォルトの名無しさん
2009/10/08(木) 02:11:19どうせ性格も顔も悪いんだろ?ほれ、メガネデヴピッツァってやつぅ?
AAでもあるよね?ぷぅ〜んぷぅ〜んと臭そうな臭いを発して
PCの前でムキになって書き込みをしているあれ。お前らそっくりなんだろ?w
0708デフォルトの名無しさん
2009/10/08(木) 02:51:480709デフォルトの名無しさん
2009/10/08(木) 07:36:210710デフォルトの名無しさん
2009/10/08(木) 08:41:170711デフォルトの名無しさん
2009/10/08(木) 09:19:13どうした、いきなり?
>>710
ttp://www.bohyoh.com/CandCPP/C/Library/fgetc.html
必要に応じてキャストすりゃええがな
0712デフォルトの名無しさん
2009/10/08(木) 09:20:530713デフォルトの名無しさん
2009/10/08(木) 13:22:590714デフォルトの名無しさん
2009/10/08(木) 17:19:04>>683
遅くなってしまいましたが
ありがとうございました!
0715デフォルトの名無しさん
2009/10/08(木) 17:23:27[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9970.txt
問題の内容はテキスト内に書きました。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:10/16
[5] その他の制限:簡単なコードでお願いします
0716710
2009/10/08(木) 18:39:25char で受けると、EOF とデータとしての 0xff を区別できなくなるのでは?
ということを懇々と複数(だと思います。)の人間が丁寧に説明にまわっても、>>707 のように暴れだす、という人が過去に存在していました。
今も健在だと、悲しいのですが。
0717デフォルトの名無しさん
2009/10/08(木) 19:17:010718デフォルトの名無しさん
2009/10/08(木) 19:19:22>>707を知っている古株?自分がそうですって自己紹介しちゃっているようなもんだよ?w
>>716
> streamが指す入力ストリームから次の文字(もし存在すれば)を
> unsigned char型の値として読み取り、int型に変換する。
これが理解できないなら二度とプログラミングなんてしない方が良いよw
0719デフォルトの名無しさん
2009/10/08(木) 19:19:530720デフォルトの名無しさん
2009/10/08(木) 19:24:20では、そいつが書いたそのコードを提示してくれ。
俺はfgetcの戻り値をcharにそのまま代入したコードを書いた覚えはない。
キモメンメガネデヴピッツァ(2ちゃんの他でも見かける言葉、お前ら自身に自覚している心当たりあり?)を
↓を参考にここの連中のことを勝手なイメージで呼んだだけだが?w
ttp://dokoaa.com/ota.html
0721デフォルトの名無しさん
2009/10/08(木) 19:26:220722デフォルトの名無しさん
2009/10/08(木) 19:28:13自分が該当するからって悪く言われたと勘違いして、釣られてしまい
相手が自分が勘違いした奴だと思ってまた必死に弁明を始めているんですね?w
みっともない、プログラマーらしからぬ態度だことw
俺はfgetcすら滅多に使わないのだがw
0723デフォルトの名無しさん
2009/10/08(木) 19:32:140724デフォルトの名無しさん
2009/10/08(木) 19:36:21やーいやーい、妄想やろうw
そうやって見えない敵をいつまでも煽ってろよw
こっちは痛くも痒くもありましぇ〜ん、けど
そんな屁たれコードも書きませんよw
0725デフォルトの名無しさん
2009/10/08(木) 19:41:000726何を、誰と勘違いしたのか自分がデヴピッツァのようですw
2009/10/08(木) 19:45:25>>711
char で受けると、EOF とデータとしての 0xff を区別できなくなるのでは?
char で受けると、EOF とデータとしての 0xff を区別できなくなるのでは?
char で受けると、EOF とデータとしての 0xff を区別できなくなるのでは?
char で受けると、EOF とデータとしての 0xff を区別できなくなるのでは?
ということを懇々と複数(だと思います。)の人間が丁寧に説明にまわっても、>>707 のように暴れだす、という人が過去に存在していました。
ということを懇々と複数(だと思います。)の人間が丁寧に説明にまわっても、>>707 のように暴れだす、という人が過去に存在していました。
ということを懇々と複数(だと思います。)の人間が丁寧に説明にまわっても、>>707 のように暴れだす、という人が過去に存在していました。
ということを懇々と複数(だと思います。)の人間が丁寧に説明にまわっても、>>707 のように暴れだす、という人が過去に存在していました。
0727デフォルトの名無しさん
2009/10/08(木) 19:49:08fgetcでEOFを検出した場合、環境にもよるがEOFが-1の場合0xFFとして受ける。
しかし、変数の型のこともあるが、問題は符号だろ。unsigned charで受けているが
int型に。かといってもともとfgetc自身が1バイトの数値を受けるため内面的に
int型であろうが数値はchar型の範囲内。
さて、signed char a=EOF; unsigned char b=EOFで
どちらがEOFをそれに応じて認識するか、調べてみな、
まともに説明も出来ずに自分の思い込みで揚げ足取りをして
相手を言い負かせたら自分が勝ち、みたいなネトウヨレベルの
キモイ工作をしているヘボプログラマーさんw
0728デフォルトの名無しさん
2009/10/08(木) 20:10:460729デフォルトの名無しさん
2009/10/08(木) 20:12:190730デフォルトの名無しさん
2009/10/08(木) 20:13:53それよりも関数の詳細が分かっているなら、それぞれに応じて適切に
コードを書けるしぃ〜。あと、fgetc自身が何も半角英数字のみしか
受けない関数じゃないしねぇ〜。それでも1度に処理する値は
分かっているしぃ〜♪何も人間が見える、読める文字、コードしか存在しないわけでもないしねぇ〜
0731デフォルトの名無しさん
2009/10/08(木) 20:15:00char ch;
while((ch=fgetc(fp))!=EOF) 〜ってやったら途中で止まったの思い出したw
0732デフォルトの名無しさん
2009/10/08(木) 20:16:20説明したのに、char型ではEOFで引っかかるとか言っておきながら、
逆に自分の不適切さを指摘し返されるボケプログラマー必死だなw
0733デフォルトの名無しさん
2009/10/08(木) 21:27:491行目: キャストするしないの問題じゃねーよ
それ以降: 何言ってるんだかさっぱりわかんねーよ
0734デフォルトの名無しさん
2009/10/09(金) 15:28:16[2] 問題文(含コード&リンク):
アルファベットと数値を持つ複数のデータ(10個程度)をファイルから読み込んで
2分探索木を構築し,アルファベットを入力して数値を出力するプログラムを作成せよ.
(データの例、AB 10 AC 2 BT 13 BC 5・・・)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2009/10/12
[5] 特になし
0735デフォルトの名無しさん
2009/10/09(金) 17:02:43ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9971.txt
0736デフォルトの名無しさん
2009/10/09(金) 21:28:59いきなりどうした、こいつ?今で昔話してんの?w
キャストから進んだぁ〜?w
0737デフォルトの名無しさん
2009/10/09(金) 21:32:45( 人____)< fgetcをcharに代入しちゃうなんて。リストから進んだぁ〜?
|./ ー◎-◎-) \______________
(6 (_ _) ) カタカタカタ
| .∴ ノ 3 ノ ______
ゝ ノ .| | ̄ ̄\ \
0738デフォルトの名無しさん
2009/10/09(金) 21:51:50麻ー呂っくのクソースでおじゃるね?w
0739デフォルトの名無しさん
2009/10/09(金) 22:16:41const char *src = "test";
char *dest;
0740デフォルトの名無しさん
2009/10/09(金) 22:18:49dest=strdup(src);
0741デフォルトの名無しさん
2009/10/09(金) 22:21:310742デフォルトの名無しさん
2009/10/09(金) 22:25:14いいってことよ
0743デフォルトの名無しさん
2009/10/09(金) 23:17:51ファイルの読み込みのとき、いちいちEOFをチェックしながら
読まないで、一度に読んじゃってあとでfeof()で一度チェックする
でいいんだよ。fgetc()はEOFになったとき一度だけEOFを返してあとは
返さないとか未定義動作するとかでなく、何度よんでもEOF以降は
ずっとEOFを返して正常だから。
0744デフォルトの名無しさん
2009/10/09(金) 23:20:44テキストファイルならそれでも大丈夫だね。多分
0745デフォルトの名無しさん
2009/10/10(土) 04:15:43激しく意味不明w しかもまた俺に関係ないrand()とかw
お前ら何か妄想する癖があるんじゃね?
気に入らない意見を見ると妙にクビを突っ込んで噛み付くタイプだろ?
それ世間一般じゃかなり嫌われてる行為だよ。そう、相手からしてみれば
お前は関係ないだろ、ってことだ。自意識過剰過ぎ。少し外に出ろ。
お前を知らない人間ばかりだぞ?もっとも、このスレ、板を介して
レスしあっても、お前がどこの誰か素性は分からんわw
/ ̄ ̄ ̄ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( 人____)<代入式で暴れたり、rand()で暴れたりした後はあんまりみかけてないな
|./ ー◎-◎-) \______________
(6 (_ _) ) カタカタカタ
| .∴ ノ 3 ノ ______
ゝ ノ .| | ̄ ̄\ \
/ \__| | | ̄ ̄|
0746デフォルトの名無しさん
2009/10/10(土) 04:17:03まぁ、かなり前にこのスレで宿題に付き合ってやってたが
そのプログラマーを金の出汁に使う方針に切り替えたんで。
お前らとは縁はないだろうけど、世のプログラマーの中には
俺に従事している奴がいるってことだ、それも俺の懐を豊かにするためにw
0747デフォルトの名無しさん
2009/10/10(土) 04:27:310748デフォルトの名無しさん
2009/10/10(土) 04:37:500749デフォルトの名無しさん
2009/10/10(土) 04:49:21rand()で議論した覚えもねーわ。誰と勘違いしてんの?w
自分が説教した相手はどれも同一人物だと思ってるの?w
お前ら相当妄想好きなようだなw
それじゃ、ここで質問する奴も全員同一人物か?
答える自分は自分だと分かるだろうけど、他にも答えている人も
固定メンバーか?w
0750デフォルトの名無しさん
2009/10/10(土) 05:40:22宿題代行業でもやってんのかね。
0751デフォルトの名無しさん
2009/10/10(土) 05:42:20川|川/ \|〜 プゥ〜ン
‖|‖ ◎---◎|〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
川川‖ 3 ヽ〜 < リストのクソースでも書けよ?w
川川 ∴)д(∴)〜 \_______________
川川 〜 /〜 カタカタカタ
川川‖ 〜 /‖ _____
川川川川___/‖ | | ̄ ̄\ \
/ \__| | | ̄ ̄|
0752デフォルトの名無しさん
2009/10/10(土) 06:25:410753デフォルトの名無しさん
2009/10/10(土) 06:52:47[2] 問題文(含コード&リンク): ランダム順列の生成プログラム
各k=0,1・・・m-1に対してa[k]=kとおく。
各l=m-1,m-2,・・・1に対して0からlまでの数からランダムに1つを選び(これをl2とする)、a[l]とa[l2]を交換する。
[3] 環境
[3.1] OS: windows linux(どちらも)
[3.2] コンパイラ名とバージョン: windows visual stdio、gcc
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:特になし
ランダム関数、配列、swapを利用して解決するであろうことは分かるのですが、
この問題でソレを使ってどのようにプログラムを書けばいいかが分かりません・・・。
よろしかったら教えてください。
0754デフォルトの名無しさん
2009/10/10(土) 07:29:09#include <stdlib.h>
#define m 10
int main(void)
{
int k, l, l2, temp, a[m];
srand(time(NULL));
for(k=0; k<m; k++) a[k] = k;
for(l=m-1; l>0; l--) {
l2 = rand() / (RAND_MAX + 1.0) * (l + 1);
temp = a[l2];
a[l2] = a[l];
a[l] = temp;
}
for(k=0; k<m; k++) printf("%d ", a[k]);
return 0;
}
0755デフォルトの名無しさん
2009/10/10(土) 07:32:21forをどういう風に書いたらが分からなかったのでとても助かりました。ありがとうございます。
0756デフォルトの名無しさん
2009/10/10(土) 07:37:49for(l=m-1; l > 0;) {
l2 = rand() / (RAND_MAX + 1.0) * l--;
って書く方が 多いかな。
0757デフォルトの名無しさん
2009/10/10(土) 08:05:00for(l=m; l > 0; ) {
l2 = rand() / (RAND_MAX + 1.0) * l--;
だな
0758デフォルトの名無しさん
2009/10/10(土) 11:56:06[2] 問題文(含コード&リンク):
カエサル暗号(A〜Z)の暗号文を入力して平文を含んだリストを出力しなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9972.txt
[3] 環境
[3.1] OS: Windows vista
[3.2] Visual Studio 2008
[3.3] 言語: C++
[4] 期限: 2009年10月15日
[5] 10文字までは力技で出力できるようになったのですが
何文字でも出力できるようにしたいです
できれば上のソースと似たような方法でお願いします
0759デフォルトの名無しさん
2009/10/10(土) 12:22:16#include<iostream>
#include<iomanip>
using namespace std;
int main (void){
const int aChangeCtoI [] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36 , 0 , 0 , 0 , 0 , 0 , 0 ,
0 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0,
0 , 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 0, 0, 0, 0, 0,};
const char aChangeItoC[]=" ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
int heni;
char str[]=" ";
char chGet[]=" ";
int ch;
cout << "長さ変えたければstr大きさ変えればいいよ" << endl;
cin >> str ;
do{for ( heni = 0 ; heni <= 36 ; heni++){for ( int i = 0; str[i]!='\0' ; i++){
ch = aChangeCtoI[str[i]]+heni;
if ( ch > 36){ch -=36;}
chGet[i] = aChangeItoC[ch];
}
cout << "オリジナル" <<str << endl;
cout << "変位 "<<setw(2)<< heni<<" " <<chGet << endl;
}
}while(heni < 36 );
}
0760デフォルトの名無しさん
2009/10/10(土) 12:22:390761デフォルトの名無しさん
2009/10/10(土) 12:29:590762デフォルトの名無しさん
2009/10/10(土) 13:06:32char c;
c = getchar();
while (c != '\n' && c != EOF) {
ここに文字cをシフトする処理を書く
putchar(c);
c = getchar();
}
0763デフォルトの名無しさん
2009/10/10(土) 13:07:180764デフォルトの名無しさん
2009/10/10(土) 13:08:100765デフォルトの名無しさん
2009/10/10(土) 17:59:160766デフォルトの名無しさん
2009/10/10(土) 18:40:12|::( 6∪ ー─◎─◎ )〜 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|ノ (∵∴ ( o o)∴)〜 < 俺が書いたソースが世界一なんだYO!
| ∪< ∵∵ 3 ∵> ムッキー! \________________
\ ⌒ ノ_____
\_____/ | | ̄ ̄\ \
0767デフォルトの名無しさん
2009/10/10(土) 18:47:42#include <stdio.h>
int main(void)
{
char str[256], *p;
int n;
scanf("%s", str);
for(n=0; n<26; n++) {
for(p=str; *p; p++) {
if(*p!=90) (*p)++;
else *p = 65;
}
puts(str);
}
return 0;
}
0768デフォルトの名無しさん
2009/10/10(土) 21:43:11使用後 dest を free() することをお忘れなく。
0769デフォルトの名無しさん
2009/10/10(土) 23:25:18カエサル暗号のキー(ずらす量)はどうしましょうか?
0770デフォルトの名無しさん
2009/10/11(日) 00:50:40[2] 問題文(含コード&リンク):
テキストファイルを読み込み、
文字コード表を利用して種類ごとに文字を分類し、それぞれをカウントするプログラムを作れ
分類は以下の通りとする。
1.半角英数
2.半角カナ
3.半角記号
4.全角かな
5.全角記号
6.漢字
以上のように分類した上で「半角英数:XX字、半角カナ:XX字・・・」というように結果をファイルに出力せよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] Visual Studio 2008
[3.3] どちらでも可
[4] 期限: 2009年10月13日 正午迄
[5] その他の制限:
使用する文字コード表は自由だが一般に使われているものを選択せよとのことでした。
コード内にコメントで使用した文字コードを注釈として記載するようにとの連絡がありました。
それ以外は特にありません。
よろしくお願いします。
0771デフォルトの名無しさん
2009/10/11(日) 01:07:12#include<iostream>
using namespace std;
int main() {
で始まってます。
ax^2+bx+c=0でa,b,cを代入して求めるんですが
0772デフォルトの名無しさん
2009/10/11(日) 01:10:310773デフォルトの名無しさん
2009/10/11(日) 03:30:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9973.zip
おまけで階調の反転もします。
0774デフォルトの名無しさん
2009/10/11(日) 04:29:18buff2の書き方に問題がある気がするんですが、どこが間違ってるんでしょうか。
char *buff1 = "abcdefghijk";
char *buff2 = "";
memcpy(buff2, buff1, 20);
printf("%s¥n", buff2);
0775デフォルトの名無しさん
2009/10/11(日) 04:37:52char buff2[256];
memcpy(buff2, buff1, 20);
printf("%s\n", buff2);
0776デフォルトの名無しさん
2009/10/11(日) 04:49:070777775
2009/10/11(日) 04:50:39buff2をあらかじめ配列宣言しなくてすむ方法はないでしょうか。
実際やりたいことは、
const void *src = xxx (バイナリデータ)
を
void *dst
にコピーしたいのです。
0778デフォルトの名無しさん
2009/10/11(日) 04:54:230779デフォルトの名無しさん
2009/10/11(日) 04:54:300780775
2009/10/11(日) 04:56:100781デフォルトの名無しさん
2009/10/11(日) 05:31:56何故か、全角英数は分類にない。
0782デフォルトの名無しさん
2009/10/11(日) 07:03:40横から悪いと思うがlibRawPgm.cを読ませてもらった
67行目で真ならreleaseImage()されるが、img->pが不定、他の所も
81行目だけ何故かリソースの開放が無い
同じようなリソース開放の処理が多いのでgotoか関数化した方がよい
課題依存の部分は突っ込まない
0783デフォルトの名無しさん
2009/10/11(日) 11:31:43プログラミング1
[2] 問題文(含コード&リンク):
2進数で00000001から11111111まで表示する。
[3] 環境
[3.1] OS:windows
[3.2] わからん
[3.3] C言語
[4] 期限: 10月15日まで
[5] とくになし。この前for文を習ったばっかり。
0784デフォルトの名無しさん
2009/10/11(日) 11:42:01print_bin(int n){
int i;
if(n==0){ printf("¥n");return;}
for(i=0;i<2;i++){ printf("%d",i); print_bin(n-1); }
}
int main(void){ print_bin(8);reutnr 0}
0785デフォルトの名無しさん
2009/10/11(日) 11:50:430786デフォルトの名無しさん
2009/10/11(日) 11:53:420787デフォルトの名無しさん
2009/10/11(日) 11:56:42丁寧に教えていただきありがとうございます
>>769
キーを求めるためのプログラムでもあるのでそれは分かりません
単語帳を読ませてそこから検索するようなものを作ろうとして
挫折した結果が>>758なので
0788デフォルトの名無しさん
2009/10/11(日) 12:12:26#include <stdio.h>
#define N 8
int main(void)
{
int i, digit = 1;
char a[N] = {0};
while(1) {
for(i=0; !(a[i] ^= 1); ) if(++i == digit && ++ digit > N) goto out;
for(i=N-1; i>=0; i--) printf("%d", a[i]);
putchar('\n');
}
out:
return 0;
}
0789デフォルトの名無しさん
2009/10/11(日) 12:17:510790デフォルトの名無しさん
2009/10/11(日) 12:27:060791デフォルトの名無しさん
2009/10/11(日) 12:30:10出来ないけどまぁ、strlenとか使って文字列長取得して0入れてやればおkじゃね
0792デフォルトの名無しさん
2009/10/11(日) 12:37:090793デフォルトの名無しさん
2009/10/11(日) 12:39:51itoa(num,buf,2);
printf("%08s",buf);
で一発じゃねーか
0794デフォルトの名無しさん
2009/10/11(日) 12:46:510795773
2009/10/11(日) 12:48:13http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9974.zip
ヘッダー読み込みと、malloc部分を関数化しました。
>>782さんご指摘ありがとうございます。
0796デフォルトの名無しさん
2009/10/11(日) 12:52:12どうしてでしょうか。
簡単で手軽、誰にでも学習の機会があることでしょうね。
CやHSPだとこうはいきません。
CやHSPだとAPIのノウハウが必要になりますし、それは大きな障壁となります。
0797788
2009/10/11(日) 13:12:25#include <stdio.h>
#define N 8
int main(void)
{
int i;
char a[N] = {0};
while(1) {
for(i=0; !(a[i++]^=1);) if(i==N) goto end;
for(i=N-1; i>=0; i--) printf("%d", a[i]);
putchar('\n');
}
end:
return 0;
}
0798デフォルトの名無しさん
2009/10/11(日) 13:32:41どこかで見た気がすると思えば、「最も美しいプログラミング言語は? Part3」だった
0799デフォルトの名無しさん
2009/10/11(日) 13:40:36#include <stdlib.h>
#include <string.h>
int main(void){
char buf[9];
int count = 0;
do{
itoa(count++,buf,2);
printf("%08s\n",buf);
}while(strstr(buf,"11111111")==NULL);
}
これだけで済むね、itoaとprintf使うと。
0800デフォルトの名無しさん
2009/10/11(日) 13:40:580801デフォルトの名無しさん
2009/10/11(日) 13:50:180802デフォルトの名無しさん
2009/10/11(日) 13:57:43うちの環境だと>>799が0.08秒(何度かやると最大で0.16秒)
>>797が0.16秒(何度かやると最大で0.25秒)になる
0803デフォルトの名無しさん
2009/10/11(日) 14:04:520804デフォルトの名無しさん
2009/10/11(日) 14:06:030805デフォルトの名無しさん
2009/10/11(日) 14:07:250806デフォルトの名無しさん
2009/10/11(日) 16:19:10void **list = malloc(sizeof(void) * 2);
list[0] = malloc(sizeof(char) * 10);
list[1] = malloc(sizeof(int) * 10);
とした場合、list[0]はcharポインタを指し、list[1]はintポインタを指してるという認識であってますでしょうか。
list[0]に10文字以上のcharを代入してもエラーが起きないのがよくわかりません。
0807デフォルトの名無しさん
2009/10/11(日) 16:23:210808デフォルトの名無しさん
2009/10/11(日) 16:25:25ちょっとワロタ
0809デフォルトの名無しさん
2009/10/11(日) 16:26:24かなぁ、以下で質問してください
C言語なら俺に聞け(入門篇) Part 54
http://pc12.2ch.net/test/read.cgi/tech/1254829314/
C/C++小心者スレッドPart1
http://pc12.2ch.net/test/read.cgi/tech/1186262298/
【初心者お断り】ガチ規格準拠C専用スレ Part134
http://pc12.2ch.net/test/read.cgi/tech/1246115922/
0810デフォルトの名無しさん
2009/10/11(日) 16:28:450811デフォルトの名無しさん
2009/10/11(日) 18:20:18[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9975.zip
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
[3.3] 言語: C言語
[4] 期限: 2009年10月14日00:00
[5] その他の制限:とくになし
0812デフォルトの名無しさん
2009/10/11(日) 18:22:000813デフォルトの名無しさん
2009/10/11(日) 18:29:52#include <stdlib.h>
int main(void)
{
char buf[9];
for( int i = 1; i < 256; i++ )
{
itoa(i,buf,2);
printf("%08s\n",buf);
}
return 0;
}
でいいじゃん。めんどくさ
0814デフォルトの名無しさん
2009/10/11(日) 20:12:40int main()
{
char a=0;int bit;
while((a++)+1){
for(bit=128;bit;bit>>=1){
a&bit ? printf("1") : printf("0");
}
printf("\n");
}
return 0;
}
0815デフォルトの名無しさん
2009/10/11(日) 20:36:380816デフォルトの名無しさん
2009/10/11(日) 20:50:46今年の春先だったかGWの頃だったか、麻呂結構凄いコード
盛んに投稿してたじゃん
0817デフォルトの名無しさん
2009/10/11(日) 21:18:39なんでwhile((a++)+1)
while(++a)でいいじゃん
0818デフォルトの名無しさん
2009/10/11(日) 21:20:43へ?今年はまだここにコードを書いた覚えはないでおじゃるが?
そもそも去年だか一昨年の年末くらいから、ほとんどスレを見ていない。
たまに専用ブラで受信してログを残している程度だったが・・・
毎年似たような課題ばかりで退屈したでおじゃる。
0819デフォルトの名無しさん
2009/10/11(日) 21:25:160820デフォルトの名無しさん
2009/10/11(日) 21:31:360821551
2009/10/11(日) 22:17:32int main()
{
int i,j,k;
char a[9]={1,2,3,4,5,6,7,8,0};
for(i=1;i<=8;i++) {
for(k=0;k<8;k++) {
a[7-k] = (i-k > 0)+'0';
}
puts(a);
}
puts("というのは、冗談で…");
for(i=1; i<=0xff; i++) {
j = i;
for(k=0; k<8; k++) {
a[7-k] = (j % 2)+'0'; // (j & 1) でもよい
j = j / 2; // (j >> 1) でもよい
}
puts(a);
}
return 0;
}
0822デフォルトの名無しさん
2009/10/11(日) 22:18:03私の環境は Windows XP, 処理系は gcc 4.3.2(cygwin) です。
http://codepad.org/46ulkJYF
文字コードは JIS X 0208 (のつもり)、指摘のあった全角英数は、「全角その他」に入ります。
0823デフォルトの名無しさん
2009/10/12(月) 00:21:31[2] 問題文
課題文1
とある架空の携帯電話会社では、基本料金の1,000円に、一ヶ月の 通話の合計時間によって通話料が加算される(1分あたり10円)。
また、1ヶ月の料金は基本料金込みで10,000円以上は通話料が無料になるものとする。
このとき、1ヶ月の合計通話時間を入力すると請求される料金を表示するプログラムを作成せよ。
課題文2
明治元年以降の西暦年を4桁の数で入力すると、和暦で年を表示するプログラムを作成せよ。
ただし、2つの元号を持つ年は両方の年を表示すること。
(例: 1989年 → 昭和64年、平成元年)
(2つの元号を持つ年の扱いについては余裕がある人は、月、日も入れて、その日の正しい
元号を表示することによって元号を一つ表示するプログラムとしてもよい。)
[3] 環境
Windows,
言語:C++
[4] 期限: 11/3
よろしくお願いします!
0824デフォルトの名無しさん
2009/10/12(月) 00:35:31>言語:C++
どっちなんだよw
0825551
2009/10/12(月) 01:13:22#include <iostream>
using namespace std;
int main(void) {
int minits;
cout << "通話時間(分)を入力:";
cin >> minits;
if(minits<0) minits = 0;
if(minits>900) minits = 900;
cout << minits*10 + 1000 << "円";
}
0826デフォルトの名無しさん
2009/10/12(月) 01:14:28だとしたら良いなあ
0827>551
2009/10/12(月) 01:58:21はしょらないでちゃんと記述汁!
if(minits*10+1000>10000) minits=(10000-1000)/10;
0828デフォルトの名無しさん
2009/10/12(月) 02:11:09また誰かと勘違いしてやんのw
0829770
2009/10/12(月) 02:33:28迅速に解答していただき大変ありがとうございました!
大学が開いたら動作確認してご連絡したいと思います。
指摘されていた全角英数の件ですが、
おそらく担当教官のミスで抜け落ちていたのだと思います。
>指摘のあった全角英数は、「全角その他」に入ります。
全角その他=全角英数ということでよろしいのでしょうか?
ご面倒をかけて恐縮ですが、全角英数を分けたものもお手間でなければお願いしても大丈夫でしょうか。
申し訳ございません。
0830デフォルトの名無しさん
2009/10/12(月) 02:56:43騙ったのか単に麻呂と勘違いされていたのか知らない
誰かと同一視されてるでおじゃる・・・まぁ、引退したし
どうでも良いでおじゃるがw
0831デフォルトの名無しさん
2009/10/12(月) 03:30:35課題文2
#include <stdio.h>
int main(void)
{
int year;
printf("西暦を入力してください:");
scanf("%d", &year);
if(year < 1868 || 2009 < year) return 0;
if(year == 1868) printf("明治元年\n");
else if(year < 1912) printf("明治%d年\n", year - 1867);
else if(year == 1912) printf("明治45年 大正元年\n");
else if(year < 1926) printf("大正%d年\n", year - 1911);
else if(year == 1926) printf("大正15年 昭和元年\n");
else if(year < 1989) printf("昭和%d年\n", year - 1925);
else if(year == 1989) printf("昭和64年 平成元年\n");
else printf("平成%d年\n", year - 1988);
return 0;
}
0832551
2009/10/12(月) 05:35:02>> if(minits*10+1000>10000) minits=(10000-1000)/10;
if(minits>(10000-1000)/10) minits=(10000-1000)/10;
0833デフォルトの名無しさん
2009/10/12(月) 05:40:23もう一つ変数用意して料金用にすればいいのに
0834デフォルトの名無しさん
2009/10/12(月) 06:18:410835デフォルトの名無しさん
2009/10/12(月) 06:26:45int main() {
unsigned int min;
std::cin >> min;
unsigned int toll = 1000 + min*10;
if (toll > 10000 )
toll = 10000;
std::cout << toll << "円" << std::endl;
}
素直に書くとこんなだよな
10000円から逆算すると900分だから、とかやるのはバグの元だし、どうしてもそれを
やりたいなら
static const int hoge = (10000-1000)/10;
とか書くべき
0836551
2009/10/12(月) 06:36:02if (toll < 1000 )
toll = 1000;
0837デフォルトの名無しさん
2009/10/12(月) 06:36:45完全に間違いだろ
0838デフォルトの名無しさん
2009/10/12(月) 06:56:38よう馬鹿
よくコードを嫁
0840デフォルトの名無しさん
2009/10/12(月) 10:36:260841デフォルトの名無しさん
2009/10/12(月) 12:18:47>>770
では訂正します。
http://codepad.org/Mdyl971P
第一引数は入力ファイル名、第二引数は出力ファイル名です。
0842デフォルトの名無しさん
2009/10/12(月) 13:12:01バカか
0843デフォルトの名無しさん
2009/10/12(月) 13:34:04よう馬鹿
それ完全に無駄な処理だぞ
0844デフォルトの名無しさん
2009/10/12(月) 13:36:21minutesとかminsとかにした方がいいかもな
俺ならmにするけど
0845551
2009/10/12(月) 15:14:52VC6 / VS2005 だと、-2入力の時980円。
g++ / bcc32 だと、-2入力の時=0必要。
>>840 むっ氏
0846デフォルトの名無しさん
2009/10/12(月) 15:31:50半端にエラーを隠すコードを突っ込むくらいならちゃんとエラーを吐くコードに改良しろ。
0847デフォルトの名無しさん
2009/10/12(月) 15:36:250848デフォルトの名無しさん
2009/10/12(月) 15:38:20私の環境は WindowsXP, 処理系は gcc 4.3.2 (cygwin) です。
http://codepad.org/LOFL4Dfe
縦型検索ですので、最短経路を示すわけではありません。
0849デフォルトの名無しさん
2009/10/12(月) 15:56:43a=0の時と実数解と虚数解で場合分けするだけじゃダメなんですか?もう1週間経っても終わらないんです。
ヒントの場合分けにそう書いてありました
0850デフォルトの名無しさん
2009/10/12(月) 16:02:13できたとこまでみせてください。あとテンプレはどれですか?
0851デフォルトの名無しさん
2009/10/12(月) 16:11:13#include <cmath>
using namespace std;
int main() {
float a,b,c,d,x0,x1;
cout << "aを入力してください\n";
cin >> a;
cout << "bを入力してください\n";
cin >> b;
cout << "cを入力してください\n";
cin >> c;
d=b*b-4*a*c;
x0 = (-b + sqrt(d)) / (2 * a);
x1 = (-b - sqrt(d)) / (2 * a);
if(a==0) {
cout << "解は1つで" << -c/b << "です\n";
}
else if(d>0) {
cout << "解は二つの実数解で,解は" << x0 << ", " << x1 << "です\n";
}
else if(d<0) {
cout << "解は二つの虚数解で,解は" << (-b) / (2 * a) << "+" << sqrt(-d) / (2 * a) << "i" << " , " << (-b) / (2 * a) << "-" << sqrt(-d) / (2 * a) << "i" << "です\n";
}
else {
cout << "二重解となり,解は"<< (-b) / (2 * a) << "です\n";
}
return 0;
}
if文で作る問題だったし、場合分けは、虚数解、a=O、実数解に分ければ出来ると言ってたので、これでいいかなと思ったんですが…
0852デフォルトの名無しさん
2009/10/12(月) 16:14:01あってそうですね。どこがまちがえている、ていわれたのですか?
0853デフォルトの名無しさん
2009/10/12(月) 16:15:120854デフォルトの名無しさん
2009/10/12(月) 16:16:45…って、a==0でいいの?
0855デフォルトの名無しさん
2009/10/12(月) 16:17:40ちゃんと見てないで喋ると駄目だな
0856851
2009/10/12(月) 16:18:120857デフォルトの名無しさん
2009/10/12(月) 16:19:52演算結果が ±INF になるだけかもしれないし 例外投げるかもしれない
0858851
2009/10/12(月) 16:23:37#include <cmath>
using namespace std;
int main() {
float a,b,c,d,x0,x1;
cout << "aを入力してください\n";
cin >> a;
cout << "bを入力してください\n";
cin >> b;
cout << "cを入力してください\n";
cin >> c;
d=b*b-4*a*c;
if(a==0) {
cout << "解は1つで" << -c/b << "です\n";
}
x0 = (-b + sqrt(d)) / (2 * a);
x1 = (-b - sqrt(d)) / (2 * a);
else if(d>0) {
cout << "解は二つの実数解で,解は" << x0 << ", " << x1 << "です\n";
}
else if(d<0) {
cout << "解は二つの虚数解で,解は" << (-b) / (2 * a) << "+" << sqrt(-d) / (2 * a) << "i" << " , " << (-b) / (2 * a) << "-" << sqrt(-d) / (2 * a) << "i" << "です\n";
}
else {
cout << "二重解となり,解は"<< (-b) / (2 * a) << "です\n";
}
return 0;
}
こうですか
0859デフォルトの名無しさん
2009/10/12(月) 16:26:280860851
2009/10/12(月) 16:27:59って出ました。やっぱり訂正するとダメでした…
0861851
2009/10/12(月) 16:29:260862デフォルトの名無しさん
2009/10/12(月) 16:31:040863デフォルトの名無しさん
2009/10/12(月) 16:35:450864デフォルトの名無しさん
2009/10/12(月) 16:35:47#include <cmath>
using namespace std;
void hoge(float a, float b, float c) {
float x0,x1,d = b*b-4*a*c;
if(a == 0) {
if (b == 0) cout << "解は1つで" << -c << "です\n";
else cout << "解は1つで" << -c / b << "です\n";
}
else if(d > 0) {
x0 = (-b + sqrt(d)) / (2 * a);
x1 = (-b - sqrt(d)) / (2 * a);
cout << "解は二つの実数解で,解は" << x0 << ", " << x1 << "です\n";
}
else if(d < 0) {
cout << "解は二つの虚数解で,解は" << (-b) / (2 * a) << "+" << sqrt(-d) / (2 * a) << "i" << " , " << (-b) / (2 * a) << "-" << sqrt(-d) / (2 * a) << "i" << "です\n";
}
else {
cout << "二重解となり,解は"<< (-b) / (2 * a) << "です\n";
}
}
int main() {
hoge(0,0,-1);
hoge(1,0,-1);
hoge(1,0,1);
hoge(1,-2,5);
hoge(0,2,1);
hoge(1,2,1);
return 0;
}
これで全パターン通ってるか?
0865851
2009/10/12(月) 16:51:310866デフォルトの名無しさん
2009/10/12(月) 16:53:020867デフォルトの名無しさん
2009/10/12(月) 16:53:31C++のcoutとか違和感ありまくる・・・・
0868デフォルトの名無しさん
2009/10/12(月) 17:03:56if のネスト(if / else の中に さらに if が居る) は習っていない?
ネスト無し if 〜 else if 〜 else だけを使って、
とある条件が成立している時だげ演算するのを記述するのは面倒だな…
0869551
2009/10/12(月) 17:43:43http://jbbs.livedoor.jp/bbs/read.cgi/computer/32221/1246384344/25
0870デフォルトの名無しさん
2009/10/12(月) 17:47:46if(minute < 0) throw 1;
}catch(int a){
cout << "マイナスの値が入力されました!"<<endl;
return a;
}
こんな短い間隔でtryするなよ・・・って思うのは俺だけですねごめんなさい
0871デフォルトの名無しさん
2009/10/12(月) 17:51:34短いのはかまわないが、例外を投げる価値が無い。
0872デフォルトの名無しさん
2009/10/12(月) 19:34:16#include <iostream>
#include <cmath>
using namespace std;
int main() {
float a,b,c,d,x0,x1;
cout << "aを入力してください\n"; cin >> a;
cout << "bを入力してください\n"; cin >> b;
cout << "cを入力してください\n"; cin >> c;
d = b*b-4*a*c;
if(a==0 && b==0) {
cout << "解は1つで" << -c << "です\n";
}
else if(a==0) {
cout << "解は1つで" << -c / b << "です\n";
}
else if(d==0) {
cout << "二重解となり,解は"<< (-b) / (2 * a) << "です\n";
}
else if(d>0) {
x0 = (-b + sqrt(d)) / (2 * a);
x1 = (-b - sqrt(d)) / (2 * a);
cout << "解は二つの実数解で,解は" << x0 << ", " << x1 << "です\n";
}
else if(d<0) {
cout << "解は二つの虚数解で,解は" << (-b) / (2 * a) << "+" << sqrt(-d) / (2 * a) << "i" << " , " << (-b) / (2 * a) << "-" << sqrt(-d) / (2 * a) << "i" << "です\n";
}
return 0;
}
0873デフォルトの名無しさん
2009/10/12(月) 20:09:36#define IS_VALID(x, y) (0<=(x) && (x)<sizex && 0<=(y) && (y)<sizey)
void SearchRoute_internal( int work[MAX_X][MAX_Y], int map[MAX_X][MAX_Y], int sizex, int sizey, int x, int y, int goalx, int goaly, int distance, int *resolved ){
static const int vx[]={ 1, 0,-1, 0}, vy[]={ 0, 1, 0,-1};
int i, next_x, next_y;
work[x][y]=distance;
if(x==goalx && y==goaly) *resolved=1;
for(i=0;i<4;i++){
next_x=x+vx[i];
next_y=y+vy[i];
if(!IS_VALID(next_x, next_y)) continue;
if(map[next_x][next_y]==ROAD && work[next_x][next_y]>distance){
SearchRoute_internal(work, map, sizex, sizey, next_x, next_y, goalx, goaly, distance+1, resolved);
}}}
void MarkPath(int work[MAX_X][MAX_Y], int map[MAX_X][MAX_Y], int x, int y, int sizex, int sizey){
static const int vx[]={ 1, 0,-1, 0}, vy[]={ 0, 1, 0,-1};
int i, next_x, next_y;
for(i=0;i<4;i++){
next_x=x+vx[i];
next_y=y+vy[i];
if(!IS_VALID(next_x, next_y)) continue;
if(work[next_x][next_y]==work[x][y]-1){
map[next_x][next_y]=PATH;
MarkPath(work, map, next_x, next_y, sizex, sizey);
break;
}}}
void SearchRoute( int map[MAX_X][MAX_Y], int sizex, int sizey, int startx, int starty, int goalx, int goaly ){
int work[MAX_X][MAX_Y]={{0}}, resolved=0;
SearchRoute_internal(work, map, sizex, sizey, startx, starty, goalx, goaly, -MAX_X*MAX_Y, &resolved);
if(resolved) MarkPath(work, map, goalx, goaly, sizex, sizey);
}
0874デフォルトの名無しさん
2009/10/12(月) 20:26:03aとbが0のときは解なんてないだろ
0876デフォルトの名無しさん
2009/10/12(月) 20:52:25ありがとうございます
0877851
2009/10/12(月) 22:51:20習ってないですね。
でも、ありがとうございました
0878デフォルトの名無しさん
2009/10/13(火) 02:00:30問題文:#include<stdio.h>
int main(void){
int x;
double r;
double pi=3.141592;
printf("半径rを入力して下さい:");
scanf("%lf",&r);
printf("1または2を入力して下さい。\n");
printf("[1:球の表面積 2:球の体積]:");
scanf("%d",&x);
if(x==1){
printf("半径%lfの球の表面積S=%lf",r,4.0*pi*pow(r,2.0));
}else if(x==2){
printf("半径%lfの球の体積V=%lf",r,4.0/3.0*pi*pow(r,3.0));
}else{
printf("1または2を入力して下さい。");
}
return 0;
}
環境
[3.1] OS:WindowsXP
[3.2] Visual Studio
[3.3] 言語:C
[4] 期限:10月13日 10:40
体積と表面積を求めるプログラミングなのですが上手く動作してくれません。
よろしくお願いします。
0879デフォルトの名無しさん
2009/10/13(火) 02:10:180880デフォルトの名無しさん
2009/10/13(火) 02:21:29レスありがとうございます。
無事上手く動作しました。
0881770
2009/10/13(火) 02:49:33>>822様
ありがとうございました!動作確認できしだい報告いたします。
取り急ぎお礼まで、修正にまで応じてくださり大変感謝しております。
0882デフォルトの名無しさん
2009/10/13(火) 02:53:24[2] 問題文(含コード&リンク):イテレータを使って微分方程式を解きたい
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C++
[4] 期限: 早め
[5] その他の制限: とくにないけどイテレータに関しての説明が詳しくしてもらえるとありがたいです
ルンゲクッタか蛙飛び法でお願いします
0883デフォルトの名無しさん
2009/10/13(火) 15:55:04[2] 問題文
問1
画面上の中央に一辺の長さが40の白い正方形を表示せよ.キーボードからの入力があるまでその表示のままプログラムが停止するようにせよ。
そしてキー入力をしたらその画面が消え、画面の中央に一片の長さが50の赤い正方形を表示せよ。(cleardevice()関数で画面を消し、getch()関数でキー入力を取得せよ)
問2
キーボードでどのキーが押されるかによって表示される図形の色と大きさが変わるようなプログラムを作成せよ。
プログラムが起動し、’4’のキーが押された場合には一辺が50の赤い正方形、’6’のキーが押された場合には一辺が20の青い正方形が表示されるようにせよ。(getch関数を使用せよ)。
問3
前問と同様、キーボードでどのキーが押されるかによって表示される図形の色と大きさが変わるようなプログラムを作成せよ。
ただし、キーが押される度に何度でも’4’のキーと’6’のキーで一辺が50の赤い正方形、と一辺が20の青い正方形が切り替わるようにせよ。ただし、’q’のキーが押されたらプログラムが終了するようにせよ。(while文あるいはdo-while文を使用すること)
問4
画面上に一辺が40の白い長方形を描き,キー入力によってその長方形の表示位置が左右に少しずつ変化するようなプログラムを作成せよ.
('4', '2'のキーで左右移動,キー入力にはgetch()関数を使用せよ.)最初は正方形を画面中央に描く。また、正方形が描かれる位置を記憶するための変数を作っておくこと。その変数の値をキー入力に応じて増減させ、その値を使用して表示をするようなプログラムにせよ。
問5
前問のプログラムを改造し、画面上に描かれた正方形がキー入力によって上下左右に動くようなプログラムを作成せよ。
「6」で右、「4」で左、「8」で上、「2」で下に動くようにせよ。「q」でプログラム終了すること。
[3] 環境
[3.1] OS:XP
[3.2] Turbo c++ 4.0
[3.3] C++
[4] 期限 今週木曜日
[5] なし
どうかよろしくおねがいします。
0884デフォルトの名無しさん
2009/10/13(火) 17:44:24[2] 問題文(含コード&リンク): ユークリッドの互除法のアルゴリズムを作る。(達成条件は 例 % euclid_1013_2009→ 結果は1となるように)
[3] 環境
[3.1] OS:Windows/vista
[3.2] コンパイラ名とバージョン:Visual C++ 2008
[3.3] 言語: C++
[4] 期限: 2009年10月22日
[5] その他の制限: ちょっと分かりにくいかも・・・?
よろしくお願いします。
0885デフォルトの名無しさん
2009/10/13(火) 17:47:13w
0886デフォルトの名無しさん
2009/10/13(火) 18:08:37コードを書けないくせにw
0887デフォルトの名無しさん
2009/10/13(火) 18:09:130888デフォルトの名無しさん
2009/10/13(火) 18:25:02アルゴリズムは俺が作ったんじゃないけどとりあえず
#include <stdio.h>
#include <stdlib.h>
int gcd(int x, int y) { return x % y? gcd(y, x % y): y; }
int main(int argc, char **argv)
{
printf("%d\n", gcd(atoi(argv[1]), atoi(argv[2])));
return 0;
}
0889デフォルトの名無しさん
2009/10/13(火) 18:25:10だろJK
0890デフォルトの名無しさん
2009/10/13(火) 20:55:060891デフォルトの名無しさん
2009/10/13(火) 22:05:400892デフォルトの名無しさん
2009/10/13(火) 22:15:33turbo c? Windows の cmd ってエスケープシーケンスが効きましたっけ?
0893デフォルトの名無しさん
2009/10/13(火) 22:20:40>>892
turbo cを知らない、の意味で?つけてる?
エスケープシーケンス使えるよ。
0894892
2009/10/13(火) 22:32:080895892
2009/10/13(火) 22:33:31色をつけるエスケープシーケンスが見つからないでいます。
0896デフォルトの名無しさん
2009/10/13(火) 22:37:07http://homepage2.nifty.com/c_lang/intro/no_58.htm
0897デフォルトの名無しさん
2009/10/13(火) 22:44:32Windows NT/cmd で使えるエスケープシーケンスってなんでしょうね。
0898デフォルトの名無しさん
2009/10/13(火) 22:47:37だからないから
>>896を参照しろ
0899デフォルトの名無しさん
2009/10/13(火) 22:49:170900デフォルトの名無しさん
2009/10/13(火) 22:58:05ただし gcc-4 では -mno-cygwin オプションそのものが打ち切られてしまったようです。どうすればいいんでしょうね。
0901デフォルトの名無しさん
2009/10/13(火) 23:01:330902デフォルトの名無しさん
2009/10/13(火) 23:04:24command使えばよくね
0904デフォルトの名無しさん
2009/10/14(水) 00:14:15んー、これはビックリ、command.com があったんですね。宿題出題者の実行環境をまって手をつけるか考えます。
0905デフォルトの名無しさん
2009/10/14(水) 00:42:05作ってやれよ
0906デフォルトの名無しさん
2009/10/14(水) 02:19:23turboCだからcommand.comで実行することは問題ないと思うけど
0907デフォルトの名無しさん
2009/10/14(水) 10:35:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9978.txt
0908デフォルトの名無しさん
2009/10/14(水) 13:57:31cursesを使えば済むことじゃん。
0909デフォルトの名無しさん
2009/10/14(水) 14:35:57だからLinuxじゃなくてTurbo C++だって
Windows NT コンソールだぞ
0910デフォルトの名無しさん
2009/10/14(水) 14:41:17Windowsでもcurses使えるよ。
Public Domain Curses
http://pdcurses.sourceforge.net/
0911デフォルトの名無しさん
2009/10/14(水) 15:03:34[2] ベジュ曲線を描く
[3] 環境
[3.1] Windows
[3.2] VC++6.0
[3.3] C++
[4] 今週末まで
[5] 特になし
よろしくお願いします
0912デフォルトの名無しさん
2009/10/14(水) 15:04:17宿題スレにそんな物使うな
0913デフォルトの名無しさん
2009/10/14(水) 15:43:05http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9979.txt
0915883
2009/10/14(水) 17:43:51色の付け方のことでしょうか?
なら、setcolor()をつかい()の中に4を入れると赤15で白とかいてありました。
引き続きおねがいいたします。
0916デフォルトの名無しさん
2009/10/14(水) 18:28:24>>1
0917デフォルトの名無しさん
2009/10/14(水) 19:09:21>>1
気に入らない質問やその他や発言はスルーの方向で。
0918916
2009/10/14(水) 19:20:37気に入らない訳じゃなくて、問題を全部書いて欲しいという意味なんだけど、おかしかった?
後付けされるのは面倒じゃん。
っていうかなんで>>917に説明してんだおれorz
0919デフォルトの名無しさん
2009/10/14(水) 19:37:42問題文は全部書いてあるんじゃね?
ただ>>883だけじゃ同じ授業を受けてる人にしか解けないだろうけど
0920デフォルトの名無しさん
2009/10/14(水) 21:57:27ありがとうございます!
0921892
2009/10/14(水) 22:01:39多分 turbo c 独自の関数を使わなければならないんでしょうね。だから皆ひいてしまっているかもしれません。
うーん、困りましたね。
0922デフォルトの名無しさん
2009/10/14(水) 22:13:15>>1
0923困ったさん
2009/10/14(水) 22:42:09[2] 問題文:ナップサック問題のプログラムを利用し、グラフ彩色問題に当てはめる (色は4色で)
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: Linux内にある標準のコンパイラ
[3.3] 言語:C++
[4] 期限:2009年10月16日まで
[5] その他の制限:初心者なので、プログラミングするのに最低限必要な知識の範囲で教えて頂ければと
思います。
※ナップサック問題のプログラムは次に書きます。
0924困ったさん
2009/10/14(水) 22:50:58#include <stdlib.h>
#include <time.h>
int main(void){
int i,n,z[60],r,za[60];
double a[60],b,c[60],suma,sumc,f,fz;
FILE *fp;
fp=fopen("knap_prob50_L.txt", "r");
fscanf(fp,"%d %lf",&n,&b);
printf("n= %d b= %lf\n" ,n ,b);
for(i=0; i<n; i++) {
fscanf(fp,"%lf %lf",&a[i], &c[i]);
printf("a[%d]=%lf c[%d]=%lf\n",i,a[i],i,c[i]);
z[i]=rand() %2;
printf("z[%d]=%d\n",i,z[i]);
}
suma=0;
sumc=0;
for(i=0; i<n; i++){
suma=suma+a[i]*z[i];
sumc=sumc+c[i]*z[i];
}
if(suma>b){
f=sumc-0.5*(suma-b);
}else {
f=sumc;
}
printf("%lf\n",f);
0925困ったさん
2009/10/14(水) 22:55:14for(i=0; i<20; i++){
for(i=0; i<n; i++) {
za[i]=z[i];
}
r=rand()%n;
za[r]=1-za[r];
suma=0;
sumc=0;
for(i=0; i<n; i++){
suma=suma+a[i]*za[r];
sumc=sumc+c[i]*za[r];
}
if(suma>b){
fz=sumc-0.5*(suma-b);
}else{
fz=sumc;
}
if(fz>f){
for(i=0; i<n; i++){
z[i]=za[i];
}
f=fz;
printf("%lf\n", f);
}
for(i=0; i<n; i++){
printf("%d\n" ,z[i]);
}
printf("%lf %lf\n",f,suma);
}
0926770
2009/10/14(水) 23:17:08以前の回答は>>841にあります。以前の問題文は>>770を参照してください。
ただし>>770の分類には全角英数が抜けています。
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク):
前回の課題の分類の結果「半角英数:XX字、半角カナ:XX字・・・」
という結果が得られたとき、その結果のファイルを読み込み
各分類からその結果の比率に合わせてランダムに文字列を出力する
プログラムを作成せよ。出力する文字数は解析に用いた文字の合計である。
(例えば半角英数が全体の60%だった場合、出力される文字列の中にランダムに半角英数文字が60%の割合で含まれることになる)
分類は以下の通りとする。
1.半角英数
2.半角カナ
3.半角記号
4.全角英数
5.全角かな
6.全角記号
7.漢字
[3] 環境
[3.1] OS:Windows XP
[3.2] Visual Studio 2008
[3.3] どちらでも可
[4] 期限: 2009年10月16日 正午迄
[5] その他の制限:
前回回答者の方が文字コード表としてJIS X 0208を
利用されていますので、それに沿っていただけると幸いです。
前回のような文字列のテキストファイルを読み込む入力部を作る必要はなく、
入力は「半角英数:XX字、半角カナ:XX字・・・」というものでよいそうです。
コード内にコメントで使用した文字コードを注釈として記載するようにとの連絡がありました。
それ以外は特にありません。
よろしくお願いいたします。
0927デフォルトの名無しさん
2009/10/14(水) 23:34:29いや、もはやそれは自分でやれよ
全部を宿題スレで片付けようと酢んな
0928デフォルトの名無しさん
2009/10/14(水) 23:37:570929デフォルトの名無しさん
2009/10/15(木) 00:12:29最近思ったんだが、宿題をピンからキリまで解いたら
中途半端ながらプログラミングができるはずだったやつが、
全くプログラミングできないやつになる。となると、
それはそれで少し平和な世界が作れそうな気がするんだ。
漏れは解かないけど。
0930デフォルトの名無しさん
2009/10/15(木) 00:22:56けど新卒パワーで採用しちゃうんだぜ
0931デフォルトの名無しさん
2009/10/15(木) 00:41:070932デフォルトの名無しさん
2009/10/15(木) 01:39:320933デフォルトの名無しさん
2009/10/15(木) 02:09:050934デフォルトの名無しさん
2009/10/15(木) 03:05:21int main()と書く人がいるんだな。ISO、ANSI準拠の標準スタイルは
int main(void) だぜ?または、引数があるなら
int main(int argc, char *argv[]) だぜ?強要はしないがな。
ttp://www.bohyoh.com/CandCPP/FAQ/FAQ00014.html
0935デフォルトの名無しさん
2009/10/15(木) 03:24:14他力本願になった時点で終わってるだろ
0936デフォルトの名無しさん
2009/10/15(木) 07:32:23int main(void) と int main() とは同値である、という結論が以前でていました。
0937デフォルトの名無しさん
2009/10/15(木) 07:43:030938デフォルトの名無しさん
2009/10/15(木) 07:47:33引数なしの関数を何か書くときに
int num(){
return 0+1;
}
int num(void){
return 0+1;
}
どっちが正しいの?
0939デフォルトの名無しさん
2009/10/15(木) 07:51:450940デフォルトの名無しさん
2009/10/15(木) 07:53:23ANSI以前との互換性のために、ANSI-Cではプロトタイプ宣言の時だけは引数にvoidを
明示しないとならないことになっている。
定義ではvoidの明示は不要。
C++ではプロトタイプ宣言でも関数定義でもvoidの明示は不要。
つまり、ANSI-Cで引数の無いmain関数のプロトタイプを書く場合だけは、引数の型を
voidとするのが正式。それ以外の場所は省略しても正式。
0941デフォルトの名無しさん
2009/10/15(木) 07:54:42main関数以外でも>>940が正しい
0942デフォルトの名無しさん
2009/10/15(木) 11:56:10貼る側の将来を心配してたらこんなスレ存在できないだろと言ってるんだが。
0943デフォルトの名無しさん
2009/10/15(木) 11:59:090944デフォルトの名無しさん
2009/10/15(木) 13:46:42宿題丸投げ→プログラム書けないやつになる→業界に人が入ってこない→仕事が回ってくる→平和
0945デフォルトの名無しさん
2009/10/15(木) 13:49:29未経験新人が入ってこない→教えなくてすむ→平和
できる気になってる新人が入ってこない→スパゲッティが生まれない→直さなくてよい→平和
など。
0946デフォルトの名無しさん
2009/10/15(木) 13:51:17こっちのレスと少しずれてる気もするが、そっちはそっちで理解した。判断は微妙なので保留だが。
(業界に人が少ないと短期的には自分の仕事は増えるが、将来的にはどうかなどを考えると)
0947デフォルトの名無しさん
2009/10/15(木) 14:13:59という流れもありそう。それにしてもなぜC/C++の宿題スレだけ活性なのかな?
0948デフォルトの名無しさん
2009/10/15(木) 14:20:10宿題として出題される率が高いからじゃね?
0949デフォルトの名無しさん
2009/10/15(木) 14:37:22習ってるヤツ多いんだろう。
習いはじめならjavaとかの方が簡単で、自分でやれるとか、GUI方面のやれるような宿題ばかりなのかも。
javaの宿題スレには今年まともな宿題がさっぱり集まらないが、そもそも、数理とか応用の宿題は見かけないし。
0950デフォルトの名無しさん
2009/10/15(木) 14:40:41最初に習う言語が、
経営→FORTRAN
情報→Pascal
だったっけ。
もう、十年以上前の話だけど。
0951デフォルトの名無しさん
2009/10/15(木) 16:17:54その順序で「進学」するのは最悪コースだったりすることが往々にして
あるから要注意
0952デフォルトの名無しさん
2009/10/15(木) 16:36:01問題点等ありましたらご指摘ください。
#include <stdio.h>
#include <stdlib.h>
#define n 4
int main(void)
{
int k, l, l2, temp, a[n*(n-1)-1];
srand(time(NULL));
for(k=0; k<(n*(n-1))-1; k++) a[(n*(n-1))-1] = k;
for(l=n-1; l>0; l--) {
l2 = rand() / (RAND_MAX + 1.0) * (l + 1);
temp = a[l2];
a[l2] = a[l];
a[l] = temp;
}
for(k=0; k<n*(n-1)-1; k++) printf("%d ", a[k]);
return 0;
}
0953デフォルトの名無しさん
2009/10/15(木) 17:10:14> for(k=0; k<(n*(n-1))-1; k++) a[(n*(n-1))-1] = k;
意図が見えないが… a[] の添え字はこれで良いの?
※ a[k] = k じゃないの?
0954デフォルトの名無しさん
2009/10/15(木) 17:16:30lがn-1からだと配列全体をシャッフルできない。
0955デフォルトの名無しさん
2009/10/15(木) 17:25:22直してみました。
しかしこれでも一つ変な数字がうまれてしまいます・・・。
というか、何故この変な数字がうまれるかが理解できない・・・。
#include <stdio.h>
#include <stdlib.h>
#define n 4
int main(void)
{
int k, l, l2, temp, a[n*(n-1)-1];
srand(time(NULL));
for(k=0; k<(n*(n-1))-1; k++) a[k] = k;
for(l=n*(n-1)-1; l>0; l--) {
l2 = rand() / (RAND_MAX + 1.0) * (l + 1);
temp = a[l2];
a[l2] = a[l];
a[l] = temp;
}
for(k=0; k<n*(n-1)-1; k++) printf("%d ", a[k]);
return 0;
}
0956デフォルトの名無しさん
2009/10/15(木) 17:35:31a[0] 〜 a[n*(n-1)-2] までしか器がない
のに
シャッフル部でいきなり a[l] → a[n*(n-1)-1] の配列外の他所の数字を操作しようとしてる
0957デフォルトの名無しさん
2009/10/15(木) 17:41:10分かりやすい説明で馬鹿な脳ミソでも理解できました。早速直してみます。ありがとうございました。
0958デフォルトの名無しさん
2009/10/15(木) 17:47:530960デフォルトの名無しさん
2009/10/15(木) 18:08:00あ?謝ってさらに要求って馬鹿か?
0961デフォルトの名無しさん
2009/10/15(木) 18:08:13そうそう、単に楽しんでいるだけで、別に宿題貼る人のことなど考えておりません。
0962デフォルトの名無しさん
2009/10/15(木) 18:40:03俺の勘違いかもしれないけど
0963デフォルトの名無しさん
2009/10/15(木) 18:59:29合ってたよ
0964デフォルトの名無しさん
2009/10/15(木) 23:48:050965デフォルトの名無しさん
2009/10/16(金) 01:05:37>>770
http://codepad.org/bGHxD3g1
第一引数:分類結果のファイル
このファイルの書式は >>841 にあわせています。
0966965
2009/10/16(金) 01:48:050971770
2009/10/16(金) 14:22:38ご解説願えませんでしょうか?
0972デフォルトの名無しさん
2009/10/16(金) 14:31:03ハ,,ハ
( ゚ω゚ ) お断りします
/ \
((⊂ ) ノ\つ))
(_⌒ヽ
ヽ ヘ }
ε≡Ξ ノノ `J
0974デフォルトの名無しさん
2009/10/16(金) 17:03:33[2] 問題文(含コード&リンク):
new と deleteを使ったプログラムの作成
人数、名前、点数を入力し、横棒グラフを表示するプログラムを作りなさい。
ただし、グラフは5点刻みとし、点数は0点から100点の範囲とする。
<実行画面>
人数 > 3
1人目の名前 > A
1人目の点数 > 80
2人目の名前 > B
2人目の点数 > 55
3人目の名前 > C
3人目の点数 > 95
名( 点 )| 50 100
--------+---------+---------+
A ( 80)|****************
B ( 55)|***********
C ( 95)|*******************
平均 77|***************
以下の変数をmain関数内に定義し、new とdelete で動的にメモリを確保、解放する。
char* nameAr; // 名前の配列 名前は1文字(1バイト)とする
int* markAr; // 点数の配列
int* barAr; // 棒グラフの長さの配列
[3] 環境
[3.1] OS:Windows XP
[3.2] Visual Studio 2005
[3.3] 言語:C++
[4] 期限:2009/10/23
[5] その他の制限:特にありません
よろしくお願い致します。
0975デフォルトの名無しさん
2009/10/16(金) 19:34:22#include<iostream>
#include<iomanip>
using namespace std;
int main(void){
int num=0;
cout << "人数 > ";
cin >> num;
char *nameAr=new char[num];
int *markAr=new int[num], *barAr=new int[num];
for(int i=0;i<num;i++){
cout << i+1 << "人目の名前 > ";
cin >> nameAr[i];
cout << i+1 << "人目の点数 > ";
cin >> markAr[i];
barAr[i]=markAr[i]/5;
}
int sum=0;
cout << "名( 点 )|" << setw(10) << 50 << setw(10) << 100 << endl;
cout << setw(9) << setfill('-') << '+' << setw(10) << '+' << setw(10) << '+' << endl;
for(int i=0;i<num;i++){
cout << " " << nameAr[i] << "(" << setw(3) << setfill(' ') << markAr[i] << " )" << "|";
cout << setw(barAr[i]) << setfill('*') << "" << endl;
sum+=markAr[i];
}
int average=(sum*2+num)/num/2;
cout << "平均" << setw(4) << setfill(' ') << average << "|";
cout << setw(average/5) << setfill('*') << "" << endl;
delete [] nameAr;
delete [] markAr;
delete [] barAr;
}
0976デフォルトの名無しさん
2009/10/16(金) 19:37:571 入力をm0、n0(m0>=n0)とする
2 n0が0ならば、m0を出力して終了
3 m0がn0で割り切れればn0を出力して終了
4 m0をn0で割ったあまりをn1として、m1=n0とする。3に戻る
例
m0 48 n0 36
m1 36 n0 12
n1=12
#include <iostream>
#include <cmath>
using namespace std;
int main() {
までは行きますが…
出力→cout
入力→cinです
0977デフォルトの名無しさん
2009/10/16(金) 19:44:360978デフォルトの名無しさん
2009/10/16(金) 19:45:08#include<iostream>
using namespace std;
int main(void){
int m=48, n=36, t, i;
for(i=0;;i++)
{
cout << "m" << i << " " << m << " n" << i << " " << n << endl;
if(!(t=m%n)) break;
m=n;
n=t;
}
cout << "n" << i << "=" << n << endl;
}
0979976
2009/10/16(金) 20:15:11n1 12です。
0980976
2009/10/16(金) 20:17:246行目構文エラー : ';' が ')' の前にありません。と出ました…
0981デフォルトの名無しさん
2009/10/16(金) 20:30:14コピペもできないのかよw
0982976
2009/10/16(金) 21:22:02結果には
n1=36
としか出てきません
0983デフォルトの名無しさん
2009/10/16(金) 21:31:24978見ながら1文字ずつ打ち込んでるんじゃないだろうな
0984デフォルトの名無しさん
2009/10/16(金) 21:39:510985デフォルトの名無しさん
2009/10/16(金) 21:48:18for(i=0;i++;)にしちゃったのね
0986デフォルトの名無しさん
2009/10/16(金) 21:52:28[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9982.txt
[3] 環境
[3.1] OS: Windows/vista
[3.2] コンパイラ名とバージョン: Visual C++ 2008
[3.3] 言語: C++
[4] 期限: 2009年10月22日
[5] その他の制限:txt内に書いてあるとおりに書いてくだされば。
よろしくお願いします
0987デフォルトの名無しさん
2009/10/16(金) 21:56:510988デフォルトの名無しさん
2009/10/16(金) 21:57:25widthとheightって画像ファイル自体の幅と高さってことでおk?
0989デフォルトの名無しさん
2009/10/16(金) 22:06:41ビルド環境セットってなんかないの?
0990デフォルトの名無しさん
2009/10/16(金) 22:07:410991デフォルトの名無しさん
2009/10/16(金) 22:17:55別になくね。
回答者は好きなやつでやるし、出題者は学校で指定されてるだろうし。
0992デフォルトの名無しさん
2009/10/16(金) 22:19:49標準的なソースがコンパイル出来ればどれでも。
中にはバージョンやらサポートしていないものを
妙に毛嫌いする人もいるしね・・・Visual C++があればそれでも
構わないが。BCCを薦めると妙に噛み付く人がいるしw
あと使用しているOSにもよるし。UNIXなら標準搭載の
コンパイラを使えば良いしぃ〜。
0993デフォルトの名無しさん
2009/10/16(金) 22:35:07[2] 問題文
課題文1
文字を一文字入力して、文字コードが一個次の文字を表示するプログラムを作成せよ。
課題文2
文字を一文字入力して、入力文字が a-z の範囲のときのみ、次のアルファベットを表示すプログラムを作成せよ。
ただし、zを入力した場合は a を表示し、a-z以外の文字を入力した場合は入力した文字をそのまま表示すること。
例: aを入力 → b を出力 bを入力 → c を出力 zを入力 → a を出力 3を入力 → 3 を出力 $を入力 → $ を出力 Aを入力 → A を出力
課題文3
文字を一文字入力して、入力された文字が、英字の小文字であるか、英字の大文字であるか、数字であるか、それ以外の文字であるか判別して、判別結果を表示するプログラムを作成せよ。
[3] 環境
Windows,
言語:C++
[4] 期限:10/23
宜しくお願い致します。
0994デフォルトの名無しさん
2009/10/16(金) 22:51:45そうです。答えるのに遅れて申し訳ない。。
0995デフォルトの名無しさん
2009/10/16(金) 22:59:40#include <iostream>
using namespace std;
int main(){
int m=48, n=36, t, i;
while(m!=n)
{
cout << "m" << i << " " << m << " n" << i << " " << n << endl;
if(m>n) m-=n; else n-=m;
i++;
}
cout << "n" << i << "=" << n << endl;
}
0996976
2009/10/16(金) 23:51:490997976
2009/10/16(金) 23:57:51;;って2つ入れるのってOKなんですか?
0998デフォルトの名無しさん
2009/10/17(土) 00:04:50べつにいい
>>993
あんまりよく読んでないけど
/// 1
#include <iostream>
int main()
{
char c;
while (1) {
std::cin >> c;
c += 1;
std::cout << c << std::endl;
}
return 0;
}
0999デフォルトの名無しさん
2009/10/17(土) 00:06:08\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
1000デフォルトの名無しさん
2009/10/17(土) 00:06:30/// 2
#include <iostream>
int main()
{
char c;
while (1) {
std::cin >> c;
if ('a' <= c && c <= 'y') c += 1;
else if ('z' == c) c = 'a';
std::cout << c << std::endl;
}
return 0;
}
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。