C/C++の宿題を片付けます 87代目
レス数が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++の宿題を片付けます 86代目
http://pc11.2ch.net/test/read.cgi/tech/1176996941/
0002デフォルトの名無しさん
2007/05/13(日) 12:25:310003デフォルトの名無しさん
2007/05/13(日) 12:42:40そうでもない
0004デフォルトの名無しさん
2007/05/13(日) 13:48:570005デフォルトの名無しさん
2007/05/13(日) 19:52:570006デフォルトの名無しさん
2007/05/13(日) 20:34:33[2] 問題文(含コード&リンク):
英文が書かれたテキスト文章をファイルオープンで開いてchar型の配列に格納する。
そして、英文をすべて大文字に変えてから、標準出力せよ。
テキストファイルの最後まできちんと読み込むこと。
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 特になし
お願いします
0007デフォルトの名無しさん
2007/05/13(日) 23:20:30#include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fd;
char ch;
if (argc < 2) {
fprintf(stderr,"[usage] %s infile\n",argv[0]);
return -1;
}
if (!(fd = fopen(argv[1],"r"))) {
fprintf(stderr,"cannot open %s\n",argv[1]);
return -1;
}
while (fread(&ch,1,1,fd)==1) printf("%c",('a'<=ch)&&(ch<='z')?(ch-'a'+'A'):ch);
fclose(fd);
return 0;
}
0008デフォルトの名無しさん
2007/05/13(日) 23:25:20マルチバイト文字のチェックはなし
0009デフォルトの名無しさん
2007/05/13(日) 23:54:15[2] 問題文(含コード&リンク):
#include<stdio.h>
void main()
{
double X;
double Y;
printf("長さ(cm):");
scanf("%lf",&X);
Y=X / 2.54;
printf("%f(cm)は%(inch)です。",X,Y);
}
表示結果が小数点以下の余分な0を表示させないようにして下さい。
例)2.54000(cm)は1.00000(inch)です。×
2.54(cm)は1(inch)です。〇
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 来週中
[5] その他の制限: 特になし
宜しくお願いします
0010デフォルトの名無しさん
2007/05/13(日) 23:56:230011デフォルトの名無しさん
2007/05/14(月) 00:02:58[2] 問題文(含コード&リンク)
バブルソートを用いて構造体に対して、データが格納された構造体配列を
学生証番号で降順にソートする関数sortIDと点数で降順にソートする関数sortEngを作成しなさい。
データの入力は、関数input_seiseki_pを呼び出して行い、次に「どちらで整列しますか(1:学生証番号、2:点数):」と表示し
その入力により関数sortIDと関数sortEngを選択肢、その結果を関数seisekiを使って表示する関数meinを作りなさい
上記の問題において私なりに途中まで作ってみたのですが、
ここから先がわかりません。。
どなたかお知恵を拝借させて下さい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3974.c
↑途中まで作ったソースです。
間違っている部分もあるかと思われますが;;
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 明日(14日)
[5] その他の制限: 特になし
よろしくお願いします。
00129
2007/05/14(月) 00:15:12ありがとうございました!
0013デフォルトの名無しさん
2007/05/14(月) 04:24:59[2] 問題文(含コード&リンク):
〜 第3回課題 〜
今回はオセロの盤面の表示を行う部分の作成を行う。
授業中に配布、および作成したプログラムのうち
init.cファイル、及びboard_show.cファイルのソース内の第3回課題と書かれた部分に
必要な処理を追加しなさい。
処理や変数に簡単なコメントを付け加えること。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3976.zip
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 水曜2限
[5] その他の制限: 配列、ポインタ、構造体などといった基本的な事項は一通り学んでいます
よろしくお願いします。
0014デフォルトの名無しさん
2007/05/14(月) 17:41:07>6には「char型の配列に格納」と書いてあるよ。
0015デフォルトの名無しさん
2007/05/14(月) 17:53:55こんなかんじか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3977.c
0016デフォルトの名無しさん
2007/05/14(月) 18:07:37[2] 問題文(含コード&リンク):
乗算合同法を用いて擬似乱数を作成し、Box-Muller法により平均0、分散1の正規乱数系列に
変換した場合に(1×10^6)個の系列から以下の方法で確率密度関数を推定し、ガウス分布
p(x) = {1 / (2π)^(1/2) } × exp(-x^2 / 2)
と比較せよ。
〜確率密度関数の推定〜
確率密度関数p(x)とした場合に確率密度関数のヒストグラムからの推定値は以下で与えられる。
p(x_i) = {N(x_i - Δ/2 ; x_i + Δ/2)} / MΔ
ここで、N(x_1 ; x_2)は区間(x_1 , x_2] に含まれる個数を表し、Mはサンプル数、Δはヒストグラムの
刻み幅である。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年5月28日
[5] その他の制限: 特にありません
よろしくお願いします。
0017デフォルトの名無しさん
2007/05/14(月) 18:12:54書き直して途中でやめた。
0018デフォルトの名無しさん
2007/05/14(月) 19:21:52[2] 問題文(含コード&リンク):
下記に示すファイルを読み込み、配列に格納し探索対象のデータとする。
ファイル名:/home/sample/tanaka/integer.dat
integer.datには下記のように1から100000の整数が昇順に入っている。
1
3
46
125
365
・
・
・
100000
下記の2組の整数(探索値を設定する(main関数の変数に格納し、printf文で表示する。
(1)表中にある整数:5個
(2)表中にない整数:5個
これらの探索値を下記の2つの探索アルゴリズムを用いて探索し、このときの比較回数を
記録する。
(1)逐次探索法
(2)二分探索法
下記の要件を必ず満たすようにプログラムを作成せよ。
(1)最初に読み込むファイル名は絶対パスとしてmain関数内で記述せよ。
(2)比較回数等、測定結果をプログラムの最後に出力せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2007年5月17日
[5] その他の制限: 特にありません
main関数は大体は書けたのですが探索法がよく分からず関数の受け渡しがうまくいきません。
よろしくお願いします。
0019デフォルトの名無しさん
2007/05/14(月) 19:26:05[2] 問題文(含コード&リンク):
標準入力された生徒データ(番号、名前(半角英字20文字以内)、年齢、血液型)を
文字型で宣言し、入力したデータをリストデータで管理するシステムを作成せよ。
生徒データ管理の機能として「データ入力」「データ削除」「データ表示」「終了」
の機能を用意すること。また以下の仕様を守ること。
「データ削除」機能は番号、名前、年齢、血液型をキーとして削除できるようにすること。
「データ表示」機能は番号順、年齢順、名前順、血液型順を昇順で表示が可能であること。
無駄な領域を使用しない。(malloc関数を使用すること)
確保した領域はポインタによるチェーン構造でデータを管理すること。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年5月16日
[5] その他の制限: 自己参照構造体、チェーン構造を用いること
よろしくお願いします。
0020せんしぇ〜 ◆cNsKLREitk
2007/05/14(月) 19:26:43二分木探索って言うんだけど・・・
0021デフォルトの名無しさん
2007/05/14(月) 19:31:43アホコテはこれ以上恥かかないうちに消えたほうがいいよプゲラ
002218
2007/05/14(月) 19:32:33#include<stdio.h>
#include<stdlib.h>
#define SIZE 1000000
main(){
int i=0;
int integer[SIZE];
char filename[80];
FILE *fp;
int a[5],b[5];a[0]=1;
a[1]=20; a[2]=43; a[3]=54; a[4]=62;
b[0]=2; b[1]=21; b[2]=44; b[3]=55; b[4]=63;
printf("表中にある整数:%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
printf("表中にない整数:%d %d %d %d %d\n",b[0],b[1],b[2],b[3],b[4]);
sprintf(filename,"/home/s063831/home/sample/gotoh/integer100KS.dat");
if(NULL==(fp=fopen(filename,"r"))){
printf("\n %s can not be open\n",filename);
exit(1);}
while(fscanf(fp,"%d",&integer[i])!=EOF)
i++;
fclose(fp);
}
00236
2007/05/14(月) 21:48:07配列に格納しないと駄目なんですが・・・・
0024デフォルトの名無しさん
2007/05/14(月) 22:23:42[2] 問題文(含コード&リンク):
問題↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3978.txt
プログラム例↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3979.txt
出力例↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3980.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5月15日午前3時くらいまでにお願いします。
よろしくお願いします。
0025デフォルトの名無しさん
2007/05/14(月) 22:47:50[2] 問題文(含コード&リンク):n進数を入力するとを10進数に変換し表示するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:2007年5月16日まで
よろしくお願いします。
0026デフォルトの名無しさん
2007/05/14(月) 22:50:58も一回勉強し直した方がよいと思われ
0027デフォルトの名無しさん
2007/05/14(月) 23:20:48[2] 問題文(含コード&リンク):
読み込んだファイルの内容を16進ダンプし、新しいファイルに出力しなさい。
ただし、読み込むファイルの最大サイズは2MBまであり
最大サイズのファイルを与えられた場合も出力は5秒程度で終わること。
[3] 環境
[3.1] OS:Windows 2000/XP
[3.2] コンパイラ名とバージョン:VC++ 6.0
[3.3] 言語:C++
[4] 期限:2007年5月16日まで
挑戦課題の一つです。
エラー処理はそこそこでいいので、速ければ速いだけ良い、という問題です。
ダンプするだけならたいしたことないのですが、
CString を使って1バイトごとに変換していくと、
1MB処理するのに80秒とかかかってしまいます。
高速なアルゴリズムをよろしくお願いします。
0028デフォルトの名無しさん
2007/05/14(月) 23:24:42入力32バイトごとに改行する必要があります。
なので、出力フォーマットは一行64バイト+改行コードとなり、
xxxx....xxxx
xxxx....xxxx
xxxx....xxxx
のかたちになります。すみません。
0029デフォルトの名無しさん
2007/05/14(月) 23:25:3432倍以上速いPCを用意しる!!!!
0030デフォルトの名無しさん
2007/05/14(月) 23:25:49>速ければ速いだけ良い、という問題です。
おっ!
これは面白そうな課題ではないか・・・
0031デフォルトの名無しさん
2007/05/14(月) 23:29:59出力ファイルはテキスト?
0032デフォルトの名無しさん
2007/05/14(月) 23:32:2680秒を出した環境ってのはCele3.2GHz、メモリ0.99GBなんです…。
>>31
はい、そのとおりです。
(「どちらにも対応できればいいね〜。」みたいなことは言ってましたが、
とりあえずそこは無視です。)
0033デフォルトの名無しさん
2007/05/14(月) 23:47:070034デフォルトの名無しさん
2007/05/14(月) 23:49:05入力ファイルはテキストファイルでもいい…
ってことだったと思うのですが、
課題に取り組んでいてちゃんと聞いていなかったのです。
もうしわけ。
0035デフォルトの名無しさん
2007/05/14(月) 23:50:130036デフォルトの名無しさん
2007/05/14(月) 23:55:28とりあえずC言語でやってみた。後でC++に書き直してみる。
IO回数を減らせばもっと早くなる!(fwriteの回数を減らすだけ)
#include<stdio.h>
int main(void){
char hexstr[256][3];
char *fname_in="in.dat", *fname_out="out.dat";
FILE *fp_in, *fp_out;
unsigned char buf[32*1024];
int i, read_size, lf_len;
for(i=0;i<256;i++) sprintf(hexstr[i], "%02X", i);
fp_in=fopen(fname_in, "rb");
fp_out=fopen(fname_out, "w");
if(fp_in==NULL || fp_out==NULL) return 1;
for(;;){
read_size=fread(buf, 1, sizeof(buf), fp_in);
if(read_size<=0) break;
for(i=0;i<read_size;i++){
fwrite(hexstr[buf[i]], 2, 1, fp_out);
if((i+1)%32==0)
fwrite("\n", 1, 1, fp_out);
}
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
0037デフォルトの名無しさん
2007/05/14(月) 23:56:1680秒かかるやつですか?
今、手元にないです。
ちゃんと思い出そうにも思い出せません。
CFile fp
fp.Open(バイナリなどなど);
fp.Read(配列);
CString out = ""+
for(i = 0; i < size; i++) {
CString tmp = 配列のi番目の要素;
tmp.Format("%02X");
out += tmp;
で、outをWriteして終わり
とか、こんな感じでした。
CStringを連発しているのが悪いんだろうなぁとは思うのですが…。
0038デフォルトの名無しさん
2007/05/15(火) 00:02:47環境が変わると速度が変わるから比較したかっただけ。
0039デフォルトの名無しさん
2007/05/15(火) 00:05:25using namespace std;
int main()
{
FILE *rfp, *wfp;
unsigned char data[32];
size_t i, size;
rfp = fopen("in.bin","rb");
wfp = fopen("out.txt","w");
while(1)
{
size = fread(data, 1, 32, rfp);
for(i=0; i<size; ++i)
fprintf(wfp, "%02X", data[i]);
fprintf(wfp, "\n");
if(size != 32) break;
}
fclose(wfp);
fclose(rfp);
return 0;
}
かなり適当。もしかしたら遅いかも。それ以前に動かないかも。
0040デフォルトの名無しさん
2007/05/15(火) 00:07:58よろしくお願いします。
0041デフォルトの名無しさん
2007/05/15(火) 00:09:47004241
2007/05/15(火) 00:11:250043デフォルトの名無しさん
2007/05/15(火) 00:12:20これでどう?
#include <stdio.h>
char hex_u[] =
"0000000000000000" "1111111111111111" "2222222222222222" "3333333333333333"
"4444444444444444" "5555555555555555" "6666666666666666" "7777777777777777"
"8888888888888888" "9999999999999999" "AAAAAAAAAAAAAAAA" "BBBBBBBBBBBBBBBB"
"CCCCCCCCCCCCCCCC" "DDDDDDDDDDDDDDDD" "EEEEEEEEEEEEEEEE" "FFFFFFFFFFFFFFFF";
char hex_l[] =
"0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF"
"0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF"
"0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF"
"0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF" "0123456789ABCDEF";
004443
2007/05/15(火) 00:13:30int main(int ac, char *av[])
{
FILE *s, *d;
if (ac == 3 && (d = fopen(av[1], "wb")) != NULL && (s = fopen(av[2], "rb")) != NULL &&
setvbuf(s, NULL, _IOFBF, 0x100000) == 0 && setvbuf(d, NULL, _IOFBF, 0x100000) == 0)
while (1) {
int c;
#define W if ((c = getc(s)) == EOF) break; putc(hex_u[c], d), putc(hex_l[c], d)
W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;W;
putc('\r', d); putc('\n', d);
}
return 0;
}
0045デフォルトの名無しさん
2007/05/15(火) 00:20:13ハッカーすぎて、何してるのか頭が追いつかないw
0046デフォルトの名無しさん
2007/05/15(火) 00:23:36誰か測定よろ。
0047デフォルトの名無しさん
2007/05/15(火) 00:23:54まぁ、いかに効率の良いアルゴリズムを用いることができるかなら
比較すりゃ良いけど、漠然と決められた時間ってのは、高性能なCPUを
用いるのが一番早いw
0049デフォルトの名無しさん
2007/05/15(火) 00:27:57>>43のは本当に処理してるのか不安になるくらい速い。
このW;連発のが、for(i = 0; i < 32; i++)よりも速くなるものなの?
0050デフォルトの名無しさん
2007/05/15(火) 00:28:07Core2Duo T5500
2048M
0051デフォルトの名無しさん
2007/05/15(火) 00:31:17ファイル出力してる?
0052デフォルトの名無しさん
2007/05/15(火) 00:33:12第一引数が出ファイルで第二引数が入力ファイルでないの?
0053デフォルトの名無しさん
2007/05/15(火) 00:34:39[2] 問題文(含コード&リンク)
英単語とその和訳の辞書ファイルta.docとしてエディタで作成する。
辞書ファイルの形式は以下の通りで、単語の品詞は考えない。
プログラムの機能としては英単語を入力すると対応する和訳を表示。
「q」を入力したら終了。
/*ta.doc
dog, 犬
cat, 猫
pig, 豚
*/
/*実行例
英和辞典
英単語:cat
日本語で「猫」
英単語:q
終了
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 5月16日AM:11:00まで
[5] その他の制限: 特になし
よろしくお願いします
0054デフォルトの名無しさん
2007/05/15(火) 00:35:210057デフォルトの名無しさん
2007/05/15(火) 00:43:32#include <string>
#include <windows.h>
using namespace std;
int main(int argc, char **argv)
{
if (argc < 3) return 1;
HANDLE fin = CreateFile(argv[1], GENERIC_READ, 0, 0, 3, 0, 0);
if (fin == (HANDLE)-1) return 1;
HANDLE fout = CreateFile(argv[2], GENERIC_WRITE, 0, 0, 2, 0, 0);
if (fout == (HANDLE)-1) return 1;
static char *hextab = "0123456789abcdef";
unsigned char buff[0x2000], obuff[0x5000], *p;
DWORD i, j, dwRead, dwWritten;
while (ReadFile(fin, buff, sizeof buff, &dwRead, 0) && dwRead > 0) {
for (i = j = 0, p = obuff; i < dwRead; ++i, j = (j + 1) % 0x20) {
*p++ = hextab[buff[i] >> 4];
*p++ = hextab[buff[i] & 0xf];
if (j == 0x1f) *p++ = '\r', *p++ = '\n';
}
WriteFile(fout, obuff, p - obuff, &dwWritten, 0);
}
CloseHandle(fin), CloseHandle(fout);
return 0;
}
005836
2007/05/15(火) 00:46:27#include<stdio.h>
int main(void){
short tmp[2], hexvalue[256];
char *fname_in="in.dat", *fname_out="out.dat";
FILE *fp_in, *fp_out;
unsigned char buf[32*1024];
short buf_out[sizeof(buf)+sizeof(buf)/32];
int i, j, read_size;
for(i=0;i<256;i++){sprintf((char *)tmp, "%02X", i);hexvalue[i]=tmp[0];}
sprintf((char *)tmp, "%c%c", 0x0d, 0x0a);
fp_in=fopen(fname_in, "rb");
fp_out=fopen(fname_out, "wb");
if(fp_in==NULL || fp_out==NULL) return 1;
for(;;){
read_size=fread(buf, 1, sizeof(buf), fp_in);
if(read_size<=0) break;
for(i=0,j=0;i<read_size;i++)
{
buf_out[j++]=hexvalue[buf[i]];
if((i+1)%32==0)
buf_out[j++]=tmp[0];
}
fwrite(buf_out, 2, j, fp_out);
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
0059デフォルトの名無しさん
2007/05/15(火) 00:48:030060デフォルトの名無しさん
2007/05/15(火) 00:49:40遅くなると思う。
0061デフォルトの名無しさん
2007/05/15(火) 00:58:00やっぱ遅いすか
0062デフォルトの名無しさん
2007/05/15(火) 01:01:40プログラムがいくらがんばっても仕方ないかも・・・
0063デフォルトの名無しさん
2007/05/15(火) 01:06:16だね。短期的な処理はほとんど差が出ないけど、長期化すると出るものとなると
もはや高性能なハードウェアを使うのが望ましいってなるだろうね・・・
0064デフォルトの名無しさん
2007/05/15(火) 01:09:55ファイルを読んで何もしないで出力するだけなら
5秒を切れるプログラムは書けるよね?
0065>53
2007/05/15(火) 02:44:24#include <stdio.h>
#include <string.h>
int main(void)
{
char w[1024]={0};
puts("英和辞典");
do{ printf("英単語:"); fscanf(stdin,"%s",w);
if(strcmp(w,"q")==0) break;
else{
char buf[1024]={0};
FILE *fin = fopen("ta.doc","rb");
while(fgets(buf, sizeof(buf), fin)!=NULL){
*(strchr(buf, ','))='\0';
if(strcmp(buf,w)==0){
*(strrchr(&buf[strlen(w)+1], '\n'))='\0';
printf("日本語で「%s」\n", &buf[strlen(w)+1]);
}
}
fclose(fin);
}
}while(1);
return 0;
}
0066暗号
2007/05/15(火) 03:26:31[2] 問題文(含コード&リンク):
1.英文を入力するとその暗号文が出力されるプログラムの作成
入力:文字列(英文)
出力:文字列(数字)
2.暗号文を元の英文に戻すプログラムの作成
入力:文字列(数字)
出力:文字列(英文)
暗号は換字暗号でよい。[アルファベット(a〜z)、スペースを数字(00〜26)、スペースを対応させる]例a⇔23、b⇔09、c⇔17…
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 火曜日の夕方、もしくは水曜日の朝まで
[5] その他の制限: ループ(forやwhile)、配列を使って作成する
よろしくおねがいします。
0067デフォルトの名無しさん
2007/05/15(火) 06:16:21前スレにあった奴
const int aaCharToInt[] = { 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,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0,
0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
25,26,27,28,29,29,30,31,32,33,34,35, 0, 0, 0, 0,
0,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
25,26,27,28,29,30,31,32,33,34,35,35, 0, 0, 0, 0, };
int n2dec(int n, char *p) {
int ret = 0, flag = 1;
if(*p=='-') flag = -1;
while(*p) {
ret = ret * n + aaCharToInt[*p];
p++;
}
return ret * flag;
}
0068デフォルトの名無しさん
2007/05/15(火) 06:30:130069デフォルトの名無しさん
2007/05/15(火) 06:45:04ありがとうございました ぺこ <(_ _)>
0070デフォルトの名無しさん
2007/05/15(火) 06:54:18半角と全角の区別もつかない奴が催促するなんて百年はえーよ
0071デフォルトの名無しさん
2007/05/15(火) 07:27:43int output_1[M][N], output_2[N][M], output_3[N][M], output_4[M][N*3];
printf("----- Original -----\n");
for(i=0; i<M; i++) for(j=0; j<N; j++) output_1[i][j] = input[i][j];
for(i=0; i<M; i++) {
for(j=0; j<N; j++) {
if(output_1[i][j]) printf("*");
else printf(" ");
}
printf("\n");
}
printf("----- Rotation left 90゚ -----\n");
for(i=0; i<N; i++) for(j=0; j<M; j++) output_2[i][j] = input[j][N-1-i];
for(i=0; i<N; i++) {
for(j=0; j<M; j++) putchar(output_2[i][j] ? '*' : ' ');
putchar('\n');
}
printf("---- Transposition -----\n");
for(i=0; i<N; i++) for(j=0; j<M; j++) output_3[i][j] = input[j][i];
for(i=0; i<N; i++) {
or(j=0; j<M; j++) putchar(output_3[i][j] ? '*' : ' ');
putchar('\n');
}
printf("---- Expansion -----\n");
for(i=0; i<M; i++) for(j=0; j<N*3; j++) output_4[i][j] = input[i][j/3];
for(i=0; i<M; i++) {
for(j=0; j<3*N; j++) putchar(output_4[i][j] ? '*' : ' ');
putchar('\n');
}
007218
2007/05/15(火) 08:33:310073デフォルトの名無しさん
2007/05/15(火) 08:39:28データは?
0074デフォルトの名無しさん
2007/05/15(火) 08:45:14フォーマットは分かってるんだから別に必要ない気がするぞ。
0075デフォルトの名無しさん
2007/05/15(火) 08:49:08>>18の場合はそんなに面倒じゃなさそうだけど・・・
0076デフォルトの名無しさん
2007/05/15(火) 08:53:440077デフォルトの名無しさん
2007/05/15(火) 08:54:48>>1読んで書き直し
0078デフォルトの名無しさん
2007/05/15(火) 08:55:480079デフォルトの名無しさん
2007/05/15(火) 10:02:180080デフォルトの名無しさん
2007/05/15(火) 10:10:08今更だけどC++化した。1.5秒ほどで終了する。
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <iomanip>
int main(void)
{
char hexstr[256][3];
char *fname_in = "in.dat", *fname_out = "out.dat";
unsigned char buf[32 * 1024];
int i;
std::ostringstream str;
str << std::hex << std::uppercase;
for (i = 0; i < 256; i++) {
str << std::setw(2) << std::setfill('0') << i << '\0';
}
str << std::dec << std::nouppercase;
std::memcpy(hexstr, str.str().c_str(), 256 * 3);
std::ifstream fp_in(fname_in, std::ios::in | std::ios::binary);
std::ofstream fp_out(fname_out, std::ios::out | std::ios::trunc);
if (!fp_in || !fp_out)
return 1;
for (;;) {
if (!fp_in.get(reinterpret_cast<char*>(buf), sizeof(buf)))
break;
0081デフォルトの名無しさん
2007/05/15(火) 10:10:47for (i = 0; i < static_cast<int>(sizeof(buf)); i++) {
str << hexstr[buf[i]];
if ((i + 1) % 32 == 0)
str << "\n";
}
fp_out << str.str();
}
}
ただし出力にostringstreamを使っても使わなくても速度はほとんど
変わらないようだ。
0082デフォルトの名無しさん
2007/05/15(火) 10:41:35俺の所では0.5秒ほどだった。
C++でも結構速いな。
0083ニュートン・ラフソン法
2007/05/15(火) 10:45:16(x1[0],x2[0]) = (0.8,0.2)とする。
f1 = x1^2 + x2^2 -1
f2 = x1 + x2 -1
とありますが、先生から提示されたヒントとして
「まずx1を微分してx2を微分してその後に初期値を入れる」
といわれましたが、どうのように微分をしたらよいのかわかりません
[3] 環境
[3.1] OS: WindowsXP
[3.2] bcc32
[3.3] 言語: C言語
期限は今日中です><
教えてください!
0084デフォルトの名無しさん
2007/05/15(火) 10:46:470085ニュートン・ラフソン法
2007/05/15(火) 11:18:24どうもありがとうございます
0086デフォルトの名無しさん
2007/05/15(火) 11:27:16df1/dx1 = d(x1^2 + x2^2 -1)/dx1 = 2*x1
df1/dx2 = d(x1^2 + x2^2 -1)/dx2 = 2*x2
df2/dx1 = 1
df2/dx2 = 1
0087デフォルトの名無しさん
2007/05/15(火) 11:34:330088デフォルトの名無しさん
2007/05/15(火) 12:01:07↓これの式を変えればいいんでない。
ttp://www.geocities.jp/supermisosan/newton21.html
0089デフォルトの名無しさん
2007/05/15(火) 12:31:21すげえなこんなのどっから見つけてくるんだよ。
取り敢えずやってみたらX1=1.0、X2=0.0となった。
別解としてX1=0.0、X2=1.0というのもあるはずだが、ニュートン法なので
一つしか出ないのだろう。
0090デフォルトの名無しさん
2007/05/15(火) 14:14:00[2] 問題文(含コード&リンク):乗算合同法を用いて、(0,1)の範囲の値を取る
乱数を生成せよ。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限:2007年5月21日
[5] その他の制限:なし
よろしくお願いします。
0091デフォルトの名無しさん
2007/05/15(火) 14:25:04http://www5.airnet.ne.jp/tomy/cpro/ra2.htm
0092デフォルトの名無しさん
2007/05/15(火) 16:19:25#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct word word;
struct word{
char *en;
char *jp;
word *next;
};
word *makenode(FILE *fp);
void search(word *temp);
void mfree(word *temp);
int main()
{FILE *fp = fopen("ta.doc","r");word *temp = makenode(fp);show(temp);search(temp);
mfree(temp);return 0;}
word *makenode(FILE *fp){ word *temp = NULL;word *now = NULL;char *ctemp;
char buff[256] = {'\0'};char en[256] = {'\0'};char jp[256] = {'\0'};
while(fgets(buff,sizeof(buff), fp)){if(ctemp = strchr(buff, '\n'))*ctemp = '\0';
if(ctemp = strchr(buff, ','))*ctemp = '\0';
strcpy(en, buff);strcpy(jp, ctemp + 1);temp = malloc(sizeof(word));temp->en = malloc(strlen(en) + 1);
temp->jp = malloc(strlen(jp) + 1);strcpy(temp->en, en);strcpy(temp->jp, jp);
if(now == NULL){ temp->next = now;now = temp;}else{now->next = NULL;temp->next = now;
now = temp;}}return now;}void search(word *temp){ char buff[256] = {'\0'};word *wtemp;
char *ctemp;for(;;){puts("英和辞典");printf("英単語:");fgets(buff, sizeof(buff),stdin);
if(ctemp = strchr(buff, '\n'))*ctemp = '\0';if(strcmp(buff,"q") == 0)break;
for(wtemp = temp; wtemp != NULL; wtemp = wtemp->next)if(strcmp(buff, wtemp->en) == 0)
printf("日本語で「%s」\n",wtemp->jp);}}void mfree(word *temp){word *wtemp = temp;word *wftemp = NULL;
char *cjtemp = NULL;char *cetemp = NULL;while(wtemp != NULL){wftemp = wtemp;cjtemp = wtemp->jp;
cetemp = wtemp->en;wtemp = wtemp->next;free(cjtemp);free(cetemp);free(wftemp);}}
009392
2007/05/15(火) 16:28:08//now->next = NULL;
temp->next = now;
now = temp;
0094デフォルトの名無しさん
2007/05/15(火) 17:31:04istream::get()はstdioのfgets()のC++版だからこの用途には向かないよ。
改行文字で切れるし、何バイト読めたか分からない。
0095 ◆90k6K4GDF6
2007/05/15(火) 17:45:42授業が始まったばかりで、レポートにまとめるフローチャートの書き方が分かりません。
初歩の初歩ですがググっても今一理解出来なかったのでお願いします
(a,b,cのデータをc,b,aの順に表示するプログラム)
#include <stdio.h>
int main(vold)
{
int a, b, c;
printf("a,b,cの順に整数型データを入力してください--> ">;
scanf("%d%d%d", &a, &b, &c);
printf("c,b,aの順に表示すると--> %d %d %d \n",c,b,a);
return 0;
}
0096デフォルトの名無しさん
2007/05/15(火) 17:49:37スレ違い。
○main
|
□プロンプト表示
|
□数値入力
|
□数値表示
|
○return
009766
2007/05/15(火) 17:51:17int main(void){
int i;
char a[]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int b[]={'01','10','11','02','20','22','03','30','33','04','40','44','05','50','55','06','60','66','07','70','77','08','80','88','09','90'};
printf();
scanf();
while(){
}
printf();
return 0;
}
これを改良してプログラムを作成してもらえないでしょうか?
お願いします。
0098 ◆90k6K4GDF6
2007/05/15(火) 17:52:44やはりスレチでしたか、すみません;
でもありがとう
0099デフォルトの名無しさん
2007/05/15(火) 17:55:35期限: 5/18(金)まで
コインはA[n]の配列に入れて、日本円みたいに1,5,10,50…というコインではなく、
どんなコインの組み合わせに対しても、最小の枚数を求めさせる。
日本円だと大きいコインから順に取っていけばいいのですが、
1円、3円、4円のコインの組み合わせで、6円だったら3円×2枚が最小になる、
みたいな場合があるのでどうすればいいのか分からないです><
再帰を使った疑似コードをかけって言われたんですけど誰か分かる人いませんか?
よろしくお願いします。
0100デフォルトの名無しさん
2007/05/15(火) 17:56:05なんだ、ぼるじょあスレとマルチかYO!
0101気まぐれアナスイ
2007/05/15(火) 18:04:02int main(void>{ int i;
char a[]={"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"};
int b[]={01,10,11,02,20,22,03,30,33,04,40,44,05,50,55,06,60,66,07,70,77,08,80,88,09,90,99"};
printf();
scanf();
while(){ }
printf();
return0; }
0102気まぐれアナスイ
2007/05/15(火) 18:08:58#include <stdio.h>|(/n)
int main(void>{ int i;|(/n)
char a[]={"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"};|(/n)
int b[]={01,10,11,02,20,22,03,30,33,04,40,44,05,50,55,06,60,66,07,70,77,08,80,88,09,90,99"};|(/n)
printf();|(/n)
scanf();|(/n)
while(){ }|(/n)
printf();|(/n)
return0; }|(/n)
0103デフォルトの名無しさん
2007/05/15(火) 18:17:32#include <stdio.h>
#include <string.h>
void encryptPrint(const char * str)
{
static char const src[] = "abcdefghijklmnopqrstuvwxyz";
static char const dest[] = {
1, 10, 11, 2, 20, 22, 3, 30, 33, 4, 40, 44, 5,
50, 55, 6, 60, 66, 7, 70, 77, 8, 80, 88, 9, 90};
int len = strlen(str);
for (int ic = 0; ic < len; ++ic) {
char * ptr = strchr(src, str[ic]);
if (ptr != NULL) {
printf("%02d", dest[ptr - src]);
} else {
putchar(str[ic]);
}
}
}
int main()
{
char buf[200];
while (fgets(buf, sizeof(buf), stdin) != NULL) {
encryptPrint(buf);
}
return 0;
}
0104気まぐれアナスイ
2007/05/15(火) 18:37:09#include "1179025919/[>>???]"
((1179025919/[>>???] "this line harmony");)|#pref=()/
((1179025919/[line 101] "no");)|#pref=()/
((1179025919/[line 102] "used no");)|#pref=()/
if|<end>
</end>
0105気まぐれアナスイ
2007/05/15(火) 18:39:54では、また。
0106デフォルトの名無しさん
2007/05/15(火) 20:51:45[1] 授業単元: プログラミング演習
[2] 問題文:
8×4、9÷4をそれぞれ四則演算子を用いずに計算し、その計算結果を表示させない。
(ヒント:シフト演算子を使用)
<実行結果>
・8×4=32
・9÷4=商2、余1
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語: C言語
[4] 期限: [2007年05月16日まで]
[5] その他の制限:なし
0107デフォルトの名無しさん
2007/05/15(火) 20:57:41バグってるじゃん
0108デフォルトの名無しさん
2007/05/15(火) 21:03:45#include<stdio.h>
int main(){
printf("8×4=%d\n", 8<<2);
printf("9÷4=商%d、余%d\n", 9>>2, 9%4);
return 0;
}
0109デフォルトの名無しさん
2007/05/15(火) 21:29:55[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3983.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: Cのみ
[4] 期限:出来る限り早くお願いします。
[5] その他の制限:C言語初心者です。今習っているのは、制御文と配列です。
0110デフォルトの名無しさん
2007/05/15(火) 21:35:16> printf("9÷4=商%d、余%d\n", 9>>2, 9%4);
あまりは 9&3 だろ?
0111デフォルトの名無しさん
2007/05/15(火) 21:37:100112デフォルトの名無しさん
2007/05/15(火) 21:42:02[2] 問題文(含コード&リンク):
気温のデータを5℃単位に丸めたい。
キーボードからdouble型変数kに気温を入力し、
丸めた数値はint型変数gに求め、gを画面に出力する。
ただし入力データに負の気温はないものとする。
また必要なら、計算途中の中間結果を格納するint型変数wなど、
適宜変数を用意すること。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限: なるべく早くお願いします。
[5] その他の制限: 結構序盤なので、初心者といえば初心者です。
よろしくお願いします。
0113デフォルトの名無しさん
2007/05/15(火) 21:42:130114デフォルトの名無しさん
2007/05/15(火) 21:44:46>>108
return0;は美しくないな。
void main(void) でよくね?
0115デフォルトの名無しさん
2007/05/15(火) 21:45:11#include<stdio.h>
int main(){
char c1,c2,c3;
printf("Input character1 : ");
scanf("%c",&c1);
fflush(stdin);
printf("Input character2 : ");
scanf("%c",&c2);
fflush(stdin);
if(c1 == c2) c3 = '=';
else if(c1 > c2) c3 = '>';
else c3 = '<';
printf("'%c'(%d) %c '%c'(%d)\n",c1,c1,c3,c2,c2);
return 0;
}
0116デフォルトの名無しさん
2007/05/15(火) 21:46:11void mainの話をするとスレが荒れるぞ
0117デフォルトの名無しさん
2007/05/15(火) 21:51:55mainの戻り値がvoidなんて処理系依存の方法を持ち出す奴が
どういう了見でreturn 0;が美しくないとか言ってんだ
0119デフォルトの名無しさん
2007/05/15(火) 21:54:120120デフォルトの名無しさん
2007/05/15(火) 21:54:45int main なら return 0;はANSI、ISO準拠でなんら問題なし。幅広い環境で通用する。
void main?それはもはや世界基準にあらず、自立環境でmain関数をプログラムの開始と
定めていないようなところでなら問題ないが、あくまでもANSI、ISO準拠重視なソースであれば
なおさらvoid mainはありえない。これらのことは、ちゃんとISOにも記されているので
必要とあらば確認すべし。なお、void mainは使っちゃだめということではないので、あしからず。
あくまでも世界基準、標準化、幅広い環境で通用させるんであればint mainが望ましいとの話。
0121デフォルトの名無しさん
2007/05/15(火) 21:56:17コピペの臭いがプンプンするぜ!
0122デフォルトの名無しさん
2007/05/15(火) 21:56:420123デフォルトの名無しさん
2007/05/15(火) 22:19:31#include <stdio.h>
int main()
{
double k;
int g;
scanf("%lf", &k);
g = 5*(int)(k/5 + 0.5);
printf("%d\n", g);
return 0;
}
0124デフォルトの名無しさん
2007/05/15(火) 22:23:55%も四則演算子に含むという解釈なんじゃね?
実際どっちなんだろう。
0125デフォルトの名無しさん
2007/05/15(火) 22:34:28[2] 問題文(含コード&リンク): キーボードから5教科のテストの成績を入力し、
合計点sumと平均点aveを計算して画面に出力するプログラムを作成しなさい。
ただし、各教科の点数とsumはint型とし、aveはdouble型とする。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C言語
[4] 期限: 今日の夜11時半まで
[5]その他の制限:
お願いします!
0126デフォルトの名無しさん
2007/05/15(火) 22:43:15#include<stdio.h>
int main(){
int n, sum = 0;
double ave;
printf("国語:"); scanf("%d",&n); sum+=n;
printf("英語:"); scanf("%d",&n); sum+=n;
printf("社会:"); scanf("%d",&n); sum+=n;
printf("算数:"); scanf("%d",&n); sum+=n;
printf("情報:"); scanf("%d",&n); sum+=0;
printf("合計点:%d\n", sum);
ave = sum / 5.0;
printf("平均点:%lf\n", ave);
return 0;
}
0127デフォルトの名無しさん
2007/05/15(火) 23:00:35なぜ余が、9&3になるの?教えてください。確かに実行結果は余り1になるわけだが。
0128デフォルトの名無しさん
2007/05/15(火) 23:04:570011=3
------&
0001=1
0129デフォルトの名無しさん
2007/05/15(火) 23:06:40こんな感じかなぁ(あんまり再帰を使ってないけど)。
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#define NMAX (INT_MAX / 2)
struct P {
int sum;
union {
struct P *p[2];
int n;
} as;
};
int Count(struct P *p, int n)
{
return (p->sum != 1) ? (Count(p->as.p[0], n) + Count(p->as.p[1], n)) : (p->as.n == n);
}
0130デフォルトの名無しさん
2007/05/15(火) 23:06:43thanks!
0131129
2007/05/15(火) 23:08:10void Factorize(int total, int ctbl[], int ctblnum)
{
struct P *ptbl, *p, *q, *r;
int ptblnum = total;
int i, j, n;
for (i = 0; i < ctblnum; i++)
if (ptblnum < ctbl[i])
ptblnum = ctbl[i];
ptblnum ++;
if ((ptbl = calloc(ptblnum, sizeof(*ptbl))) == NULL)
fprintf(stderr, "メモリ不足です\n");
else {
for (i = 0; i < ptblnum; i++)
ptbl[i].sum = NMAX;
for (i = 0; i < ctblnum; i++) {
p = &ptbl[ctbl[i]];
p->sum = 1;
p->as.n = ctbl[i];
}
0132デフォルトの名無しさん
2007/05/15(火) 23:08:27fflush(stdin); ってどうゆうことですか?
0133129
2007/05/15(火) 23:09:10for (i = 1; i <= total; i++) {
p = &ptbl[i];
for (j = 1; j < i; j++)
if ((n = (q = &ptbl[j])->sum + (r = &ptbl[i - j])->sum) < p->sum) {
p->sum = n;
p->as.p[0] = q;
p->as.p[1] = r;
}
}
printf("%d円の内訳:\n", total);
if (ptbl[total].sum == NMAX)
printf("組み合わせが存在しません\n");
else for (i = 0; i < ctblnum; i++)
if((n = Count(&ptbl[total], ctbl[i])) != 0)
printf("%d円 × %d枚\n", ctbl[i], n);
free(ptbl);
}
}
int main(void)
{
int ctbl[] = { 1, 3, 7, 9, 13, 66, };
Factorize(179, ctbl, 6);
return 0;
}
0134デフォルトの名無しさん
2007/05/15(火) 23:23:29入力ストリームに対するfflushは未定義動作
scanfで読み飛ばしとけ
0136デフォルトの名無しさん
2007/05/15(火) 23:54:52[2] 問題文(含コード&リンク)
7bitのASCIIコード表を出力するプログラムを作成せよ。
出力例
0 1 2 3・・・・7
-------------------
0:** ** 0 p
1:** ** ! 1 q
2:** ** " 2 r
3:** ** # 3 s
・
・
F:** ** / ? **
印刷できない文字は、**を出力しなさい。
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 5月16日AM:10:30まで
[5] その他の制限: 2つのforとisprintという関数を使用する
よろしくお願いします。
0137デフォルトの名無しさん
2007/05/16(水) 00:08:37次に,キーボードから前順,中順,後順を選択する.
すると,その順で木をなぞり,指定した順にデータを表示する(再帰プログラミングで作成せよ).
すみませんが教えて下さい。
0138デフォルトの名無しさん
2007/05/16(水) 00:20:03#include<stdio.h>
#include<ctype.h>
int main(){
int i,j,k;
for(i=0;i<=0xF;i++){
for(j=0;j<=7;j++){
k = i*8+j;
if( isprint(k) )printf(" %c ", k);
else printf("** ");
}
printf("\n");
}
return 0;
}
なんか激しく間違えてるけど直すのたるいから誰かよろしく
0139デフォルトの名無しさん
2007/05/16(水) 00:20:18>>39を参考に、1秒程度で出力するものができました。
>>43->>44も試したんですが、これも凄いですね。
でも、これだとオレが書いてないって明白なので、参考としていただきます。
他にもいろいろと勉強になるコードありがとうございました。
0140デフォルトの名無しさん
2007/05/16(水) 00:27:01[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C
[4] 期限:今日のPM13:00
[5] その他の制限:
問題1:キーボードより2つの値を入力し、比較結果を表示しなさい
実行画面
変数aの入力==>3
変数bの入力==>8
結果:8>3
変数aの入力==>8
変数bの入力==>3
結果:8>3
変数aの入力==>5
変数bの入力==>5
結果:5=5
0141140の続き
2007/05/16(水) 00:31:43実行結果
aさんの得点==>200
bさんの得点==>150
aさんの勝ち
aさんの得点==>100
bさんの得点==>250
bさんの勝ち
aさんの得点==>120
bさんの得点==>120
引き分け
問題3:点数を入力し、合否を表示せよ
60点以下合格、範囲(O〜100)以外はエラーとする
実行結果
点数入力==>60
合格です
点数入力==>59
不合格です
点数入力==>−1
点数を入力エラー(0未満)です
点数入力==>101
点数の入力エラー(100を超える)です
0142140の続き
2007/05/16(水) 00:32:53実行結果
文字入力==>A
変換後:a
文字入力==>n
変換後:N
文字入力==>S
変換後:変換できない
以上の問題がどうしてもわからないのでよろしくお願いします
0143デフォルトの名無しさん
2007/05/16(水) 00:32:53[2]raw画像を読むためfreadを使ったの関数を作る。
void FIO_read_raw(char *filename, unsigned short *ad, int width, int height){
FILE *fp_in;
if((fp_in==fopen(filename,"rb"))==NULL){
printf("Can't File Open!\n");
exit(1);
}
fread( ad, sizeof(unsigned short),width*height,fp_in);
fclose(fp_in);
}
と作ったのですが、
error C2143: 構文エラー : ')' が 'constant' の前に必要です。
error C2143: 構文エラー : ';' が 'constant' の前に必要です。
fatal error C1004: 予期せぬ EOF が検出されました。
とでてしまいました。どのようにすればいいか教えてください。よろしくお願いします。
0144140 141 142の問題
2007/05/16(水) 00:33:540145デフォルトの名無しさん
2007/05/16(水) 00:37:060146デフォルトの名無しさん
2007/05/16(水) 00:52:34#include <stdio.h>
#include <ctype.h>
int main(void)
{
int ch[128],a[16][8];
size_t i,j,cnt,sz=sizeof(ch)/sizeof(ch[0]);
size_t wd=2;
for(i=0; i<sz; i++) ch[i]=i;
for(i=0,cnt=0; i<8; i++) {
for(j=0; j<16; j++) {
a[j][i]=ch[cnt++];
}
}
printf("%*c",wd);
for(i=0; i<8; i++) printf("%*d ",wd,i);
printf("\n--------------------------\n");
for(i=0; i<16; i++) {
printf("%X:",i);
for(j=0; j<8; j++) {
if( isprint(a[i][j]) ) printf("%2c ",a[i][j]);
else printf("** ");
}
puts("");
}
return 0;
}
0147デフォルトの名無しさん
2007/05/16(水) 00:57:01#include <stdio.h>
#include <ctype.h>
#define ROW 16
#define COL 8
int main(void)
{
int a[ROW][COL];
size_t i,j,cnt,wd=2;
for(i=0,cnt=0; i<COL; i++)
for(j=0; j<ROW; j++)
a[j][i]=cnt++;
printf("%*c",wd);
for(i=0; i<8; i++) printf("%*d ",wd,i);
printf("\n--------------------------\n");
for(i=0; i<ROW; i++) {
printf("%X:",i);
for(j=0; j<COL; j++) {
if( isprint(a[i][j]) ) printf("%2c ",a[i][j]);
else printf("** ");
}
printf("\n");
}
return 0;
}
0148デフォルトの名無しさん
2007/05/16(水) 00:58:59#include <stdio.h>
#include <ctype.h>
#define ROW 16
#define COL 8
int main(void) {
int a[ROW][COL],i,j,cnt,wd=2;
for(i=0,cnt=0; i<COL; i++)
for(j=0; j<ROW; j++)
a[j][i]=cnt++;
printf("%*c",wd);
for(i=0; i<8; i++) printf("%*d ",wd,i);
printf("\n--------------------------\n");
for(i=0; i<ROW; i++) {
printf("%X:",i);
for(j=0; j<COL; j++) {
if( isprint(a[i][j]) ) printf("%2c ",a[i][j]);
else printf("** ");
}
printf("\n");
}
return 0;
}
0149>140
2007/05/16(水) 02:34:04#include <stdio.h>
int getVal(char *val)
{
int v;
char buf[256];
printf("変数%sの入力==>", val);
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &v);
return v;
}
void printCmp(int a, int b)
{
char sign[3], Num[][3]={"0","1","2","3","4","5","6","7","8","9"};
if(a<b) sprintf(sign,"<");
if(a>b) sprintf(sign,">");
if(a==b) sprintf(sign,"=");
printf("結果:%s%s%s\n", Num[a], sign, Num[b]);
}
int main(void)
{
int a,b,loop;
printf("1:キーボードより2つの値を入力し、比較結果を表示\n");
for(loop=0; loop<3; ++loop){
a=getVal("a");
b=getVal("b");
printCmp(a, b);
}
return 0;
}
0150>142
2007/05/16(水) 02:58:46> 変換後:変換できない
kwsk
0151デフォルトの名無しさん
2007/05/16(水) 03:16:44で、同じようにそこ突っ込まれてた。
0152デフォルトの名無しさん
2007/05/16(水) 06:49:17if((fp_in==fopen(filename,"rb"))==NULL){
を
if((fp_in=fopen(filename,"rb"))==NULL){
に
0153デフォルトの名無しさん
2007/05/16(水) 07:07:57ありがとうございます
0154デフォルトの名無しさん
2007/05/16(水) 07:35:14テーマ:繰り返し処理(for文)
問題1:1〜10までの合計を求め表示しなさい
実行画面
合計:55
問題2:キーボードより入力した数分の、"*"を表示しなさい
実行画面
整数入力==>5
結果:*****
問題3:2つの数値を入力し、範囲の合計を表示しなさい
実行画面
整数1(小)入力==>5
整数2(大)入力==>7
5〜7の合計:18
以上の3問ですよろしくお願いします
0155デフォルトの名無しさん
2007/05/16(水) 07:43:22問題1
for(;;){
printf("合計:%d\n", 1+2+3+4+5+6+7+8+9+10);
goto EndRuupu;
}
EndRuupu:
問題2
int n;
printf("整数入力==>"); scanf("%d" &n);
printf("結果:");
for(;;){
printf("*");
if(--n==0) goto EndRuupu;
}
EndRuupu:
printf("\n");
0156デフォルトの名無しさん
2007/05/16(水) 07:49:18int show, die, kei=0;
printf("整数1(小) 入力==>"); scanf("%d", &show);
printf("整数2(大) 入力==>"); scanf("%d", &die);
printf("%d〜%dの合計:", show, die);
for(;;){
kei += show;
if(++show>die) goto EndRuupu;
}
EndRuupu:
printf("%d\n", kei);
0157デフォルトの名無しさん
2007/05/16(水) 08:08:20こっちは悪い例。
問題2
int n;
printf("整数入力==>"); scanf("%d" &n);
printf("結果:");
for(; n!=0; n--) printf("*");
printf("\n");
問題3
int show, die, kei;
printf("整数1(小) 入力==>"); scanf("%d", &show);
printf("整数2(大) 入力==>"); scanf("%d", &die);
printf("%d〜%dの合計:", show, die);
for(kei=0; show<die; show++) kei += show;
printf("%d\n", kei);
0158デフォルトの名無しさん
2007/05/16(水) 09:14:33本当だな。std::read()の方がいいな
0159デフォルトの名無しさん
2007/05/16(水) 10:43:32この場合はiosのフォーマット変換層自体いらないので、実はfstreamでなくて
filebufのほうが無駄が無くていい。
↓のような感じ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3985.txt
ただし、filebufの内部を直接読み書きしない限りは
ファイルバッファのバッファに読み込み→ユーザバッファにコピー
という無駄が発生するので、どうしたって低水準I/Oよりは遅くなると思われ。
0160デフォルトの名無しさん
2007/05/16(水) 10:48:36なるほど。こういうのは初めて見ました。
rdbuf()を使った物は見た事があるのですが。
Cに勝てないのは辛い所ですね。
0161デフォルトの名無しさん
2007/05/16(水) 12:26:062:
問題1:数値を入力し、以下のように表示しなさい
実行画面
整数入力==>8
********
*******
******
*****
****
***
**
*
0162161の続き
2007/05/16(水) 12:34:17実行画面
10進数入力==>118
2進数:01110110
以下の2問よろしくお願いします
0163デフォルトの名無しさん
2007/05/16(水) 12:40:41(2):制限時間あと3時間
(3):問題文
問題:2重のfor文を使って、以下のような九九表を完成させなさい
実行画面
1 2 3 4 5 6 7 8 9
_ _ _ _ _ _ _ _ _ _ _ _
1| 1 2 3 4 5 6 7 8 9
2| 2 4 6 8 10 12 14 16 18
3| 3 6 9 12 15 18 21 24 27
4| 4 8 12 16 20 24 28 32 36
5| 5 10 15 20 25 30 35 40 45
6| 6 12 18 24 30 36 42 48 54
7| 7 14 21 28 35 42 49 56 63
8| 8 16 24 32 40 48 56 64 72
9| 9 18 27 36 45 54 63 72 81
わかる方が居ましたらお願いします
0164デフォルトの名無しさん
2007/05/16(水) 12:53:34#include <stdio.h>
int main()
{
for (int iy = 0; iy <= 9; ++iy) {
if (iy == 0) {
printf(" | 1 2 3 4 5 6 7 8 9\n"
"-+--------------------------\n");
continue;
}
for (int ix = 0; ix <= 9; ++ix) {
if (ix == 0) {
printf("%1d|", iy);
} else {
printf("%2d%c", ix * iy, ix < 9 ? ' ' : '\n');
}
}
}
return 0;
}
0165デフォルトの名無しさん
2007/05/16(水) 12:59:16#include <stdio.h>
int main()
{
int i, n;
printf("整数入力==>");
if (scanf("%d", &n) == 1) {
while (i = n--) {
while (i--)
putchar('*');
putchar('\n');
}
}
return 0;
}
0166デフォルトの名無しさん
2007/05/16(水) 13:02:59#include <stdio.h>
#include <string.h>
int main()
{
printf("Input decimal number.:");
int num = 0;
scanf("%d", & num);
if (num > 255 || num < 0) {
fprintf(stderr, "Illegal number.\n");
return 1;
}
char buf[4];
sprintf(buf, "%03o", num);
printf("binary number:");
for (int ic = 0; ic < 3; ++ic) {
static char const * const binaries[] = {
"000", "001", "010", "011", "100", "101", "110", "111"
};
printf("%s", binaries[buf[ic] - '0'] + (ic == 0 ? 1 : 0));
}
printf("\n");
return 0;
}
0167デフォルトの名無しさん
2007/05/16(水) 13:10:56// 前半は>166を流用
#include <stdio.h>
int main()
{
printf("Input decimal number.:");
int num = 0;
scanf("%d", & num);
if (num > 255 || num < 0) {
fprintf(stderr, "Illegal number.\n");
return 1;
}
static char const * const binaries[] = {
"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111",
};
printf("binary number:%s%s\n", binaries[num >> 4], binaries[num & 0xf]);
return 0;
}
0168デフォルトの名無しさん
2007/05/16(水) 13:55:23これ一ヶ月ほど前に見たような
0169デフォルトの名無しさん
2007/05/16(水) 13:59:46だったわ、宿題じゃなかったか
0170デフォルトの名無しさん
2007/05/16(水) 14:07:31http://pc11.2ch.net/test/read.cgi/tech/1165718021/417
0171デフォルトの名無しさん
2007/05/16(水) 14:12:41// 配列を反転するプログラム(の予定)
#include <stdio.h>
int tables[10];
void print(void)
{
for (int i = 0; i < 10; i++) {
printf("%d:", i);
printf("%d\n", tables[i]);
}
printf("\n");
}
void reverse(void)
{
for (int i = 0; i < 10/2; i++) {
tables[i] = tables[9-i];
tables[9-i] = tables[i];
}
}
int main(void)
{
for (int i = 0; i < 10; i++) {
tables[i] = i + 100;
}
0172デフォルトの名無しさん
2007/05/16(水) 14:27:26意味が分からん。
それよりもmain内で関数が呼ばれてない。
あと、配列をグローバルにする必要性は無い。
0173デフォルトの名無しさん
2007/05/16(水) 14:59:42[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
10個の実数データをキーボードから入力し,配列data[10]に格納しなさい。そして,各要素の小さい方からの順位を決定して,別の配列rank[10]に格納しなさい。最後に,入力データdata[10]と順位rank[10]をともに出力しなさい。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:borland
[3.3] 言語:C
[4] 期限:日曜日
[5] その他の制限:
よろしくお願いします。
0174デフォルトの名無しさん
2007/05/16(水) 15:23:15助かりました!ありがとうございます!
#include<stdio.h>
#include<stdlib.h>
int cmpdbl(const double* a,const double* b){return (int)(*a-*b);}
int main(void){double data[10],rank[10];int i;char tmp[256];
for(i=0;i<10;i++){printf("実数%i:",i);fgets(tmp,255,stdin);data[i]=atof(tmp);}
qsort(data,sizeof(data)/sizeof(double),sizeof(double),cmpdbl);
printf("data:\n");for(i=0;i<10;i++){printf("[%i]%f\n,i,data[i]);}
printf("rank:\n");for(i=0;i<10;i++){printf("[%i]%f\n,i,rank[i]);}return 0;}
0176デフォルトの名無しさん
2007/05/16(水) 15:44:04問題1:平均点計算
点数を入力して、平均点を出力するフローを答えなさい[入力した点数が0より小さい時終了する]
問題2:合計
1+(1+2)+(1+2+3)+・・・(1+2+・・・+10)を計算し、計算結果を出力するフローを答えなさい
の2問のフローチャートがどうしてもわからないので何方か解る方がいましたら教えてください
いくら考えても解らないので何方かお願いします
0177デフォルトの名無しさん
2007/05/16(水) 15:44:40今、××を見ながらCの勉強をしています。
そこに「ある配列を反転した内容を別の配列にコピーする」というプログラムあり、
それを改造して、「あるひとつの配列の内容を反転する」プログラムを自力で作ってみました。
しかしコンパイルは通るのですが、実行してみると思ったとおりの結果にならなくて困っています。
元のプログラムでは表示用の関数printが2つに分かれており、
それをひとつにまとめてしまったのが原因なのでしょうか?
配列がひとつしか無いので表示用の関数は1つだけにしたいのですが、
上手いやり方はありませんか?
#include<stdio.h>
#include<stdlib.h>
int cmpdbl(const double* a,const double* b){return (int)(*a-*b);}
int main(void){double data[10],rank[10];int i;char tmp[256];
for(i=0;i<10;i++){printf("実数%i:",i);fgets(tmp,255,stdin);data[i]=rank[i]=atof(tmp);}
qsort(rank,sizeof(rank)/sizeof(double),sizeof(double),cmpdbl);
printf("data:\n");for(i=0;i<10;i++){printf("[%i]%f\n,i,data[i]);}
printf("rank:\n");for(i=0;i<10;i++){printf("[%i]%f\n,i,rank[i]);}return 0;}
0179デフォルトの名無しさん
2007/05/16(水) 16:13:280180デフォルトの名無しさん
2007/05/16(水) 16:37:06順に木をなぞる再起プログラミングを作成せよ.
C言語。
アルゴリズムとデータ構造。
21日までです。
よろしくお願いします。
0181デフォルトの名無しさん
2007/05/16(水) 16:39:22http://pc11.2ch.net/test/read.cgi/tech/1165718021/851
>順に木をなぞる再起プログラミングを作成せよ.
何の順だ。
0183デフォルトの名無しさん
2007/05/16(水) 16:46:380184デフォルトの名無しさん
2007/05/16(水) 17:01:22課題をそのままコピーしただけなのですが・・・すいません。
>>182
「順」っていう言葉がなければ大丈夫ですかね?
分かる範囲でいいので、ぜひご指導お願いします。
10個の整数データを木構造に保存し、
木をなぞる再起プログラミングを作成せよ.
C言語。
アルゴリズムとデータ構造。
21日までです。
よろしくお願いします。
0185デフォルトの名無しさん
2007/05/16(水) 17:04:21#include <stdio.h>
int main(void){
int i,j,rank[10]={0};double data[10];char buf[256];
for(i=0;i<10;){
printf("%d番目の実数を入力して下さい:",i+1);
fgets(buf,255,stdin);
if(!sscanf(buf,"%lf",data+i)) continue;
++i;
}
for(i=0;i<10;++i){
for(j=0;j<10;++j){
if(data[i]<=data[j]) ++rank[j];
}
}
for(i=0;i<10;++i) printf("data[%d]=%f\n",i,data[i]);
for(i=0;i<10;++i) printf("rank[%d]=%d\n",i,rank[i]);
return 0;
}
情報が足りねえって言ってるのにさらに減らすのはどういう嫌がらせですか。
「どんな木をどうやってなぞるのか」と聞いてるのに。
0187デフォルトの名無しさん
2007/05/16(水) 17:30:17[1] 情報基礎論演習
[2] 課題1:2つの正方行列の和・差・積を求め、計算結果を見やすく画面に表示するプログラムを作成せよ。
ただし、両行列の要素はプログラム実行時にキー入力するものとする。(scanf)また、行列のサイズは4×4とする。
課題2:1で作成したプログラムを以下のように修正せよ。
・行列の要素はキー入力ではなくファイルから読み込む。(入力ファイルは自分で作成)
・計算結果は画面でなくファイルに出力すること。
[3] 環境
[3.1] Windows
[3.2] cygwin
[3.3] C
[4] 期限:5月18日
[5] 特になし
よろしくお願いします。
0188デフォルトの名無しさん
2007/05/16(水) 17:47:49[1] プログラミング
[2] キーボードから固定費・変動費・単価・商品の売れた数を受け取り、収益と収益における固定費・変動費それぞれの割合、純利益を表示するプログラムをC言語で記述せよ
[3] 環境
[3.1] 窓達XP
[3.2] Borland C++ Compiler 5.5
[3.3] C
[4]明日の情基の時間までに提出
[5] 専用のプリントに記述し提出、プログラムの動作を確認できる環境があれば確認して提出。その際、失敗したプログラムは消さないようにすること
動作確認は出来る環境です
一応書いたのですが、固定費割合と変動費割合が算出されません
0189デフォルトの名無しさん
2007/05/16(水) 17:49:33固定費・変動費の割合が0.000000000になる以外は正常に算出されます
{
int tanka,kote,hen,rie,ure_kazu,ure_kane;
float kote_wari,hen_wari;
printf("単価はいくら?\n");
scanf("%d",&tanka);
printf("いくつ売れた?\n");
scanf("%d",&ure_kazu);
printf("固定費用は?\n");
scanf("%d",&kote);
printf("変動費用を算出して入力してください\n");
scanf("%d",&hen);
ure_kane = ure_kazu * tanka;
rie = ure_kane - (kote + hen);
kote_wari = (kote / ure_kane) * 100;
hen_wari = (hen / ure_kane) * 100;
printf("収益は%d、収益における固定費と変動費の割合はそれぞれ%f%、%f%です。よって貴社の利益は%dです。",ure_kane,kote_wari,hen_wari,rie);
return 0;
}
0190デフォルトの名無しさん
2007/05/16(水) 17:55:23スレ違い。
整数割る整数は整数になる。実数にしたいなら、キャストしとけ。
ついでに言えば、特にケチる理由がないならdoubleにしとけ。
floatでは、10進換算で7桁程度しか精度がないぞ。
Ex.
double kote_wari = (double) kote / ure_kane * 100.;
理由をまず考えろ。
0192デフォルトの名無しさん
2007/05/16(水) 17:56:540193デフォルトの名無しさん
2007/05/16(水) 17:58:48わかりました
100.0000を超えることはないのでfloatで十分だと思ったのですが…
doubleでやってみますね
キャストはまだ習ってませんがjavaで学んだのでやってみます
ありがとうございました
0194デフォルトの名無しさん
2007/05/16(水) 17:59:59分かりませんでしたのでここで質問させていただきました
あれ?もともとの公式が間違ってるのかな…?
0195デフォルトの名無しさん
2007/05/16(水) 18:04:55>190
0196デフォルトの名無しさん
2007/05/16(水) 18:05:37キャストがよく分からなかったので変数を全てfloatで宣言したら正常に動作しました
本当にありがとうございました
0197デフォルトの名無しさん
2007/05/16(水) 18:06:33hen=200,ure_kane=400の場合、200÷400=0余り200
hen_wari = (200 / 400) * 100;
hen_wari = 0 * 100;
hen_wari = 0;
0198デフォルトの名無しさん
2007/05/16(水) 18:10:42その大雑把な応用性は現場にはとても必要なものだ
しかし大雑把過ぎると精密さが要求されるプログラムでしくじるかもな
「理由は分からないけどこうしたら直った」という対処は迷惑でしかない。
0200デフォルトの名無しさん
2007/05/16(水) 20:05:27この前入学したばかりなんだろ?
なんかレベル高い授業やってんな
0201デフォルトの名無しさん
2007/05/16(水) 20:11:290202デフォルトの名無しさん
2007/05/16(水) 20:14:51用語が難しそうに見えるだけで、やってることは数字入力に四則演算程度の入門レベルだろ。
0203デフォルトの名無しさん
2007/05/16(水) 20:17:02高校一年でだぞ?
0204デフォルトの名無しさん
2007/05/16(水) 20:45:250205デフォルトの名無しさん
2007/05/16(水) 20:47:36そりゃずいぶんと低レベルだな。
0206デフォルトの名無しさん
2007/05/16(水) 20:52:58俺なんか中学のときにトランジスタを・・・
0207デフォルトの名無しさん
2007/05/16(水) 20:56:22義務教育でトランジスタとか触るの?
0208デフォルトの名無しさん
2007/05/16(水) 20:58:39「技術」という科目は無いのか?
0209デフォルトの名無しさん
2007/05/16(水) 20:58:46高校の頃, 必死こいてセグメントレジスタ気にしながら 8086 アセンブラで
lisp 処理系を作ろうとしていた当時の俺って低レベルですか?
0210デフォルトの名無しさん
2007/05/16(水) 21:08:0910年前中学生だった俺は授業の中でトランジスタを触ることがあった。
>>209
低レベルだね
0211デフォルトの名無しさん
2007/05/16(水) 21:14:28ゆとり直前世代ですがありました
皆さんが低レベルと言ってるのは、低級と言い換えても構いませんね!
大学入って初めてCに触れてるくらいだから俺はかなり高レベル
0212デフォルトの名無しさん
2007/05/16(水) 21:15:500213デフォルトの名無しさん
2007/05/16(水) 21:17:280214デフォルトの名無しさん
2007/05/16(水) 21:17:32俺にとっては C はアセンブラの延長
っか, マシンに依存しないアセンブラ
十分, 低レベル言語
0215デフォルトの名無しさん
2007/05/16(水) 21:46:05中学1年と2年で木工、3年でPC
選択ではタイニーベーシックもやる
ちなみに>>188の高校は大体予想が付く
普通の工業では固定費割合とかの経営側のことはやらない
たぶん初級シスアド狙ってる学校
だから初級シスアド試験一部免除校リストのどれかだろ
0216デフォルトの名無しさん
2007/05/16(水) 22:07:39while(1){
if(flag == 100)
Test *t2 = new Test(0,0);
if(flag > 300)
t2->do(); }
C++でAPIを利用したゲームを作成しています。
ここで、Testというクラスがあらかじめ定義されているとしてください。
flagが100になった(つまりループが100回回ったとき)に敵を発生させたく、このようなプログラムを書きました。
しかし、コンパイル時に、t2が定義されていない識別子となり、はじかれてしまいます。(最終行)
どのように対処すればよろしいのでしょうか?
whileループ前にt2を確保しておけば動作するのですが、それでは今後困ることがでるので・・・。
宜しくお願いします。
環境:VC++6.0
0217デフォルトの名無しさん
2007/05/16(水) 22:11:550218デフォルトの名無しさん
2007/05/16(水) 22:12:50[2] 問題文(含コード&リンク):
与えられたnに対し、分母がn以下で値が0以上1以下の既約分数をすべて求めよ。(再帰を使うこと。)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C言語
[4] 期限: 5/18
[5] その他の制限: 特にないです。
0219216
2007/05/16(水) 22:16:54int flag = 0;
while(1){
if(flag == 100)
Test *t2 = new Test(0,0);
if(flag > 300)
t2->do();
flag++;}
です。
>>217
やっぱりまずいんでしょうかねぇ。
でもあるタイミングで敵を発生させるときとかどうしたらいいのかわかりません・・・。
0220デフォルトの名無しさん
2007/05/16(水) 22:26:09スレ違い
スコープについて勉強してこい
0221デフォルトの名無しさん
2007/05/16(水) 22:40:00根付き木で、深さ優先探索です。
0222216
2007/05/16(水) 22:40:15それだと、敵をある時間に生成する上手い方法ありませんか?
0223デフォルトの名無しさん
2007/05/16(水) 23:04:59[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
文字列�@と文字列�Aを比較し、正しければ○、正しくなければ×を出力せよ。
文字列は半角英数、全角、空白、記号も含める。
(文字列�@、�Aともに空白の場合はエラーを出力する。)
<実行結果>
文字列�@を入力してください。---> (入力後、実行で下段を表示)
文字列�Aを入力してください。---> (入力後、実行で結果を表示)
結果:○
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名:Visual Studio
[3.3] 言語:C
[4] 期限:5/17
[5] その他の制限: 無し
0224デフォルトの名無しさん
2007/05/16(水) 23:10:12#include<stdio.h>
#include<string.h>
int main(){
char str1[1000],str2[1000];
printf("文字列�@を入力してください。--->");
scanf("%s",str1);
printf("文字列�Aを入力してください。--->");
scanf("%s",str2);
printf("結果:%s\n",strcmp(str1,str2)?"×":"○");
return 0;
}
0225デフォルトの名無しさん
2007/05/16(水) 23:14:13ありがとうです。
でも、1000文字を超えたらアウトですよね?
その場合、どうしたらいいですか?
それと、両方とも空白時のエラーメッセージはどうしましょう・・・
0226デフォルトの名無しさん
2007/05/16(水) 23:18:16ごめん、普通にエラーとか忘れてた orz
#include<stdio.h>
#include<string.h>
#define N 1000
int main(){
char str1[N],str2[N];
printf("文字列�@を入力してください。--->");
fgets(str1,N,stdin);
printf("文字列�Aを入力してください。--->");
fgets(str2,N,stdin);
if(strlen(str1)>1||strlen(str2)>1)
printf("結果:%s\n",strcmp(str1,str2)?"×":"○");
else
printf("エラー\n");
return 0;
}
さっきよりほんの少しだけまともに書いてみた。
メモリの許す限り文字列を比較したいなら、勉強して自分でがんがれ
0227>222
2007/05/16(水) 23:50:06確保はループの中で
0228デフォルトの名無しさん
2007/05/17(木) 01:43:48>1+(1+2)+(1+2+3)+・・・(1+2+・・・+10)を計算し、計算結果を出力するフローを答えなさい
[開始]
|
[計算結果s=0]
|
[カウンタn=1]
|
[カウンタi=1]
|
[s=s+i]
|
[i=i+1]
|
[カウンタi<=nの間繰り返し]
|
[n=n+1]
|
[カウンタn<=10の間繰り返し]
|
[計算結果s表示]
|
[終了]
0229デフォルトの名無しさん
2007/05/17(木) 01:45:33応用でstring.hを使わずに考えられると力が付くぞ
0230デフォルトの名無しさん
2007/05/17(木) 01:51:501000文字超えたときのこと考えるとCじゃ無理
0231デフォルトの名無しさん
2007/05/17(木) 03:07:06[1] 情報基礎論演習
[2] 課題1:2つの正方行列の和・差・積を求め、計算結果を見やすく画面に表示するプログラムを作成せよ。
ただし、両行列の要素はプログラム実行時にキー入力するものとする。(scanf)また、行列のサイズは4×4とする。
課題2:1で作成したプログラムを以下のように修正せよ。
・行列の要素はキー入力ではなくファイルから読み込む。(入力ファイルは自分で作成)
・計算結果は画面でなくファイルに出力すること。
[3] 環境
[3.1] Windows
[3.2] cygwin
[3.3] C
[4] 期限:5月18日
[5] 特になし
前に書いたのですが、スルーされてしまったのでもう一度書かさせてもらいます。
非常に困ってます。どうかよろしくお願いします。
0232デフォルトの名無しさん
2007/05/17(木) 03:08:46さ入れ言葉
0233デフォルトの名無しさん
2007/05/17(木) 05:26:00/*
正方行列の和・差・積を表示するプログラム
*/
#include <stdio.h>
/* ユーザ定義型宣言 */
#define DIM 4
typedef struct
{
int element[DIM][DIM];
}matrixSquare;
/* 関数宣言部 */
matrixSquare AddSqu(matrixSquare* m1, matrixSquare* m2);
matrixSquare SubSqu(matrixSquare* m1, matrixSquare* m2);
matrixSquare MulSqu(matrixSquare* m1, matrixSquare* m2);
void inputMatrixSquare(matrixSquare* ms);
void putMatrixSquare(matrixSquare ms);
0234デフォルトの名無しさん
2007/05/17(木) 05:26:21int main(void)
{
matrixSquare ma, mb;
/* 正方行列に数値を入力する */
{
printf("4x4の正方行列aを空白で区切って1行ずつ入力.\n"); inputMatrixSquare(&ma);
printf("4x4の正方行列bを空白で区切って1行ずつ入力.\n"); inputMatrixSquare(&mb);
/* 入力バッファに溜まるので、一気に全ての要素を入力しても良い */
}
/* 和・差・積を表示する */
{
printf("aとbの和\n"); putMatrixSquare(AddSqu(&ma, &mb));
printf("aとbの差\n"); putMatrixSquare(SubSqu(&ma, &mb));
printf("aとbの積\n"); putMatrixSquare(MulSqu(&ma, &mb));
}
return 0;
}
0235デフォルトの名無しさん
2007/05/17(木) 05:27:06/* 関数の実装 */
/* */
matrixSquare AddSqu(matrixSquare* m1, matrixSquare* m2)
/* 正方行列同士の和を返す */
{
matrixSquare mRes;
int y, x;
for(y=0; y!=DIM; y++)
{
for(x=0; x!=DIM; x++)
{
mRes.element[y][x] = m1->element[y][x] + m2->element[y][x];
}
}
return mRes;
}
0236デフォルトの名無しさん
2007/05/17(木) 05:27:37/* 正方行列同士の差を返す */
{
matrixSquare mRes;
int y, x;
for(y=0; y!=DIM; y++)
{
for(x=0; x!=DIM; x++)
{
mRes.element[y][x] = m1->element[y][x] - m2->element[y][x];
}
}
return mRes;
}
0237デフォルトの名無しさん
2007/05/17(木) 05:27:54/* 正方行列同士の積を返す */
{
matrixSquare mRes;
int x, y, k;
for(y=0; y!=DIM; y++)
{
for(x=0; x!=DIM; x++)
{
int tmp;
for(k=0, tmp=0; k!=DIM; k++)
{
tmp += m1->element[k][x] * m2->element[y][k];
}
mRes.element[y][x] = tmp;
}
}
return mRes;
}
0238デフォルトの名無しさん
2007/05/17(木) 05:29:31/* 正方行列を一行単位で入力する */
{
int i;
for(i=0; i!=DIM; i++)
{
printf("%d行目>", i+1);
scanf("%d %d %d %d", &(ms->element[i][0]), &(ms->element[i][1]), &(ms->element[i][2]), &(ms->element[i][3]));
}
printf("\n");
}
0239デフォルトの名無しさん
2007/05/17(木) 05:30:12/* 正方行列を標準出力へ書き出す */
{
int x, y;
for(y=0; y!=DIM; y++)
{
for(x=0; x!=DIM; x++)
{
printf("%10d ", ms.element[y][x]);
}
printf("\n");
}
}
[EOF]
0240デフォルトの名無しさん
2007/05/17(木) 05:55:40void inputMatrixSquare(matrixSquare* ms)
/* 正方行列を一行単位で入力する */
{
int i, j;
for(i=0; i!=DIM; i++)
{
printf("%d行目>", i+1);
for(j=0; j!=DIM; j++)
{
scanf("%d", &(ms->element[i][j]));
}
}
printf("\n");
}
0241デフォルトの名無しさん
2007/05/17(木) 05:56:550242216
2007/05/17(木) 06:06:30クラスをnewで作成したとします。(仮に*test)とします。
これをクラス内のメソッドで消す方法はありませんか?
つまり、自クラスで自分をdeleteするということです。
自分は自信の名前を知らないので、
delete test ; と記述することが出来ません。
あらかじめprivate変数として自信の名前を記録しておく他ないのでしょうか?
0243デフォルトの名無しさん
2007/05/17(木) 06:50:350244デフォルトの名無しさん
2007/05/17(木) 06:51:24delete this;
です。
0245デフォルトの名無しさん
2007/05/17(木) 06:54:030246デフォルトの名無しさん
2007/05/17(木) 08:01:23問2。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3989.txt
0247デフォルトの名無しさん
2007/05/17(木) 09:10:59[2] 問題文(含コード&リンク):
【処理方式】
�@ int型変数に値を入力する。(0〜9)
�A chg関数に、入力した値を渡す。(ポインタ)
�B その値が2で割って余りが0なら10倍し、余りが1なら5倍する。
�C Main関数にてchgにて計算された値を表示する。
【処理結果】
Cnt =>XXXX
cnt(chg後) :XXXX
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C言語
[4] 期限: 5/18
[5] その他の制限: 特にないです
0248デフォルトの名無しさん
2007/05/17(木) 09:41:50#include<stdio.h>
void chg(int *cnt){
*cnt *= *cnt%2 ? 5 : 10;
}
int main(){
int cnt;
printf("Cnt =>");
scanf("%d",&cnt);
if(cnt<0 && 9<cnt) return 1;
chg(&cnt);
printf("cnt(chg後) :%d\n",cnt);
return 0;
}
0249デフォルトの名無しさん
2007/05/17(木) 09:46:33>�@ int型変数に値を入力する。(0〜9)
ってあるけど、
>Cnt =>XXXX
これと矛盾しない?
漠然としすぎててわからんと何度も言ってるわけだが。
>根付き木で、
そういうことじゃなくて、子は何人までとか、親子関係、兄弟関係の決め方とかが
わからんとやりようがねえって言ってんだよ。
その意味すら分からないなら単位落として退学しろクズ。
0251デフォルトの名無しさん
2007/05/17(木) 11:09:22[2] 問題文(含コード&リンク):
正負それぞれ、万、億の位まで対応できる読み上げ文字列生成プログラムを作成せよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C言語
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)明日の昼
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
・「数値読み上げ」とは、数値を入力したときにその数字の読み方を表す文字列を生成して出力するプログラムで、
たとえば、「1」と入力したら「ICHI」、「1024」と入力したら「SEN NIJYU YON」と出力するプログラムです。
・拡張性やライブラリ化の容易さを考えて、生成した文字列を一旦文字配列変数に格納し、
読み上げ文字列が完成したあとでまとめて出力する形式でお願いしますorz
(引数として数値を与えて呼び出すと、return値として読み上げ文字列へのポインタを返すような関数を作成し、main関数からこれを呼び出す)
・各桁ごとの数字の文字列生成や4桁ごとに現れる千百十の単位の文字列生成のように、
繰り返し出現すつ処理は出来る限り1箇所にまとめてモジュール化する
制限多いですがよろしくおねがいしますm(__)m
0252デフォルトの名無しさん
2007/05/17(木) 11:18:50もちつけw
>>221
>10個の整数データを木構造に保存し、
>順に木をなぞる再起プログラミングを作成せよ.
10個の整数データがあるのは解った。
深さ優先探索ってのも解った。
で、この10個の整数とやらをどうやって木にするんだ?
rootから順に、何らかの基準によって、
ある要素の子になったり、ある要素と同レベルの要素になったりするわけだろ?
それがわからなきゃコードなんか書きようがないだろ。
そもそも探索対象の木が作れないんだから。
で、これでもまだ理解できないなら、単位は諦めな。
もう一回受けるのが君のためだ。
0253デフォルトの名無しさん
2007/05/17(木) 12:00:30[2] 問題文(含コード&リンク):
次の無限等比級数の和を求めなさい。
∞ 1
Σ ━
n=1 n^4
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: unix
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: (5/18)
[5] その他の制限: あまり詳しくありませんが、FILE *to; を使って記述するみたいです。
0254デフォルトの名無しさん
2007/05/17(木) 12:20:57#include <stdio.h>
#include <math.h>
int main()
{
FILE *to = fopen("output.txt", "wt");
double sum = 0, min = pow(10, -8);
long int n;
for(n = 1; 1/pow(n, 4) > min; n++)
sum += 1/pow(n, 4);
fprintf(to, "%.20f\n", sum);
return 0;
}
0255sage
2007/05/17(木) 13:06:29すばやい対応ありがとうございました。
すいませんよろしければ教えてほしいのですが、
このときn^4のところが(n^4+2)となったらどのように記述したらよろしいでしょうか?
0256それくらいできないなら技術系の職には向いてないと言うことだ
2007/05/17(木) 13:37:48n^4のときにpow(n, 4)と書いたのだから、(n^4+2)ならおなじようにすればいいんでない?
0257247
2007/05/17(木) 13:39:51#include<stdio.h>
void chg(int *cnt){
*cnt *= *cnt%2 ? 5 : 10;
}
この意味を教えてもらっていいですか?
0258デフォルトの名無しさん
2007/05/17(木) 13:42:280259デフォルトの名無しさん
2007/05/17(木) 13:55:01この表記だと
参照はずしの* と *= との順位とか 参照はずしの* と % との順位で不安を感じるな
0260デフォルトの名無しさん
2007/05/17(木) 14:02:590262デフォルトの名無しさん
2007/05/17(木) 14:14:37>参照はずしとはなんですか?
*
0264デフォルトの名無しさん
2007/05/17(木) 15:33:04#include <stdio.h>
typedef enum {false, true} bool;
bool isLowestTerm(int n, int d){
int i;
if(n == d && d != 1) return false;
for(i=n; i!=1; i--)
if(n%i == 0 && d%i == 0) return false;
return true;}
void PLT2(int num, int denomi){
if(num!=1) PLT2(num-1, denomi);
if(isLowestTerm(num, denomi))
printf("%d/%d\n", num, denomi);}
void PutLowestTerm(int n){
if(n != 1) PutLowestTerm(n-1);
PLT2(n, n);}
int main(void){
int n;
printf("n := "); scanf("%d", &n);
PutLowestTerm(n);
return 0;}
0265デフォルトの名無しさん
2007/05/17(木) 15:44:16#include <stdio.h>
typedef enum {false, true} bool;
bool isLowestTerm(int n, int d){
int i;
if(n == 0) return (d == 1) ? true : false;
if(n == d && d != 1) return false;
for(i=n; i!=1; i--)
if(n%i == 0 && d%i == 0) return false;
return true;}
void PLT2(int num, int denomi){
if(num!=0) PLT2(num-1, denomi);
if(isLowestTerm(num, denomi))
printf("%d/%d\n", num, denomi);}
void PutLowestTerm(int n){
if(n != 1) PutLowestTerm(n-1);
PLT2(n, n);}
int main(void){
int n;
printf("n := "); scanf("%d", &n);
PutLowestTerm(n);
return 0;}
0266デフォルトの名無しさん
2007/05/17(木) 16:56:56不安なら括弧つければいいじゃん
制限無しだったしそこまで丁寧にはやってないぞ
0267デフォルトの名無しさん
2007/05/17(木) 17:23:31プログラミングの授業で課題が出されました。
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードから文字列を入力し、それを逆順に表示するプログラムを作成せよ。
表示には必ずポインタを用いること。
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003を使っております。
[3.3] 言語:C言語
[4] 期限:[2006年05月23日17時まで]
[5] その他の制限:なし
よろしくお願いします。
0268デフォルトの名無しさん
2007/05/17(木) 17:31:54int main()
{
char buf[100], *p;
fgets(buf, sizeof(buf), stdin);
for (p = buf; *p != '\n'; p++);
for (;p >= buf; p--)
putchar(*p);
return 0;
}
こうですか?
0269デフォルトの名無しさん
2007/05/17(木) 17:34:57#include <stdio.h>
#include <string.h>
int main()
{
char buf[100];
if (fgets(buf, sizeof(buf), stdin) == NULL) return 1;
int ic = strlen(buf) - 1;
if (buf[ic] == '\n') --ic;
for (; ic >= 0; --ic) {
putchar(buf[ic]);
}
return 0;
}
0271デフォルトの名無しさん
2007/05/17(木) 17:45:50#include <stdio.h>
int main(void)
{
char str[1024];
char *p;
scanf("%s", str);
p = str;
while(*p) p++;
while(p!=str) putchar(*--p);
return 0;
}
0272デフォルトの名無しさん
2007/05/17(木) 18:00:26#define MAX_INPUT 1024
void
reverse(char *buf)
{
if (*(buf) == '\n')
return;
reverse(buf + 1);
putchar(*buf);
}
int
main()
{
char buf[MAX_INPUT];
if (fgets(buf, MAX_INPUT, stdin) == NULL)
return 1;
reverse(buf);
putchar('\n');
return 0;
}
0273デフォルトの名無しさん
2007/05/17(木) 18:15:20void rp(char *s){
if(*++s)rp(s);
putchar(*--s);
}
int main(){
char s[256];
fgets(s,256,stdin);
rp(s);
return 0;
}
携帯だから遅い上に未確認 orz
0274デフォルトの名無しさん
2007/05/17(木) 18:50:27コンパイルできても自分の思ってるとおりに動いてくれません。
何処が違うのか、また、どのように直せばいいのか指摘をお願いいたします。
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
連結リストの挿入・削除・表示を行う。
[3] 環境
[3.1] OS:Windows xp
[3.2] Borland C++ と BCC Developer
[3.3] 言語:C言語
[4] 期限:[2006年05月25日17時まで]
[5] その他の制限:なし
よろしくお願いします。
0275デフォルトの名無しさん
2007/05/17(木) 18:53:270276デフォルトの名無しさん
2007/05/17(木) 18:53:47#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct CELL{
struct CELL *next;
int value;
}
main(void){
int or,banti,mval,y,z;
struct CELL *header,*p,*q,*new,b,c,d;
header->next = &b;
header->value = 130;
b.next = &c;
b.value = 90;
c.next = &d;
c.value = 55;
d.next = NULL;
d.value = 160;
for(;;){
/*qを現在、pを次のポインタに設定*/
p = header->next;
q = header;
0277デフォルトの名無しさん
2007/05/17(木) 18:55:04scanf("%d",&or);
printf("何番目の要素[0〜]?\n");
scanf("%d",&banti);
if(or == 0){
printf("値を入力してください\n");
scanf("%d",&mval);
if(banti == 0){
/*リストの先頭に新しいセルを挿入する場合*/
if((q = malloc(sizeof(struct CELL))) == NULL){
printf("メモリーが足りない\n");
exit(0);
}
new->value = mval;
new->next = header;
header = new;
}else{
/*ポインタqで記されたセルの直後に新しいセルを挿入する*/
for(y = 1;y <= banti;y++){
q = p;
p = p->next;
}
if((p = malloc(sizeof(struct CELL))) == NULL){
printf("メモリーが足りない\n");
exit(0);
}
new->value = mval;
new->next = p;
q->next = new;
}
0278デフォルトの名無しさん
2007/05/17(木) 18:55:12headerは何を指してるの?
0279デフォルトの名無しさん
2007/05/17(木) 18:56:03/*連結リストからの削除*/
if(banti == 0){
/*リストの先頭の削除*/
if(header == NULL){
printf("リストが空なので削除できない\n");
exit(0);
}
q = header;
header = q->next;
free(q);
}else{
/*ポインタqで記されたセルの直後のセルを削除する*/
z=1;
while(z < banti){
q = p;
p = p->next;
z++;
}
if(q->next == NULL){
printf("セルが無いから削除できない\n");
exit(0);
}
q->next=p->next;
free(p);
}
}
printf("表示\n");
for(p=header;p!=NULL;p=p->next){
printf("%3d\n",p->value);}}}
0280デフォルトの名無しさん
2007/05/17(木) 18:59:0514行目のことなら、仮の連結リストをつくって、そこから挿入や削除をしていこうかと。
普通に変数とか構造体のポインタの使い方を間違えてるかもしれないので…
0281デフォルトの名無しさん
2007/05/17(木) 19:04:51>header->value = 130;
このときのheaderは何を指してるの?
>仮の連結リストをつくって
つくってないじゃん。
0283デフォルトの名無しさん
2007/05/17(木) 19:07:35何かを指しているわけではなく単独でヘッダーという変数を作っただけです。
header > b > c > d という感じの連結リストになっているのですが…
あ、確かにこれは変な挙動起こしそう…直してきます。
0284デフォルトの名無しさん
2007/05/17(木) 19:09:16>何かを指しているわけではなく単独でヘッダーという変数を作っただけです。
初期化してないポインタに代入しちゃ鼻から悪魔だお
0285デフォルトの名無しさん
2007/05/17(木) 19:09:49typedef double fp(double)
これどういうこと?
0286デフォルトの名無しさん
2007/05/17(木) 19:13:25headerがポインタであることを忘れてました。
何でこれでコンパイルできたんだろうなぁ…
main(void){
int or,banti,mval,y,z;
struct CELL *header,*p,*q,*new,a,b,c,d;
header = &a;
a.next = &b;
a.value = 130;
b.next = &c;
b.value = 90;
c.next = &d;
c.value = 55;
d.next = NULL;
d.value = 160;
これでここのところは大丈夫でしょうか?
0287デフォルトの名無しさん
2007/05/17(木) 19:19:56お願いしますm(_ _)m
0288デフォルトの名無しさん
2007/05/17(木) 19:26:19for(y = 1;y <= banti;y++){ → for(y = 1;y < banti;y++){
if((p = malloc(sizeof(struct CELL))) == NULL){
→ if((new = malloc(sizeof(struct CELL))) == NULL){
>279
free(p) → free(q)
これで多分大丈夫
0289デフォルトの名無しさん
2007/05/17(木) 19:33:06識別子 fp を、double を引数とし double を返す関数の型として宣言
>何かを指しているわけではなく
何かを指さないと連結できないだろが。
今やってる。思いの外大変だ。
0292267
2007/05/17(木) 19:56:19>>269様
>>270様
>>271様
>>272様
>>273様
ご回答ありがとうございました。
いろんな答えは、今後の勉強になります!!
ありがとうございました。
0293デフォルトの名無しさん
2007/05/17(木) 20:17:11ありがとうございます!!
待ってますm(_ _)m
0294デフォルトの名無しさん
2007/05/17(木) 20:25:33(ここでの単語とは、ブランク,タブ,改行文字で区切られた文字)
例えば、
This is a book.
と入力すると、
This
is
a
book.
と表示される。
while((c=getchar()) != EOF)
という文を使って文章を入力し、while文終了後に一気に表示させたいのですが、どうやって表示させればいいのかわかりません。
教えてください。
0295274
2007/05/17(木) 20:32:55>>283様
>>288様
etc…様
ご回答ありがとうございます!
でも、まだ実際に動かしてみると
部分部分で可笑しな挙動をしてたりしてますが、
初期の状態よりは随分とマシになったような気がいたします。
しばし、自分の力で頑張ってみようと思いますが、
しばらくこのスレを見ながらプログラムをうってますので
どこか変な場所が見つかればご指摘お願いいたします。
またわからなくなった時は聞きにきますので
その時は宜しくお願いします。ありがとうございました。
0296デフォルトの名無しさん
2007/05/17(木) 20:34:40#include <stdio.h>
#include <ctype.h>
int main(void)
{
int c;
printf("Input strings > ");
while((c=getchar()) != EOF) {
if( isspace(c) ) putchar('\n');
else putchar(c);
}
return 0;
}
0297デフォルトの名無しさん
2007/05/17(木) 20:43:25#include<stdio.h>
#include<stdlib.h>
char* reading4(int d, char* add){
char* result = NULL;char* restmp;
char* places[]={"SEN","HYAKU","JU",""};
char* digits[]={NULL,"","NI","SAN","YON","GO","ROKU","NANA","HACHI","KYU",};
char* reed[4]={NULL,NULL,NULL,NULL};char tmp[256];int i,len;size_t total=0;
sprintf(tmp,"%i",d);len=(int)strlen(tmp);for(i=0;i<len&&i<4;i++){
if(tmp[len-i-1]-'0'){reed[3-i]=digits[tmp[len-i-1]-'0'];
total+=strlen(reed[3-i])+strlen(places[3-i])+1;}}
if(len>3&&tmp[len-4]=='1'){reed[0]="IS";total+=2;}if(len&&tmp[len-1]=='1'){
if(add&&add[0]){char ls[1024];sprintf(ls,"I%c%s",add[0],add);reed[3]=ls;
total+=strlen(ls);}else{reed[3]="ICHI";total+=4;}}
result=(char*)malloc(total+1);restmp=result;for(i=0;i<4;i++){if(reed[i]){
restmp+=sprintf(restmp,"%s%s ",reed[i],(tmp[i]-'0')?places[i]:"");}}
return result;}
int main(void){char tmp[256];char* places[]={"CHO ","OKU ","MAN ",""};
char* reed[4]={NULL,NULL,NULL,NULL};int data,i;fgets(tmp,256,stdin);
data=atoi(tmp);if(data){for(i=0; data>0 && i<4; i++){if(data%10000){
reed[3-i]=reading4(data%10000,(i==0)?places[3-i]:"");data/=10000;}}
for(i=0;i<4;i++){if(reed[i]){fputs(reed[i],stdout);fputs(places[i],stdout);
free(reed[i]);}}}else{fputs("ZERO",stdout);}putchar('\n');return 0;}
0300デフォルトの名無しさん
2007/05/17(木) 20:56:00標準入力にて EOF を検出したら while ループ終了でしょ?
ちゃんと最後のEOFを入力してちょうだいな。
0302デフォルトの名無しさん
2007/05/17(木) 21:00:06だからその終了の条件が EOF が入力されたという条件でしょ?
EOFを入力してくれよ
0303デフォルトの名無しさん
2007/05/17(木) 21:01:24入力された文字を格納する文字配列でも必要ってこと?
0304294
2007/05/17(木) 21:02:48EOFを入力したらプログラムが終わってしまいます。
Enterを押したときに表示するのでなく、EOFを入力したときに表示したいのです
0305デフォルトの名無しさん
2007/05/17(木) 21:03:08ありがとうございます!!
でも100とか1000とか表示されません…
あと、1300とかはISSEN SANHYAKUではなくてISSEN SANBYAKUのように表示しないと
いけないんですorz
0306デフォルトの名無しさん
2007/05/17(木) 21:10:06まぁ、こんな漢字で文字配列に格納してやってみるがや
#include <stdio.h>
#include <ctype.h>
int main(void) {
char c,buf[1024],i;
printf("Input strings > ");
while((c=getchar()) != EOF) {
if( isspace(c) ) buf[i++]='\n';
else buf[i++]=c;
}
buf[i]='\0';
puts(buf);
return 0;
}
0307デフォルトの名無しさん
2007/05/17(木) 21:13:08あと>>1のフォームさ忘れるでねぇ
0309デフォルトの名無しさん
2007/05/17(木) 21:24:39ちょっとダサイけど、こんな風にしたら改行が続かずに済むよ。
int flag = 0;
while ((c=getchar()) != EOF) {
if (isspace(c))
flag = 1;
else {
if (flag == 1) {
buf[i] = '\n';
++i;
}
flag = 0;
buf[i] = c;
++i;
}
}
0310デフォルトの名無しさん
2007/05/17(木) 21:24:46#include "stdio.h"
#include "stdlib.h"
char *num[] = {
0, "", "ni", "san", "yon", "go", "roku", "nana", "hachi", "kyuu"
};
char *po10[] = {"", "juu", "hyaku", "sen"};
char *po10_4[] = {"", "man", "oku", "chou"};
char *get_kurai(int n)
{
if (n % 4) return po10[n % 4];
else return po10_4[n / 4];
}
続く
0311310
2007/05/17(木) 21:26:05{
char *yomi, *tmp, *xnum, *kurai;
int l;
if (x < 10) {
kurai = get_kurai(n); xnum = num[x];
if (!*xnum && n >= 4) xnum = "ichi";
yomi = malloc(strlen(xnum) + strlen(kurai) + 1);
strcat(strcpy(yomi, xnum), kurai);
return yomi;
}
yomi = do_yome(x / 10, n + 1); xnum = num[x % 10];
if (xnum) {
if (n == 0 && !*xnum) xnum = "ichi";
kurai = get_kurai(n);
tmp = malloc(strlen(xnum) + strlen(kurai) + strlen(yomi) + 2);
strcat(strcat(strcat(strcpy(tmp, yomi), " "), xnum), kurai); free(yomi);
yomi = tmp;
}
return yomi;
}
0312311
2007/05/17(木) 21:27:14{
char *yomi, *minus;
if (x == 0) return strdup("zero");
if (x < 0) yomi = do_yome(-x, 0);
else yomi = do_yome(x, 0);
if (x < 0) {
minus = malloc(strlen("mainasu ") + strlen(yomi) + 1);
strcat(strcpy(minus, "mainasu "), yomi); free(yomi);
yomi = minus;
}
return yomi;
}
int main(int ac, char **av)
{
int x;
char *yomi;
x = atoi(av[1]);
yomi = yome(x);
printf("%s\n", yomi);
free(yomi);
}
0313デフォルトの名無しさん
2007/05/17(木) 22:12:29読みの例外処理せんといかんて!
お前らアホか!
0314デフォルトの名無しさん
2007/05/17(木) 22:13:450315デフォルトの名無しさん
2007/05/17(木) 22:15:280316デフォルトの名無しさん
2007/05/17(木) 22:24:460317デフォルトの名無しさん
2007/05/17(木) 22:25:32#include <stdio.h>
#include <ctype.h>
int main()
{
int c;
FILE *fp = tmpfile();
while ((c = getchar()) != EOF) {
if (isspace(c)) {
while (isspace(c = getchar()))
;
ungetc(c, stdin);
putc('\n', fp);
} else
putc(c, fp);
}
rewind(fp);
while ((c = getc(fp)) != EOF)
putchar(c);
fclose(fp);
return 0;
}
0318デフォルトの名無しさん
2007/05/17(木) 22:27:51さぁ、ティムポ、もとい、テムポファイルの詳細を書いて頂こうではないか
> tmpfile();
0319デフォルトの名無しさん
2007/05/17(木) 22:28:48処理系依存です。
0320デフォルトの名無しさん
2007/05/17(木) 22:30:58はっはっは(ダイバスターの博士風に
0321デフォルトの名無しさん
2007/05/17(木) 22:31:02tmpfile()がANSI/ISO C標準関数であることを知らないのではあるまいな
0322デフォルトの名無しさん
2007/05/17(木) 22:32:38ttp://www.bohyoh.com/CandCPP/C/Library/tmpfile.html
知っとるぞ。さぁ、次のお題だが・・・
0323デフォルトの名無しさん
2007/05/17(木) 22:34:33> int main()
括弧の中がANSI、ISO準拠でない点について。
0324デフォルトの名無しさん
2007/05/17(木) 22:38:28�dクスです!><
0325デフォルトの名無しさん
2007/05/17(木) 22:38:31C89はK&Rスタイルを許してるんでなかったっけか?
0326デフォルトの名無しさん
2007/05/17(木) 22:44:13>>317のソース
0327デフォルトの名無しさん
2007/05/17(木) 22:47:20> tmpfile()がANSI/ISO C標準関数
っとANSI / ISOの話を持ち出すならなおさらパラメーターがなければ
int main(void) 、あれば int main(int argc, char * argv[])というのは過去スレで既出が
もう議論はせんぞぉ〜。では、次の問題だが・・・ANSI、ISO準拠を無視したら動かないコンパイラは何か?
ダイバスター出動!
0328デフォルトの名無しさん
2007/05/17(木) 22:48:35いやだから、K&Rスタイルは別に規格無視ではないのでは?
C++なら明白に違法だけど。
0329デフォルトの名無しさん
2007/05/17(木) 22:49:26意図が分からない。
0330デフォルトの名無しさん
2007/05/17(木) 22:56:01C++でプロトタイプ無しは違法だが、
int main()に関しては、Cのint main(void)と同じだから、
C++でも違法ではないわな。
0331デフォルトの名無しさん
2007/05/17(木) 22:58:120332デフォルトの名無しさん
2007/05/17(木) 23:01:000333デフォルトの名無しさん
2007/05/17(木) 23:01:38voidなどという引数宣言を作らずに、C++同様にする
こともできたはず。
Denis Ritchieもそれを醜いと認めていたようだしね。
0334デフォルトの名無しさん
2007/05/17(木) 23:05:02ANSI、ISO標準の話を持ち出す場合はint mainについてもそれ準拠が望ましいという話だが?
これ以上は議論せんぞ。自分で言っていて墓穴を掘るくらいならしゃべらない方が良いぞ。
では次の問題だが・・・ANSI、ISO準拠で書かれていないソースをウェブサイトや書物で公開しちゃっている
のは、いったい何者か?ダイバスター出動!
0335デフォルトの名無しさん
2007/05/17(木) 23:06:54残念、mainの規格ではなくANSI、ISO準拠(それに応じて従って)で記述するソースなら
なおさらという話だ。tmpfile()がANSI/ISO C標準関数といっておきながら、プログラムの主体となる
main関数がANSI、ISO準拠でないのはこれいかに?
0336デフォルトの名無しさん
2007/05/17(木) 23:07:02> ANSI、ISO標準の話を持ち出す場合はint mainについても
> それ準拠が望ましいという話だが?
んな脳内ルールを押し付けられてもな。
そんな話にこだわってんの、あんた一人みたいだし。
で、あんたは>>318で結局何を言いたかったの?
0337デフォルトの名無しさん
2007/05/17(木) 23:08:05カーニハンとリッチー。
知ってる?とっても有名な人ですが。
ANSI C準拠のK&R第二版の先頭のサンプルは
main()
ではじまります。
0338デフォルトの名無しさん
2007/05/17(木) 23:08:160339デフォルトの名無しさん
2007/05/17(木) 23:09:40mainがANSI、ISO C標準関数の形式で書かれていないのが引っかかったわけだ。
だがこれ以上それについては議論せんぞ。ANSI、ISO準拠のmain関数の記述は
ISOのページにもしっかりと引数があるかないかで
int main(void) または int main(int argc, char * argv[]) と記されておったからな。
では次の問題だ。このスレはいったい何のスレか?ダイバスター出動!
0340デフォルトの名無しさん
2007/05/17(木) 23:10:10丸投げしたい人はそれまで自分で努力してみるんだ
無駄だと思うけど。
0341デフォルトの名無しさん
2007/05/17(木) 23:11:10で、>>318は何だったわけ?
なんか君、自分がものすごーく的外れなこと言ったからって
誤魔化しに走ってるだけじゃないの?
いつもの下らないmain()議論でお茶濁そうとして。
0342デフォルトの名無しさん
2007/05/17(木) 23:13:390343デフォルトの名無しさん
2007/05/17(木) 23:16:40> ANSI、ISO標準の話を持ち出したのにint main()必死だな
tmpfile()の説明をするんなら、標準関数だと説明するのが手っ取り早いでしょ。
で、K&Rスタイルでmain()を記述することは違法ではないし、
そんなのはかのカーニハンとリッチーが、ANSI C対応版と謳ってる
K&R第二版でやっとるわけです。
こんなところで下らない議論を続けるのなら、彼らに文句を言ったらどうかな?
0344デフォルトの名無しさん
2007/05/17(木) 23:18:30引数がないものとして扱うというような規定があり、
このことから俺は、関数定義時なら()と(void)は同じでは、と思うのだがどうだろう?
0345デフォルトの名無しさん
2007/05/17(木) 23:20:39つまり
C89ではK&Rスタイルが許されているので合法である。
C99ならvoidと解釈されるのでC++と同じ意味で合法になる、ということですか?
さっきから暴れているいつもの人は、なんなんでしょう。
0346デフォルトの名無しさん
2007/05/17(木) 23:21:10>>318
tmpfile()がANSI/ISO C標準関数であることを知らないのではあるまいな
ANSI、ISO標準関数を持ち出すならなおさらプログラムの開始のmain関数が
int main(必要に応じた引数)というのを知らないではあるまいな
0347デフォルトの名無しさん
2007/05/17(木) 23:22:23宿題スレだ
だから帰れ
0348デフォルトの名無しさん
2007/05/17(木) 23:25:05お前のスタイルをはっきりしろよw
0349デフォルトの名無しさん
2007/05/17(木) 23:25:430350デフォルトの名無しさん
2007/05/17(木) 23:26:36>>327
いやだから、K&Rスタイルは別に規格無視ではないのでは?
C++なら明白に違法だけど。
C++なら明白に int main()の過去の中がなくてもOKなんすけど?
こいつわかってねーわ、話にならねーから仕様書に目を通してないなら黙ってろ。
0351デフォルトの名無しさん
2007/05/17(木) 23:26:45規格/言語仕様とスタイルの区別がついてない厨房って以前もいたなぁ
確かボコボコに突っ込まれてたけど
0352デフォルトの名無しさん
2007/05/17(木) 23:27:40その
> C++なら明白に違法だけど
は、
> K&Rスタイル
にかかっているのです。
0353デフォルトの名無しさん
2007/05/17(木) 23:40:270354デフォルトの名無しさん
2007/05/17(木) 23:51:21ぬるぽ!
0355デフォルトの名無しさん
2007/05/17(木) 23:51:460356デフォルトの名無しさん
2007/05/17(木) 23:56:43きっとまた同じハゲの犯行。
0357デフォルトの名無しさん
2007/05/18(金) 00:38:08[2] 問題文(含コード&リンク):
次のプログラムを書き換えて、自然数の足し算を行うプログラムを作成せよ。
また、自然数の足し算、引き算そして掛け算を行えるよう拡張せよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3990.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007/05/18
[5] その他の制限: スタックやキューまで
0358デフォルトの名無しさん
2007/05/18(金) 00:45:32[1] 情報基礎論演習
[2] 課題1:2つの正方行列の和・差・積を求め、計算結果を見やすく画面に表示するプログラムを作成せよ。
ただし、両行列の要素はプログラム実行時にキー入力するものとする。(scanf)また、行列のサイズは4×4とする。
課題2:1で作成したプログラムを以下のように修正せよ。
・行列の要素はキー入力ではなくファイルから読み込む。(入力ファイルは自分で作成)
・計算結果は画面でなくファイルに出力すること。
[3] 環境
[3.1] Windows
[3.2] cygwin
[3.3] C
[4] 期限:5月18日
[5] 特になし
231で書いたのですが、課題2を1つのmain関数内に入れてできないでしょうか?できるだけわかりやすくポインタを使わずに作って欲しいです。どうかよろしくお願いします。
0359デフォルトの名無しさん
2007/05/18(金) 00:49:060360358
2007/05/18(金) 01:03:32課題1をmain関数だけで書いてしまったもので・・・
矛盾してるかもしれないけどよろしくお願いします。
0361>358
2007/05/18(金) 01:15:12も前の作ったプログラム.exe < 入力ファイル > 出力ファイル
ではいかんのか?
0362デフォルトの名無しさん
2007/05/18(金) 01:23:290363デフォルトの名無しさん
2007/05/18(金) 01:25:33main()の先頭をこんな感じに汁。
その後は、課題1と全く同じでOKのはずだ。
int main(int argc, char **argv)
{
if (argc < 3 || !freopen(argv[1], "r", stdin)
|| !freopen(argv[2], "w", stdout))
return 1;
0364358
2007/05/18(金) 01:30:03後、ファイルを読み込む時のプログラムと書き込む時のプログラムがどのように書けばいいのか分かりません。
C言語初心者なんですみません。
なにかわかりやすい例やサイトなどでもあったら紹介してください。よろしくお願いします。
0365357
2007/05/18(金) 01:30:14よろしくお願いします。
0366>364
2007/05/18(金) 01:34:160367デフォルトの名無しさん
2007/05/18(金) 01:43:58cygwinということだが
cygwinのbash(シェル)だとかgcc(コンパイラ)だとかの使い方は分かるのか?
> まず、入力ファイルの作り方がわかりません
ということは、それ以前の問題のようだが
0368デフォルトの名無しさん
2007/05/18(金) 01:51:07> 課題1をmain関数だけで書いてしまったもので・・・
えーと、つまり、漏れがやった課題1はガン無視っつう事でゴザルですか?
0369デフォルトの名無しさん
2007/05/18(金) 01:58:45スルーでいこ
0370364
2007/05/18(金) 02:07:460371364
2007/05/18(金) 02:09:49void関数やforループを参考にさせていただきました。ありがとうございます。
ただ自分には高度なやり方だったのですべてを理解することができませんでした。すみません。
今から363さんのをやってみたいと思います。
0372364
2007/05/18(金) 02:14:01コンパイルなどの仕方は分かります。
ただ要素の入ったファイルはどのように書けばいいのか分からないのです。
0373デフォルトの名無しさん
2007/05/18(金) 02:17:26やっとできた。これだけ共通化すれば文句ないだろう・・・
int ct[] = {
6166,1803,30,32,37,34,39,36,43,35,25,1155,1157,1162,1159,1164,
1161,1168,1160,27,1245,49307,1252,1249,2008,1251,2009,1250,1848,
1200,43322,1207,1204,1209,1206,1874,1205,1008,910,29901303,
};
int pt[][2] = {
{0,0},{0,82},{0,69},{0,73},{0,67},{0,72},{0,78},{0,83},{0,65},
{0,89},{0,79},{0,71},{0,75},{0,85},{0,74},{0,66},{0,80},
{0,90},{0,77},{9,13},{12,13},{2,6},{8,6},{8,20},{9,23},
{14,19},{7,21},{5,24},{1,10},{5,8},{6,3},{6,22},{7,22},
{9,10},{11,10},{12,19},{31,8},{33,6},{4,5},{28,20},{38,3},
{7,26},{16,16},{29,40},{42,24},
};
void Print(int n, unsigned char **b)
{
int *p;
for ( ; n; n /= 45)
if (*(p = pt[n % 45])) Print(p[0], b), Print(p[1], b);
else *(*b)++ = p[1];
}
void PrintTok(int n, unsigned char **b)
{
Print(n, b); *(*b)++ = ' ';
}
0374デフォルトの名無しさん
2007/05/18(金) 02:18:40っつーか、要素の入ったファイルの形式は?どのようにファイルに書き出せば良いのか
こっちがわからん。4行4列って指定があるから、単純に上から4行4列ずつ
8行4列に空白なりで区切られた値のファイルを読み込めば良いノカー
0375373
2007/05/18(金) 02:20:13{
int i, n, d;
for (i = 27, n = 1000; n; i -= 9, num %= n, n /= 10)
if((d = num / n) != 0) PrintTok(ct[i + d], buf);
}
unsigned char *Yomiage(int num, unsigned char *buf)
{
int i, n, d;
unsigned char *b = buf;
if (num == 0) Print(ct[0], &b);
else {
if(num < 0) PrintTok(ct[39], &b), num = -num;
for (i = 38, n = 100000000; n; i --, num %= n, n /= 10000)
if ((d = num / n) != 0) {
Yomiage1000(d, &b);
if (1 < n) PrintTok(ct[i], &b);
}
}
*b = '\0';
return buf;
}
0376373
2007/05/18(金) 02:20:59{
unsigned char buf[1000];
printf("%s\n", Yomiage(123456789, buf));
return 0;
}
0377デフォルトの名無しさん
2007/05/18(金) 02:23:00[2] 問題文(含コード&リンク):
課題1:4行4列の行列Aの各要素を入力して、その転置行列A’を計算して出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:わかりません
[3.3] 言語: C++
[4] 期限: 2007年5月18日10:00まで
課題あること忘れててヤバイです。お願いします。m(__)m
0378372
2007/05/18(金) 02:26:188行4列に空白などで区切られた値のファイルを読み込めるようにしていただければ大丈夫だと思います。
363を試したのですがエラーがたくさん出てしまいよくわからない状態になってしましました。
0379デフォルトの名無しさん
2007/05/18(金) 02:26:540380デフォルトの名無しさん
2007/05/18(金) 02:27:59>> 357
最初の?
{
char hoge[]={
'+',
'-',
'*'
};
char IsOperation=0;
while(i < sizeof(hoge)/sizeof(hoge[0])) {
if(hoge[i] == c) {
IsOperation=1;
break;
}
++i;
}
if(!IsOperation) {
continue;
}
}
0381372
2007/05/18(金) 02:28:430382デフォルトの名無しさん
2007/05/18(金) 03:14:06っつーか5月18日までって、今日までやん。。。きんもぉ〜★な俺のソースでも提出するか?
今やってるけどw
0383372
2007/05/18(金) 03:16:190384デフォルトの名無しさん
2007/05/18(金) 04:02:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3991.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3992.txt
こっ、こぉ〜〜れでええんか?課題1のプログラムを実行して入力した行列を
save1.txtに書き出して、課題2で使うプログラムを実行するとsave1.txtに書かれた
2つの4x4の行列の結果をsave2.txtに出力。読込んだ行列を表示するようにしてあるんで
不要なら消しておくべし。にしても、自分でもきんもぉ〜〜★なソースになっちまったぜい!w
0385デフォルトの名無しさん
2007/05/18(金) 04:14:220386デフォルトの名無しさん
2007/05/18(金) 04:31:19[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3993.txt
[3] 環境
[3.1] OS: (Windows/Linux/等々)Windows
[3.2] コンパイラ名とバージョン: VC++6.0
[3.3] 言語: C
[4] 期限: 5/23
[5] その他の制限: 配列までです、初心者ですどうかよろしくおねがいします。
0387デフォルトの名無しさん
2007/05/18(金) 05:33:12いっていることを見ると、やっぱこいつらANSI、ISO準拠すら理解してなさそうだし
話の論点がまったく理解できていないみたいだし。誰かさんがANSI、ISOの
標準の話を持ち出したにもかかわらず、そういう関数があるよと言っているのは分かるが
標準的なmain関数の記述がされていないのが ぶふふふぅ〜〜(吹いてまうぅ〜って)
って話なのよw
0388デフォルトの名無しさん
2007/05/18(金) 05:39:50>>318
tmpfile()がANSI/ISO C標準関数であることを知らないのではあるまいな
>>317
> int main()
(ダイバスターの隊員が驚く時の音を4回鳴らしながら)
ANSI/ISO C標準関数 int main() ANSI/ISO C標準関数 int main()
ANSI/ISO C標準関数 int main() ANSI/ISO C標準関数 int main()
mainも当然関数ですから〜〜!残念(ジャカジャンッ!
これだとANSI、ISOの標準スタイルではない 斬り!
拙者、こんなことを言っても、稼業でプログラマーなんてやっていない
趣味でやっているだけのただの一般人ですから、切腹!
0389デフォルトの名無しさん
2007/05/18(金) 05:42:360390デフォルトの名無しさん
2007/05/18(金) 05:53:12お前これ分かってねーみたいな揺さぶりは通用しない。第一、まず先に
標準関数って言っておきながら、mainそのものの記述が標準スタイルではないという
なんとも頭かくして尻隠さずな発言がワロスなのさ
0391デフォルトの名無しさん
2007/05/18(金) 05:59:21int main()に話をすり替えてるだけにしか見えん。
0392デフォルトの名無しさん
2007/05/18(金) 06:11:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3994.c
fも0又は1で表現される画像なら、問題自体(というか式(1))がおかしい。
0393デフォルトの名無しさん
2007/05/18(金) 06:37:43ごめん。4行4列の行列の転置行列を表示するのに計算要るのか?
どういう計算するん?
0394デフォルトの名無しさん
2007/05/18(金) 06:47:510395デフォルトの名無しさん
2007/05/18(金) 06:51:170396デフォルトの名無しさん
2007/05/18(金) 06:56:530397デフォルトの名無しさん
2007/05/18(金) 07:25:11どうみても標準って言葉と実装を理解しておらず、墓穴を掘ったことを
int mainの指摘をした相手がtmpfileを知らなかったことにしたいらしいw
っつーか、知っている知っていないはともかく、int mainの括弧の中は
敢えてANSI、ISOを持ち出した標準を謳うんであれば、なおさら準拠した
記述をすべきであって、していないからといって別に悔やむことはないぞw
0398デフォルトの名無しさん
2007/05/18(金) 09:42:32fはこんな感じだったと思います。原因が入力画像の端も対象にしてました。
迅速に答えていただきありがとうございました。
0399デフォルトの名無しさん
2007/05/18(金) 10:18:050400357
2007/05/18(金) 11:34:36よろしくお願いします。
0401247
2007/05/18(金) 11:41:38void chg(int *cnt){
*cnt *= *cnt%2 ? 5 : 10;
}
int main(){
int cnt;
printf("Cnt =>");
scanf("%d",&cnt);
if(cnt<0 && 9<cnt) return 1;
chg(&cnt);
printf("cnt(chg後) :%d\n",cnt);
return 0;
}
mainでscanfを使わずにgetcharでかく方法を教えてください。
0402デフォルトの名無しさん
2007/05/18(金) 11:47:43- scanf("%d",&cnt);
+ cnt = getchar() - '0';
とでも汁
0403デフォルトの名無しさん
2007/05/18(金) 11:48:46>>380でレスがついてないか
入力が定義されてないのでこれで。
http://c-kadai.sakura.ne.jp/index.php?itemid=10
0405357
2007/05/18(金) 13:30:51ありがとうございます。
でも何か上手く動かないです…。
二つ目の???に何か入れないとダメなんですかね?
>>403
ありがとうございました。
>>404
どういうことでしょうか?
0406デフォルトの名無しさん
2007/05/18(金) 15:59:48[1] 前進オイラー法
[2] 熱伝導方程式の初期値協会値問題を陽的差分法で解くためのプログラムを作成せよ。
初期値(δu/δt)=(δ^2 u/δx^2)
u(0,t)=u(1,t)=0 (t>0)
u(x,0)=f(x) (0≦x≦1)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名 cc
[3.3] 言語: C++
[4] 期限: 2007年5月18日17時
お願いします。
0407デフォルトの名無しさん
2007/05/18(金) 16:08:10[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] 不明
[3.3] 言語: C言語
[4] 期限: ([2007年05月18日18:00
[5] プログラム全く分かりません。
以下になります。
(1)配列を使ってキューを実装したい。キューの先頭を管理する変数を
head、末尾を管理する変数をtail、データを格納すr配列をentry[]と
して、データ構造を考えなさい。ただし、格納するデータは文字(char)
のみとし、格納する最大個数はMAXSIZEとしてとしてdefineされているも
のとする。
(2)上記のデータ構造を用いてキューを実現しなさい。
(3)連結リストを使ってキューを実現しなさい。(教科書無いんで無視)
(4)(2)の配列による実装と(3)の連結リストによる実装を比較的考察し、
各々の特徴を整理しなさい。
以上です。よろしくお願いいたします。
0408デフォルトの名無しさん
2007/05/18(金) 16:22:570410デフォルトの名無しさん
2007/05/18(金) 17:11:49[2] 問題文(含コード&リンク):
以下のように10個のますに3つの白いコインと3つの黒いコインが配置されている。
・・□・
・・●・
・・●・
□○●□
・○・・
・○・・
・□・・
※「□」は空白を表す。「・」は完全に無視して下さい。
各コインは隣のますが空白であれば一度に一つずつ動かすことができる。
例えば、一番下の●は、右のますが空白であるので、
・・□・
・・●・
・・●・
□○□●
・○・・
・○・・
・□・・
のように動かすことができる。この手順を繰返し、
以下の最終状態の配置にする最短の手順を求めよ。
・・○・
・・○・
□●○□
・●・・
・●・・
・□・・
0411デフォルトの名無しさん
2007/05/18(金) 17:12:35・・F・
・・G・
・・H・
ABIJ
・C・・
・D・・
・E・・
のようなラベルを用い、例の移動であったら、
「IJ」と表示すること。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ:gcc
[3.3] 言語:C
[4] 期限: 5月20日まで
[5] 制限はとくにありません。
幅優先探索が適していると思うのですが、コードを書くとなると混乱
してしまいます。自分なりに頑張ったつもりですがお手上げです↓
どうかよろしくお願いします。
2問題文:配列を用いてn個までの値を入力し、その最大値、最小値、及び
全体の平均点を出すプログラムを作成せよ。
3環境:Linux3.2
gcc
C
4 2007年5月22日17時
5 ifやwhile、そして今日配列まで習いました。
よろしくお願いします!!
0413デフォルトの名無しさん
2007/05/18(金) 17:52:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3996.cpp
こうですか?>>407
0414デフォルトの名無しさん
2007/05/18(金) 18:09:49何らかの10進数を入力するとそれに1を加えた数を表示するプログラムをお願いします
Cygwin?を使ってます
0415デフォルトの名無しさん
2007/05/18(金) 19:07:55とりあえずテンプレで書け
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[256];fgets(tmp,256,stdin);printf("%d\n",atoi(tmp)+1);return 0;}
0417デフォルトの名無しさん
2007/05/18(金) 20:21:19それ、取りうる状態の数が結構限られているだろ?
全ての状態をメモリ上に書き出せるんじゃないの?
0418デフォルトの名無しさん
2007/05/18(金) 21:40:35最短の手順を求めるのが目的だから、
状態全部書き出せるかどうかはあんま関係ない気もするけど
ループ検出のハッシュでコリジョンを防ぎ易い、とかその辺の話?
0419デフォルトの名無しさん
2007/05/18(金) 21:42:40簡単ということでしょ
0420デフォルトの名無しさん
2007/05/18(金) 21:56:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3999.c
パフォーマンスのことは全然考えてないけど、一応答えは出る。
0421デフォルトの名無しさん
2007/05/18(金) 22:37:16if(0 < x > 60)
ってありですか?
0422デフォルトの名無しさん
2007/05/18(金) 22:38:59ありだが、つねに偽になる
0423デフォルトの名無しさん
2007/05/18(金) 22:42:07ありがとうございます!
0424デフォルトの名無しさん
2007/05/18(金) 22:46:58if(0 < x < 60)
なら常に真になる
理由
【1】.まず 0 < x が評価されて 0 または 1 になる
【2】.次に (【1】の評価結果) < 60 が評価されいずれの場合でも真になる
誤解の無いように!
0425デフォルトの名無しさん
2007/05/18(金) 22:50:35ありがとうございますッ><
これでこの部分は完璧!!!!!!!!!!!!!!!!1111
0426デフォルトの名無しさん
2007/05/18(金) 23:18:20スゲー
なんかCの罠って感じだな
0427デフォルトの名無しさん
2007/05/18(金) 23:20:370428デフォルトの名無しさん
2007/05/18(金) 23:27:230429デフォルトの名無しさん
2007/05/19(土) 00:14:340430デフォルトの名無しさん
2007/05/19(土) 00:20:05納得
0431デフォルトの名無しさん
2007/05/19(土) 01:34:54C言語怖いんか〜
0432デフォルトの名無しさん
2007/05/19(土) 02:26:06大きくスレ違い!
0433デフォルトの名無しさん
2007/05/19(土) 08:21:08[2] 問題文(含コード&リンク):文字列を10回入力して、最も大きな文字列を表示する。
[3] 環境
[3.1] OS:Windows2000
[3.2] コンパイラ名とバージョン: LSI C-86
[3.3] 言語:C言語
[4] 期限: (2007年5月20日まで)
[5] その他の制限:入力はscanf関数ではなく、getchar関数を使用する。
文字列の比較はstrcmp関数を使用する。
0434デフォルトの名無しさん
2007/05/19(土) 08:35:27何のこっちゃ?文字の大きさの基準は?
0435デフォルトの名無しさん
2007/05/19(土) 08:39:21VC++6でしか確認してねーけど。こういうこと?
#include <stdio.h>
#include <string.h>
void main(void) {
int i=0, c=0;
char max;
while ( i<10 ) {
c = getchar();
if ( (c>='a' && c<='z') || (c>='A' && c<='Z') ) {
if ( strcmp( &max, &((char)c) )>0 ) max=c;
++i;
}
}
printf( "MAX: %c\n", max );
}
0436デフォルトの名無しさん
2007/05/19(土) 09:08:10文字の大きさの基準は、課題にそれ以上のことが書かれていなかったので
正直なところよくわかりません。
想像だとstrcmp関数の戻り値で判断、文字コード順で比較して
最も大きな文字列を表示ではないかと……。
>>435
ありがとうございます。
1度LSI C-86で動かしてみます。
0437デフォルトの名無しさん
2007/05/19(土) 09:12:10一致しなかった場合は一致しなかった場所の文字同士の文字コードの比較で、
コードの値の大小関係で正か負が決定されてしまい、文字列の長さは考慮せず。
例えば、aBcdef と abcd を比較した場合、Bとbが不一致でbの方がコードの値が
大きいんで、文字列は短いけどabcDの方が大きいという結果に。
ttp://www.psl.ne.jp/perl/pdojo00b.html
#include <stdio.h>
#include <string.h>
int main(void) {
char ch,strmax[256]={"\0"},buf[256];
size_t i,j;
for(i=0; i<3; i++) {
j=0;
do{
ch=getchar();
if(ch=='\n') break;
else buf[j++]=ch;
}while(1);
buf[j]='\0';
if( strcmp(strmax,buf) < 0 ) {
strcpy(strmax,buf);
}
}
puts(strmax);
return 0;
}
0438デフォルトの名無しさん
2007/05/19(土) 09:18:21for(i=0; i<3; i++) { は i<10に。
0439デフォルトの名無しさん
2007/05/19(土) 10:48:26ありがとうございます。
助かりました。
文字列の長さについてはふれられてなかったので、大丈夫だと思います。
0440デフォルトの名無しさん
2007/05/19(土) 11:58:31[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4002.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++2005
[3.3] 言語: C++
[4] 期限: 2007/ 5/ 19/ 23:59 まで
[5] その他の制限: map と list を用いる
問題文が少々長いですが、どうかよろしくお願いします
0441デフォルトの名無しさん
2007/05/19(土) 11:58:44>435は文字の大きさを比較しているので要注意。
しかし、ほんとにLSI-C86使っているのか?
とんでもないな。
0442デフォルトの名無しさん
2007/05/19(土) 12:06:13くそぅAccess使っていいならすぐなんだがな
0443デフォルトの名無しさん
2007/05/19(土) 12:56:40リレーションPを構造体で作れ、と言ってるのにサンプルはクラスなんだが、
クラスで良いんだよな?
0444デフォルトの名無しさん
2007/05/19(土) 13:12:36はいクラス使ってです
0445デフォルトの名無しさん
2007/05/19(土) 14:23:31パフォーマンス云々以前に
malloc(0) を呼ぶと NULL が返ってくる可能性があることを
全く考慮していないだろ?
0446デフォルトの名無しさん
2007/05/19(土) 15:06:30http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4003.lzh
lzhの中身はソース1つとP.txt、SPJ.txt
クオリティ低い・・・。
仕事でこんなコード書いてたら殴られそうだ。
0447デフォルトの名無しさん
2007/05/19(土) 15:15:04mallocがNULLを返した時点で即座に終了するようになっていることを失念していたw
指摘ありがとう。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4004.c
ついでに、キューが空のときpushが誤動作するのを修正。この問題では顕在化しないけど。
0448デフォルトの名無しさん
2007/05/19(土) 15:32:37ありがとうございました ホントに助かります
殴られたら耐えます
0449#
2007/05/19(土) 17:42:46[2] 問題文:
レポート課題内容: 実行時引数として算術式を前置記法で与える。演算子は + と *,演算数は英字1字とする。
その算術式を表す二分木を作り,その先行順,中央順,後行順,レベル順での走査して,つぎのように出力するプログラムを作れ。
例: ./a.out "*+a**bc+def"
* + a * * b c + d e f
a + b * c * d + e * f
[3] 環境
[3.1] OS:Windows/XP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語:C
[4] 期限: 5月21日
[5] その他の制限: リンクによるリスト処理の形
どなたかお願いします
0450デフォルトの名無しさん
2007/05/19(土) 21:15:34[2] 問題文(含コード&リンク):20元ほどの連立方程式を部分ピボット選択法をとりいれて解けるプログラムをつくりなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio.net 2003
[3.3] 言語: C
[4] 期限: 5月21日22時まで
[5] その他の制限:特に無し。
お願いします。
0451デフォルトの名無しさん
2007/05/19(土) 21:52:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4007.txt
リンクによるリスト処理の形というのが何のことかイマイチ分からない・・・
>>450
プログラム云々というより数学がorz
0452デフォルトの名無しさん
2007/05/19(土) 22:44:45部分ピボット選択法って何だ?ガウスの消去法の事か?
0453デフォルトの名無しさん
2007/05/20(日) 00:47:44そうです。説明不足すみません。
0454デフォルトの名無しさん
2007/05/20(日) 01:03:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4008.txt
0455デフォルトの名無しさん
2007/05/20(日) 01:41:37本当にありがとうございます!
0456デフォルトの名無しさん
2007/05/20(日) 08:56:46[1] Basic プログラミング
[2] 次の4つの関数を作りなさい:
1.Integerのみで構成されたArrayの中から、ユーザー任意のIntegerのみを
消去する(複数個ある場合も考えること)
2.ArrayAとArrayBがあるとして、Aの中のIntegerが全てBの中に含まれているかを
調べ、含まれていたらメッセージをOutputする。
3.Arrayを小さいIntegerから大きいIntegerの順に並び変える。
4.Arrayを大きいIntegerから小さいIntegerの順に並び変える。
[3] 環境
[3.1] OS: Windows
[3.2] 不明です
[3.3] 言語: C++
[4] 期限: 5/29/07までお願いします
[5] その他の制限:まだ初めて2ヶ月目なのであまり進んだことは使えません。
Forループ、if、Switchを習い終えたレベルです。
どうかよろしくお願いします。
0457デフォルトの名無しさん
2007/05/20(日) 08:59:360458456
2007/05/20(日) 09:00:560459456
2007/05/20(日) 09:02:170460456
2007/05/20(日) 09:04:25紛らわしくてすみません、アメリカの大学に在学してまして
クラスの名前がBasic Programingなのです。プログラミングの最初に取る基本のクラスです。
0461デフォルトの名無しさん
2007/05/20(日) 09:14:150462デフォルトの名無しさん
2007/05/20(日) 09:14:38そんな生徒はとっとと日本に帰国させた方が良いと通報しとくからw
0463デフォルトの名無しさん
2007/05/20(日) 09:43:06ホームシックだからって、宿題を装ってまでして気を紛らわそうとするなよw
もっと構ってくれる板たくさんあるぞ!
0464デフォルトの名無しさん
2007/05/20(日) 09:52:060465デフォルトの名無しさん
2007/05/20(日) 10:52:52消去するって具体的にはどうすんの?
値を0にするだけ?それともそこに後ろの値を詰めるの?
0466456
2007/05/20(日) 11:20:02ただ消去しろ、とのことなので
0でも詰めるのでもないと思います。
空きのArrayにしろと言う事だと思いますが、そのようなことは可能なのでしょうか?
0467デフォルトの名無しさん
2007/05/20(日) 11:21:31不要になった部分のメモリも開放しろと?
0468デフォルトの名無しさん
2007/05/20(日) 11:22:070469デフォルトの名無しさん
2007/05/20(日) 11:25:29不要になった部分のメモリも開放しろということだと思います
>>468
無知なもので、すみません。
たとえばサイズ5のArrayに4つまでしかDataをインプットしなかったら
最後の一個は空きにはならないのでしょうか?
0470デフォルトの名無しさん
2007/05/20(日) 11:35:58データを入力しながら動的にメモリを確保していくやり方で良いんかい?
0471デフォルトの名無しさん
2007/05/20(日) 11:38:49こういった内容も授業でやったん?
0472デフォルトの名無しさん
2007/05/20(日) 11:40:090473デフォルトの名無しさん
2007/05/20(日) 11:42:02いえ、Delete Operatorは、まだ習っていません。
0474デフォルトの名無しさん
2007/05/20(日) 11:43:52などでしたら、使っても差し支えないと思います。
0475デフォルトの名無しさん
2007/05/20(日) 11:49:31あとは並び替えなんてのはありきたりなソートのライブラリを使ってしまえば良いし。
C++はさっぱりだから俺はパス、すまそ orz
0476デフォルトの名無しさん
2007/05/20(日) 11:57:11ループを使ってチェックをするやり方だと思います。
皆さんにとっては簡単な問題なのに、尋ね方が悪く手間取らせてすいませんでした。
0477デフォルトの名無しさん
2007/05/20(日) 12:06:13っつーか、使えるものを使うってのは当たり前じゃね?
変に条件を絞るってなら、その条件を言ってもらわんと。
ソートのアルゴリズムの指定もありか?
0478デフォルトの名無しさん
2007/05/20(日) 12:12:52今、調べたらソートのアルゴリズムの指定がありました。
大きい順に並べる時、
A B C D E F
まずAと(BCDEF)を比べて、Aより大きいものがあれば交換。
つぎにBと残りを比べて大きいものがあれば交換、CでDで
という感じです。
0479デフォルトの名無しさん
2007/05/20(日) 12:20:21ttp://www.miyagi-ct.ac.jp/ee/lecture/E3_01/Select_sort.html
0480デフォルトの名無しさん
2007/05/20(日) 12:35:58それと何回も申し訳ないのですが、Pointerはまだ習っていないので使えません。
よろしくお願いします。
0481デフォルトの名無しさん
2007/05/20(日) 12:42:02情報処理の取り扱いに慣れてないな。今すぐ専攻している学問をやめて
ほかの路線を考えた方が良いぜ?こんな俺でも3流以下の大学中退だからw
0482デフォルトの名無しさん
2007/05/20(日) 13:02:54[2] 問題文(含コード&リンク):
if文、 if~else~文、 if~else if~else文、 switch文、 三項演算子、をすべて用いてクイズを作成しなさい
反復文は使えないものとし、同じ問題はでないものとする
[3] 環境
[3.1] OS: WindowsXP
[3.2] visual studio2005
[3.3] 言語: C++
[4] 期限: 5/25まで
[5] その他の制限: 特になし
よろしくお願いします。
0483デフォルトの名無しさん
2007/05/20(日) 13:13:02すみません言葉が足りませんでした
教えていただいたページが存在しなかったので
アドレスのリンクが切れていると言ったつもりでしたが・・・
0484デフォルトの名無しさん
2007/05/20(日) 14:05:53とりあえず現地時刻のってことだろうから、ワシントンD.Cの時刻を参考にした場合
http://www.worldtimeserver.com/current_time_in_US-DC.aspx
日本時間から13時間差し引いた時刻となるから、まぁ、日本時間でその期日で間に合っていりゃ良いか。
誰か頼む。俺はちと寝る。時差ぼけじゃ〜〜なくてただの徹夜明け orz
0485デフォルトの名無しさん
2007/05/20(日) 14:09:180486デフォルトの名無しさん
2007/05/20(日) 14:11:00違うって、そりゃ各々の隣接する要素同士の比較、交換やろ?w
0487デフォルトの名無しさん
2007/05/20(日) 14:15:34deleteは習ってない、ソートする課題がある、ということは、
Arrayは固定長で、要素を消す時は前詰めして
要素数を別変数で管理する方法だと思うがどうか?
0488デフォルトの名無しさん
2007/05/20(日) 14:32:06なんかVBくさい
0489デフォルトの名無しさん
2007/05/20(日) 14:44:33日本時間で23日の午後4時までです。
お疲れのところすみませんでした。
0490デフォルトの名無しさん
2007/05/20(日) 14:52:09>Arrayは固定長で、要素を消す時は前詰
はい長さは固定で、消した後については特に指定がないので
前詰めで大丈夫だと思います。
>要素数を別変数で管理
理解が足りなくてすみません
array[i]のようにした後、iと固定サイズでループを作ったりすることでしょうか?
0491デフォルトの名無しさん
2007/05/20(日) 15:02:10num = 有効な要素の数
ってことじゃないの?
a[0] = 100
a[1] = 200
a[2] = 300
a[3] = 400
num = 4
↓a[1]を消して詰める
a[0] = 100
a[1] = 300
a[2] = 400
a[3] = 400
num = 3
0492デフォルトの名無しさん
2007/05/20(日) 15:15:430493デフォルトの名無しさん
2007/05/20(日) 15:22:410494デフォルトの名無しさん
2007/05/20(日) 15:46:150495デフォルトの名無しさん
2007/05/20(日) 15:52:57[2] 問題文(含コード&リンク):
下記�@�Aの銀行に「一億円」を預けた場合、何年と何ヵ月後に�Aの銀行の預金額を�@の銀行の預金額が超えるか
�@利率0.08% (複利)の銀行
�A利率0.09% (単利)の銀行
反復文を用いて�@�A双方の毎月の預金額を表示し、�Aの銀行の預金
額を�@の銀行の預金額を超えた時点で反復文を終了後、「�@の銀行は
●年●ヵ月後に�Aの銀行の預金額を超える」と表示しなさい。
また、上記�@の銀行に「1億円」、�Aの銀行に「9999万円」を預けた場合、
どちらが先に「1億200万円」になるか、前問と同じ処理を行い、最後に
「●の銀行が●年●ヵ月後に先に1億200万円貯まる」と表示しなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] visual studio2005
[3.3] 言語: C++
[4] 期限: 5/26まで
[5] その他の制限: 特になし
よろしくお願いします。
0496デフォルトの名無しさん
2007/05/20(日) 15:54:20[2]問題文
下記の実行結果になるプログラムを作成せよ。
1〜nまでの整数合計を求めるプログラム。
※while文を使用すること!
変数は下記を使用
int i ループカウンタ
int n 最終数を入力するエリア
int ans 合計算出エリア
<実行結果>
1からnまでの和を計算します
nを入力してください:(例5)
1から5までの和は(例15)です。
[環境3]
[3.1] OS: WindowsXP
[3.2] visual studio2005
[3.3] 言語: C++
よろしくおねがいします
0497496
2007/05/20(日) 15:56:440498デフォルトの名無しさん
2007/05/20(日) 16:09:51#include "stdio.h"
int main(){
int i,n,ans=0;
printf("1からnまでの和を計算します\nnを入力してください:");
scanf("%d",&n);
i=n;
while(i)ans+=i--;
printf("1から5までの和は%dです。\n",ans);
return 1;
}
0499デフォルトの名無しさん
2007/05/20(日) 16:10:26#include <iostream>
using namespace std;
int main(void)
{
int n;
cout << "1からnまでの和を計算します。" << endl;
cout << "nを入力してください。" << endl;
cin >> n;
int ans = 0;
int i = 1;
while (i <= n) {
ans += i++;
}
cout << "1から" << n << "までの";
cout << "和は" << ans << "です。" << endl;
return 0;
}
0500デフォルトの名無しさん
2007/05/20(日) 16:51:090501デフォルトの名無しさん
2007/05/20(日) 16:54:580502デフォルトの名無しさん
2007/05/20(日) 16:55:360503デフォルトの名無しさん
2007/05/20(日) 17:00:520504デフォルトの名無しさん
2007/05/20(日) 17:02:38[2] 問題文(含コード&リンク):
16進数の足し算表と掛け算表を作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: なし
[5] その他の制限: なし
よろしくお願いします
0505デフォルトの名無しさん
2007/05/20(日) 17:03:010506デフォルトの名無しさん
2007/05/20(日) 17:15:520507デフォルトの名無しさん
2007/05/20(日) 17:25:100508デフォルトの名無しさん
2007/05/20(日) 17:28:080509デフォルトの名無しさん
2007/05/20(日) 17:29:060510505
2007/05/20(日) 17:36:45C/C++/C#/J2ME/J2SEやってる。
0511デフォルトの名無しさん
2007/05/20(日) 17:40:24人並に働ける会社なんですかね皆さんは
0512デフォルトの名無しさん
2007/05/20(日) 17:58:22人並みっていうのは終電までには帰れる
とかそういうこと?
0513デフォルトの名無しさん
2007/05/20(日) 18:06:54そんなにしんどくないよ
終電には間に合うし
0514デフォルトの名無しさん
2007/05/20(日) 18:11:050515デフォルトの名無しさん
2007/05/20(日) 18:13:00長くなってしまった。すまん。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4010.cpp
0516デフォルトの名無しさん
2007/05/20(日) 18:51:00[2] 問題文:
�@. ハノイの塔のボトムアップ(反復形)のプログラムを作れ。
プログラムは,maink関数と,hanoi関数(ともに再帰を含まない)とで構成する。
./a.out N の形に円盤の枚数 N を十九時引数として指定すると,N枚の円盤の山を右回りに隣の柱に移す最短手順を出力するようにせよ。
�A.アジア地区予選の問題Gをお願いします
http://www.acm-japan.org/icpc-j.html
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 5月21日23時
よろしくお願いします
0517デフォルトの名無しさん
2007/05/20(日) 19:01:390518デフォルトの名無しさん
2007/05/20(日) 19:01:41[2] 問題文(含コード&リンク):
反復文を用いて、トランプゲーム(ババ抜き、7ならべなど)を実現するプログラムを作成しなさい
ゲームの種類はなんでもよい
[3] 環境
[3.1] OS: WindowsXP
[3.2] visual studio2005
[3.3] 言語: C++
[4] 期限: 5/26まで
[5] その他の制限: 特になし
よろしくお願いします。
0519デフォルトの名無しさん
2007/05/20(日) 19:11:41にほんごでおけ
0520デフォルトの名無しさん
2007/05/20(日) 19:30:100521デフォルトの名無しさん
2007/05/20(日) 19:38:25>516 はローマ字打ちと予測する
>枚数 N を十九時引数として指定
実行時引数
jikkoujihikisuu
jikk ujihikisuu
じっくじひきすう
十九時引数
0522デフォルトの名無しさん
2007/05/20(日) 20:12:35必要だった気がする。
0523sage
2007/05/20(日) 20:27:09[2] 問題文:
以下に与えられたg(x)に対して、与えられた「x」の最初の値「x0」から出発して、
x=g(x)の形の方程式の解を不動点反復法によって求めよ。
(1) g(x)=1/3*(x^2+1), x0=1
(2) g(x)=3-(1/x), x0=1
(3) g(x)=1/(x^2+1), x0=1
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン: UNIX
[3.3] 言語: C言語
[4] 期限: 5月21日:午前10時まで
よろしくお願いします。
0524デフォルトの名無しさん
2007/05/20(日) 20:42:09#include <stdio.h>
#include <math.h>
#define EPS 1.0e-5
#define KMAX 1000
int main(void)
{
int ct = 0;
double x, xn;
x = 1; /* ここにx0を入れる */
while (1) {
ct++;
printf("%3d : %f\n", ct, x);
xn = 1. / 3 * (x * x + 1); /* ここにg(x)を入れる */
if (fabs(xn - x) < EPS) {
printf("Solution found.\n");
break;
}
if (ct > KMAX) {
printf("Error.\n");
break;
}
x = xn;
}
return 0;
}
0525デフォルトの名無しさん
2007/05/20(日) 20:59:00動かす円盤の番号と手順の2進数のビットパターンに関連があることが判る。
つまり、奇数手目には必ず最上位の円盤を動かすわけで、これが最下位ビット(bit0)に相当する。
同様に二手目、六手目などに第二位の円盤を動かすのが第二ビット(bit1)、四手目に第三ビット(bit2)……
従って、この方法を使えば任意の手数番目にどの円盤を動かすかは簡単に得られる。
そこまで判れば、どこからどこへ動かすかも同様に定数時間で得られる。
0526デフォルトの名無しさん
2007/05/20(日) 21:12:23>>516
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4011.c
>>525
まさにその方法だ。
0527デフォルトの名無しさん
2007/05/20(日) 21:13:09ありがとうございます!とても速いです!あこがれます!
0528デフォルトの名無しさん
2007/05/20(日) 21:20:18[2] 問題文(含コード&リンク):
入力した二つの値の掛け算を筆算形式で計算せよ。
ただし入出力ともに16進数とし符号なしとする。
[3] 環境
[3.1] OS: Vine Linux
[3.2] gcc
[3.3] 言語: C
[4] 期限: 5/22 21:00
[5] その他の制限: 特になし
よろしくお願いします。
0529デフォルトの名無しさん
2007/05/20(日) 21:22:05早撃ちジャックと呼んであげようw
0530デフォルトの名無しさん
2007/05/20(日) 21:57:132006年のでいいの?
0531デフォルトの名無しさん
2007/05/20(日) 22:19:13#include <stdio.h>
int add(int a, int b) { return a + b; }
int mul(int a, int b) { return a * b; }
void prtable(int (*op)(int, int))
{
int i, j;
putchar(' ');
for (j = 1; j < 0x10; ++j)
printf("%3X", j);
putchar('\n');
for (i = 1; i < 0x10; ++i) {
printf("%X", i);
for (j = 1; j < 0x10; ++j)
printf("%3X", (*op)(i, j));
putchar('\n');
}
}
int main(void)
{
prtable(add);
putchar('\n');
prtable(mul);
return 0;
}
0532デフォルトの名無しさん
2007/05/20(日) 22:26:52�d�d
0533デフォルトの名無しさん
2007/05/20(日) 22:32:162問題文:配列を用いて100個までの値を入力し、その最大値、最小値、及び
全体の平均点を出すプログラムを作成せよ。
3環境:Linux3.2
gcc
C
4 2007年5月22日17時
5 ifやwhile、そして今日配列まで習いました。 関数とかはまだです
0534デフォルトの名無しさん
2007/05/20(日) 22:44:14#include<stdio.h>
int main(){
int i, data[100], max, min, sum;
i = 0;
while(i<100){
scanf("%d",&data[i]);
i++;
}
max = data[0];
min = data[0];
sum = data[0];
i = 1;
while(i<100){
if(max < data[i]) max = data[i];
if(min > data[i]) min = data[i];
sum += data[i];
i++;
}
printf("最大値:%d\n",max);
printf("最小値:%d\n",min);
printf("平均点:%f\n",sum/100.0f);
return 0;
}
がんばって初心者っぽく書いてみた
0535デフォルトの名無しさん
2007/05/20(日) 23:08:36ぼるじょあスレで答えてもらってなかったか?
0536デフォルトの名無しさん
2007/05/20(日) 23:35:24のまま演算するようにしろと?10進数に戻して計算して、また16進数に戻す(というか書式で指定して表示)
した方が楽やん・・・。ってボヤいてみるテスト。誰かがんばれ〜。
0538デフォルトの名無しさん
2007/05/21(月) 00:00:4210進法に変換してから計算するってどういうこと?
0539デフォルトの名無しさん
2007/05/21(月) 00:03:22#include<stdio.h>
int main(){
int a,b,c;
scanf("%x %x",&a,&b);
printf(" %x\nx %x\n----------\n",a,b);
c = b;
while(b>0){
printf("%x\n",a*(b%0x10));
b/=0x10;
}
printf("----------\n%x\n",a*c);
return 0;
}
それっぽく書こうとして力尽きた
0540デフォルトの名無しさん
2007/05/21(月) 00:13:03例えばFF * FFの場合に255 * 255と変換してから計算して
積の65025を16進数に変換してFE01と表示することです
>>539
�dです
これをいろいろ弄ってみたいと思います
0541デフォルトの名無しさん
2007/05/21(月) 00:15:09んあー・・・。
プログラムないだとどっちみち「int型」で、10進も16進もないんだけど
筆算の表記を10進にしちゃダメ、ってことかな・・・
0542デフォルトの名無しさん
2007/05/21(月) 00:16:290543デフォルトの名無しさん
2007/05/21(月) 00:18:440544デフォルトの名無しさん
2007/05/21(月) 00:20:41char nums[]={"0123456789ABCDEF"};
の配列を使って、入力された文字列がこの配列の要素の番号を値として計算するようにと考えたが
結局計算した結果を16進数に戻して結果を入れる文字配列に入れるとか・・・わけわからなくなって
それじゃ駄目?なのかと思ってあきらめた orz
0545デフォルトの名無しさん
2007/05/21(月) 00:24:14すいません、説明の仕方が非常にまずかったみたいですね・・・
あくまで印字される値の見かけが10進数ならNGって事です・・・
0546デフォルトの名無しさん
2007/05/21(月) 00:25:250547デフォルトの名無しさん
2007/05/21(月) 00:36:39俺は諦めた orz
0548デフォルトの名無しさん
2007/05/21(月) 00:40:14文字を数字に変換するのは当然だけど、一桁ずつ計算していくってことだろ?
0549デフォルトの名無しさん
2007/05/21(月) 00:56:47あまり必然でもない
>>539
0550デフォルトの名無しさん
2007/05/21(月) 01:03:23やっつけ仕事。
ここまで作ったところで「桁数制限ががが」ということに気づいた。
最大4桁「ffff * ffff」まで。
エラー処理は入れてない。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4013.txt
0551デフォルトの名無しさん
2007/05/21(月) 01:07:440552デフォルトの名無しさん
2007/05/21(月) 01:11:16#include <stdio.h>
#include <ctype.h>
#include <string.h>
int char2int(char a) { return '0'<=a && a<='9' ? a - '0' : tolower(a) - 'a' + 10;}
int main(void)
{
char a[] = "FF", b[] = "FF", c[256] = {0};
int lena, lenb, lenc, i, j;
lena = strlen(a);
lenb = strlen(b);
for(i=0; i<lena; i++) {
int tempa = char2int(a[lena-1-i]);
for(j=0; j<lenb; j++) {
int tempb = char2int(b[lenb-1-i]);
c[i+j] += tempa * tempb % 16;
if(c[i+j]/16) {
c[i+j+1] += c[i+j]/16;
c[i+j] %= 16;
}
c[i+j+1] += tempa * tempb / 16;
if(c[i+j+1] / 16) {
c[i+j+2] += c[i+j+1]/16;
c[i+j+1] %= 16;
}
}
}
for(i=255; i>0; i--) if(c[i]) break;
lenc = i+1;
for(i=lenc-1; i>=0; i--) printf("%x", c[i]);
return 0;
}
0553デフォルトの名無しさん
2007/05/21(月) 01:11:25ちゃんと一桁ずつ計算してるよ。
最後でサボって足し算の部分は無いけど。
ループ内の計算の計算結果を保存して、最後に足し算したら
筆算と同じ工程だと思うんだが。
必ずしも文字列変数は必要でない、というつもりなんだけど、
もしかして俺、「筆算」の方式を間違えて理解してる?
0554デフォルトの名無しさん
2007/05/21(月) 01:16:58bは一桁ずつでもaが一桁ずつじゃないじゃん。
0555デフォルトの名無しさん
2007/05/21(月) 01:20:33c = b;
printf("----------\n%x\n",a*c);
ごまかせないだろw
0556デフォルトの名無しさん
2007/05/21(月) 01:21:04筆算形式ってソコまでやって筆算なのか・・・。
俺は [a] × [bの各桁] をbの桁数だけやって
最後にそれらを足すのが筆算だと思ってた。
理解間違い、申し訳ない
0557デフォルトの名無しさん
2007/05/21(月) 01:22:19筆算を理解していなかったなんで、ゆとり世代?なんてひっさん(悲惨)な、なんつって orz
0558デフォルトの名無しさん
2007/05/21(月) 01:32:170559デフォルトの名無しさん
2007/05/21(月) 01:35:49じゃなくて
int tempb = char2int(b[lenb-1-j]);
でした。
0560デフォルトの名無しさん
2007/05/21(月) 01:39:030561デフォルトの名無しさん
2007/05/21(月) 05:58:13アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):
次の手順に従ってプログラムorder.cを作成せよ.
10個の整数データを図1の木構造に保存するときを考える.
まず,ポインタにより木を実現し,データを保存せよ.
(ファイルからデータを読み込み,木構造ができるようにすると良い)
次に,キーボードから前順(行きがけ),中順(通りがけ),後順(帰りがけ)を選択する.
すると,その順で木をなぞり,指定した順にデータを表示する
(再帰プログラミングで作成せよ).
図1(例)
==============================
0
/ \
1 2
/│\ / \
3 4 5 6 7
/ \
8 9
==============================
[3] 環境
[3.1] Windows XP Pro
[3.2] Visual Studio
[3.3] C++
[4] 期限:2007/5/22
10個の整数データをテキストファイルから読み込んで、図1の木構造に数字をいれるみたいです。
よろしくおねがいしますm(_ _)m
0562デフォルトの名無しさん
2007/05/21(月) 06:55:550563デフォルトの名無しさん
2007/05/21(月) 07:01:13その探索法を使うなら二分木だと思うが、図間違ってないか?
0564デフォルトの名無しさん
2007/05/21(月) 07:13:31数日前にも君みたいなのが居たが、、、
種類を特定しないで木構造とだけ言ったところで何の説明にもなってない。
また出鱈目にデータを繋げて木構造を構築したところでアルゴリズムとして何の意味も無い。
http://ja.wikipedia.org/wiki/%E6%9C%A8%E6%A7%8B%E9%80%A0_%28%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%29
0565デフォルトの名無しさん
2007/05/21(月) 07:46:48[2] 問題文:
1〜100までの整数を半角スペースで区切って表示する。ただし、
3の倍数のときは「せんだ」
5の倍数のときは「みつお」
3の倍数かつ5の倍数のときは「せんだみつお」
「せんだみつお」に置き換えられた次の数のときは「ナハナハ」
と、置き換えて表示しなければならない。(表示時に「」は不要)
コーディングに要した時間をソース内にコメントとして記述すること。
[3] 環境
[3.1] OS: 指定無し
[3.2] コンパイラ名とバージョン: gcc, VisualC++など
[3.3] 言語: C言語
[4] 期限: 5月21日:正午まで
0566デフォルトの名無しさん
2007/05/21(月) 07:57:28所要時間5分くらい
#include <stdio.h>
#define MAX 100
void main(void) {
int i;
int naha=0;
for ( i=1; i<MAX+1; ++i ) {
if ( naha ) { naha=0; printf("ナハナハ "); continue; }
if ( (i%3==0) && (i%5==0) ) { printf("せんだみつお "); naha=1; continue; }
if ( i%3==0 ) { printf("せんだ "); continue; }
if ( i%5==0 ) { printf("みつお "); continue; }
printf( "%d ", i );
}
}
0567デフォルトの名無しさん
2007/05/21(月) 08:02:340568デフォルトの名無しさん
2007/05/21(月) 08:06:050569デフォルトの名無しさん
2007/05/21(月) 08:14:53int main(void)
int i;
for(i=1; i<=100; i++) {
if(i%15==0) {
printf("せんだみつお");
printf("ナハナハ ");
i++;
}
else if(i%3==0) printf("せんだ");
else if(i%5==0) {
printf("みつお");
if((i-1)%3==0) {
i++;
if(i > 100) break;
printf("ナハナハ ");
}
}
else printf("%d ", i);
}
return 0;
}
3の約数と5の約数が連続したときもナハナハ入れてみた。
所要時間3分程度。
0570デフォルトの名無しさん
2007/05/21(月) 08:15:01実は「ふるい」としては良問?w
0571デフォルトの名無しさん
2007/05/21(月) 08:17:020572デフォルトの名無しさん
2007/05/21(月) 08:18:29それ、1-100 の範囲ではなく、
1-150 の範囲で出力させても大丈夫?
0573デフォルトの名無しさん
2007/05/21(月) 08:21:420574デフォルトの名無しさん
2007/05/21(月) 08:29:410575デフォルトの名無しさん
2007/05/21(月) 08:43:26[2] 問題文(含コード&リンク):
1.64×64画像(raw データ形式)の横方向の一次元フーリエ変換を順次行う。
2.変換後の画像のパワースペクトル画像を計算する。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: どちらでも可
[4] 期限: 2007年5月21日23:59まで
よろしくお願いします。
0576デフォルトの名無しさん
2007/05/21(月) 08:57:25【raw データ形式】についてkwsk
IEEE754?
?bit
整数?
0577デフォルトの名無しさん
2007/05/21(月) 09:05:5164×64は画像のサイズです。
説明不足ですみません。
0578デフォルトの名無しさん
2007/05/21(月) 09:07:27単元から言って、データ構造やらそれを表現するデータファイルの仕様策定も
やるべき作業に含まれてるんかな?
ということで適当に作ってみたが。
動いてるけど、一般的に見て正しいかどうかは知らんよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4016.zip
0580デフォルトの名無しさん
2007/05/21(月) 09:49:13#include <stdio.h>
#define SENDA num%3==0
#define MITSUO num%5==0
int SendaMitsuoNahanaha(int num){
if(num != 1) switch(SendaMitsuoNahanaha(num-1)){
case 1: printf("ナハナハ "); return 0; break;}
if(0);
else if(SENDA && MITSUO) {printf("せんだみつお "); return 1;}
else if(SENDA) {printf("せんだ ");}
else if(MITSUO) {printf("みつお ");}
else {printf("%d ", num);}
return 0;}
int main(void){
SendaMitsuoNahanaha(100);
return 0;}
/* 90分くらい。完全敗北した気分だ...*/
0581デフォルトの名無しさん
2007/05/21(月) 10:19:31せめて引数つきマクロにせい。
0582デフォルトの名無しさん
2007/05/21(月) 12:11:32過去スレから探そうと思うんだが。
0583デフォルトの名無しさん
2007/05/21(月) 12:50:560584デフォルトの名無しさん
2007/05/21(月) 13:52:22>>580みたいな局所的なテキスト置換の用途では、正しく使うにはいずれにせよ展開後の
テキストを具体的に知っておく必要があるから、括弧はどっちでもいいような。
0585デフォルトの名無しさん
2007/05/21(月) 14:25:15利用側の識別子に依存するマクロってなんだそれ?
0586デフォルトの名無しさん
2007/05/21(月) 14:31:420587デフォルトの名無しさん
2007/05/21(月) 15:19:11[2] 問題文(含コード&リンク):
10 個の整数データを入力して,総和,平均値,最大値,最小値,分散および標準偏差を求める
プログラムを作成しなさい
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (Cygwin)
[3.3] 言語: (C/)
[4] 期限: (2週間後)
[5] その他の制限: (なし)
お願いします。
0588デフォルトの名無しさん
2007/05/21(月) 15:28:10[2] 問題文(含コード&リンク):
1.2つの正の整数u, vの最大公約数gcd(u, v)を求めるユークリッドのアルゴリズムについて,
繰り返し版のプログラムをつくりなさい。尚,ユークリッドの方法は,「uがvより大きいならば,
uとvの最大公約数がvとu-vの最大公約数に等しい」ことに基づく。
関数のプロトタイプ宣言は次のようにしなさい。
int gcd(int, int);
▼出力例
最大公約数を求めます!
2つの正整数を入力してください:124 432↵
124と432の最大公約数は4です
2.キーボードから0〜9の数字dと,正の整数nを読み込み,n以下の整数xで,
xとxの2乗の10進数表示の両方にdを含むものをすべて出力するプログラムをつくりなさい。
ただし,次のプロトタイプ宣言で示すように,整数xとdを仮引数として,
xとxの2乗の10進数表示の両方にdを含む場合に1,
そうでない場合に0を返す関数hit_digitを作成しなさい。
int hit_digit(int x, int d);
▼出力例
0〜9の数字dを入力して下さい:7↵
正の整数nを入力して下さい:100↵
該当するものは次の通り:
27 74 76 87
全部で4個ありました
[3] 環境
[3.1] OS:windows (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン:borland (gcc 3.4 VC 6.0等)
[3.3] 言語:C (C/C++/どちらでも可 のいずれか)
[4] 期限: 今週日曜日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
2つありますがよろしくお願します。
#include<stdio.h>
int gcd(int u,int v){int tmp,res,r;if(u<v){tmp=u;u=v;v=tmp;}
if((r=u%v)==0){res=v;}else{res=gcd(v,r);}return res;}
int main(void){char tmp[256];int u,v,d;printf("最大公約数を求めます!\n");
printf("2つの正整数を入力してください:");fgets(tmp, 256, stdin);
sscanf(tmp, "%u %u", &u, &v);d=gcd(u,v);if(d!=1){
printf("%uと%uの最大公約数は%uです。\n",u,v,d);}else{
printf("%uと%uは互いに素です。\n",u,v);}return 0;}
0590デフォルトの名無しさん
2007/05/21(月) 16:21:59mod使う方法でお願いします」。
#include<stdio.h>
#include<stdlib.h>
int hit_digit_h(int x,int d){char tmp[256];char* p=tmp;
sprintf(tmp,"%i",x);while(*p!='\0'){if(*p==(d+'0')){
return 1;}p++;}return 0;}
int hit_digit(int x, int d){
return hit_digit_h(x,d) && hit_digit_h(x*x,d);}
int main(void){char tmp[256];int d,x,i,c=0;do{
printf("0〜9の数字dを入力して下さい:");fgets(tmp, 256, stdin);
d = atoi(tmp);}while(d<0||d>9);printf("正の整数nを入力して下さい:");
fgets(tmp, 256, stdin);x=atoi(tmp);for (i=0; i<=x; i++){
if(hit_digit(i,d)){printf("%i ",i);c++;}}if(c){
printf("\n%i個ありました。\n",c);}else{printf("\nありません。\n");
}return 0;}
#include<stdio.h>
int mod[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223,
227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359,
367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433,
439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593,
599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743,
751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827,
829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,};
int main(void){int i;for(i=0;i<sizeof(mod)/sizeof(int);i++){
printf("%i ",mod[i]);}return 0;}
0593デフォルトの名無しさん
2007/05/21(月) 16:30:36マジカヨw
0595デフォルトの名無しさん
2007/05/21(月) 16:53:30そんならこれでよくね?
#include <stdio.h>
int main() { return puts(
"2 3 5 7 11 13 17 19 23 29 31 37 "
"41 43 47 53 59 61 67 71 73 79 83 89 "
"97 101 103 107 109 113 127 131 137 139 149 151 "
"157 163 167 173 179 181 191 193 197 199 211 223 "
"227 229 233 239 241 251 257 263 269 271 277 281 "
"283 293 307 311 313 317 331 337 347 349 353 359 "
"367 373 379 383 389 397 401 409 419 421 431 433 "
"439 443 449 457 461 463 467 479 487 491 499 503 "
"509 521 523 541 547 557 563 569 571 577 587 593 "
"599 601 607 613 617 619 631 641 643 647 653 659 "
"661 673 677 683 691 701 709 719 727 733 739 743 "
"751 757 761 769 773 787 797 809 811 821 823 827 "
"829 839 853 857 859 863 877 881 883 887 907 911 "
"919 929 937 941 947 953 967 971 977 983 991 997"
), 0; }
>mod使う方法でお願いします」。
とあったのでやむを得ず変数名にした。
0597≠595
2007/05/21(月) 17:10:31int main()
{
const char * mod =
"2 3 5 7 11 13 17 19 23 29 31 37 "
"41 43 47 53 59 61 67 71 73 79 83 89 "
"97 101 103 107 109 113 127 131 137 139 149 151 "
"157 163 167 173 179 181 191 193 197 199 211 223 "
"227 229 233 239 241 251 257 263 269 271 277 281 "
"283 293 307 311 313 317 331 337 347 349 353 359 "
"367 373 379 383 389 397 401 409 419 421 431 433 "
"439 443 449 457 461 463 467 479 487 491 499 503 "
"509 521 523 541 547 557 563 569 571 577 587 593 "
"599 601 607 613 617 619 631 641 643 647 653 659 "
"661 673 677 683 691 701 709 719 727 733 739 743 "
"751 757 761 769 773 787 797 809 811 821 823 827 "
"829 839 853 857 859 863 877 881 883 887 907 911 "
"919 929 937 941 947 953 967 971 977 983 991 997";
printf("%s\n", mod);
return 0;
}
んじゃ、こんなもんでw
0598デフォルトの名無しさん
2007/05/21(月) 17:22:280599デフォルトの名無しさん
2007/05/21(月) 17:26:050600デフォルトの名無しさん
2007/05/21(月) 17:35:550602デフォルトの名無しさん
2007/05/21(月) 17:58:14#include <stdio.h>
/* 3分ほど */
int main()
{
int n;
for(n = 1; n <= 100; n++){
printf("%3d ", n);
if(n % 5 == 0)
printf("せんだ");
if(n % 3 == 0)
printf("みつお");
printf("\n");
}
return 0;
}
0603602
2007/05/21(月) 17:59:420605デフォルトの名無しさん
2007/05/21(月) 18:06:07#include <stdio.h>
/* 人間失格 */
int main()
{
int n, flag = 0;
for(n = 1; n <= 100; n++){
if(flag){
printf("ナハナハ");
flag = 0;
}else{
if(n % 15 == 0){
printf("せんだみつお");
flag = 1;
}else if(n % 5 == 0)
printf("せんだ");
else if(n % 3 == 0)
printf("みつお");
else
printf("%3d", n);
}
printf(" ");
}
return 0;
}
0606デフォルトの名無しさん
2007/05/21(月) 18:23:41#include <stdio.h>
#include <math.h>
#define N 10
int main()
{
double sum = 0, ave, powsum = 0, var, dev;
int i, num[N], max, min;
for(i = 0; i < N; i++) scanf("%d", &num[i]);
for(i = 0; i < N; i++) sum += num[i];
ave = sum/N;
for(i = 0; i < N; i++) powsum = pow(num[i] - ave, 2);
var = powsum/N; //分散のつもり
dev = sqrt(var);//標準偏差のつもり
printf("sum = %f\nave = %f\nvar = %f\ndev = %f\n", sum, ave, var, dev);
return 0;
}
0607デフォルトの名無しさん
2007/05/21(月) 18:29:33#include <stdio.h>
#include <limits.h>
#include <math.h>
#define N 10
int main()
{
double sum = 0, ave, powsum = 0, var, dev;
int i, num[N], max = INT_MIN, min = INT_MAX;
for(i = 0; i < N; i++) scanf("%d", &num[i]);
for(i = 0; i < N; i++){
sum += num[i];
if(num[i] > max) max = num[i];
if(num[i] < min) min = num[i];
}
ave = sum/N;
for(i = 0; i < N; i++) powsum = pow(num[i] - ave, 2);
var = powsum/N; //分散のつもり
dev = sqrt(var);//標準偏差のつもり
printf("sum = %f\nave = %f\nmax = %d\nmin = %d\nvar = %f\ndev = %f\n", sum, ave, max, min, var, dev);
return 0;
}
0608デフォルトの名無しさん
2007/05/21(月) 18:52:28教官がCしかわからない頭の固いジジイが多いせいかもしれないな。
0609デフォルトの名無しさん
2007/05/21(月) 19:42:37[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4018.txt
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年05月22日08:00まで
よろしくお願いします。
0610デフォルトの名無しさん
2007/05/21(月) 19:43:18Cレベルの宿題すら丸投げするんだから、C++レベル要求しても無駄かと
0611デフォルトの名無しさん
2007/05/21(月) 20:07:22[2] 問題文(含コード&リンク):次の処理を行うプログラムを作成しなさい。
1、文字配列seiに姓を、文字配列namaeに名前を入力する。
2、seiにnamaeを連結させる。
3、seiの文字数をカウント表示する。
4、seiを出力する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:vc2005
[3.3] 言語:C++
[4] 期限:21時まで
[5] その他の制限:特になし
表示結果
姓は=> 永井
名前は=> さゆり
姓名は 永井さゆり です
文字数は 10 です
お願いします。
0612デフォルトの名無しさん
2007/05/21(月) 20:16:52#include <stdio.h>
#define N 5
int main(int argc, char **argv)
{
int i, n, sum = 0;
double ave;
if (argc < 3)
return fprintf(stderr, "ファイル名を指定してください\n"), 1;
if (!freopen(argv[1], "r", stdin) || !freopen(argv[2], "w", stdout))
return fprintf(stderr, "ファイルが開けません\n"), 2;
for (i = 0; i < N && scanf("%d", &n) == 1; i++)
sum += n;
printf("平均値は%.1fです。\n", (double)sum/N);
return 0;
}
0613デフォルトの名無しさん
2007/05/21(月) 20:20:52仕様と出力例が矛盾しとるようだな
0614デフォルトの名無しさん
2007/05/21(月) 20:26:49#include<stdio.h>
int main(){
/*仕事中に携帯でこっそりやったら一時間以上かかった*/
int i, j;
for(i=1; i<=100; i++){
j = 0;
if(i%3 == 0){ printf("せんだ"); j += 1; }
if(i%5 == 0){ printf("みつお"); j += 1; }
if(!j){ printf("%d", i); }
putchar(' ');
if(j>1){printf("ナハナハ ");++i;}
}
return 0;
}
0615デフォルトの名無しさん
2007/05/21(月) 20:37:03[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4019.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C
[4] 期限:出来る限り早くお願いします。 無理言ってすいません。
[5] その他の制限:現在習っているのが関数、配列、制御文です。初心者です。よろしくおねがいします。
#include<ctype.h>
int alpha_jdg_cnt(int c){if(c=='.'){return 0;}if(isalpha(c)){return 1;}return 2;}
int main(void){int f,count=0;char s[256];do{printf("Input charactor:");fgets(s,256,stdin);
f=alpha_jdg_cnt(s[0]);if(f==1){count++;printf("ALPHABET : %i\n",count);}}
while(f!=0);return 0;}
>姓名は 永井さゆり です
>文字数は 10 です
何の文字数なのかと小一時間ry
0618デフォルトの名無しさん
2007/05/21(月) 20:50:38名 2
は 3
永 4
井 5
さ 6
ゆ 7
り 8
で 9
す 10
0619デフォルトの名無しさん
2007/05/21(月) 20:55:50alpha_jdg_cntの中でカウントして無くないか?
多分static変数使って、関数内で出力するんでそ
0620デフォルトの名無しさん
2007/05/21(月) 20:56:47#include <stdio.h>
int alpha_jdg_cnt(char);
int main(void) {
int cnt=0,flg;
char buf[32];
printf(">>\n\n");
do{
printf("Input character : ");
scanf("%s",buf);
flg=alpha_jdg_cnt(buf[0]);
if( flg == 1) {
cnt++;
printf("\nALPHABET : %d\n\n",cnt);
}
}while( flg!=0 );
printf("\n>>\n");
return 0;
}
int alpha_jdg_cnt(char ch) {
if( (ch>='A' && ch<='Z') || (ch>='a' && ch<='z') )
return 1;
else if( ch=='.' ) return 0;
return 2;
}
0621デフォルトの名無しさん
2007/05/21(月) 20:59:25それとも学生だったりします?
0622デフォルトの名無しさん
2007/05/21(月) 20:59:30#include <stdio.h>
int alpha_jdg_cnt(char);
int main(void) {
int flg;
char buf[32];
printf(">>\n\n");
do{
printf("Input character : ");
scanf("%s",buf);
}while( alpha_jdg_cnt(buf[0])!=0 );
printf("\n>>\n");
return 0;
}
int alpha_jdg_cnt(char ch) {
static cnt=0;
if( (ch>='A' && ch<='Z') || (ch>='a' && ch<='z') ) {
cnt++;
printf("\nALPHABET : %d\n\n",cnt);
return 1;
}
else if( ch=='.' ) return 0;
return 2;
}
0623デフォルトの名無しさん
2007/05/21(月) 21:00:090625デフォルトの名無しさん
2007/05/21(月) 21:03:20内定もらえない俺、将来有望なお前
0626デフォルトの名無しさん
2007/05/21(月) 21:04:59>3、seiの文字数をカウント表示する。
嘘をつくな。
0627デフォルトの名無しさん
2007/05/21(月) 21:06:47俺高卒ニート。
専門学校とか大学行ってる奴らってこんな宿題もできないんだね。
0628デフォルトの名無しさん
2007/05/21(月) 21:06:47せいせいせいせいせいせーい、細かいことは気にするなフー!
0629デフォルトの名無しさん
2007/05/21(月) 21:08:57全員ができないと思い込むあたり、やっぱりおまえ自身のレベルが低いってことだなw
ここで授業を受けている人の大半が質問しているわけじゃないだろ。
ほんの一部。ずるがしこい奴もいるだろうけど。
第一、こんなの最後に単位をもらっちゃえばどうでも良いことなんだよ。
卒業後に習ったことを使い続ける人でないならなおさらな。そんなもんだよ、社会ってのは。
0630デフォルトの名無しさん
2007/05/21(月) 21:11:130631デフォルトの名無しさん
2007/05/21(月) 21:11:19#include <stdio.h>
#include <string.h>
#define STR_SIZE 256
int main()
{
char sei[STR_SIZE] = {0}, namae[STR_SIZE] = {0};
printf("姓は=> "); scanf("%s", sei);
printf("名前は=> "); scanf("%s", namae);
strcat(sei, namae);
printf("姓名は%sです\n", sei);
printf("文字数は%dです\n", strlen(sei));
return 0;
}
0632デフォルトの名無しさん
2007/05/21(月) 21:16:02まったく同じ課題が出ていて、「なぜそのプログラムのアルゴリズムで正しく動くのかについての解説を書く。」というのがあるのでお願いします。
0633思い込みによる勘違い低レベル馬鹿
2007/05/21(月) 21:18:18>>621
俺高卒ニート。
専門学校とか大学行ってる奴らってこんな宿題もできないんだね。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
○〜に通っているやつらの中にはできない奴もいるんだね。
0634デフォルトの名無しさん
2007/05/21(月) 21:34:36このスレで勉強すれば就職も夢じゃない!(※年齢制限有)
0635デフォルトの名無しさん
2007/05/21(月) 21:35:41トーマスですYO!
0636デフォルトの名無しさん
2007/05/21(月) 21:39:12自分は職業としてプログラマやってるけど復習の為に時々やってる。
仕事はJavaメインだからC/C++を忘れないようにと。
0637デフォルトの名無しさん
2007/05/21(月) 21:50:53元職業PG
鬱で退職して今はヒキ
仕事は辞めたが元々趣味でコード書いてたし、
やっぱ仕事じゃないプログラミングは楽しい。
0638デフォルトの名無しさん
2007/05/21(月) 21:55:53組み込みのEmbedded C++ばかりやっているので普通のC++は
あまり知らない。テンプレートも例外処理も使えないC++でつ。
0639デフォルトの名無しさん
2007/05/21(月) 21:59:02ありがとうございます!!
0640デフォルトの名無しさん
2007/05/21(月) 22:06:26#include <iostream>
#include <cstring>
void ask(const char *prompt, char *buff, size_t len)
{
char c;
std::cout << prompt << std::flush;
if (!std::cin.get(buff, len))
std::cin.clear();
while (std::cin.get(c) && c != '\n')
;
}
int main(int argc, char **argv)
{
const int namelen = 256;
char sei[2 * namelen], namae[namelen];
ask("姓は=>", sei, namelen);
ask("名前は=>", namae, namelen);
std::strcat(sei, namae);
std::cout << "姓名は" << sei << "です\n"
<< "文字数は" << strlen(sei) << "です\n";
return 0;
}
>>621
もと三流請負システム屋なので、ちょっと難しい問題になると解けないんだYO。
0641デフォルトの名無しさん
2007/05/21(月) 22:09:29暇つぶしに見てる
0642デフォルトの名無しさん
2007/05/21(月) 22:18:54俺も学生。
化学科だから学校ではやってないけど趣味でプログラミングやってる。
でもここでは見てるだけ。
実用的なプログラムを作る他のスレでは作ってるけど。
0643デフォルトの名無しさん
2007/05/21(月) 22:23:59[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4022.txt
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: cygwin
[3.3] 言語: C
[4] 期限: 出来るだけ早めにお願いしたいです><
[5] その他の制限:特になし
自分でもやってみたのですが、全然上手くいきませんでした
力を貸していただけるとありがたいです
0644デフォルトの名無しさん
2007/05/21(月) 22:32:12私はGUIはタルイからやらないけど・・・
0645643
2007/05/21(月) 22:32:27制限として、メニュー画面は上から「end」(終了)、「free」(フリー曲線)、
「moji」(文字の描画)、「line」(直線の描画)と、左上部に縦並びで表示して下さい。
よろしくお願いします。
0646643
2007/05/21(月) 22:33:44期限は5月23日です。
0647デフォルトの名無しさん
2007/05/21(月) 22:35:440648デフォルトの名無しさん
2007/05/21(月) 23:00:07ググってからどの辺が分からないのか聞いた方が良い。
基本的なところはWikipediaとかに載ってる
0649前スレ699,720
2007/05/21(月) 23:12:53自分も学生ですね。
情報系なんだけどプログラミングの授業は始まったばかりなので、
趣味知識が大半かな・・・
答えたこと数回しかないんですけどね。
0650デフォルトの名無しさん
2007/05/21(月) 23:42:320651デフォルトの名無しさん
2007/05/21(月) 23:47:05[2] 問題文(含コード&リンク):
抽象データ型「優先度つき待ち行列の半順序木による実現」を、配列を用いて実現せよ.
上の「優先度つき待ち行列の半順序木による実現」を用いて、与えれた整数配列を昇順に
並び換えて出力する関数を作成せよ.さらに以下の入力に対して実行せよ.
7 3 4 6 8 5 1 9
参考プログラム→http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4023.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007/05/23
[5] その他の制限: スタックとキューの辺り
よろしくお願いします。
0652デフォルトの名無しさん
2007/05/22(火) 00:06:36[2] 問題文(含コード&リンク):C++で▽×Eの▽はどう表すでしょうか?
[3] 環境
[3.1] OS: Windows XP
[3.2] gcc
[3.3] 言語: C++
[4] 期限: 明日の朝
▽の表し方をどう作るのかわかりません・・・
よろしくお願いします。
0653デフォルトの名無しさん
2007/05/22(火) 00:14:21http://www.google.co.jp/search?q=C%2B%2B%E3%81%A7%E2%96%BD&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
0654デフォルトの名無しさん
2007/05/22(火) 01:07:14[2] 問題文(含コード&リンク):fgetsを使ってキーボードからCTRL+D(EOFかNULLのことだと思います)
を入力されるまで文字を入力する。その後後ろから出力する。
例
入力: def
入力: ghi
入力: (Ctrl+D)
出力: ghi
出力: def
[3] 環境
[3.1] OS: Windows XP
[3.2] gcc
[3.3] 言語: C言語
[4] 期限: 明日の22時まで
よろしくお願いします。
0655デフォルトの名無しさん
2007/05/22(火) 01:10:48ナブラよりも微分方程式をC++で解く方法がわかればいいんでしょ?
0656デフォルトの名無しさん
2007/05/22(火) 01:12:57文字列の数の上限は無し?
0657デフォルトの名無しさん
2007/05/22(火) 01:42:23#include<stdio.h>
#include<stdlib.h>
#define N 256
struct list{
char data[N];
list *next;
};
int main(){
list *top = NULL, *now;
int i = 0;
while(1){
now = (list*)malloc(sizeof(list));
now->next = top;
printf("入力: ");
if(fgets(now->data,N,stdin) == NULL) break;
top = now;
}
now = now->next;
while(now){
printf("出力: %s",now->data);
top=now;
now = now->next;
free(top);
}
return 0;
}
眠い頭でうあったからあってるかどうかしらね
0658デフォルトの名無しさん
2007/05/22(火) 01:55:160659デフォルトの名無しさん
2007/05/22(火) 01:57:21もう寝るからそこの付け足しとかはてきとーにやってくれ
つかiとか使ってないしな
0660デフォルトの名無しさん
2007/05/22(火) 01:59:05なるほど、もはやANSI、ISO準拠に非ずか、通りで
0661デフォルトの名無しさん
2007/05/22(火) 02:06:43別に〜準拠とかチェックしてないから
ざっと調べたらstructを省略できるのはC++だったのか、次から気をつける。
0662デフォルトの名無しさん
2007/05/22(火) 02:10:530663デフォルトの名無しさん
2007/05/22(火) 02:24:37[2] 問題文:
正規表現(+|-|)digit*.digit digit*(e(+|-|)digit digit*|)を実現する、
実数(整数)を識別するプログラム
入力されたデータが実数であればOK,そうでなければNGと表示させる。
(推奨:その後で連続してデータを入力できるとよい)
[3] 環境
[3.1] OS:XP,UNIX
[3.2] コンパイラ名とバージョン: BCCでもLSICでも
[3.3] 言語: C言語
[4] 期限:無期限
[5] その他の制限:-2.eだとOK,-.1eだとNG。
また、switch文推奨。scanfは使わず、getsかgetcharを用いること。
0664デフォルトの名無しさん
2007/05/22(火) 02:45:110665デフォルトの名無しさん
2007/05/22(火) 02:53:330666663
2007/05/22(火) 03:02:03見たいな事を言っていたのでその通りに書きました。そのときに笑っていたので>>665さんみたいな感じだと重いmasu。
0667デフォルトの名無しさん
2007/05/22(火) 03:05:27書式を%dとかにして文字列を受け付けようとするとダメだから推奨できんが。
0668デフォルトの名無しさん
2007/05/22(火) 03:16:27口頭だったらfgetsの聞き間違いじゃないの?
0669デフォルトの名無しさん
2007/05/22(火) 03:36:080670デフォルトの名無しさん
2007/05/22(火) 03:38:43さすがに間違えないと思うんだ。
0671663
2007/05/22(火) 03:55:510672デフォルトの名無しさん
2007/05/22(火) 04:02:15*は何?正規表現ってことは、ワイルドカード?乗算記号?なんか良く分からん
0673デフォルトの名無しさん
2007/05/22(火) 04:02:330674デフォルトの名無しさん
2007/05/22(火) 04:11:10>>672
あんまり気にしないでやってた。言いたいことはなんとなくわかりそう。
乗算ではないと思う。
>>671 つ■ 海苔でもくってろ
0675デフォルトの名無しさん
2007/05/22(火) 04:30:25正規表現の+を使っちゃうと符合と被ってややこしいから
「digit digit*」って書いてあるのか。スペースは無視すんだな。
「digit digit*」は1桁以上の数値っつーことか。
0676デフォルトの名無しさん
2007/05/22(火) 04:36:34[5] その他の制限:-2.eだとOK,-.1eだとNG。
が逆になっちまう・・・。
-2.eは入力出来ないけど、-.1eが入力出来るという奇妙な現象。
やっぱ分かんねー・・・
0677デフォルトの名無しさん
2007/05/22(火) 07:30:010678デフォルトの名無しさん
2007/05/22(火) 08:17:500679デフォルトの名無しさん
2007/05/22(火) 10:10:12よく読むとfreeし損ねてるのがあるな
そのまま提出すると怒られるかも
やっぱ眠いときは駄目だな
0680デフォルトの名無しさん
2007/05/22(火) 10:51:55よくわからんからすげー適当に書いたお
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4024.txt
.が必須のようだしeの後はdigitが必須のようだから
ただの整数も-2.eも-.1eも受理されないし
switchも使ってないお
0681解いてください。お願いします。
2007/05/22(火) 11:41:18プログラムは、0未満24以上の時間が入力されるまで繰り返しなさい。
0時〜3時 :Good night
4時〜11時 :Good morning
12時〜16時 :Good afternoon
17時〜20時 :Good evening
21時〜23時 :Good Night
但し、一つの整数を引数とし、引数で指定された数値によって、上記メッセージを出力する関数を
作り、main関数では、その関数を呼び出すようにしなさい。
0682680
2007/05/22(火) 11:49:24いくら適当と言ってもコンパイルも通らないソースをageちゃったよ
つーわけであげなおしスマソ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4025.txt
0683デフォルトの名無しさん
2007/05/22(火) 11:53:16* は正規表現どおりの定義だと「前方の 0回以上の繰り返し」の意となるんだが…
> [5] その他の制限:-2.eだとOK,-.1eだとNG。
どちらもマッチすると思われ
0684デフォルトの名無しさん
2007/05/22(火) 11:53:52上手い人ほど大胆なミスをするってなんかの本で言ってたけどこんな所でもそれが見られるとは
0685680
2007/05/22(火) 12:07:43おもうよ
>>684 俺は別に全然上手くなんかないよ
>>681
#include <stdio.h>
char *s[] = {
"Good night", "Good night", "Good night", "Good night",
"Good morning", "Good morning", "Good morning", "Good morning",
"Good morning", "Good morning", "Good morning", "Good morning",
"Good afternoon", "Good afternoon", "Good afternoon", "Good afternoon",
"Good afternoon", "Good evening", "Good evening", "Good evening",
"Good evening", "Good Night", "Good Night", "Good Night",
};
char *hello(int h) { return s[h]; }
int main(void) {
int n;
while (scanf("%d", &n) == 1 && n >= 0 && n < 24)
puts(hello(n));
return 0;
}
0686デフォルトの名無しさん
2007/05/22(火) 12:09:04俺が気にしてるのは整数部の 「digit* . 」 側。
ピリオドの前は digit* だけっしょ
0687デフォルトの名無しさん
2007/05/22(火) 12:09:22コンパイル試してないから通るかわかんない。
0未満24以上は0以上24未満の間違いでおk。
あと予想外(数字以外)の入力で無限ループに入るのは仕様。
可読性がアレなのも仕様。
#include <stdio.h>
void hello(int hour){
char *mes = "night\0morning\0afternoon\0evening\0Night";
printf("Good %s\n",&mes[hour<4?0:hour<12?6:hour<17?14:hour<21?24:32]);
}
int main(){
int h=0;
while(1){
scanf("%d",&h);
if(h<0||h>23)continue;
break;
}
hello(h);
return 0;
}
0688680
2007/05/22(火) 12:10:22整数部はそうだけど、eの後がdigit digit*なので、
eが来たらその後数字が必須になるんだお
だからどっちも受理されないお
0689デフォルトの名無しさん
2007/05/22(火) 12:12:08e(+|-|) digit digit* |
おれはこれを e <省略可符号> <省略可 digit群>
と読んだ(末尾の | ね)
0690デフォルトの名無しさん
2007/05/22(火) 12:12:09文章がやばい事になってるけど、骨格自体は間違っていない筈だから
問題文などを変えれば問題ないだろう。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4026.c
0691デフォルトの名無しさん
2007/05/22(火) 12:13:21#include<stdio.h>
void message(int n){char* seg;switch(n){case0:case1:case2:seg="night";break;
case4:case5:case6:case7:case8:case9:case10:case11:seg="morning";break;
case12:case13:case14:case15:case16:seg="afternoon";break;
case17:case18:case19:case20:seg="evening";break;
case21:case22:case23:seg="Night";break;}printf("Good %s\n",seg);}
int main(void){char tmp[256];fgets(tmp,256,stdin);message(atoi(tmp));return 0;}
0695685
2007/05/22(火) 13:07:56繰り返しの仕様を誤解してた。main()を↓のように変えて。
int main(void) {
int n;
do {
while (scanf("%d", &n) != 1) {
clearerr(stdin);
scanf("%*[^\n]\n");
}
} while (n < 0 || n > 23);
puts(hello(n));
return 0;
}
0696デフォルトの名無しさん
2007/05/22(火) 14:15:250697デフォルトの名無しさん
2007/05/22(火) 14:19:39whileを使って九九のプログラム作りたいのですがわかりません(´д`)
0698デフォルトの名無しさん
2007/05/22(火) 14:21:43>>1 の質問テンプレ読んで書きなおし
0699デフォルトの名無しさん
2007/05/22(火) 14:28:18int i=0,j=0;
while(i++<9){j=0;while(j++<9)printf("%d x %d = %d\n",i,j,i*j);}
0700デフォルトの名無しさん
2007/05/22(火) 14:33:16[2] 問題文(含コード&リンク):適当な大きさの配列を作り、配列の末尾から
先頭(0番目の要素)に向かって入力された値を格納するプログラムを作りなさい
[3] 環境
[3.1] OS: WindowsXP home
[3.2] コンパイラ名とバージョン:TeraPad 0.90
[3.3] 言語: どちらでも可(ただしcin coutを使用しろとの事です)
[4] 期限:今週の木曜まで
[5] その他の制限: 特になし
よろしくお願いします
0701デフォルトの名無しさん
2007/05/22(火) 14:40:260702デフォルトの名無しさん
2007/05/22(火) 14:41:580703デフォルトの名無しさん
2007/05/22(火) 14:44:16すみません勘違いしてました
djgppです(これも違ってたら申し訳ないです)
0704デフォルトの名無しさん
2007/05/22(火) 14:45:37#include <iostream>
int main(void){
int array[5];
int i;
for(i=0;i<5;i++){
std::cout << "数値を入力して下さい : ";
std::cin >> array[i];
}
for(i=5-1;i>=0;i--)
std::cout << array[i] << std::endl;
return 0;
}
0705700
2007/05/22(火) 14:48:38ありがとうございます
std::ってのがよくわからないんですが、
これは先頭に #using namespace std; を付ければ入力しなくてもいいんでしょうか?
0706デフォルトの名無しさん
2007/05/22(火) 14:49:25問題文読めてる?
0707デフォルトの名無しさん
2007/05/22(火) 15:00:45[2] 問題文:
sample.txtに書かれている文字(数字、英数字、全角など何が含まれているかはわからないものとする)
をbase64エンコードするコードを記述せよ。
[3] 環境 OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC++ .net 2003
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:なし
よろしくお願いいたします。
0708デフォルトの名無しさん
2007/05/22(火) 15:05:58>>704 の訂正
#include <iostream>
int main(void){
int array[5];
int i;
for(i=5-1;i>=0;i--){
std::cout << "数値を入力して下さい : ";
std::cin >> array[i];
}
for(i=0;i<5;i++)
std::cout << array[i] << std::endl;
return 0;
}
>>705 その通りです
>>706 読めてなかった
0710デフォルトの名無しさん
2007/05/22(火) 15:10:440711デフォルトの名無しさん
2007/05/22(火) 15:25:40[2] 問題文
二次関数(y = a x^2+ bx +c)でxがx1 <= x <= x2のときの最大値と最小値(そのときのxの値も含めて)を求めるプログラムを作成せよ。
ここでa,b,cは整数、x1,x2は浮動小数とする。
[3] 環境
[3.1] OS: Linux
[3.2] gcc versionは不明ですが最新版のはずです
[3.3] 言語:C
[4] 期限: 2007年5月28日0:00まで
[5] その他の制限: 特にありません。
どなたか手を差し伸べてください・・・orz
0712デフォルトの名無しさん
2007/05/22(火) 15:32:44[2] 課題 SE3.5
逆ポーランド電卓プログラムでは2項演算の演算子、加算( '+')、減算('-')、
乗算 ('*')、除算('/')の4種類しか用意していない。
負数を扱うための単項演算子 ('$'記号を用いる)、余りを求める2項演算子('%'記号を用いる)など
を導入するにはどうすればよいか?
[3.1] OS:Linux
[3.2] gcc 3.4 VC 6.0等
[3.3] 言語:C
[4] 期限: ([2007年05月23日12:00まで]
[5] その他の制限:特になし
よろしくお願いします
0713デフォルトの名無しさん
2007/05/22(火) 15:36:54/* 逆ポーランド電卓プログラム
#include <stdio.h>
#include "s_q.h" /* s_q.h の取り込み */
main()
{
int type; /* 次の演算子または演算数のタイプ*/
int op2, atoi() ;
char s[MAXOP]; /* 入力領域 */
while ((type = getop(s)) != EOF) { /* 次の演算子または演算数がある間 */
switch (type) { /* そのタイプが */
case NUMBER: /* 演算数の場合 */
push(atoi(s)); break; case '+': /* 演算子 '+' の場合 */
push(pop() + pop()); break;
case '*': /* 演算子 '*' の場合 */push(pop() * pop());
break; case '-': /* 演算子 '-' の場合 */
op2 = pop(); push(pop() - op2); break; case '/': /* 演算子 '/' の場合 */
op2 = pop(); if(op2 != 0.0) push(pop() /op2);
else printf("零割りのエラー \n"); break;
case '\n': /* 改行文字 の場合 */
printf("\t%d\n",pop()); break; default: /* その他の場合 */
printf("未登録コマンド: %s\n", s); break;
}
}
return 0;
}
0714デフォルトの名無しさん
2007/05/22(火) 15:43:07pop() の戻りの型を int と仮定(っぽいコードだし)
case '$': /* 演算子 '$' の場合 */push(-pop()); break;
case '%': /* 演算子 '%' の場合 */
/* 0割見ない場合 */ push(pop() % pop()); break;
/* 0割チェックする場合 */
{ int num, den; num=pop(); den=pop();
if (den != 0) { push(num/den); } else { /*0割だお スタックに戻しとくか? */ push(den); push(num); }
} break;
0715デフォルトの名無しさん
2007/05/22(火) 15:43:55+if (den != 0) { push(num%den); }
0717デフォルトの名無しさん
2007/05/22(火) 16:59:19#include<stdio.h>
int encode(char *dest, int dest_size, const char *src, int src_size){
char *base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int dest_index, src_index, left_size, i;
long temp;
if(dest==NULL || src==NULL || src_size<=0 || dest_size<(src_size+2)/3*4) return -1;
for(src_index=dest_index=0;src_index+2<src_size;src_index+=3){
temp=(src[src_index]<<16)|(src[src_index+1]<<8)|src[src_index+2];
for(i=0;i<8*3;i+=6) dest[dest_index++]=base64[(temp>>(18-i))&0x3F];
}
left_size=src_size-src_index;
for(i=0,temp=0;i<left_size;i++) temp=(temp<<8)|src[src_index+i];
for(;i<3;i++) temp=(temp<<8);
for(i=0;i<left_size*8;i+=6) dest[dest_index++]=base64[(temp>>(18-i))&0x3F];
for(;dest_index%4!=0;) dest[dest_index++]='=';
return dest_index;
}
int main(void){
FILE *fp;
char src_buf[3*100], dest_buf[(sizeof(src_buf)+2)/3*4];
int read_size, coded_size;
if((fp=fopen("sample.txt", "rb"))==NULL) return 1;
for(;;){
read_size=fread(src_buf, 1, sizeof(src_buf), fp);
coded_size=encode(dest_buf, sizeof(dest_buf), src_buf, read_size);
if(read_size<=0 || coded_size<=0) break;
fwrite(dest_buf, 1, coded_size, stdout);
}
fclose(fp);
return 0;
}
0718デフォルトの名無しさん
2007/05/22(火) 17:07:23int encode(char *dest, int dest_size, const char *src, int src_size){
↓
int encode(char *dest, int dest_size, const unsigned char *src, int src_size){
0719デフォルトの名無しさん
2007/05/22(火) 17:31:11文法の方はなんとかできるんで、なんとかしてみます。
0720デフォルトの名無しさん
2007/05/22(火) 17:34:440721デフォルトの名無しさん
2007/05/22(火) 17:41:22ありがとうございます。たすかりました
0722デフォルトの名無しさん
2007/05/22(火) 18:28:51[2] 問題文:重複しない適当な値ですべての要素が初期化された配列を作り、適当な整数(Nとする)を入力して
N番目の要素の値を表示するプログラムを作りなさい。入力と表示は繰り返す。
Nにどのような値が入力されたとしても、適切に対処しなさい。
ただし、表示は次のようにしなさい。
配列名がa,a[0]の値が20であるとき、Nとして0が入力された場合の表示:a[0]=20
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C++
[4] 期限:5月24日
[5] その他の制限:
お願いします
0723デフォルトの名無しさん
2007/05/22(火) 18:33:07$ary = array(0=>1);
?>
#include<stdio.h>
int main(void){char tmp[256];int n;
int a[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89,
97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223,
227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359,
367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433,
439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593,
599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659,
661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743,
751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827,
829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,};
do{fgets(tmp,256,stdin);n=atoi(tmp);if(n>=0&&n<sizeof(mod)/sizeof(int)){
printf("a[%i]=%i\n",n,a[n]);}}while(n>=0);return 0;}
0726デフォルトの名無しさん
2007/05/22(火) 20:41:14[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
以下のnについて,1/nをn個加算した結果を求めよ.
n=1000, 4096, 10000
変数の型をfloatとdoubleとした場合のそれぞれについて(合計 2×3=6つの場合)調べよ
float型の値の出力の場合は%f, double型の値の出力には%16.14e(全桁数16, 小数点)以下14桁を示すを用いる
[3] 環境
[3.1] OS: Win XP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 明日
[5] その他:無し
お願いしますヽ(T_T )ノ
0727デフォルトの名無しさん
2007/05/22(火) 21:12:38#include <stdio.h>
int main(void)
{
double nd[]={1000.0,4096.0,10000.0},sumd;
float nf[]={1000.0,4096.0,10000.0},sumf;
int i,j;
for(i=0,sumd=0.0; i<sizeof(nd)/sizeof(nd[0]); i++,sumd=0.0) {
for(j=0; j<nd[i]; j++) {
sumd+=1/nd[i];
}
printf("1/%.0lf : %16.14e\n",nd[i],sumd);
}
puts("");
for(i=0,sumf=0.0; i<sizeof(nf)/sizeof(nf[0]); i++,sumf=0.0) {
for(j=0; j<nf[i]; j++) {
sumf+=1/nf[i];
}
printf("1/%.0lf : %f\n",nf[i],sumf);
}
return 0;
}
0728デフォルトの名無しさん
2007/05/22(火) 21:16:28for(j=0; j<(int)nd[i]; j++)
for(j=0; j<(int)nf[i]; j++)
0729デフォルトの名無しさん
2007/05/22(火) 21:17:20プログラミング歴何年ぐらいなんでしょうか?
0730651
2007/05/22(火) 21:18:070731デフォルトの名無しさん
2007/05/22(火) 21:34:44[2] 問題文(含コード&リンク):
ある文字列を与えられた時に、全体の文字の約m%を別の文字にランダムに置き換える関数
とそれを用いるmain関数を書け。
(1)文字列は次のものを文字配列としてmainに確保する。
"It's not surprising that food dropped onto bacteria would collect some bacteria."
(2)置き換わる文字は英大文字の中のどれかとする。
(3)置き換える操作を行う機能を関数mutateとして実装する。関数プロトタイプを次のようにする:
void mutate(char s[], int len, int m);
引数s[]は文字列、引数lenは文字列長、引数mは置き換える割合(%)である。
(4)置き換える割合(%)mをmainで入力して指定できるようにする。mが1,3,5,10の場合に
ついて置き換えた結果の文字列を出力する。
ヒント:
(1)例えば、確立5%で置き換えるというのは、(例えば)1から10000までの擬似乱数を発生させて、
その値が1から500までの範囲だったら置き換える操作をして、その範囲
外だったら何もしないというようにすればよい。
(2)英小文字をランダムに作るには、例えば1から26までの整数をAからZまでのアルファベット
にこの順で対応させ、1から26までの範囲の整数をランダムに発生させて対応する英字に変換する。
0732731
2007/05/22(火) 21:36:26basil$ ./a.out
Initial:
It's not surprising that food dropped onto bacteria would collect some bacteria.
It's notEsurprising that food droppedPonto bacteria would collect some bacteria.
置き換えの割合をで指定せよ: 5
It's noFEsurprisiGg that food droppedPonBo bacteriF would collect some bacteria.
置き換えの割合をで指定せよ: 10
It's noFEsuDprZsiEg that food droppeQPonBE bacteriFZwould collect some bacteOia.
置き換えの割合をで指定せよ: ^D
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限:2007/05/22/23:59
[5] その他の制限: 特になし
全然分からず困っています。よろしく御願いします。
0733デフォルトの名無しさん
2007/05/22(火) 21:53:25>>727
ありがとうございます。
0734デフォルトの名無しさん
2007/05/22(火) 22:05:48[2] 問題文(含コード&リンク):
テストデータを読み込み、その文字の頻度をカウントするプログラムを作成せよ。
(データに含まれてる文字の種類はASCIIコードに限られ
ピリオドや改行コードもひとつの文字として取り扱う)
[3] 環境
[3.1] OS: (Windows/Linux/等々) Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)gcc
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 来週の月曜日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0735デフォルトの名無しさん
2007/05/22(火) 22:12:01void MAKENULL(PRQueue *Q){ Q->last = 0; }
void INSERT (ElementType x, PRQueue *Q){
int i, j;
for (i = Q->last++; i > 0; i = j) {
j = (i - 1)/2;
if (Q->elements[j] > x)
Q->elements[i] = Q->elements[j];
else break;
}
Q->elements[i] = x;
}
ElementType DELETEMIN(PRQueue *Q){
int i, j, root, tmp;
root = Q->elements[0];
tmp = Q->elements[--Q->last];
for (i = 0; 2*i + 1 < Q->last; i = j) {
j = 2*i + 1;
if (j + 1 < Q->last && Q->elements[j] > Q->elements[j + 1])
j++;
if (Q->elements[j] < tmp)
Q->elements[i] = Q->elements[j];
else break;
}
Q->elements[i] = tmp;
return root;
}
0736デフォルトの名無しさん
2007/05/22(火) 22:27:22#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void mutate(char s[], int len, int m){
while(len--)
if((int)((rand() / (double)RAND_MAX) * 100) < m)
s[len] = (char)((int)((rand() / (double)RAND_MAX) * 26) + 'A');
}
int main(){
char s[] = "It's not surprising that food dropped onto bacteria would collect some bacteria.";
int n;
srand((unsigned int)time(0));
printf("%s", s);
while(1){
printf("置き換えの割合をで指定せよ:");
if(scanf("%d", &n) < 1) break;
mutate(s, sizeof(s), n);
printf("%s", s);
}
return 0;
}
適当に作ったから気に入らなかったら自分で作り替えて
0737デフォルトの名無しさん
2007/05/22(火) 22:28:03[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4027.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: Cのみ
[4] 期限: 早めでお願いします。無理いってすいません。
[5] その他の制限:習っているのは制御文、関数、配列、ポインタです。初心者なのでよろしくお願いします。
0738デフォルトの名無しさん
2007/05/22(火) 22:30:23だから早めってなんだよ
期限を書けよ期限を
0739デフォルトの名無しさん
2007/05/22(火) 22:32:43んなこと聞いているくらいならとっとと早めに答えてやれYO!
早めに済めば期限なんてどぉ〜でも良いで・す・YO!
0740デフォルトの名無しさん
2007/05/22(火) 22:34:51了解。今の仕事が終わったら大至急解くよ
8月くらいになると思うからよろしく。
[2] 問題文(含コード&リンク):
整数値の入った2つの変数のアドレスを引数として渡すと2変数の値を交換する関数
をつくり、それを利用して昇順に選択ソートを行う関数を作成せよ。
さらにキーボードから入力した10個の整数をソートするプログラムを作成し動作確認せよ。
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 5/25まで
[5] その他の制限: 特になしです
0742741 ◆pIsMrTUaME
2007/05/22(火) 22:42:190743デフォルトの名無しさん
2007/05/22(火) 22:43:58#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
FILE *fp;
int count[0x7f] = {0};
char ch;
if (argc < 2)
{
fprintf(stderr, "usage : %s <filename>\n", argv[0]);
return 1;
}
if ((fp = fopen(argv[1], "r")) == NULL)
{
fprintf(stderr, _strerror(NULL));
return 1;
}
while((ch = fgetc(fp)) != EOF)
{
count[ch]++;
}
return 0;
}
こうですか?
0744デフォルトの名無しさん
2007/05/22(火) 22:44:09>>739
了解。今の仕事が終わったら大至急解くよ
8月くらいになると思うからよろしく。
了解。今の仕事が終わったら大至急解くよ
8月くらいになると思うからよろしく。
了解。今の仕事が終わったら大至急解くよ
8月くらいになると思うからよろしく。
了解。今の仕事が終わったら大至急解くよ
8月くらいになると思うからよろしく。
了解。今の仕事が終わったら大至急解くよ
8月くらいになると思うからよろしく。
0746デフォルトの名無しさん
2007/05/22(火) 22:54:24てめーがやれよ
0747デフォルトの名無しさん
2007/05/22(火) 22:55:59せっかく解いたのになんか貼りにくいから出題者はぜひ期限を区切ってくれ
0748デフォルトの名無しさん
2007/05/22(火) 22:57:570749デフォルトの名無しさん
2007/05/22(火) 23:00:58>>739
てめーがやれよ
てめーがやれよ
てめーがやれよ
てめーがやれよ
てめーがやれよ
てめーがやれよ
てめーがやれよ
てめーがやれよ
てめーがやれよ
こいつ最高に必死だなwwwwww
0750デフォルトの名無しさん
2007/05/22(火) 23:02:52無理を言うな
0751デフォルトの名無しさん
2007/05/22(火) 23:03:22今の仕事があるならそっち優先してこんなところで茶化すだけのクソレスしてんなよw
お前の仕事を早めに終わらせろYO! っつーか仕事あんならこんなところで要らんレスしてんなよ
引きこもりニート(プ
0752デフォルトの名無しさん
2007/05/22(火) 23:05:340753デフォルトの名無しさん
2007/05/22(火) 23:05:45#include <stdio.h>
int hexchange(char *str)
{
int c;
if(str[0]>='0' && str[0]<='9') {
c=(int)(str[0]-'0');
return c;
}
else if( str[0]>='a' && str[0]<='f' ) {
str[0]-='a'-'A';
}
if( str[0]>='A' && str[0]<='F' ) {
c=(int)(str[0]-'A'+10);
return c;
}
else if( str[0]=='?' ) return -2;
return -1;
}
// 続く
0754デフォルトの名無しさん
2007/05/22(火) 23:06:080755デフォルトの名無しさん
2007/05/22(火) 23:06:16昨日も2時くらいまで解いてたし、特に期限区切ってないなら早めに寝かせてくれYO!
0756デフォルトの名無しさん
2007/05/22(火) 23:06:45int main(void)
{
char buf[32];
int flg;
printf(">>\n");
do{
printf("\nInput character : ");
fgets(buf,sizeof(buf)/sizeof(buf[0]),stdin);
flg=hexchange(buf);
if(flg>=0) printf("Exchanged %c to %d.\n",buf[0],flg);
else if(flg==-1) printf("Sorry. Input'0'〜'9','a'〜'f' or 'A'〜'F'.\n");
}while(flg!=-2);
printf("\n>>\n");
return 0;
}
0757デフォルトの名無しさん
2007/05/22(火) 23:08:29ちょwwwwwwwwwwwwwおまwwwwwwwwwwwwwいらwwwwwwwwwwwww邪魔すんなYO!
0758デフォルトの名無しさん
2007/05/22(火) 23:09:12[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4027.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語: Cのみ
[4] 期限: 5/23
[5] その他の制限:習っているのは制御文、関数、配列、ポインタです。初心者なのでよろしくお願いします。
0759デフォルトの名無しさん
2007/05/22(火) 23:10:57っつーかぁ、講師に講義、もとい、抗議してやってくれ。判別するライブラリなどが入っている
ctype.hくらい使わせろと
0760デフォルトの名無しさん
2007/05/22(火) 23:15:21[2] 問題文(含コード&リンク):
大きさが20の配列にフィボナッチの数列を作りなさい。0番目と1番目の要素の値はともに1で初期化すること。
最後に配列のすべての要素の値を配列の末尾から先頭(0番目)に向かって入力された値を格納するようにして表示させなさい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: djgpp
[3.3] 言語: C++
[4] 期限: 5/24
[5] その他の制限:
わかりにくい文章だと思いますが問題文のそのままです
よろしくお願いします
0761デフォルトの名無しさん
2007/05/22(火) 23:17:12#include <stdio.h>
#define MAX 20
int main(void) {
int a[MAX],i;
a[0]=1; a[1]=1;
for(i=2; i<MAX; i++)
a[i]=a[i-2]+a[i-1];
for(i=MAX-1; i>=0; i--)
printf("a[%d]=%d \n",i+1,a[i]);
return 0;
}
0762デフォルトの名無しさん
2007/05/22(火) 23:20:11だからぁ、C++っぽく書き換えました、あぁ〜いとぅいまてぇ〜ん
#include <iostream>
#define MAX 20
using namespace std;
int main() {
int a[MAX],i;
a[0]=1; a[1]=1;
for(i=2; i<MAX; i++)
a[i]=a[i-2]+a[i-1];
for(i=MAX-1; i>=0; i--)
cout << "a[ "<< i+1 << "]=" << a[i] <<endl;
return 0;
}
0763デフォルトの名無しさん
2007/05/22(火) 23:21:12つsscanf
0764デフォルトの名無しさん
2007/05/22(火) 23:22:18>Input character : f
>Exchanged F to 15.
にならないぞ
0765デフォルトの名無しさん
2007/05/22(火) 23:23:28わお、こんなに早くありがとうございます
助かりました
0766デフォルトの名無しさん
2007/05/22(火) 23:24:580767デフォルトの名無しさん
2007/05/22(火) 23:41:410768デフォルトの名無しさん
2007/05/22(火) 23:47:210769デフォルトの名無しさん
2007/05/22(火) 23:51:45なったぞ
0770デフォルトの名無しさん
2007/05/22(火) 23:52:48さぁ、仕事で忙しいかもしれない君も、コンパイルくらいすぐにできるでしょ?やってみてくれたまえ。
そして何がおかしいか、8月以降でも良いから考えた結果をここで報告して下さい、おながいします!
報告しても報酬はないけど。
0771デフォルトの名無しさん
2007/05/22(火) 23:54:01[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4028.txt
これのふたつの???に付け加えて自然数の足し算を行うプログラムを作成し、引き算、及び掛け算もできるプログラムに拡張せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007/05/23の24時
[5] その他の制限: スタックまで習いました。
よろしくお願いします。
0772デフォルトの名無しさん
2007/05/22(火) 23:57:26スマソ もう寝る
ソース見る限り正しいと思うけどね
0773デフォルトの名無しさん
2007/05/22(火) 23:59:58[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4029.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年5月23日中
[5] その他の制限: キューまでを使う。
よろしくお願いします。
0774デフォルトの名無しさん
2007/05/23(水) 00:06:46「*」を並べて下図のような三角形を作るプログラムを作成せよ。
ただし、プログラム中にはprintf("*")とprintf("\n")を各1回のみ使い作成せよ。
*
**
***
****
*****
******
0775デフォルトの名無しさん
2007/05/23(水) 00:07:48>>1 の質問テンプレ読んで書きなおし
0776デフォルトの名無しさん
2007/05/23(水) 00:08:03実行していないのにそういことを言う奴は信じられない。むしろ、やってないのにやったとか言いそう。
そう、例えば、童貞なのに童貞じゃない奴からあれって気持ち良いよなぁって言われたら
相手次第で否定も肯定もしてしまうあやふやなタイプ。最後はそのいい加減が仇となって
仕事にも影響して、取引先とのトラブルで損失を作ってしまって解雇されるタイプ。
0777デフォルトの名無しさん
2007/05/23(水) 00:11:420778デフォルトの名無しさん
2007/05/23(水) 00:11:581.OS
2.コンパイラ
3.うまくいかなかったソースコード
をうp!
文字コードがASCII配列じゃないとか?
0779デフォルトの名無しさん
2007/05/23(水) 00:12:250780デフォルトの名無しさん
2007/05/23(水) 00:13:380781デフォルトの名無しさん
2007/05/23(水) 00:15:050782デフォルトの名無しさん
2007/05/23(水) 00:17:090783デフォルトの名無しさん
2007/05/23(水) 00:17:57[2] 問題文(含コード&リンク):
「*」を並べて下図のような三角形を作るプログラムを作成せよ。
ただし、プログラム中にはprintf("*")とprintf("\n")を各1回のみ使い作成せよ。
*
**
***
****
*****
******
[3] 環境
[3.1] OS: XP
[3.3] 言語: C
[4] 期限:本日朝8時まで
0784デフォルトの名無しさん
2007/05/23(水) 00:19:08#include <stdio.h>
#define A printf("*")
#define B printf("\n")
int main(){A;B;A;A;B;A;A;A;B;A;A;A;A;B;A;A;A;A;A;B;return 0;}
0785デフォルトの名無しさん
2007/05/23(水) 00:19:25自分が気に食わない意見を、相手のすべてを否定するように言う奴って多いよな。
まぁ、人類の歴史上、正しかったことも弾圧でもみつぶされていることは良くあることだが
最近じゃマスメディアが発達して、国民に真相の真偽ははっきりしなくても、それに関する情報や
いきさつが可能な範囲内で報じられるようになったから、人生経験が浅い人や、自分で考える意思のない
他人任せ、長いものには巻かれろといった考えでない人までは騙せないどころか、公正な条件による
検証もされるようになってきたしな。
んで、人類は神が創造したものではなく、進化したであろうという生物がこの地球上にいるから
そういった点では進化論の方が信憑性が高い。が、月に関しては人類が起こしたことだから
あとは宇宙計画で今後月に行く計画が実行されれば、アポロ11号が本当に月面に証拠を残したか判明するから
それについては俺は行った行ってないについては敢えて言わないよ。第一、そんとき俺まだ生まれてねーしw
0786デフォルトの名無しさん
2007/05/23(水) 00:20:12#include <stdio.h>
#define A printf("*")
#define B printf("\n")
int main(){A;B;A;A;B;A;A;A;B;A;A;A;A;B;A;A;A;A;A;B;A;A;A;A;A;A;B;return 0;}
0787デフォルトの名無しさん
2007/05/23(水) 00:20:58アハ
0788デフォルトの名無しさん
2007/05/23(水) 00:22:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4030.c
CUIでスピードはちょっと無謀だったかも。
0789デフォルトの名無しさん
2007/05/23(水) 00:23:11日本語でおk まで読んだ
0791デフォルトの名無しさん
2007/05/23(水) 00:24:070792デフォルトの名無しさん
2007/05/23(水) 00:24:31○スルーして
0793デフォルトの名無しさん
2007/05/23(水) 00:26:530794デフォルトの名無しさん
2007/05/23(水) 00:28:36#include <stdio.h>
int main( void )
{
int i, n;
int x, y;
scanf("%d",&x);
for ( n = 0; n < x ; n++ ) {
for ( i = 0; i <= n; i++ ) {
printf( "*" );
}
printf( "\n" );
}
return 0;
}
久々に来てみると荒れてるなー
0795気まぐれアナスイ
2007/05/23(水) 00:29:390796デフォルトの名無しさん
2007/05/23(水) 00:30:010797デフォルトの名無しさん
2007/05/23(水) 00:30:41日本語でおk
0799デフォルトの名無しさん
2007/05/23(水) 00:33:14Japaneseでおk
0801デフォルトの名無しさん
2007/05/23(水) 00:40:16無償でクソガキどもの宿題を肩代わりするボランティア精神旺盛なあつまりだなw
0802デフォルトの名無しさん
2007/05/23(水) 00:42:020803デフォルトの名無しさん
2007/05/23(水) 00:44:50悪いと思うなら催促するな。
#include<stdio.h>
void swap(int *a, int *b){ int c = *a; *a = *b; *b = c; }
void sort(int *ptr, int n){
int i, j, min;
for(i = 0; i < n-1; ++i){
min = i;
for(j = i+1; j<n; ++j) if(*(ptr+min) > *(ptr+j)) min = j;
swap(ptr+i, ptr+min);
}
}
int main(){
int i, ptr[10], n = 10;
for(i = 0; i < n; ++i) scanf("%d", &ptr[i]);
sort(ptr, n);
for(i = 0; i < n; ++i) printf("%d ", ptr[i]);
return 0;
}
0804デフォルトの名無しさん
2007/05/23(水) 00:47:540805デフォルトの名無しさん
2007/05/23(水) 00:51:560806デフォルトの名無しさん
2007/05/23(水) 00:54:36氏ね。書けるんだったらさっさと教えろクズ
0807デフォルトの名無しさん
2007/05/23(水) 01:00:11今ものすごく良いよ、このスレのふいんき(なぜか変換されな)
0809気まぐれアナスイ
2007/05/23(水) 01:15:09int main();
???? {
(
[0,1,2,3,4,5,6,7,8,9] >= [0,1,2,3,4,5,6,7,8,9] &&
[0,1,2,3,4,5,6,7,8,9] <= [0,1,2,3,4,5,6,7,8,9];
if [input= "OS/2"];
?? "10" == ?? "0,1,2,3,4,5,6,7,8,9" == ??? "." == ?? "4");
}
0810デフォルトの名無しさん
2007/05/23(水) 01:17:39雰囲気は「ふんいき」って読むんです
君は悪くない。ゆとり時代が悪いんだ
0811デフォルトの名無しさん
2007/05/23(水) 01:20:120812デフォルトの名無しさん
2007/05/23(水) 01:21:05×変換されな
○変換されない
ゆとり乙
0813デフォルトの名無しさん
2007/05/23(水) 01:23:02って課題が出たので教えて下さい。
4月からはじめたのでサッパリわかりません;;
0814デフォルトの名無しさん
2007/05/23(水) 01:24:26Cで実行して
結果の違いについて考えてみればいいじゃないか
0815デフォルトの名無しさん
2007/05/23(水) 01:24:47ネタにry
ここまでry
0816813
2007/05/23(水) 01:28:11自分、ホントに全くC出来ないんですよ。
でも、今日提出しないといけなくってorz
結果だけでも教えてもらえないでしょうか?
お願いします。
0817デフォルトの名無しさん
2007/05/23(水) 01:30:50ぷぷっ、その程度でゆとりとか言い出すくらいだからお前は気持ち悪いって言われるんだよw
0818デフォルトの名無しさん
2007/05/23(水) 01:32:31>>807
雰囲気は「ふんいき」って読むんです
君は悪くない。ゆとり時代が悪いんだ
↑お前は悪い、2ちゃん慣れしていないのが悪いんだ。
812 名前:デフォルトの名無しさん 投稿日:2007/05/23(水) 01:21:05
>>807
×変換されな
○変換されない
ゆとり乙
↑2ちゃんねるでのゆとりの無さが仇となった香具師乙
0819デフォルトの名無しさん
2007/05/23(水) 01:33:14出来ない所のレベルじゃないぞ
これからどうすんだ?
テストあるだろ??
釣り・・・?
0820デフォルトの名無しさん
2007/05/23(水) 01:35:32Cができないのはいいとしても、次からは>>1くらい読もうな
#include<stdio.h>
int main(){ printf("%d %f\n", 2/3, 2.0/3.0); return 0; }
0821813
2007/05/23(水) 01:36:09テストはないようで、課題等が点数になるそうです。
釣りじゃないです。マジで困ってます。
0822デフォルトの名無しさん
2007/05/23(水) 01:36:220824デフォルトの名無しさん
2007/05/23(水) 01:38:09理由を聞かれたら、切り捨てられたって叫べばおk
0826デフォルトの名無しさん
2007/05/23(水) 01:43:34#include<stdio.h>
int main(void){
int salary, salary_default=300000;
printf("通常の給料 : %d 円\n", salary_default);
printf("\n減俸処分で給料を3分の1カットになると…\n");
salary=2/3*salary_default;
printf("減俸後の給料 : %d 円\n", salary);
salary=2.0/3.0*salary_default;
printf("減俸後の給料 : %d 円\n", salary);
return 0;
}
0828デフォルトの名無しさん
2007/05/23(水) 01:49:51また何かあったらおいで。
課題がんばってね^^
0830デフォルトの名無しさん
2007/05/23(水) 01:56:01恐ろしい給与計算だな
0831デフォルトの名無しさん
2007/05/23(水) 01:56:12[2] 問題文(含コード&リンク):3行、5列の整数の表を読み込み、その最大値が、何行何列にあるかを表示するプログラムを作れ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語: C
[5] その他の制限:
問題としては出されていないのですが、自分で数値を入力していき、
その中で最大値はなにか?というところまでお願いします。
面倒なら省いてもいいです。
よろしくお願いします。
0832デフォルトの名無しさん
2007/05/23(水) 01:57:270833デフォルトの名無しさん
2007/05/23(水) 02:02:510834デフォルトの名無しさん
2007/05/23(水) 02:14:16最大値が2箇所にある場合はどうすんの?
0835デフォルトの名無しさん
2007/05/23(水) 02:23:57被ってしまう場合はどうするかということですよね?
その場合は、A行A列、B行B列というように2個表示されるようにお願いします。
0836デフォルトの名無しさん
2007/05/23(水) 02:31:050837デフォルトの名無しさん
2007/05/23(水) 02:32:09超テキトー。
表を読み込むところはパス。
#include <stdio.h>
#define COL 5
#define ROW 3
int main(){
int j,i,max;
/* 入力部分はメンドクサイのでパス */
int num[ROW][COL] =
{ {1, 2, 3, 4, 5}
,{1, 5, 3, 4, 2}
,{1, 2, 3, 4, 5} };
/* ホントはここで表を読み込む */
/* 行列内の最大要素を調べる */
for(i=0,max=0;i<ROW;i++)
for(j=0;j<COL;j++)
if(num[i][j] > max)
max = num[i][j];
/* 最大要素を出力 */
printf("max = %d\n", max);
/* 最大要素の位置を出力 */
for(i=0;i<ROW;i++)
for(j=0;j<COL;j++)
if(num[i][j] == max)
printf("%d行 %d列\n", i+1, j+1);
}
0838デフォルトの名無しさん
2007/05/23(水) 02:45:08とても助かります。
読み込みの部分は自分で考えてみます。
ありがとうございました。
0839デフォルトの名無しさん
2007/05/23(水) 03:43:35遅いかもしれんが俺流のやり方で。行列をファイルに書き出すプログラムにて行、列を指定可能。
最大を探すプログラムで、ファイルに書き込まれている行、列を判別して処理。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4032.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4033.c
0840デフォルトの名無しさん
2007/05/23(水) 04:24:15いえ、参考にさせていただきます。
ありがとうございます。
0841デフォルトの名無しさん
2007/05/23(水) 04:32:08http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4034.c
0842デフォルトの名無しさん
2007/05/23(水) 07:10:260843デフォルトの名無しさん
2007/05/23(水) 10:20:56昨日はありがとうございました。
回答者側の方々 おつかれさまでした。
0844デフォルトの名無しさん
2007/05/23(水) 11:20:07[2] 問題文(含コード&リンク):3個の整数を入力して,初項 a ,項差 d の等差数列を n 項表
示するプログラムをつくれ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語: C
[5] その他の制限:
とくに無いです。
よろしくおねがいします。
0845デフォルトの名無しさん
2007/05/23(水) 11:39:28int main(void)
{
int i, a, d, n;
printf("初項を入力してください:");
scanf("%d", &a);
printf("公差を入力してください:");
scanf("%d", &d);
printf("項数を入力してください:");
scanf("%d", &n);
for(i=0; i<n; i++) printf("%d ", a + d * i);
return 0;
}
0846デフォルトの名無しさん
2007/05/23(水) 11:40:160847デフォルトの名無しさん
2007/05/23(水) 12:36:18[2] 問題文(含コード&リンク):
[2.1] コマンドラインから指定したテキストを標準出力に表示するプログラム
[2.2] コマンドラインで指定した任意のファイルの内容を16進数で標準出力にダンプするプログラム
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc (ver不明)
[3.3] 言語: C
[4] 期限: [2007年05月24日13:00まで]
[5] その他の制限: 無しだと思います。
よろしくお願いします。
0848デフォルトの名無しさん
2007/05/23(水) 12:38:21[2.1] コマンドラインから指定した「テキストファイル」を標準出力に表示するプログラム
でした、ごめんなさい訂正します。
0849デフォルトの名無しさん
2007/05/23(水) 12:55:19[2.1]
#include <stdio.h>
int main(int argc, char **argv)
{
int ch;
FILE *fp;
if(argc!=2) return 0;
if((fp = fopen(argv[1], "r"))==NULL) return 0;
while((ch=fgetc(fp))!=EOF) fputc(ch, stdout);
fclose(fp);
return 0;
}
[2.2]
#include <stdio.h>
int main(int argc, char **argv)
{
char ch;
FILE *fp;
if(argc!=2) return 0;
if((fp = fopen(argv[1], "rb"))==NULL) return 0;
while(fread(&ch, 1, 1, fp)) printf("%02X ", ch);
fclose(fp);
return 0;
}
0850デフォルトの名無しさん
2007/05/23(水) 13:14:52ありがとうございます。
まれに見るクソ問題だな。
#include<stdio.h>
/*わざわざ誤差なんか出してやるかバーカw*/
int main(void){int ni[]={1000,4096,10000,};int i;
for(i=0;i<sizeof(na)/sizeof(int);i++){printf("n=%i,(int):%i\n",ni[i]*ni[i]/ni[i]);}
for(i=0;i<sizeof(na)/sizeof(int);i++){printf("n=%i,(float):%f\n",(float)ni[i]*ni[i]/(float)ni[i]);}
for(i=0;i<sizeof(na)/sizeof(int);i++){printf("n=%i,n(double):%16.14e\n",(double)ni[i]*ni[i]/(double)ni[i]);}
return 0;}
0852デフォルトの名無しさん
2007/05/23(水) 13:20:28まれに見るクソ回答乙
0854デフォルトの名無しさん
2007/05/23(水) 14:03:02ツンデレしなくても良いんだよバーカ
0855デフォルトの名無しさん
2007/05/23(水) 15:25:20[2] 問題文:重複しない適当な値ですべての要素が初期化された配列を作り、適当な整数(Nとする)を入力して
N番目の要素の値を表示するプログラムを作りなさい。入力と表示は繰り返す。
ただし、表示は次のようにしなさい。 Nにどのような値が入力されたとしても、適切に対処しなさい。
配列名がa,a[0]の値が20であるとき、Nとして0が入力された場合の表示:a[0]=20
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:djgpp
[3.3] 言語:C++
[4] 期限:5月30日
よろしくおねがいします
0856デフォルトの名無しさん
2007/05/23(水) 16:20:38using namespace std;
int main()
{
int a[]={2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37}, n;
while(1){
if ((cin >> n) >= 0 && n < sizeof(a)/sizeof(a[0]))
cout << "a[" << n << "] = " << a[n] << endl;
else break;
}
return 0;
}
0858デフォルトの名無しさん
2007/05/23(水) 18:28:31ありがとうございます
0859デフォルトの名無しさん
2007/05/23(水) 19:04:400861デフォルトの名無しさん
2007/05/23(水) 19:23:420862デフォルトの名無しさん
2007/05/23(水) 20:39:13ありがとうございます!
>>734
です。
文字の頻度は多分「a: □回, b: □回…」というように表示させる感じだと思った
んですけど、それだったらどうなりますか??
説明不足スミマセン。
あと、テストデータは一行に複数の単語が書いてあるような?普通の英文の書かれた*.txtです!
お願いします!!
0863デフォルトの名無しさん
2007/05/23(水) 21:58:10[2] 問題文:
16ビットの値を2進数で2つ入力し乗算の結果を出力する。
[3] 環境
[3.1] OS:VineLinux 4.1
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5月24日12:00
知恵をお貸し下さい
0864デフォルトの名無しさん
2007/05/23(水) 21:58:49[2] 問題文:長いのでうpしたファイルに入れました。ドス窓上にグラフを描く問題です。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4036.zip
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C
[4] 期限:5月末日まで
よろしくおねがいします
0865デフォルトの名無しさん
2007/05/23(水) 21:58:51ありがとうございます。
0866デフォルトの名無しさん
2007/05/23(水) 23:19:46[2] 問題文(含コード&リンク):
ICPC 2002年 金沢大会 国内予選 D
What is the Number in my Mind ?
ttp://www.acm-japan.org/past-icpc/domestic2002/D.htm
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年05月28日まで
[5] その他の制限:特にありません
この問題の答え、または詳しい解説を行っているサイト等への誘導をしていただけると助かります。
それではよろしくお願いします。
0867デフォルトの名無しさん
2007/05/23(水) 23:23:110868デフォルトの名無しさん
2007/05/23(水) 23:26:230869デフォルトの名無しさん
2007/05/23(水) 23:27:37[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4037.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:
[3.3] 言語:Cのみ
[4] 期限: 5月24日までです。よろしくお願いします。
[5] その他の制限:関数 ポインタ 制御文 配列まで習っています。 よろしくお願いします。
0870デフォルトの名無しさん
2007/05/23(水) 23:29:110871デフォルトの名無しさん
2007/05/23(水) 23:29:16http://www.tanaka.ecc.u-tokyo.ac.jp/~ktanaka/moo/moo.html
ここはだめかな?
0872デフォルトの名無しさん
2007/05/23(水) 23:42:23戦わなきゃいけないのか・・・?
#include<stdio.h>
void swap(char *a, char *b){ char c = *a; *a = *b; *b = c; }
void sort_ch(char *s){
int i, j, min;
for(i = 0; *(s+i+1); ++i){
min = i;
for(j = i+1; *(s+j); ++j) if(*(s+min) > *(s+j)) min = j;
swap(s+i, s+min);
}
}
int main(){
char buf[256], *s;
printf("Input string : ");
fgets(buf, sizeof(buf)/sizeof(*buf), stdin);
for(s = buf; *s; ++s) if(*s=='\n') *s='\0';
sort_ch(buf);
printf("Sorted string : %s\n",buf);
return 0;
}
投げ槍ってことで。
0873デフォルトの名無しさん
2007/05/23(水) 23:44:07#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int cmp(const char *c1, const char *c2);
void void_sortch(char *str);
int main(void){
char str[256];
printf("Input String :"); scanf("%255s", str);
void_sortch(str);
printf("Sorted string :%s\n", str);
return 0;
}
int cmp(const char *c1, const char *c2){return *c1-*c2;}
void void_sortch(char *str){
int len;
len = strlen(str);
qsort(str, len, sizeof(char), (int(*)(const void*, const void*))cmp);
str[len +1] = '\0';
}
0874デフォルトの名無しさん
2007/05/23(水) 23:45:500875デフォルトの名無しさん
2007/05/23(水) 23:47:23回答者の気分次第
0876デフォルトの名無しさん
2007/05/23(水) 23:54:53#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void void_sortch(char*battle_address){
qsort(battle_address,strlen(battle_address),1,(void*)strcmp);
}
int main(void){
char buf[256];buf[0]='\0';
printf("Input string : ");
scanf("%255[^\n]",buf);
void_sortch(buf);
printf("Output string : %s\n",buf);
return 0;
}
0877デフォルトの名無しさん
2007/05/23(水) 23:55:57前スレの質問は気づかれにくいから流れやすいだろうね。
誰かがプログラムし始めてれば次スレで回答してもらえるだろうけど。
誰がどれをやってるかわからないから放置かどうかも判断しづらい。
やり始める時にその人が一言書き込めばいいんだろうけど。
0878デフォルトの名無しさん
2007/05/23(水) 23:56:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4039.txt
最低限必要だと思われる部分をつたないながら訳してみましたのでご参照ください。
また何か問題がある場合は伝えていただけると幸いです。
>>871
わざわざ教えていただきありがとうございます。
問題自体はこれで問題ないと思うのですが、4桁までの制限があるのと、
アルゴリズムが難解なので提出期限までに理解できるか自信がないのが難点です。
0879デフォルトの名無しさん
2007/05/24(木) 00:03:24んーそしたら「ヒットアンドブロー C言語」とか「マスターマインド C言語」で
ぐぐるしかないなあ。
でも自分で解まで見つけるソースはなかなかないみたいだぞ。4桁制限も
大抵あるし。どうしたもんかな。
0880デフォルトの名無しさん
2007/05/24(木) 00:03:44ちょっとexciteかけて読んでみた。
えーと、入出力フォーマットの仕様は置いておいて、和訳してくれた分に補足。
恐らく、桁数は4桁〜10桁。
最初の入力
4 4
は、答えは4桁で、4つのヒントで解く
5 2
は、答えは5桁で、2つのヒントで解く
数値は人が考えて、かつヒントは人が入力する。
与えられた桁数とヒントから、答えの数値が出るならば数値を出力。
答えを出すのが不可能な場合は「No.」を出力する。
こういうことかな。
0881デフォルトの名無しさん
2007/05/24(木) 00:16:07捕捉ありがとうございます。
概ねその流れで間違いありません。
>>879
自分も探してはいるんですがやはりなかなか難しいものがあるようですね。
桁数制限は解を求めるアルゴリズムがわかれば何とかできると思うんですが。
0882デフォルトの名無しさん
2007/05/24(木) 00:18:36ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4040.zip
仕様が確定されていないので符号ありと無しの両方を出力することにした
0883デフォルトの名無しさん
2007/05/24(木) 00:23:19[2] 問題文(含コード&リンク):
123456789
12345678
1234567
123456
12345
1234
123
12
1
2重ループを使って表示させよ。
[3] 環境
[3.1] OS: windows
[3.2] borland
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 特になし
お願いします
0884デフォルトの名無しさん
2007/05/24(木) 00:29:52#include<stdio.h>
int main(){
int i,j;
for(i=0; i<9; ++i){
for(j=1; j<=9; ++j) if(j<=i) putchar(' '); else printf("%d", j-i);
putchar('\n');
}
return 0;
}
0885デフォルトの名無しさん
2007/05/24(木) 00:45:27ありがとうございました
0886デフォルトの名無しさん
2007/05/24(木) 01:19:27桁数入力時点で、考えられる数字の組み合わせ全て生成してリストに保存
数字が入力された時点で、数字とリストのデータ全て比較⇒HITとBLOWの結果にならないものを削除
で、入力終了時点に一つだけ残ってればそれが答え、ってことにならないかね?
ちなみに、ググって見たけどこの問題自体の解法が何処にも乗ってなかった罠
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4044.txt
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: Borland
[3.3] 言語: C
[4] 期限: 5/28
[5] その他の制限: 特になしです
よろしくお願いします
0888デフォルトの名無しさん
2007/05/24(木) 01:55:43[2] 問題文(含コード&リンク):
PPM画像の色のデータをR、G、Bの1次元配列に読み込みました。
この読み込んだデータをいじくって新たに任意の角度だけ回転処理を行った画像を作りたいと考えています。
しかし、1次元配列に読み込んでいる故、直交座標軸上(x、yの二軸)での回転の計算式をそのまま使用できず困っています。
なんとか読み込んだデータ、出力するデータは1次元のままで配列のインデックスをいじって回転させる方法はありませんでしょうか?
回転のアルゴリズムは下記のwebサイトを参考にしました。
ttp://homepage2.nifty.com/tsugu/sotuken/rotation/
よろしくお願いします。
[3] 環境
[3.1] VineLinux4.1
[3.2] gcc 3.3.6
[3.3] C
[4] 2007年5月24日
[5] その他の制限:得になし
0889デフォルトの名無しさん
2007/05/24(木) 02:17:470890デフォルトの名無しさん
2007/05/24(木) 02:25:23とりあえず総当たり.遅い
がんばれば素因数分解か連立方程式あたりに写せるのかな
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4045.c
>>888
一次元配列を
char seq[HEIGHT*WIDTH];
とすると,
char *map[HEIGHT];
for (i=0; i<HEIGHT; i++) {
map[i] = &seq[i*WIDTH];
}
とすることで擬似的な二次元配列map[y][x]を被せて操作できる(たぶん)
ポインタと配列についてある程度理解してるならこの方法がやりやすいと思う
それとスレ違い
0891253
2007/05/24(木) 02:27:21制限なしなら、単純に2次元配列にmemcpyしたらいかんのか?
1次元配列→2次元配列にmemcpy
2次元配列を回転
2次元配列を1次元配列にmemcpy
まぁ>>889で2次元の座標を1次元配列のindexに変換するのも楽だし。
どっちの方が良いかはソース見てみんと分からん
0892デフォルトの名無しさん
2007/05/24(木) 05:43:44ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4048.c
例に出てた
6 5
605743 0 4
593026 2 2
792456 1 2
143052 1 3
093614 3 3
で 493601 という答えが出てしまったんだが、
例の答えって合ってる?
0893デフォルトの名無しさん
2007/05/24(木) 07:01:56>In contrast, the following hint-set is not sufficient to guess the number.
>Answers for last two hint-sets should be NO.
意訳:解答が一意に定まらない場合(と解があり得ない場合)はNOと出力せよ
の条件に引っかかったのでは?つまり493601以外の解がある、と思われる。
0894デフォルトの名無しさん
2007/05/24(木) 10:02:15http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4049.c
総当たり+枝刈り。十分早いと思う。
0895888
2007/05/24(木) 10:41:08おかげさまで何とかなりました
どうもです。
0896気まぐれアナスイ
2007/05/24(木) 11:20:45{?#differ:line 3,2,1 line 143,144,145#?}
ζ
!(+Φ_Φ)つ" ζ
+⊂. + 〆∂ {質}
"〆∂∂ {問}
〆〆
.:"
【何の為のに使用しているのか教えてください】
>戦闘アドレス
まずギニュー特戦隊を呼んでスカウターを持って来させろ。
0898気まぐれアナスイ
2007/05/24(木) 11:46:53!(+Φ_£)つ" ζ
+⊂. + 〆∂
"〆∂∂
〆〆
.:"
●
+++++++++++++
+ } +
+ } +
+ } +
+++++++++++++
0899気まぐれアナスイ
2007/05/24(木) 12:01:06ζ
!(+Φ_£)つ" ζ
+⊂. + 〆∂
"〆∂∂
〆〆
.:"
●
//
+++++++++++++
+ } +
+ } +
+ } +
+++++++++++++
0900気まぐれアナスイ
2007/05/24(木) 12:17:08ζ
!(+-_Φ)つ" ζ
+⊂. + 〆∂
"〆∂∂
〆〆
.:"
【引用>>983】
>In contrast, the following hint-set is not sufficient to guess the number.
>Answers for last two hint-sets should be NO.
意訳:解答が一意に定まらない場合(と解があり得ない場合)はNOと出力せよ
の条件に引っかかったのでは?つまり493601以外の解がある、と思われる。
0901デフォルトの名無しさん
2007/05/24(木) 12:23:320902気まぐれアナスイ
2007/05/24(木) 13:04:22ζ
!(+Φ_Φ)つ" ζ
+⊂. + 〆∂
"〆∂∂
〆〆
.:"
0903デフォルトの名無しさん
2007/05/24(木) 13:08:220904デフォルトの名無しさん
2007/05/24(木) 13:10:100908デフォルトの名無しさん
2007/05/24(木) 17:55:33[2] 問題文
クラス1、クラス2の2種類の属性をもつサンプルを含むデータセット
において、クラス1のサンプルの個数がc1、クラス2のサンプルの個
数がc2であるものとする。このデータセットから1つのサンプルを取
り出してそのクラスを観察する際、得られる平均情報量を計算する関数
を作成してください。関数の形は次のようにしてください
double info(int c1,int c2)
なお、動作をチェックするためのmain文と実行結果も添えて提出してく
ださい。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年05月30日まで
[5] その他の制限:特にありません
すいません、よろしくお願いします。
#include<stdio.h>
#include<math.h>
double info(int c1,int c2){double d1,d2;
d1=(double)c1/(double)(c1+c2);d2=(double)c2/(double)(c1+c2);
return (-d1*log2(d1)-d2*log2(d2));}
int main(void){int c1=1200,c2=680;
printf("c1=%i\nc2=%i\nentropy=%f\n",c1,c2,info(c1,c2));return 0;}
0910デフォルトの名無しさん
2007/05/24(木) 20:16:010911デフォルトの名無しさん
2007/05/24(木) 20:18:51わかった、とりあえず多少時間が掛かるんで明日まで待て。
0912デフォルトの名無しさん
2007/05/24(木) 20:18:53>>788では不満?
0913デフォルトの名無しさん
2007/05/24(木) 20:39:52ShellExecute でソリティアを起動しちまえ
0914デフォルトの名無しさん
2007/05/24(木) 20:53:23その発想は無かったwwwwwwwww
0915デフォルトの名無しさん
2007/05/24(木) 20:56:460916デフォルトの名無しさん
2007/05/24(木) 20:58:080917デフォルトの名無しさん
2007/05/24(木) 21:00:280918デフォルトの名無しさん
2007/05/24(木) 21:03:34じゃこれで。
while(ShellExecute(hwnd,"open","sol.exe",NULL,NULL,SW_SHOWNORMAL));
0919912=788
2007/05/24(木) 21:13:27別に責めてるわけじゃないので念のため。
不満ならそう言ってくれ。直せることなら直すし、そうでなければ
誰かが別のを作ってくれるかも試練。
>>916
なんでだよw
0920デフォルトの名無しさん
2007/05/24(木) 21:19:26C++じゃない(Cでも問題ないが強いて突っ込むならここか?)
0921デフォルトの名無しさん
2007/05/24(木) 21:27:08clock()でも使って、経過時間に応じてパンパン進めなきゃ
0922デフォルトの名無しさん
2007/05/24(木) 21:37:25見逃してた。
>>921
clockはCPU時間を計るから入力待ちの間時計が止まることになる。
それに、秒単位の解像度でも以外と遊べることが分かった。
0923デフォルトの名無しさん
2007/05/24(木) 21:44:16#include <time.h>
int main(void) {
int x;
clock_t s,e;
s=clock();
printf("Input > "); // 整数を入力
scanf("%d",&x);
e=clock();
printf("%f s \n",(e-s)/CLOCKS_PER_SEC);
return 0;
}
これで入力を終える時間を変えると、入力受付、終了の経過時間が違うようだが・・・
0924デフォルトの名無しさん
2007/05/24(木) 21:49:40>printf("%f s \n",(e-s)/CLOCKS_PER_SEC);
printf("%f s \n",(double)(e-s)/CLOCKS_PER_SEC);
こうだよな?
ここを直すと、俺の環境(Linux, glibc2.5)では常に0.000000sが表示される。
0925デフォルトの名無しさん
2007/05/24(木) 22:03:10それはさておき、標準入力待ちでCPU時間を消費しないのはUnix系OSで、消費するのはWindowsでしょ。
0926デフォルトの名無しさん
2007/05/24(木) 22:09:19そうそう、CLOCKS_PER_SECで割るclock_t型の変数は整数型なんで、キャストすべき。書き忘れすまそ。
0927デフォルトの名無しさん
2007/05/24(木) 22:14:34>標準入力待ちでCPU時間を消費しないのはUnix系OSで、消費するのはWindowsでしょ。
知らなかった。Windowsならclockが使えるのか。
0928デフォルトの名無しさん
2007/05/24(木) 22:20:38後はそちらでどぞ。
0929デフォルトの名無しさん
2007/05/24(木) 23:58:09>>788をC++風にした。
「7r」のような入力を受けると配列の範囲外をアクセスするバグを修正。
USE_CLOCKを1に定義するとtimeの代わりにclockを使うように。
0930デフォルトの名無しさん
2007/05/25(金) 00:24:04[2] 問題文(含コード&リンク):
パスカルの3角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 61
for2重ループ,2次元配列,if文等を使って表示させよ。
[3] 環境
[3.1] OS: windows
[3.2] VC++6.0
[3.3] 言語: C
[4] 期限: 5/26
[5] その他の制限: なし
右端に1揃えの直角三角形です
お願いします
0931デフォルトの名無しさん
2007/05/25(金) 00:25:34[2] 問題文(含コード&リンク):
例題と使用するhtmlファイルです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4051.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4050.zip
HTMLファイルのタグを除去する('<'と'>'で囲まれた部分を除いて出力する)
プログラムを次のように書け。
(1)getlineを用いて行ごとに処理する。
(2)連続する空白文字(ブランク、タブ、改行文字)は1つだけにする(他は削除する)
ヒント:空白文字を続けないようにするには、直前の文字を覚えておくのが一つ
の方法である。
[3] 環境:
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4] 期限: なし
できれば簡単なコードにしていただけると嬉しいです。
0932930
2007/05/25(金) 00:28:37お願いいたします。
0933デフォルトの名無しさん
2007/05/25(金) 00:35:46マルチうざいよ
0934デフォルトの名無しさん
2007/05/25(金) 00:47:460935デフォルトの名無しさん
2007/05/25(金) 03:35:57そこで、優秀な知識人の皆様にご教授願いたいと思い、投稿させていただきます。
「stack.h」
#include <stdio.h>
#include <stdlib.h>
#define stack_size 100
#define stack_el_type int
stack_el_type stack[stack_size];
int sp;
void init_stack()
{
sp = -1;
}
void push(stack_el_type x)
{
if(sp < stack_size - 1)
stack[sp++] = x;
else{
printf("stack full error.\n");
exit(1);
}
}
>>375へ続く
0936デフォルトの名無しさん
2007/05/25(金) 03:38:03「stack.hの続き」
stack_el_type pop()
{
if (sp >= 0)
return stack[sp--];
else {
printf("stack empty error.\n");
exit(1);
}
}
「main.c」
#include "stack.h"
#include <stdio.h>
#define NUMBER 1
#define PLUS 2
#define MINUS 3
#define MULT 4
#define DIV 5
#define OTHER 6
int c, token, num;
0937デフォルトの名無しさん
2007/05/25(金) 03:39:17「main.cの続き」
int gettoken()
{
while (c == ' ' || c == '\n' || c == '\t') c = getchar();
switch(c) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
num = c - '0';
for(;;) {
c = getchar();
if ('0' <= c && c <= '9') num = 10*num + c - '0';
else break;
}
return NUMBER;
case '+': c = getchar(); return PLUS;
case '-': c = getchar(); return MINUS;
case '*': c = getchar(); return MULT;
case '/': c = getchar(); return DIV;
case EOF: return EOF;
default: c = getchar(); return OTHER;
}
}
0938デフォルトの名無しさん
2007/05/25(金) 03:39:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4054.txt
ババ抜きで。しかし、もはやきんもぉ〜☆なソースで、改良の余地がありすぎ。
ちゃんとカードのやり取りができているか内部の状況がわかるように
コンピュータの手持ちカードも表示されるようにしてあるから、その部分は消しておくこと。
カードの並び替えはしてないっす。
2人プレイだとつまらないっすね・・・改良して3P以上にはしたいところだが俺はこれにて終了。
0939デフォルトの名無しさん
2007/05/25(金) 03:40:01void main()
{
int x;
c = getchar();
token = gettoken();
init_stack();
while (token != EOF) {
switch(token) {
case NUMBER: push(num); break;
case PLUS: push(pop() + pop()); break;
case MINUS: x = pop(); push(pop() - x); break;
case MULT: push(pop() * pop()); break;
case DIV: x = pop();
if (x != 0) {push(pop() / x); break;}
else
{printf("zero divide error.\n"); exit(1);}
case OTHER: printf("illegal character.\n"); exit(1);
}
token = gettoken();
}
if (sp == 0) printf("% 10d\n",pop());
else {printf("expressionsyntax error.\n"); exit(1);}
}
長々と申し訳ありません。もしよろしければ、ご教授ください。
0940-939
2007/05/25(金) 03:45:36このプログラムは、後置式の四則演算のプログラムなのですが、
数値入力後、EOFを入力しても、演算を開始してくれないのです。
例:
6 3 /^Z
と入力しても何も発生しないのです。よろしくお願いいたします。
0941-939
2007/05/25(金) 03:48:320942デフォルトの名無しさん
2007/05/25(金) 03:50:48たぶんスレ違い。宿題なんだろうけど。
0943デフォルトの名無しさん
2007/05/25(金) 03:58:28んで、いきなり>>375!?もうわけわかめ。
0944デフォルトの名無しさん
2007/05/25(金) 05:20:40>>892 は問題の解釈を間違ってた
やっぱり英語ができないといけないな
0945デフォルトの名無しさん
2007/05/25(金) 05:20:540946デフォルトの名無しさん
2007/05/25(金) 05:37:17とりあえずpush(..)2行目の
stack[sp++] = x;
は
stack[++sp] = x;
だろうな
あとは知らね
0947デフォルトの名無しさん
2007/05/25(金) 05:57:03[1] 授業単元:ネットワーク系プログラミング
[2] 問題文(含コード&リンク):
[2.1] コマンドラインから指定したテキストを標準出力に表示するプログラム
[2.2] コマンドラインで指定した任意のファイルの内容を16進数で標準出力にダンプするプログラム
条件:Usage 処理、エラー処理
[2.2]は、1行に16バイト相当のデータ表示をし、各行は、先頭アドレス(何バイト目のデータか)を
8桁の16進数で表示し、続いて各バイトのデータをスペースで区切りながら2桁の16進数表記で、さら
に英数字記号等1バイトで表示可能なものはそのキャラクタを、表示できないものは「.」ピリオドで表示する。
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc (ver不明)
[3.3] 言語: C
[4] 期限: [2007年05月26日18:00まで]
[5] その他の制限: 無しだと思います。
朝までやってもダメでした…。
よろしくお願いします。
0948デフォルトの名無しさん
2007/05/25(金) 06:00:280949デフォルトの名無しさん
2007/05/25(金) 06:08:50条件後出しされてもなー
0950デフォルトの名無しさん
2007/05/25(金) 06:22:46まぁ、あとはそれをコマンドライン入力からファイルを指定する形に持ち込めば出来るが・・・
やっぱここは、俺が出るべきか?さっき妙ちくりんなババ抜きを2,3時間ほど考えて
きんもぉ〜☆なソースで提示したばかりでつw
0951デフォルトの名無しさん
2007/05/25(金) 06:43:552.2だけでいいんだよな
#include <stdio.h>
#include <ctype.h>
#define BUF_SIZE 16
char letters[] = "0123456789ABCDEF";
int main(int argc, char *argv[]) {
int i, len, num=0;
unsigned char buf[BUF_SIZE];
if (argc < 2) { printf("no file is given\n"); return; }
FILE *in = fopen(argv[1], "rb");
if (!in) { printf("failed in opening file\n"); return; }
while (len = fread(buf, 1, BUF_SIZE, in)) {
printf("%8X ", num);
num+=len;
for (i=0; i<BUF_SIZE; i++) {
if (i>=len) printf("--");
else printf("%c%c", letters[buf[i]/16], letters[buf[i]%16]);
printf("%s", i==BUF_SIZE-1? " ":" ");
}
for (i=0; i<len; i++) putchar(isprint(buf[i])? buf[i]:'.');
putchar('\n');
}
}
0952951
2007/05/25(金) 06:48:54returnがなにも返してない
一応修正しといて
0953デフォルトの名無しさん
2007/05/25(金) 06:58:01# include <stdio.h>
#define N 7
void swap(int *a, int *b){
int c;
c=*a;*a=*b;*b=c;
}
int main(void){
int value[N][N]={{0}}, width[N], i, j;
char tmp[20];
// パスカルの三角形を計算する(左詰)
for(i=0;i<N;i++){
value[i][0]=1;
for(j=1;j<=i;j++) value[i][j]=value[i-1][j-1]+value[i-1][j];
}
// パスカルの三角形を右詰にする
for(i=0;i<N;i++)
for(j=0;j<N/2;j++) swap(&value[i][j], &value[i][N-1-j]);
// それぞれの項の表示に必要な幅を計算する
for(i=0;i<N;i++) width[i]=sprintf(tmp, "%d", value[N-1][i]);
// 表示
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(value[i][j]!=0) printf(" %*d", width[j], value[i][j]);
else printf(" %*s", width[j], "");
}
printf("\n");
}
return 0;
}
0954デフォルトの名無しさん
2007/05/25(金) 07:06:03http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4055.c
0955デフォルトの名無しさん
2007/05/25(金) 07:19:01>>929
>>938
ありがとうございました!
0956次スレテンプレ
2007/05/25(金) 08:29:48【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 87代目
http://pc11.2ch.net/test/read.cgi/tech/1179025919/
0957デフォルトの名無しさん
2007/05/25(金) 08:34:42言いだしっぺの法則はなしな。
0958デフォルトの名無しさん
2007/05/25(金) 08:37:140959デフォルトの名無しさん
2007/05/25(金) 08:38:40[2] 問題文(含コード&リンク):
以下のような括弧付き中記記法の数式を入力とし,次のようなプログラムを作成し,実行例を
示せ.
(((3 ∗ 2) − (4 ∗ (5 − 1))) ∗ (6 ∗ 8))
1. 後置記法(逆ポーランド記法,例は以下) を出力するプログラム.ただし,入力となる数字は一桁としてよい.
32 ∗ 451−∗−68 ∗ ∗
2. 計算結果を出力するプログラム.ただし,入力となる数字は一桁としてよい.
3. 2 の計算結果を出力するプログラムを拡張せよ.例えば入力の数字の桁数を増やす,前置記法も出力する,冗長なかっこがなくても計算できるようにするetc...
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007/05/26
[5] その他の制限: ポーランドまで
0960デフォルトの名無しさん
2007/05/25(金) 08:40:370961デフォルトの名無しさん
2007/05/25(金) 08:44:260962デフォルトの名無しさん
2007/05/25(金) 08:44:290963デフォルトの名無しさん
2007/05/25(金) 08:53:550964デフォルトの名無しさん
2007/05/25(金) 08:58:18>>958
すまん、一応ごく稀に更新はしているが、
あまり真剣にまとめてない・・・もっと努力する
0965デフォルトの名無しさん
2007/05/25(金) 08:59:010966デフォルトの名無しさん
2007/05/25(金) 09:01:280967デフォルトの名無しさん
2007/05/25(金) 09:03:31かといって英語が得意なわけでもない。けど、ソースをそのまま載せるのは簡単でそ?
0968デフォルトの名無しさん
2007/05/25(金) 09:21:150969デフォルトの名無しさん
2007/05/25(金) 09:33:24getline()は例題と同じもので。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char line[0x2000];
int i, len, state;
enum { NONE = 0, IN_TAG = 1, IN_BLANK = 2 };
while ((len = getline(line, sizeof line)) > 0) {
for (i = 0; i < len; ++i) {
unsigned char c = (unsigned char)line[i];
if (state == IN_TAG) {
if (c == '>') state = NONE;
} else if (c == '<') {
state = IN_TAG;
} else if (isspace(c)) {
if (state != IN_BLANK) putchar(c);
state = IN_BLANK;
} else {
state = NONE;
putchar(c);
}
}
}
return 0;
}
0970デフォルトの名無しさん
2007/05/25(金) 10:52:19wikiはsandboxとか適当な凍結されてないページを「編集」して、
その結果とレイアウト後のページを見比べれば、
大体何やれば表示できるか解る
あと大抵は文法説明のページが存在する
日本語不自由でもこの板に居る以上なんか言語使えるんだろ?
だったら問題ねーよw
0971デフォルトの名無しさん
2007/05/25(金) 10:56:280972908
2007/05/25(金) 12:23:38お速い解答ありがとうございますm(_ _)m
0973デフォルトの名無しさん
2007/05/25(金) 12:44:29大変ありがたいんですが、swapを使わないで右詰にする方法はありますでしょうか?
0974デフォルトの名無しさん
2007/05/25(金) 13:17:470975デフォルトの名無しさん
2007/05/25(金) 14:13:340976デフォルトの名無しさん
2007/05/25(金) 14:18:05C/C++の宿題を片付けます 88代目
ttp://pc11.2ch.net/test/read.cgi/tech/1180070116/
0977デフォルトの名無しさん
2007/05/25(金) 17:13:01次スレ立て乙
0978デフォルトの名無しさん
2007/05/25(金) 18:49:47理解できました。ありがとうございました
0979和田っちあっちゃん
2007/05/25(金) 20:03:54[2] 問題文(含コード&リンク):
<条件>
・ビリヤード台がおいてある
・台の左下端の座標は(0,0)、右上端の座標は(2,1)とする
・位置(x0、y0)に手玉
・手玉の初速度(v0x,v0y)
・手玉の位置、初速度はscanfをつかって入力する
<問題>
・手玉はどこに衝突するか?
・衝突位置の座標を表示する
・ポケットにおちることは考えなくてもよい
・手玉の大きさ、摩擦等は考えない
・20回のバンクを考慮して21カ所解答
[3] 環境
C言語で
[4] 期限: [2007年6月1日まで]
[5] その他の制限: if,while,for構文まで
おねがいします。。
0980デフォルトの名無しさん
2007/05/25(金) 20:42:26マルチは良くない。
0981デフォルトの名無しさん
2007/05/25(金) 20:43:170982デフォルトの名無しさん
2007/05/25(金) 20:48:530983デフォルトの名無しさん
2007/05/25(金) 21:33:170984デフォルトの名無しさん
2007/05/25(金) 22:22:19[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4060.txt
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5月27日
[5] その他の制限: なし
よろしくお願いします。
0985デフォルトの名無しさん
2007/05/25(金) 22:29:09>そこでdata1〜6までのファイルを一度に読み込んで一括で結果を表示するものにしたいのです。
微妙に方向が間違ってる
今のmainを単なる「一つのファイルを読み込んで結果を得る関数」にして、
それを呼びだす上位の関数を作成し、これをmainにすればよい
全てのファイルについて、呼出と結果取得を行い、
この結果を表示すれば、「全ファイルを一度に読む」なんてしなくても、
現状の流用で解決可能だ
0986デフォルトの名無しさん
2007/05/25(金) 23:13:43完全弾性衝突?
0987デフォルトの名無しさん
2007/05/26(土) 01:11:40無事に解決しました。ありがとうございました。
0988デフォルトの名無しさん
2007/05/26(土) 10:56:560989デフォルトの名無しさん
2007/05/26(土) 11:53:19スレが終る前に、未解決問題さがしてやろうと思ったけど
探すのマンドクセ〜
0991デフォルトの名無しさん
2007/05/26(土) 12:33:50>>887は次スレで解決してるみたいだな
0992デフォルトの名無しさん
2007/05/26(土) 12:42:030993デフォルトの名無しさん
2007/05/26(土) 13:05:26#include<stdio.h>
double f_internal(int a, int b, int c, double x, int is_init){
static int sa, sb, sc; // a, b, c を外部変数にするべきかな?
if(is_init){sa=a;sb=b;sc=c;}
return sa*x*x+sb*x+sc;
}
void f_init(int a, int b, int c){f_internal(a, b, c, 0, 1);}
double f(double x){return f_internal(0, 0, 0, x, 0);}
int main(void){
int a, b, c;
double x1, x2, xx, xmin, xmax, ymin, ymax;
printf("\nInput value of a, b, c : ");
scanf("%d %d %d", &a, &b, &c);
printf("\nInput value of x1, x2 : ");
scanf("%lf %lf", &x1, &x2);
if(x1>x2){xx=x1;x1=x2;x2=xx;}
f_init(a, b, c);
xx=(a!=0)?(double)-b/(2*a):x1; // y'=2*a*x+b -> x=-b/(2*a) の時,極値をとる
if(xx<x1) xx=x1;
if(xx>x2) xx=x2;
xmax=xmin=x1;
ymax=ymin=f(x1);
if(ymax<f(xx)){ymax=f(xx);xmax=xx;}
if(ymin>f(xx)){ymin=f(xx);xmin=xx;}
if(ymax<f(x2)){ymax=f(x2);xmax=x2;}
if(ymin>f(x2)){ymin=f(x2);xmin=x2;}
printf("maximum : x=%g y=%g\n", xmax, ymax);
printf("minimum : x=%g y=%g\n", xmin, ymin);
return 0;
}
0994デフォルトの名無しさん
2007/05/26(土) 16:27:34もうダメポ、cygwinがご機嫌斜めだし、難しくて頭が爆発しそう。
乗算合同法のパラメタとか適当、未完成だが勿体無いので上げとく
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4068.c
>>990
Thx
0995tomcat
2007/05/26(土) 17:00:47*それはどの様な条件なのか????????
int func_A(int x, int a[], unsigned int c, unsigned int d)
{
unsigned int m;
while (c < d) {
m = (c + d) >> 1;
if (a[m] >= x) d = m;
else c = m + 1;
}
if (a[c] == x) return c;
return 0;
}
0996デフォルトの名無しさん
2007/05/26(土) 17:40:16問題の意味を取り違えてるかも知れないが一応うp
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4070.c
0997デフォルトの名無しさん
2007/05/26(土) 17:54:01何を不明瞭な値というのかが分からないんだが…
「二分探索がうまくいかないよー」というのであれば
検索元のデータがソート済みで無いか
引数のcまたはdが配列の範囲を超えてるとか
そういうこと?
0998デフォルトの名無しさん
2007/05/26(土) 17:59:57c==0 で x が見つからなかった時
0 を返すから見つかったのかどうか分からないってこと?
0999デフォルトの名無しさん
2007/05/26(土) 20:04:27C/C++の宿題を片付けます 88代目
http://pc11.2ch.net/test/read.cgi/tech/1180070116/
1000デフォルトの名無しさん
2007/05/26(土) 21:04:1810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。