どこかで誰かがC/C++の宿題を片付けます 38代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
・複雑なAAはスレが荒れたり問題が埋もれる原因になりますので使用を控えてください。
―――――――――――――――――――――――――――――――
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
【アップローダー】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【歴代スレは>>1-10辺り】
37代目: http://pc5.2ch.net/test/read.cgi/tech/1103913840/
36代目: http://pc5.2ch.net/test/read.cgi/tech/1102753497/
35代目: http://pc5.2ch.net/test/read.cgi/tech/1101568895/
34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
0002デフォルトの名無しさん
NGNG27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
1代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
0003デフォルトの名無しさん
NGNG乙
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNG立てたら前スレに報告しろよボケ
0008デフォルトの名無しさん
NGNG乙
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク): アセンブラを作成せよ。
もしソースファイル(アセンブリ言語で書かれた)にエラーが
あればエラーを表示する。規格はISO-C89
[3] 環境
[3.1] OS: Vine Linux
[3.2] コンパイラ(バージョン): gcc 3.3.2
[3.3] 言語:C
[4] 期限:2005年01月18日まで
[5] その他の制限:どのように書いたら良いかわかりません。コーディング
の方針を示して頂けるだけでもうれしいです。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGC言語でアセンブラの構文チェッカ作れって事だろ?
0014デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク): スロットマシーンを作るプログラムです。
・数字+Enterキーの入力をきっかけに乱数を発生し、0 から 9 までの数値を形成する
・これを三回繰り返し、得られた数字の並び方で点数を付ける
・三回とも同じなら 10 点、二個同じなら 2 点、並び順なら 5 点を与える
・これを十回繰り返して、合計を表示する
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ(バージョン): 大学のコンピュータのため分かりません
[3.3] 言語:C言語
[4] 期限:2005年1月14日15:00まで
[5] その他の制限: 大学でヒントが出たので書きます。
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
void main (void)
{ /* rand()は0〜32767 の乱数を発生 */
srand((unsigned)time(NULL) % RAND_MAX); /* 時刻を基に乱数の初期値を設定 */
int intRandomNumber = rand() % 10 ; /* 10で割った余り:0〜9の整数を決定 */
printf(" intRandomNumber= %d \n",intRandomNumber);
}
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGごめんなさい。
提出明日までなので何とかお願いします。
0017デフォルトの名無しさん
NGNGその〆切時刻に大学に入れるのか?
センター試験の準備でもやってるんじゃないの?
午前中に出しとけよ。
0018デフォルトの名無しさん
NGNGアセンブラ、とだけ言われても作りようがないよ…
命令セットとレジスタの構成がないと。
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGclass a{ static map<char,char> m; };
map<char,char> a::m;
a::m.insert(map<char,char>::value_type('a','b'));
a::mに前もって('a','b')を入れておきたいのですが、
上のようにするとエラーが出てしまいます。
どうすればよいか教えてください。お願いします。
0021デフォルトの名無しさん
NGNGgccではなくldでほげして
実行ファイルにするには
どうほげるといいでsか??
$ cc -S test2.c -o test2.S
$ as test2.S -o test2.o
$ ld -o test2 test2.o /usr/lib/crt1.o /usr/lib/crti.o -lc
$ ./test2
bash: ./test2: No such file or directory
test2 ↓
00000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 03 00 01 00 00 00 c4 82 04 08 34 00 00 00 |............4...|
00000020 f8 1a 00 00 00 00 00 00 34 00 20 00 07 00 28 00 |........4. ...(.|
00000030 1d 00 1a 00 06 00 00 00 34 00 00 00 34 80 04 08 |........4...4...|
00000040 34 80 04 08 e0 00 00 00 e0 00 00 00 05 00 00 00 |4...............|
0022デフォルトの名無しさん
NGNGおつ && おめ
0023デフォルトの名無しさん
NGNGttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/68.txt
素人がつくったので参考にでもなれば幸いです。
0024デフォルトの名無しさん
NGNG[2] 問題文:個人情報を表示させる構造文です。
[3] 言語:C言語
[4] 期限:2005年1月15日
名前と住所欄が上手く表示されなくて困っています。
何処を修正すれば良いか教えてもらえれば幸いです。
#include<stdio.h>
main()
{
struct person{
char name[20];
int birth;
char add[50];
char tel[12];
};
struct person *ps = {"GIKO",20050114,"2ch","012-345-6789"};
ps=prsn_data;
printf("名前>誕生日>住所>電話番号>\n");
scanf("%s %ld %s %s", &prsn_data.name, &prsn_data.birth, &prsn_data.add, &prsn_data.tel);
printf("\n 名前 誕生日 住所 住所\n");
printf("%10.10s %11.8ld %-30.30s %-10.10s %3c",prsn_data.name, prsn_data.birth,prsn_data.add, prsn_data.tel);
printf("\n");
}
0025デフォルトの名無しさん
NGNGどうしたいのか分からん。
0026デフォルトの名無しさん
NGNG表示される以前にエラーだらけだろが。
0027デフォルトの名無しさん
NGNGstruct person *ps = {"GIKO",20050114,"2ch","012-345-6789"};
だとpsが指すのは定数。値の変更した場合の動作は不定。
0028デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク): 構造体を使った単方向リスト構造で、リストをソートする関数を作りソートする。
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ(バージョン): windowsのC/C++両方使えるソフトだったかと・・・
[3.3] 言語:C言語
[4] 期限:2005年1月15日の昼間でです。
構造体のメンバは自由で、それぞれのメンバを乱数で入力し、ユーザがレコード数を入力して
その数だけレコード作ってリスト化します。で、動的にメモリを確保するのではなく、あらかじめメモリを作っておいて、
それを使うやつです。で、リストを昇順か降順にソートするための関数を作ります。ソート方法はなんでもいいらしいです。
で、そのソート関数を使って、ソートして、あとはそれらを表示するだけです。
0029デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク): 化学反応のサンプリング(反応量の平均と分散を求める)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ(バージョン): GCC
[3.3] 言語:C言語
[4] 期限:2005年1月20日
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=25
お願いします。
0030デフォルトの名無しさん
NGNGstruct person prsn_data;が抜けてるんじゃないか
.name, .add, .telはアドレスだからscanfに&をつけて渡すのは変だぞ
0031デフォルトの名無しさん
NGNGなんか意味わかんない課題だなあ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/70.txt
0032デフォルトの名無しさん
NGNGやってることが不明瞭なので平均・分散を求める部分だけ
double m=0,m2=0,sigma;
for(i=0;i<maxCount;i++){
C=g(x,y,z);// for(0<j<loop){〜}の部分を関数化したもの
m+=C;
m2+=C*C;
}
m/=maxCount;
sigma=m2/n-m*m;
printf("平均 = %f , 分散 = %f\n",m,sigma);
この辺は習ってる?
平均 : Σ(x[i]-m) /n
分散 : Σ(x[i]-m)^2 /n
=Σ(x[i]^2-2mx[i]+m^2) /n
=Σ(x[i]^2) /n-m^2
0033デフォルトの名無しさん
NGNG平均m=(Σx[i])/n
分散σ=[Σ(x[i]-m)^2]/n
=[Σ(x[i]^2-2mx[i]+m^2)]/n
=[Σ(x[i]^2)]/n-m^2
0034デフォルトの名無しさん
NGNG単方向リストですよ。課題は。(知ってて作ってたらスマン)
まあ、俺も、構造体のリストを作っておきながら、静的確保する点と、
単方向リストでソートが嫌になったクチなのですが。
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGclass a{};
map<char,char> a::m;
はグローバルスコープで宣言してるか?
あと、mはpublicメンバじゃないと外からアクセスできない
003720
NGNG>class a{};
>map<char,char> a::m;
>はグローバルスコープで宣言してるか?
はい。
class a{static int i;};
int a::i = 10;
例えばintだったら、上のようにして前もって10を入れておくことが
できるようなのですが、なぜmapではうまくいかないのでしょうか?
0038デフォルトの名無しさん
NGNGclass a{
public: // これ
static map<char,char> m;
};
0039デフォルトの名無しさん
NGNGできればprivateのままにしておきたいのですが・・。
0040デフォルトの名無しさん
NGNGクラス内固定ならできるけど?
#include <map>
using namespace std;
class a{
static map<char,char> m;
public:
a(){
a::m.insert(map<char,char>::value_type('a','b'));
}
};
map<char,char> a::m;
int main()
{
return 0;
}
0041デフォルトの名無しさん
NGNGありがとうございました。40の方法を使わせていただきます。
0042デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):
二分探索木への追加と表示をおこなうプログラム(tree.c)を配布しています。
rfileA.txt にあるデータを順番に読み込んで,
二分探索木を作成し,rfileB.txt にあるデータを削除した結果を
ファイル(result.txt)に出力するプログラムを作成しなさい。
その際,削除をおこなう関数を作成すること。
注意点 : rfileB.txt のデータを rfileA.txt から削除するのではなく,
rfileA.txt のデータで木構造を作成してから rfileB.txt のデータを
木構造から削除するようにすること。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ(バージョン): わかりませんけど、VS.net2003使ってます
[3.3] 言語:C
[4] 期限:1月25日
3つのファイル詰め合わせです
ttp://hibinoccc.s7.x-beat.com/up/img/1081.zip
よろしくおねがいします
004342
NGNGtree.cはrfileAを読みこんで表示までは完了しています
0044デフォルトの名無しさん
NGNG関数の外には式文(この場合a::m.insert()の呼び出し)は書けないから直接コンストラクタで初期化しろ。
#include <map>
#include <utility>
namespace {
std::map<char, char>::value_type m_initializer[] = {
std::make_pair('a', 'b'),
};
}
std::map<char, char> a::m(m_initializer, m_initializer + sizeof m_initializer / sizeof m_initializer[0]);
0045デフォルトの名無しさん
NGNGたすえkて
0046デフォルトの名無しさん
NGNG――【注意点】―――――――――――――――――――――――――
・質問は必ず【質問テンプレ】に従ってください。
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
0047デフォルトの名無しさん
NGNGint main(void)
{
int a;
fscanf(stdin,"数字を入れろ\n",&a);
printf("合計:%d 最大:%d 最小:%d 平均:%d\n",a,a,a,a)
return 0;
}
指定が全然ないみたいだし、数値が1個の場合しか考えないものでもいいんだよな
0048デフォルトの名無しさん
NGNGgcc -Wall hoge.c
hoge.c: 関数 `main' 内:
hoge.c:4: 警告: implicit declaration of function `fscanf'
hoge.c:4: error: `stdin' undeclared (first use in this function)
hoge.c:4: error: (Each undeclared identifier is reported only once
hoge.c:4: error: for each function it appears in.)
hoge.c:4: 警告: フォーマットへの引数が多すぎます
hoge.c:5: 警告: implicit declaration of function `printf'
hoge.c:6: error: 文法エラー before "return"
0049デフォルトの名無しさん
NGNGint main(void)
{
int a;
printf(,"数字を入れろ\n");
fscanf(stdin,&a);
printf("合計:%d 最大:%d 最小:%d 平均:%d\n",a,a,a,a);
return 0;
}
0050デフォルトの名無しさん
NGNG% gcc -Wall hoge.c
hoge.c: 関数 `main' 内:
hoge.c:5: error: 文法エラー before ',' token
hoge.c:6: 警告: 互換性のないポインタ型からの引数 2 個の `fscanf' を渡しますです
0051デフォルトの名無しさん
NGNGint main(void)
{
int a;
printf(,"数字を入れろ\n");
fscanf(stdin,"%d",&a);
printf("合計:%d 最大:%d 最小:%d 平均:%d\n",a,a,a,a);
return 0;
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNGint main(void)
{
struct seiseki {
int bango;
int kokugo;
int suugaku;
int eigo;
};
struct seiseki a={101,85,92,79,0.0,' '};
struct seiseki b;
printf("bango=");
scanf("%d",&b.bango);
printf("kokugo=");
scanf("%d",&b.kokugo);
printf("suugaku=");
scanf("%d",&b.suugaku);
printf("eigo=");
scanf("%d",&b.eigo);
a.heikin=(a.kokugo+a.suugaku+a.eigo)/3.0;
b.heikin=(b.kokugo+b.suugaku+b.eigo)/3.0;
printf("bango heikin\n");
printf(" %3d %6.2f\n",a.bango,a.heikin);
printf(" %3d 6.2f\n",b.bango,b.heikin);
}
005554
NGNG・構造体のメンバに char hyouka;を追加し、平均点が80点以上なら'G',80点未満なら'F'を入れる
結果の表示にこれを追加する
・2人のデータa,bは初期値を設定し(hyoukaには' 'を入れておく)、3人目のデータ c はデータ b と番号
だけが異なるようにする(b全体をcに代入した後で、bangoのメンバだけべつのもとする)
bの点数は自由に決める
実行例
bango heikin hyouka
101 56.78 G
102 87.67 F
103 87.67 F
おねがいします
0056デフォルトの名無しさん
NGNGコンパイルできないし突込みどころ満載だぞ。
つーかほんとにこれを元にするのか?
0057前すれの962
NGNGいまいち使い方がわかりません。一例として、String a=”B0070” (16進法での表示です。)
をInt bにバイナリー形式で保存する手順を教えていただけませんか?
0058デフォルトの名無しさん
NGNG2バイト文字からだと難しいと思うが、1バイト文字の16進文字列からならstrtol()がこの場合ベストかな。
>Atoi と Scanf
そんなもんねぇぞ。
0059デフォルトの名無しさん
NGNG[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C言語
[4] 期限:2005年1月19日正午
アルゴリズムは以下のようにしたいです。お願いします。
1.c1をリストの一番目のセルを示すポインタとする。
2.c2をリストの0番目のセルを示すポインタとする。
3.c2=c1 となるか、c2の次のセルの値>c1の次のセルの値となるまでc2を次のセルへと移動
4.c2=c1ならc1をひとつ右に移動、c2=c1でなければc1の次のセルをc2の後ろに挿入
5.c1 リスト末尾となるまで2.3.4.を繰り返す。
0060前すれの962
NGNG1バイト文字で大丈夫です。
Strtol()を使って、16進法の文字列を10進法のLongに変換できる
という事はわかったのですが、10進法のLongを さらに2進法に
変換するには どうしたらよいのでしょうか? 出来れば、Long値で
得たいのですが。
0061デフォルトの名無しさん
NGNGLongに2進法も10進法もない。
数値を文字列で表そうとするときに「N進法で表す」ということになるんだから。
0062前すれの962
NGNG何から何まで聞いてしまって お恥ずかしいのですが、
Longについていくら調べても詳しいスペックが全然見つからないので、
特性や、それに関するファンクション等を(もしくは、そういった内容のサイト)
教えていただけませんか?
すいませんが、よろしくおねがいします。。
0063デフォルトの名無しさん
NGNGintとlongの間違いだろう?
0064デフォルトの名無しさん
NGNG#define HASALLBITS(num,bits) (((num)&(bits))==(bits))
#define HASBITAT(num,i) (((num)>>(i))&1)
0065デフォルトの名無しさん
NGNGvoid Hoge(char*) {
}
のような関数があったのですが、引数に型はあるのに、変数がないんです。
これはどういう意味なんでしょうか?
どのような目的があるのでしょうか?
0066前すれの962
NGNGString a=”C3”(16進法) を Int b=11000011 (2進法)
に変換したいのです。これをするのに、手順としては どのようにしたらよいのでしょうか。。。
0067デフォルトの名無しさん
NGNGコンピュータなんだから全部2進数に決まってるだろう。それを表示するときに、
コンピュータが10進数として表示しているだけのこと。
0068デフォルトの名無しさん
NGNG仮引数を省略すると、コンパイラは仮引数未使用の警告を出さない。
0069デフォルトの名無しさん
NGNGマスク使って素直に1ビットずつ調べれ。
0070デフォルトの名無しさん
NGNG聞くことも恥ずかしいなら、指摘されたことを直そうとしないことはもっと恥ずかしい。
いい加減、頭字化するのやめろよ。
0071デフォルトの名無しさん
NGNG全角と半角を混ぜて書くのは止めましょう。
プログラマや特にここの住人にとっては、頭がくらくらしてきます。
なのでまともに相手してもらえなくなりますよ。
ところであなたは頭の中身がC言語していないようです。
つまりこんぴゅーたというものがわかってないようです。
アセンブラでも少し勉強するとよいかもしれません。
0072デフォルトの名無しさん
NGNG効果は>>68のとおり
要らないものがなぜ書いてあるかというと、
C++のtemplateで型を解決するためにダミーとして渡してる。とか
歴史的経緯、つまり昔使ってたが要らなくなった。とか
あたりかな?
0073デフォルトの名無しさん
NGNGvoid print_bits(long n, int cnt)
{
if(cnt>=0)while(--cnt){
putchar('0'+((n>>cnt)&1));
}
}
0074デフォルトの名無しさん
NGNG誤)cnt>=0
正)cnt>0
0075ハニワ
NGNG[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm にハニワで載せています。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Windowsのc++
[3.3] 言語:C++でお願いします。
[4] 期限:2005年1月17日8:00までで、お願いします。
007642
NGNG0077デフォルトの名無しさん
NGNGGDIで幾何とかやりたくね。OpenGLじゃダメなのか?
0078デフォルトの名無しさん
NGNGintやlongには「数値」が入っている。数値は数値であり、それ以上でもそれ以下でもない。
それを人間が理解するために文字で表すときに初めてN進法という考えが出てくる。
N進法というのは文字で数値を表すための存在だから、当然文字や文字列を格納する型(char*やstring)の中にしか存在しない。
んで答え。例えばこんな感じ。
#include <bitset>
#include <climits>
#include <cstdlib>
#include <string>
using std::string;
string hex = "C3";
string bin = std::bitset<sizeof (unsigned long) * CHAR_BITS>(std::strtoul(hex.c_str(), NULL, 16)).to_string();
008042
NGNG感動した
008154
NGNGint main(void)
{
struct seiseki {
int bango;
int kokugo;
int suugaku;
int eigo;
float heikin;
};
struct seiseki a={101,85,92,79,0.0,};
struct seiseki b;
printf("bango=");
scanf("%d",&b.bango);
printf("kokugo=");
scanf("%d",&b.kokugo);
printf("suugaku=");
scanf("%d",&b.suugaku);
printf("eigo=");
scanf("%d",&b.eigo);
a.heikin=(a.kokugo+a.suugaku+a.eigo)/3.0;
b.heikin=(b.kokugo+b.suugaku+b.eigo)/3.0;
printf("bango heikin\n");
printf(" %3d %6.2f\n",a.bango,a.heikin);
printf(" %3d %6.2f\n",b.bango,b.heikin);
}
これです。おねがいします
0082デフォルトの名無しさん
NGNG0083>>54様へ
NGNG#include <stdio.h>
int main(void)
{
struct seiseki {
int bango;
int kokugo;
int suugaku;
int eigo;
double heikin;
char hyouka; /*評価*/
};
struct seiseki a={101,85,92,79,0.0,};
struct seiseki b,c;
printf("bango="); scanf("%d",&b.bango);
printf("kokugo=");scanf("%d",&b.kokugo);
printf("suugaku=");scanf("%d",&b.suugaku);
printf("eigo=");scanf("%d",&b.eigo);
a.heikin=((double)a.kokugo + (double)a.suugaku + (double)a.eigo)/3.0;
b.heikin=((double)b.kokugo + (double)b.suugaku + (double)b.eigo)/3.0;
if(a.heikin >= 80.0) a.hyouka = 'G';
else a.hyouka = 'F';
if(b.heikin >= 80.0)b.hyouka = 'G';
else b.hyouka = 'F';
c.bango = b.bango+1; c.kokugo = b.kokugo; c.suugaku = b.suugaku;
c.eigo = b.eigo; c.heikin = b.heikin; c.hyouka = b.hyouka;
printf("bango heikin hyouka\n");
printf(" %3d %6.2lf %c\n",a.bango,a.heikin, a.hyouka);
printf(" %3d %6.2lf %c\n",b.bango,b.heikin, b.hyouka);
printf(" %3d %6.2lf %c\n",c.bango,c.heikin, c.hyouka);
return 0;
}
0084デフォルトの名無しさん
NGNGss[0] = "hoge1\thoge1\n";
の時って
ss[0][4]
には
"\t"(タブ文字?)
が入ってるんですよね?
これを
","(カンマ)
"\0"(NULL)
などに変更したいときってどうやるんですか?
sprintfを使って入れ替えれるつもりだったんですが
コンパイルしたら、32 bitがどうとかの
ワーニングが返ってきたんですが…
(学校でやったので、今エラーメッセージが分からないです。すみません)
よろしくお願いします。
0085前すれの962
NGNGとなると、longをintに変換する必要がでてくるのですが(C++です)、
調べてみたところlongを decimalやfloat等に変換はできるようなのですが、
intへの変換法が見あたりません。 変換は可能なのでしょうか?
0086デフォルトの名無しさん
NGNGとりあえず>>1のテンプレ読みなされ。
0087デフォルトの名無しさん
NGNGお前はまだ勘違いをしている
もうちょっと勉強しなおしてこい
0088前すれの962
NGNG扱う型という認識だけでは間違いでしょうか?たとえば
intをパラメーターに取るファンクションにlong値は渡せませんよね?
となると、こういった場合、longからintへの変換は必要ないのでしょうか?
0089デフォルトの名無しさん
NGNGただしint <= longは保証されてるんじゃなかったかな
0090デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):
csvファイル(タブ区切り)からfgetsを使って1行読込み、
先頭から「一文字づつ」"\t"を検索していって\tじゃなければ、
変数1に格納。\tだったら、その次の文字から変数2に格納していき、
最後の改行コード"\n"が来たら次の行をfgetsしていく処理キボンヌ。
"hoge1\thoge2\n"
という文字列があったら
hoge1は変数1へ、hoge2は変数2へ格納したいのです。
strtokは使わないと言う事になってます…
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ(バージョン): 今わかんね。
[3.3] 言語:C
[4] 期限:明日の午後に1回目の打ち合わせがあるので…
[5] その他の制限: ないっす。
0091デフォルトの名無しさん
NGNG仕様ではintは16ビット以上、longは32ビット以上としか決められてない。
あと数値型は基本的に勝手に変換されるが、切り詰められても文句は言えない。
つーか、おまいさん教科書よく読みなおした方がいいと思うぞ。
0092デフォルトの名無しさん
NGNG卒研なのに制限もあるのか…
0093デフォルトの名無しさん
NGNGソースを見せてもらえれば分かるんだが
009490っす
NGNG文献の発行年数と作者が、タブ区切りで1行づつまとめてある
最低でも5行以上あるcsvファイルをいくつも読み込んで
入力した作者名と一致する行の発行年数を取得してきて
別のカンマ区切りのcsvファイルを作るプログラムを
卒研で使用するため、プレ卒研(3年)で作ろうという事になりました。
自分、心理学を専攻してまして、パソコンとかプログラムとかサパーリで…
ポインタとか2次元配列とかムリポ。
009590っす
NGNGあ、ですよねw
いまフロッピー取ってきます。
0096デフォルトの名無しさん
NGNGおらおらまだかー!!
ねむいぜっ
0097デフォルトの名無しさん
NGNGうーん、なにをしたいのかよくわからんけど、こんな感じ?
p = ss[0];
while (p = strchr(p, '\t'))
*p = '\0';
0098デフォルトの名無しさん
NGNGイイヨイイヨー
0099デフォルトの名無しさん
NGNG読み込むファイルはどうやって指定するのじゃ?
コマンドラインでスペース区切り指定した複数ファイルを開くようにするぞ?
0100デフォルトの名無しさん
NGNGCじゃなきゃまずい理由でもあるのか?
010190っす
NGNG0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG宿題だから、「Cで作れ」って問題にPerlとかで書いていったら0点だろう。
0104前すれの962
NGNG結局longはintの代わりとして変換なしで使えるということですか?
切りつめられるリスクを背負うなら。そうだとしたら、普通に
longをintの代わりにパラメーターとしてファンクションに渡しても
オッケーということですよね?
0105デフォルトの名無しさん
NGNGもうおまえおこられてろよ
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNGお得意の心理学で、なんとか切り抜けろよ
0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNGmain(){
struct bunken{ char nensu[10]; char sakusya[40]; }a[20], *p=a;
char buf[256];
FILE *fp;
if( !(fp=fopen("file", "r")) ) return 0;
for(;fgets(buf,256,fp)!=NULL;p++) sscanf(buf,"%s\t%s",p->nensu,p->sakusya);
fclose(fp);
return !0;
}
0110前すれの962
NGNGC#を参考にしてしまいましたが。。
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/73.lzh
0113デフォ
NGNGパラレルポートのピン毎の信号読み込みって、
どうすればできますでしょうか?
[OS]Redhat Linux 8
[言語]C
0115デフォルトの名無しさん
NGNG全角スペースがある
0116デフォルトの名無しさん
NGNG全角空白が入ってる
0117デフォルトの名無しさん
NGNG↑
ここ
0118デフォルトの名無しさん
NGNGキャストするのが正解。
ただしなくてもコンパイラが適当にやってくれる。
long n = 12345678901234567890L;
static_cast<int>(n)
0119デフォルトの名無しさん
NGNGありがとう!!スレ落ちしてたので助かりました。
0120デフォルトの名無しさん
NGNGそのクラスをテストするメインプログラムを書け。
このクラスのprivateデータ:分子と分母は整数型の変数にする。
このクラスのオブジェクトが宣言されたときに初期化されるよう、
コンストラクタ関数を用意する。
初期値が与えられない場合はデフォルト値をセットすること。
コンストラクタは、分数を通分した形で格納しなければならない。
例えば、分数2/4の場合、分子は1、分母は2としてオブジェクト内に格納する。
また、次の2項演算子を多重定義すること。
(a)+演算子で2つの分数の加算を行う。結果は通分した形で保存すること。
(b)-演算子で2つの分数の減算を行う。結果は通分した形で保存すること。
(c)*演算子で2つの分数の乗算を行う。結果は通分した形で保存すること。
(d)/演算子で2つの分数の除算を行う。結果は通分した形で保存すること。
また、次のようなメンバ関数を定義すること。
(e)分数をa/bの形式でプリントする。ここでaは分子、bは分母。
(f)分数を浮動小数点形式でプリントする。
0121デフォルトの名無しさん
NGNG君、1年生でしょ。1年生のうちから2chで解答もらっているようじゃ、先が大変だよ。
がんばって自分で解いてみな。
0122デフォルトの名無しさん
NGNG012354
NGNGstruct seiseki b={102,45,67,89,0.0,};
初期値を設定するときに''が入ってないんですけどどこにいれればいいんですか?
012490っす
NGNG頑張って思い出しながら打ってたら、寝落ちしてました。
すみません。
一応、ツッコミどころ満載だとは思いますが
C言語全く知らない集団が1週間頑張って作ったものなので
「一週間でこの程度かよ」
って皆様のネタにしていただければ(゚д゚)ウマーです。
で、暇だったらついでに助けて。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/74.txt
0125デフォルトの名無しさん
NGNG名前欄に大文字の数字禁止。レス番号以外の文字禁止。リンクがたどりにくい。
0126デフォルトの名無しさん
NGNGC++は分からない。Cならできるが。
0127デフォルトの名無しさん
NGNG[2] 問題文:野球で打席数・安打数・四球数を入力し打率を求めるプログラムを作れ。
簡単のため四球・犠打・打撃妨害は無いものとし打率=安打数÷(打席数-四球数)で求まるものとする。
[3] 環境
[3.1] OS:Windows
[3.2] 言語:C
[4] 期限:2004/01/18まで
[5] その他の制限:
(1)打席数・安打数・四球数を入力して打率を返す。次の仕様の関数を作成せよ。
double ba(int ab , int h , int bb)
※BA:打率・AB:打数・H:安打・BB:四球
(2)ファイルから選手名・打席数・安打数・四球数を含むデータを読み込み、打率を加えたデータを出力するプログラムを作成せよ。
【動作例】
a.out input.txt
---input.txt---
Godzilla 672 174 88
Little 500 125 40
Ichiro 753 262 49
---出力---
Godzilla 672 174 88 0.298
Little 500 125 40 0.272
Ichiro 753 262 49 0.372
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG>>109にあるやつでいいじゃん
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <string>
#include <iterator>
struct CData {
std::string name ;
int ab, h, bb ;
} ;
double ba( int ab, int h, int bb )
{ return static_cast<double>( h ) / ( ab - bb ) ;}
std::istream& operator>>( std::istream& istr, CData& data )
{ return istr >> data.name >> data.ab >> data.h >> data.bb ;}
std::ostream& operator<<( std::ostream& ostr, const CData& data )
{
return ostr << data.name << " " << data.ab << " " << data.h << " "
<< data.bb << " " << ba( data.ab, data.h, data.bb ) ;
}
int main( int argc, const char* argv[] )
{
std::vector<CData> data ;
std::ifstream istr( argv[1] ) ;
data.assign( std::istream_iterator<CData>( istr ),std::istream_iterator<CData>() ) ;
std::copy( data.begin(), data.end(),
std::ostream_iterator<CData>( std::cout, "\n" ) ) ;
return 0 ;
}
0133132
NGNG0134デフォルトの名無しさん
NGNG0135132
NGNGそのままではかっこ悪いので久しぶりにC言語してみました。
#include <stdio.h>
#include <stdlib.h>
struct CData {
char name[256] ;//適当
int ab, h, bb ;
} ;
double ba( int ab, int h, int bb )
{ return (double)( h ) / ( ab - bb ) ;}
int read( FILE* ifile, struct CData* data )
{
return fscanf( ifile, "%s %d %d %d", data->name, &data->ab, &data->h, &data->bb ) == 4 ;
}
void write( FILE* ofile, struct CData* data )
{
fprintf( ofile, "%s %d %d %d %f\n", data->name, data->ab, data->h, data->bb, ba( data->ab, data->h, data->bb ) ) ;
}
int main( int argc, const char* argv[] )
{
struct CData data[256] ;//適当
FILE* ifile = fopen( argv[1], "r" ) ;
int num, i ;
for( num = 0 ; read( ifile, &data[num] ) ; num++ ) ;
for( i = 0 ; i < num ; i ++ ) write( stdout, &data[i] ) ;
return 0 ;
}
0136デフォルトの名無しさん
NGNG[2] 問題文:
(0,1)で一様分布する 変数xi から
標準正規分布する 変数yj をつくるには
次の式を用いる。
yj=Σ(i=1→12)xi-6.0
上の式を下に rand()を用いて
xiを 12000個発生させて 作成した
yjの分布を *を用いた棒グラフにせよ。ただし範囲は-5<y<5
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ(バージョン): wedit(LCC)
[3.3] 言語:C言語
[4] 期限:2005年 1月17日
[5] その他の制限:特にありません
0138デフォルトの名無しさん
NGNGyj=Σ(i=1→12)xi-6.0
ということは
-6<yj<6ってことで
範囲が-5<y<5なら
カウントしないものもでてくるのかな?
それとxiを 12000ってことはyjの個数は1000個ってことかな?
0139136
NGNGあ、すみません。
カウントはすべてします。
-5<y<5 ではなく
y<-5,-5≦y<4 のようにするんでした。すみません。
そして、xiは12000 なので yjは 1000個です。
0140デフォルトの名無しさん
NGNG手抜きRational。ただし君の要望はすべて満たしてある。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/75.txt
0141デフォルトの名無しさん
NGNG先を越された…
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/76.txt
せっかく作ったので。というか、いつもJava書いてるので、C++はいまいちだな…
(じゃあ解くなといわんでくれ)
0142デフォルトの名無しさん
NGNG[2]問題文:コンピュータと5回じゃんけんをして、何勝何敗何分か表示しろ
できれば勝率も表示
[3]環境
[3.1]OS:linux
[3.2]言語:C
[4]期限:2005/01/18
[5]その他の制限:特にありません
0143デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):二枚の画像(PGM,binary形式)を合わせた合成画像を作るプログラムを作成しなさい。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C言語
[4] 期限:2005年1月17日
[5] その他の制限:特にありません
0144デフォルトの名無しさん
NGNG「じゃんけんしましょ」
1:グー、2:チョキ、3:パー
どれにする?>2
COM:グー あなた:チョキ
★あなたの負け
0145デフォルトの名無しさん
NGNG合成といっても色々あるのだが。
0146デフォルトの名無しさん
NGNGすいません。説明不足で。pgmになっている二枚の画像のデータがとりあえず
足せて出力できれば最低限の課題になります。
リモートセンシングの講義の一端なので、二枚の画像データを使って
植生指数(NIR-RED)/(NIR+RED)の出力などを将来的にはするんだと思います。
0147ハニワ
NGNGなんとかGDIでお願いできないでしょうか?
0148ハニワ
NGNG誰か助けていただけないでしょうか?
明日までの提出なので。。
0149デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int cnt;int myHand,enemyHand;int winNum=0,loseNum=0,drawNum=0;srand((unsigned)time(NULL));
for(cnt=0;cnt<5;cnt++){
printf("グー:1 チョキ:2 パー:3\n");scanf("%d",&myHand);
enemyHand=(int)((double)((double)rand()/(double)RAND_MAX)*3.0)+1;
switch(myHand){
case 1:printf("(あなた)グー対");
switch(enemyHand){
case 1:printf("グー(敵)\n引き分け\n");drawNum++;break;
case 2:printf("チョキ(敵)\n勝ち\n");winNum++;break;
case 3:printf("パー(敵)\n負け\n");loseNum++;break;
}break;
case 2:printf("(あなた)チョキ対");
switch(enemyHand){
case 1:printf("グー(敵)\n負け\n");loseNum++;break;
case 2:printf("チョキ(敵)\n引き分け\n");drawNum++;break;
case 3:printf("パー(敵)\n勝ち\n");winNum++;break;
}break;
case 3:printf("(あなた)パー対");
switch(enemyHand){
case 1:printf("グー(敵)\n勝ち\n");winNum++;break;
case 2:printf("チョキ(敵)\n負け\n");loseNum++;break;
case 3: printf("パー(敵)\n引き分け\n");drawNum++;break;
}break;
default:cnt--;}}
if(winNum+loseNum!=0)printf("結果:勝ち%d,負け%d,分け%d,勝率%f\n",winNum,loseNum,drawNum,(double)winNum/(double)(winNum+loseNum));
else printf("結果:勝ち%d,負け%d,分け%d,勝率err\n",winNum,loseNum,drawNum);return 0;
}
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNGhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/78.txt
まちがってたらごめんね
0152151
NGNG# が一個で100カウント
$ が一個で50カウント
? が一個で10カウント
* が一個で1カウント
です。
0153デフォルトの名無しさん
NGNGこっちの方が簡単だよ〜(^^)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void){
int i,m,e,w[3]={0},j;
char h[][9] = {"グー","チョキ","パー","勝ち","負け","引き分け"};
srand((unsigned)time(0));
for(i=0;i<5;i++){
printf("%s:0 %s:1 %s:2\n",h,h+1,h+2);scanf("%d",&m);
++w[j=(m==(e=(double)rand()/RAND_MAX*3)?2:(m+1)%3==e?0:1)];
printf("YOU:%s,PC:%s,%s\n\n",h+m,h+e,h+j+3);
}
printf("%s:%d,%s:%d,%s:%d,勝率:%d%%",h+3,*w,h+4,w[1],h+5,w[2],*w*100/5);
return 0;
}
0154デフォルトの名無しさん
NGNGありがとうございますm(._.*)m
おかげで助かりました
0155デフォルトの名無しさん
NGNG[2]問題文:リスト構造へのレコード追加(構成、挿入)関数をもとに、レコードが昇順になるように登録される関数のプログラム
[3]環境
[3.1]OS:linux
[3.2]言語:C
[4]期限:2005/01/18
[5]その他の制限:構造体のメンバ構成や昇順機能の項目(メンバ)などは自由
0156デフォルトの名無しさん
NGNG頑張れ!
0157136
NGNG本当にありがとうございます!!!!(T▽T)♪
でも…
あの…ひらけません…
あれ、、、なんでだ?
0158デフォルトの名無しさん
NGNG俺の所は、課題発表されてから3時間以内にできなければ評価してもらえなかった
できなかった奴は次週までに提出で、未提出が2回あると不可確定
その分易しめの課題が多かったし、時間内に仕上げれば評価は緩かったけどな
0159デフォルトの名無しさん
NGNGhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
宿題はここに書けのスレの22番目のレスです。
0161157
NGNGありました!
こんなに丁寧にありがとうございます^^♪
これで 宿題が終わります。
ホントにありがとうございました!!
0162デフォルトの名無しさん
NGNG[2]問題文:疎行列を求めるプログラム及びそのプログラムに入力する疎行列を作成するプログラム
[3]環境
[3.1]OS:Solaris
[3.2]コンパイラ:GCC(バージョン不明)
[3.3]言語:C
[4]期限:2005/01/19
[5]その他の制限:データの入出力はファイルから(mallocを使用)。双方向リスト(線形探索、ソート)を使用。
3 3
1 0 0 入力するファイルの内容は左のようにする。
0 1 0
0 0 1
どうかよろしくお願いしますm(_ _)m
0163デフォルトの名無しさん
NGNGそのプログラムならここで聞くよりググったりアルゴリズムとデータ構造についての本を見た方が早いのでは?
すぐに見つかるし。
0164ハニワ
NGNG[2]問題文:立方体の描画(陰線処理)
[3]環境
[3.1]OS:Windos
[3.2]コンパイラ:
[3.3]言語:C++
[4]期限:2005/01/17
[5]その他の制限: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=71
のピラミッドの陰線処理のプログラムを書き換えて立方体を描画する。
016554
NGNGすいませんがもう一問おねがいします
>>54のプログラムを
・構造体のメンバから float heikin;を削除し、構造体の配列に5人分のデータを初期値として設定する。
・個人ごとの平均ではなく、科目ごとの平均をint型で求めて(小数部分切り捨て)個人データ
と同じ型の構造体に格納し(bangoは未使用)表示する
おねがいします
0167デフォルトの名無しさん
NGNG前に作ったやつ
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct field_tag{
char name[16];
struct field_tag *next;
} field;
void search_and_insert(field *dest, const field *src){
field *temp;
if (dest->next == NULL) {
dest->next = (field*)malloc(sizeof(field));
memcpy(dest->next, src, sizeof(field));
}
else if (!(strcmp(dest->next->name, src->name) < 0)) {
temp = (field*)malloc(sizeof(field));
memcpy(temp, src, sizeof(field));
temp->next = dest->next; dest->next = temp;
}
else search_and_insert(dest->next, src);
}
void free_all(field *ptr){if (ptr->next != NULL) free_all(ptr->next); free(ptr);}
int main(void){
field *root= (field*)malloc(sizeof(field)), *cur = root, temp;
memset(root, 0, sizeof(field)); temp.next = NULL;
while(scanf("%s", temp.name) != EOF){search_and_insert(cur, &temp); memset(&temp, 0, sizeof(field));}
cur = root;
while (cur != NULL){printf("%15s\n", cur->name); cur = cur->next;}
if (root != NULL) free_all(root);
return 0;
}
0168デフォルトの名無しさん
NGNGdouble age;
for(0<j<10){
age=(100/j);
sage=100;
for(0<i<10){
age=(100/j)*drand48();
sage=100*drand48();
func(x, y, z) //x,y,zの計算結果を返す関数
printf("%f, %f, %f\n", x, y, x); // x, y, zの値を表示
}
}
上記のプログラムはx,y,zをi回計算し、それをj組表示するプログラムなのですが、
iが1の時x1,y1,z1
iが2の時x2,y2,z1
…
iが9の時x9,y9,z9とし、x,y,zのそれぞれの平均
((x1+x2+…+x9)/j)
((y1+y2+…+y9)/j)
((z1+z2+…+z9)/j)
を求めるにはどうすればいいのですか?お願いします。
0169デフォルトの名無しさん
05/01/17 00:26:220170デフォルトの名無しさん
05/01/17 00:35:08配列にして回すにはどうすればいいのですか?
0171デフォルトの名無しさん
05/01/17 00:41:57これじゃダメかい?
int mean_x = 0, mean_y = 0, mean_z = 0;
for (int i = 1; i < 10; ++i)
{
func(x, y, z);
mean_x += x;
mean_y += y;
mean_z += z;
}
mean_x /= 9;
mean_y /= 9;
mean_z /= 9;
0172デフォルトの名無しさん
05/01/17 00:47:47内側のforでdrand48()を使ってランダムに計算し、それを外側のfor
で十分な回数サンプリングしているのです。
ですので>>168の仕様で平均値を求めたいのです。
0173デフォルトの名無しさん
05/01/17 00:54:14だからこうしてはダメなのかと言ってるんだが。
int i, j, k;
double age, sage, mean_x = 0, mean_y = 0, mean_z = 0;
for(j = 1; j < 10; j++){
age = 100 / j;
sage = 100;
mean_x = 0; mean_y = 0; mean_z = 0;
for(i = 1; i < 10; i++){
age = (100 / j) * drand48();
sage = 100 * drand48();
func(x, y, z) //x,y,zの計算結果を返す関数
mean_x += x; mean_y += y; mean_z += z;
printf("%f, %f, %f\n", x, y, x); // x, y, zの値を表示
}
mean_x /= 9; mean_y /= 9; mean_z /= 9;
printf("%f, %f, %f\n", mean_x, mean_y, mean_z); // mean_x, mean_y, mean_zの値を表示
}
0174デフォルトの名無しさん
05/01/17 01:08:24できました。ありがとうござした。
0175デフォルトの名無しさん
05/01/17 01:36:050から200までの数字を書き込み、その結果を出力せよ。
オネガイシマスk
0176デフォルトの名無しさん
05/01/17 01:49:50int main(void)
{
int i,n[];
for(i=0;i<=200;i**)
n[i]=i;
for(i=0;i<=200;i**)
printf("n[%d] = %d\n",i,i);
return 0;
}
0177デフォルトの名無しさん
05/01/17 01:57:09#include<stdio.h>
main()
{
int i,n[200];
for(i=0;i<=200;i++)
n[i]=i;
for(i=0;i<=200;i++)
printf("n[%d] = %d\n",i,i);
}
0178デフォルトの名無しさん
05/01/17 02:05:36それじゃまともに動かんだろう
せっかく書いてもらったものを改悪するな
0179デフォルトの名無しさん
05/01/17 02:16:241要素にするにはどうすればよろしいでしょうか?
0180デフォルトの名無しさん
05/01/17 02:18:09strcat
0181>>177
05/01/17 02:42:000182デフォルトの名無しさん
05/01/17 02:49:46一行が80字を超えた場合以下の文章は切り捨て、空行は出力しない。
この問題お願いしますorz
0183デフォルトの名無しさん
05/01/17 03:17:480184デフォルトの名無しさん
05/01/17 03:20:22(問)ガウス法のプログラムを作成し、次の方程式を解け。
3X1 + 2X2 + X3 = 10
2X1 + 5X2 + 2X3 = 18
X1 + 4X2 + X3 = 12
#include <stdio.h>
#define n 3
main()
{
int i,j,k;
double a[n][n+1]={{3,2,1,10},{2,5,2,18},{1,4,1,12}};
double d;
この続きをお願いします。言語はCです。
0185デフォルトの名無しさん
05/01/17 03:22:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/80.txt
0186デフォルトの名無しさん
05/01/17 03:29:26あったあった。こんな感じ。
#include <algorithm>
#include <fstream>
#include <iostream>
#include <set>
#include <string>
struct pred{
bool operator()(const std::string& x, const std::string& y)
{return x.length() < y.length();}
};
int main(){
std::ifstream input("data.txt");
std::multiset<std::string> s;
std::string line;
while (std::getline(input, line))
if (!line.empty())
s.insert(line.length() > 80 ? line.substr(0, 80) : line);
for (std::multiset<std::string>::const_iterator first = s.begin(), last = s.end(); first != last; ++first)
std::cout << *first << std::endl;
}
0187182
05/01/17 03:35:56わざわざありがとうございます
ソース見るとかなり難解ですね…
自分でも一応書いたんですがサッパリ動きません
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char mojis[80];
int mojin;
} MOJI;
int sort(int *a,int *b) {
if(*a < *b){
return(1);
}else if(*a>*b){
return(-1);
}else{
return(0);
}
}
0188182
05/01/17 03:36:19{int len,nx;
inti=0;
char a[80];
char filename[]="input.txt";
FILE *fh;
MOJI *x;
x=(MOJI*)malloc(sizeof(MOJI)*100);
if((fh=fopen(filename,"r"))!=NULL){
while(fgets(a,81,fh)!=NULL){
len=strlen(a);
if(len != 0){
x[i].mojin=len;
strcpy(x[i].mojis,a);
i++;
}
}
nx = sizeof(x) / sizeof(x[0]);
qsort(x, nx, sizeof(MOJI), (int(*)(const void*, const void*))sort);
fclose(fh);
}else{
fprintf(stderr,"ファイル %s を開けませんでした\n",filename);
}
free(MOJI);
return 0;
}
0189186
05/01/17 03:43:51難解と言うか意味不明だろうね。なぜなら君はC言語で書きたいんだろう?
最初にそう書かないからC++でレスが付いたりするんだよ。ちゃんと>>1の
テンプレ使おうね。
0190182
05/01/17 04:00:58すみません、明日までだったのであまりよく読まずに
焦って書き込んでしまいました…
つーか上のソース書き途中のやつコピペしてて意味不明ですねorz
OSはXP、コンパイラはMicrosoftVisualC++6.0を使っています。
0191182
05/01/17 05:03:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/81.txt
どこを直せば動くでしょうか?
0192デフォルトの名無しさん
05/01/17 05:05:27[1] 授業単元:文字列と配列
[2] 問題文(含コード&リンク):
とある文字列の中に指定の文字列があるかどうか繰り返しを使って調べる
とある文字列は入力したもの。指定の文字列「efg」「cde」
指定の文字列があった場合は「ありました」ない場合は「ありません」と表示
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Windowsのc++
[3.3] 言語:c++
[4] 期限:2005年01月17日09:00まで
[5] その他の制限:ifなどを複数使ってなるべく短く書く
char型がイマイチ理解できません…
0193デフォルトの名無しさん
05/01/17 05:34:42#include <iostream>
#include <string>
using namespace std;
int main()
{
string input;
getline(cin, input);
const string A = "efg", B = "cde";
if (input.find(A) != string::npos || input.find(B) != string::npos) { cout << "ありました" << endl; }
else { cout << "ありません" << endl; }
return 0;
}
0194デフォルトの名無しさん
05/01/17 08:45:43何がどう理解できないのか聞きたいな
課題の難易度から察するに、まだ「文字を使うときはintではなくcharを使う」とか言われるだけじゃないの?
0195デフォルトの名無しさん
05/01/17 12:48:57[2] 問題文(含コード&リンク):
PGMの画像ファイルを配列を使って読み込んで任意の閾値で2値化し、出力する
プログラムを作れ。(出力画像もPGMで)
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン): Cygwin
[3.3] 言語:C/C++/どちらでも可 のいずれか :C
[4] [4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか 2005年01月24日19:00
[5] その他の制限:
どうかよろしくお願いします。
0196デフォルトの名無しさん
05/01/17 14:00:05>>143
2つの画像は同じサイズ(w,h)としてやってる
画像a += 画像bを行う関数
void add_effect(unsigned char** a,unsigned char** b,int w,int h)
{
int d;
int x,y;
for(y=0;y<h;y++){
for(x=0;x<w;x++){
d=(unsigned int)a[y][x]+b[y][x];
a[y][x]=(d>255)?255:(unsigned char)d;
}
}
>>195
画像aを閾値thで2値化(0と255)する
void thr(unsigned char** a,int w,int h,unsigned char th)
{
int x,y;
for(y=0;y<h;y++){
for(x=0;x<w;x++){
a[y][x]=(a[y][x]>=th)?255:0;
}
}
0197デフォルトの名無しさん
05/01/17 16:50:45なんかめちゃくちゃだな
体重ってなんだよ
・fgetsには81じゃなくて80を渡す
・x[i].mojin=len-1 なんで-1してるの?
・sort関数にはMOJI構造体が渡される
int sort(const void* x,const void* y)
{
return (*(MOJI*)x).mojin - (*(MOJI*)y).mojin;
}
0198デフォルトの名無しさん
05/01/17 16:55:12よくわからないけどパスカルです。スレ違いだったらごめんなさい。。。
(課題)
入力されたn個の数を大きい順に並び替えるプログラムを作れ。
(他のスレにも書き込んだけどまだわからなかったので)
0199デフォルトの名無しさん
05/01/17 17:14:04これを使って、
1.aに100を代入する
2.ポインタ変数bにaのアドレスを代入する
3.bの値をcに代入して、cを表示させて下さい。
(100が表示されればOKです。)
A アドレス(&c)を使う方法:変数のアドレスを代入する方法
B ポインタ(*b)を使う方法:値を代入する方法
注:c=a と代入した場合は100と表示されても認めません!
0200デフォルトの名無しさん
05/01/17 17:23:00どうやって取得したらよいのでしょうか?
exeとDLLの両方の書き方がわかりません。
わかる方どうかよろしくお願いします。
0201デフォルトの名無しさん
05/01/17 17:26:23GetModuleHandle,LoadLibrary,LoadStringを見よ
0202デフォルトの名無しさん
05/01/17 17:31:39thx 早速見てみます。
0203デフォルトの名無しさん
05/01/17 17:34:26スレタイにPascalは入っていないのでスレ違いですね。
0204192
05/01/17 17:44:15ありがとうございました。
理解できないところっていうのはなぜ"\0"で必ず終わらないといけないかと言うことです
深く考えないでそういうものだと思っておけばいいのでしょうか?
それとついでにもう一つ質問ですが
#include <iostream>
#include <string>
↑この二つはなんでしょう?まだ<stdio.h>ってのしか使ったことないのですが…
できればさっき教えて頂いたものに//で注釈いれてもらえるとありがたいです
0205デフォルトの名無しさん
05/01/17 17:46:00本当に「C++で」という指定で宿題が出ているのかい?stdio.hしか
使った事が無いと言うのは怪しいのだが。
0206192
05/01/17 17:47:00#include <stdio.h>
int main(void)
{
char str[100];
int i, c;
printf("文字列を入力してください。\n");
scanf("%s", str);
c = 0;
for(i=0; str[i]!='\0'; i++){
if(str[i] == 'a'){
c++;}
}
printf("%sの中にaは%d個あります。\n", str, c);
return 0;
}
0207デフォルトの名無しさん
05/01/17 17:50:270208デフォルトの名無しさん
05/01/17 17:50:32int strsrch(char*s,char*w){return *w=='\0'?1:(*s=='\0'?0:(*s==*w?strsrch(&s[1],&w[1]):strsrch(&s[1],w)));}
ここまで書いたら面倒になったんでmainは勝手に書いといて。
0209デフォルトの名無しさん
05/01/17 17:50:40>>1
>・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
0210デフォルトの名無しさん
05/01/17 17:51:32速度やメモリ効率を無視すれば、長さをintに格納することも可能…、だが、現在では私のように本当に低レベルのプログラマー…、いやスーパープログラマーしか気にしないだろう。
0211デフォルトの名無しさん
05/01/17 17:57:480212デフォルトの名無しさん
05/01/17 18:02:10その手順は3の表現が悪い。
「ポインタbが指す位置に格納されている値をcに代入」
とすべきだと思う。
int main(void)
{
int a;
int *b;
int c;
a=100;
b=&a;
c=*b;
printf("%d",c);
}
0213デフォルトの名無しさん
05/01/17 18:55:35ありがとうございます。
0214デフォルトの名無しさん
05/01/17 19:01:46#include<stdlib.h>
#include<time.h>
int main(void)
{
int ran_num,key,count=0;
int a[3],i,point=0;
char s[80];
srand((unsigned)time(NULL));
while(1){
printf("\n...Input Number...\n0 to exit\nother number to
start\n");
printf("....................\n");
fgets(s,sizeof(s),stdin);
sscanf(s,"%d",&key);
エラーがわかりませんん。ご教授ください。
"slot.c", line 14.71: 1506-186 (S) ストリング・リテラルは、行末よりも前で終わらなければなりません。
"slot.c", line 15.6: 1506-191 (E) 文字 \ は有効な C ソース文字ではありません。
"slot.c", line 15.11: 1506-186 (S) ストリング・リテラルは、行末よりも前で終わらなければなりません。
"slot.c", line 15.1: 1506-276 (S) 構文エラー: ')' が欠落している可能性があります
0215デフォルトの名無しさん
05/01/17 19:08:36string literalは、曲訳すれば定数文字列の意。文字列の途中でEnter押したか、勝手に改行してるのかも
0216デフォルトの名無しさん
05/01/17 19:16:46できました。本当にありがとうございました。
0217デフォルトの名無しさん
05/01/17 19:48:01,ありがとうございます。参考にして自分なりに組んでみたのですが
fopen ではPGMファイルは開けないんでしょうか?
どうもファイルを読み込んでないみたいなので
ちなみにこんな感じで組みました
FILE *fp_in,*fp_out;
if( (fp_in=fopen("sample.pgm","r")) == NULL )
perror("Can't file open!\n");
exit(1);
”r”を”rb”に変えても同じでした
0218デフォルトの名無しさん
05/01/17 19:50:56,if( (fp_in=fopen("sample.pgm","r")) == NULL ) {
perror("Can't file open!\n");
exit(1);
}
0219デフォルトの名無しさん
05/01/17 19:51:05,開けない原因は多分SAMPLE.PGMとEXEが別々の場所にあるからじゃないか?
0220デフォルトの名無しさん
05/01/17 19:54:27,一応、同じ場所にありますよ
0221デフォルトの名無しさん
05/01/17 19:58:38,ファイルかアプリの閉じ忘れの共有ロックかな?
0222デフォルトの名無しさん
05/01/17 19:59:25,0223デフォルトの名無しさん
05/01/17 20:03:55,画像データの数値を読み込んでない状態です。
試しに読み込んでテキストファイルに書き込むようにプログラムしてみても
まったくの白紙でした
0224デフォルトの名無しさん
05/01/17 20:31:46[2] 問題文(というかやりたいこと)
英文を単語ごと(空白ごと)にわけて配列に格納する
(上記のソースは、そのままではできなかったため、クライアント側にて入力した英文を、
サーバー側にて単語毎(空白毎)にわけて、単語毎に改行したものをLINES.txtに出力する
という方法をとろうとしたものです)
[3] 環境
[3.1] OS:Redhut Ver7
[3.2] コンパイラ(バージョン):gcc3(?)、すいませんちょっとわからないです
[3.3] 言語:C
[4] 期限:申し訳ありません、明日の午後五時までなんです
ソース(サーバー側):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/83.txt
ソース(クライアント側):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/82.txt
クライアント側はともかく、サーバー側で形態素(単語)ごとに切り分けようとしても
どうやら空白を空白と認識してくれないようで、思ったように単語ごとに切って、LINE.txt
に出力できません。
もともとは英文を単語ごとにわけて、配列に格納することが目的だったんですが、うまくいかなくて
上記のようにやってみようとしたんですが、それでもうまくいかず。
もしもっと簡単に単語ごとにわけて、配列に格納できる方法がありましたら、そちらでもかまいません。
どうかお知恵をお貸し下さいますよう、お願い致します。
0225デフォルトの名無しさん
05/01/17 20:34:040226デフォルトの名無しさん
05/01/17 20:34:56stetok
stetok
stetok
stetok
stetok
0227デフォルトの名無しさん
05/01/17 20:39:18Cの関数なんでしょうか?
0228デフォルトの名無しさん
05/01/17 20:41:14典型的なタコ関数だが我慢してstetokでも使ったらどうだね?
0229224
05/01/17 20:41:15やっぱりネスケはいまいち見にくいです;;
0230デフォルトの名無しさん
05/01/17 20:42:58http://cham.ne.jp/piro/p_stdfunc.html
http://www.bohyoh.com/CandCPP/C/Library/
0231デフォルトの名無しさん
05/01/17 20:45:140232デフォルトの名無しさん
05/01/17 20:46:00ここの dataMax や dataMinという関数は 自分で定義して利用すること。
配列の中で最大値を返す関数 int dataMax(int a[ ], int b) { }
配列の中で最小値を返す関数 int dataMin(int a[ ], int b) { }
プログラム参考例 (これを拡張して完成させて下さい)
#include<stdio.h>
void main(void){
int i; float a[5];
dataSet( a, 5);
printf( “Max= %d”, dataMax( a , 5) );
printf( “Min= %d”, dataMin( a , 5) );
}
0233230
05/01/17 20:47:14あと、FreeBSDのソースも参考に。
http://www.freebsd.org/cgi/cvsweb.cgi/src/
0234デフォルトの名無しさん
05/01/17 20:47:54タスクマネジャを見て疑わしいプログラムを終了。それでもダメなら再帰どう?
0235デフォルトの名無しさん
05/01/17 20:48:23これを使って、
1.aに100を代入する
2.ポインタ変数bにaのアドレスを代入する
3.bの値をcに代入して、cを表示させて下さい。
(100が表示されればOKです。)
A アドレス(&c)を使う方法:変数のアドレスを代入する方法
B ポインタ(*b)を使う方法:値を代入する方法
注:c=a と代入した場合は100と表示されても認めません!
#include<stdio.h>
int main(void){
int a; int *b; int c;
a = 100;
printf(" a[%x, %d], b[%x] \n",&a, a, b);
b = &a;
printf(" a[%x, %d], b[%x, %d] \n", &a, a, b, *b);
c = *b;
printf(" a[%x, %d], b[%x, %d] \n", &a, a, b, *b);
}
Aは解決しました。
Bのほうわかる方いませんか。
0236デフォルトの名無しさん
05/01/17 20:49:47間違えました。Aがわかる方お願いします。
0237デフォルトの名無しさん
05/01/17 20:54:091.が難し過ぎてここでは解きようがない。どうやって100を代入するの?
0238デフォルトの名無しさん
05/01/17 20:59:002)複素数の絶対値(sqrt(r*r+i*i))
3)複素数の出力
以下のプログラムでかけているクラスの定義部分を書け
int main(){
double x,y;
Complex c;
scanf("%lf",&x);
Complex c1(x);
scanf("%lf%lf",&x,&y);
Complex x2(x,y);
c=add(c1,c2);
c.abs();
c.out();
return 0;
}
C++です。お願いします。
0239デフォルトの名無しさん
05/01/17 21:04:23ぐぐればいくらでも出てくるだろ
0240デフォルトの名無しさん
05/01/17 21:06:59:m_real(re),m_imaginary(im)
{}
0241デフォルトの名無しさん
05/01/17 21:08:31C++使っているのだから、operatorを定義して
Complex a(1,1);// 1+jで初期化
Complex b(2,3);// 2+3jで初期化
Complex c(0,0);// 0で初期化 ここで、jはj=sqrt(-1)を満たす数
c=a+b;
c=a*b;
c=a/b;
c=a-b;
などのように使えるようにした方が汎用性があるでしょ?
0242デフォルトの名無しさん
05/01/17 22:01:15テキストファイル(HPのソース等)の入力に対して、
各行50文字までを出力する(50文字以上は切り捨て、空行は出力しない)方法教えて
0243デフォルトの名無しさん
05/01/17 22:06:19man fgets
0244デフォルトの名無しさん
05/01/17 22:06:480245デフォルトの名無しさん
05/01/17 22:09:29それやるとfgetsで呼んだ後、その行のつづき(50文字以降)が次の行として処理されちゃう
0246デフォルトの名無しさん
05/01/17 22:11:5150文字関係ない
fgetsで指定した読み込みの最大文字数以降が次の行として処理されちゃう、だ
0247デフォルトの名無しさん
05/01/17 22:12:300248デフォルトの名無しさん
05/01/17 22:15:08'\n'あるか調べて、表示するか捨てるか判断すればいいだろーが。
文字数関わらずにってのはCにゃねーよ。
0249デフォルトの名無しさん
05/01/17 22:16:48指定文字数のとこにヌル文字入れてfprintfで出力じゃダメなの?
(と思った通りすがりC初心者、間違ってたら教えて
0250デフォルトの名無しさん
05/01/17 22:18:30バッファを256文字指定していて256文字以上の行があったら?
0251デフォルトの名無しさん
05/01/17 22:22:110253デフォルトの名無しさん
05/01/17 22:32:57素直に1文字づつ嫁!
0254デフォルトの名無しさん
05/01/17 22:33:31それいいね
fgetsの読み込み文字数を51にして
配列[50]の部分に\0を代入すればいいってことでしょ?
でもやりかたがわからん・・・・
0255デフォルトの名無しさん
05/01/17 22:34:33>246 の意味わかってる?
0256デフォルトの名無しさん
05/01/17 22:34:49素直に1文字ずつ読む方法。
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *fp = fopen("data.txt", "r");
int c, count = 0;
for (; ; ) {
c = getc(fp);
switch(c)
{
case '\n':
if (count != 0) printf("\n");
count = 0;
break;
case EOF:
fclose(fp);
return 0;
default:
if (count++ < 50)
printf("%c", c);
else {
printf("\n");
while ((c = getc(fp)) != '\n' && c != EOF);
ungetc(c, fp);
count = 0;
}
}
}
}
0257デフォルトの名無しさん
05/01/17 22:36:34図心と面積を求めるプログラムを作成せよ。
よろしくお願いします
0258242
05/01/17 22:40:17おお!
すばらしい!
さっそく組み込んでみる!
本当にありがとう!!
0259デフォルトの名無しさん
05/01/17 22:40:310260242
05/01/17 22:46:24realloc?知らない
ちょっとリファレンス見てみるわ
0261デフォルトの名無しさん
05/01/17 22:49:16一辺の長さは0cmとすると、面積0、図心も0…(冗談)。
n角形を中心から頂点を通るように半直線n本でn等分すればn個の三角形ができる。さてこの三角形の性質は?
0262165
05/01/17 22:52:130263デフォルトの名無しさん
05/01/17 22:53:21飲酒運転で間違えたorz...
0264デフォルトの名無しさん
05/01/17 22:58:15int x,y;
}MYPOINT;
MYPOINT*p=(MYPOINT*)malloc(n*sizeof(MYPOINT));
p->x=0;
0265デフォルトの名無しさん
05/01/17 23:00:26http://hobby5.2ch.net/test/read.cgi/watch/1075518601/854
854 :エンペラ ◆utvPnTXM56 :05/01/17 15:25:55
>>851
頭悪そう
>>852
CL600からCL55AMGに乗り換えたから。V12よりもV8の方がフィーリングが良いです。
>>853
カードキー??????知りません!キーレスゴーはA8ではそうなっています。
>>粘着貧乏キモヲタ共へ
口の利き方に気をつけなさい。甲斐性も根性もない癖に顔が見えないから
言いたい放題ですね?
もしよろしければ、来週25日に大阪の中ノ島にあるロイヤルホテルにまた出張で
宿泊しますので、ホテル1Fにあるコルベーユと言う店に25日の午後6時30分に
来て「大文字さんのお席は何処ですか?」と尋ねてきなさい、そしたら私の席まで案内して
くれますから、そして面と向かってよのようなタメ口が言えたら、ご褒美に即金
で100万恵んでやりますよ!ただし覚悟して言いなさいね!
参加される方は↑の必ずスレの>>500から最新レスまで目を通しておいてね
http://www.rihga.co.jp/osaka/restaurant/restaurant/corbeille/index.html
リーガロイヤルホテル大阪 1Fコルベール
時計・小物板 http://hobby5.2ch.net/test/read.cgi/watch/1075518601/
0266デフォルトの名無しさん
05/01/17 23:06:58#include <stdio.h>
int main(void)
{
struct seiseki {
int bango,kokugo,suugaku,eigo;
char hyouka; /*評価*/
};
struct seiseki array[5]={{101,85,92,79,},
{102,76,35,89,},
{103,76,35,89,},
{104,76,35,89,},
{105,76,35,89,}};
struct seiseki average = {106, 0, 0, 0,};
int kokugo_sum = 0,suugaku_sum = 0, eigo_sum = 0;
int i;
for(i=0; i<5; i++) {
kokugo_sum = kokugo_sum + array[i].kokugo;
suugaku_sum = suugaku_sum + array[i].suugaku;
eigo_sum = eigo_sum + array[i].eigo;
}
average.kokugo = kokugo_sum/5; average.suugaku=suugaku_sum/5; average.eigo=eigo_sum/5;
printf("国語の平均 = %d\n", average.kokugo);
printf("数学の平均 = %d\n", average.suugaku);
printf("英語の平均 = %d\n", average.eigo);
return 0;
}
0268デフォルトの名無しさん
05/01/17 23:10:47中心の求め方は公式から明らか。頂点の座標の平均が中心。凸図形を仮定すれば中心から三角形分解できて、面積も求められる。
0269デフォルトの名無しさん
05/01/17 23:18:470270デフォルトの名無しさん
05/01/17 23:22:45#include <stdlib.h>
#include <string.h>
char array[1000][81];
int main(){
FILE *fp;
char str[1024];
int n,i;
for(n=0; n<1000; n++) array[n][0] = '\0';
if ((fp = fopen("input.txt", "r")) == NULL) {exit(2);}
n=0;
while (fgets(str, 1024, fp) != NULL) {
if (strlen(str) >= 80) {
str[79] = '\n';
str[80] = '\0';
}
strcpy(array[n], str);
n++;
}
fclose(fp);
for(i=0; i<n; i++) printf("%s", array[i]);
return 0;
}
0271デフォルトの名無しさん
05/01/17 23:23:38[2] 問題文
0〜1の間で一様に分布する変数Xから、標準正規分布する変数Yを作るには
次の式を用いる
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/84.zip
rand()を用いて、Xを12000個発生させ、作成したYの分布を*を用いた棒グラフとして表せ
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): lcc-win
[3.3] 言語:C
[4] 期限: 明日まで
画像のようなグラフにしなければならないんですが、
Yのランク分けと、縦型のグラフの作り方がわかりませbb
よろしくお願いします
0272デフォルトの名無しさん
05/01/17 23:25:34縦型じゃなくてもいいじゃん。
0274デフォルトの名無しさん
05/01/17 23:29:09文字の二次配列で仮想画面を作るって言えば分かるかな。
0275デフォルトの名無しさん
05/01/17 23:29:37縦型グラフになるように、最後に出力すればいい
0276257
05/01/17 23:36:10三角形を作って面積を求めるということでしょうか?
ヘロンの公式を使えば上手くいきそうです
ありがとうございました。
0277デフォルトの名無しさん
05/01/17 23:37:41int len(char s[])
{
int i=0;
while(s[i]!='\0')
{
i++;
}
return i;
}
回答は↑であっていますか?
あと、 3/6*2.0 と 3/6.0*2 の値はそれぞれ0.0000 1.0000で合っていますか?
0278デフォルトの名無しさん
05/01/17 23:43:09アラビア語の場合はどうなる。
簡単な計算は自分でコンパイルして確かめれ
0280デフォルトの名無しさん
05/01/17 23:53:27最初は空白で初期化しておく。
座標から二次配列の要素への対応を考える時、座標に*を描く事は対応する要素に'*'を代入することだ。
0282デフォルトの名無しさん
05/01/17 23:59:400284デフォルトの名無しさん
05/01/18 00:06:47当然だヴォケ。ただで人に正解を教えてもらおうなんて甘い考えは捨てる事だな。
0285224
05/01/18 00:43:53書き込んだ直後に計算室追い出されてカキコできませんでした、失礼しました(´・ω・`)
このへん参考にさせてもらってもうちょい考えてみます、今日は徹夜覚悟で頑張りますヽ(`Д´)ノ
でもやっぱり空白文字は嫌い(´・ω・`)
0286271
05/01/18 00:49:26ここまでしか出来ませんでした・・・
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int x,y,z,i,j,g[][12];
for(i=0;i<1000;i++){
for(j=0;j<12,j++){
x=(double)rand()/32767.0
z=z+x
}
y=z-6.0
(???)
}
}
0287162
05/01/18 01:55:52ググったり、図書館で数値計算の本を調べたりしましたが載っていなくて全然分かりません。
0288デフォルトの名無しさん
05/01/18 01:57:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/85.txt
こんなんでいいのか?Y軸方向の目盛りは表示してないよ。環境によって変わるし。
0289デフォルトの名無しさん
05/01/18 01:58:43>・計算問題は必ず数式をあげ、どのような計算をするのか詳しく説明してください。
0290デフォルトの名無しさん
05/01/18 02:05:19だから、データの表現を、0以外の値を持つ値の添え字と値のみで表現する事により
ワークエリアを圧縮する技法だ。
しかしその代償として、任意の要素へのアクセスは通常の配列に比べかなり低速になる。
実用的なライブラリはハッシュテーブルを使うけど、今回の課題は双方向リストと線形探索
という単純でより低速なデータ構造を使えと言っているわけだ。
その発生する疎行列は今回は単位行列のようだね。くそ・・・C++なら、添え字演算子の
オーバーロードを使えばスマートに表現できるのに、Cだと汚くなるなあ・・・・
0291デフォルトの名無しさん
05/01/18 02:12:33C++なら、boost::ublasを使えばプログラム不要なのにな。
0293デフォルトの名無しさん
05/01/18 02:18:50疎行列(sparse matrix)をリストで表現するには、グラフ理論で言う所の隣接リスト表現
というのをよく使うようだ。この表現は行方向のみポインタ配列で決定でき、列方向を
線形探索により走査する事になる。
今晩は暇だからちまちま作ってみるよ。でも何時になるかわからないのでそのつもりで。
発生する疎行列は単位行列という事で。
0294162
05/01/18 02:22:17この数式で疎行列の解を求めるということしか言われてなくてよく分かりません。
j-1
lij = aij - Σ lik ukj lik=0 →lik ukj=0
k=0
lij=aij-(li0 u0j+li1 u1j+li2 u2j) ←構造体に格納
=
↓
0
>>290
あくまでその単位行列は入力ファイルの形式の例です。
その形式で入力する疎行列を作成するプログラムも自分で作れと言われました。
0296のりこ
05/01/18 02:36:49問題
「正規分布で平均値 S:0.3 L:0.7
分布3σ=0.2のとき マルコフ確立分布で表せるときのプログラムを組み出力せよ。」
どなたかわかる方いらっしゃいますか?
0298デフォルトの名無しさん
05/01/18 02:49:30その解法はもしかして疎行列の直接解法って奴か?LU分解を用いる方法だが。
もう少し詳しく書いてくれ。このままではデータファイルを読んでメモリに格納して
終わりになってしまうぞ。
0300デフォルトの名無しさん
05/01/18 03:12:44クラウト法ってのは、LU分解を行うためのアルゴリズムの一つで、直接解法と関係がある。
そうしたら>>294の解法は、ガウス=ザイデル法による反復解法だろう。
どうすっかな・・・・入出力ルーチンと要素へのアクセス関数までプログラムしてみるから、
後は自分でやってみてもらえると助かる。それか、他の人がそれを見てアレンジしてくれる
と助かるんだが。今週末まででいいという事だし、今晩中でなくてもいいなら考えてみる。
0302デフォルトの名無しさん
05/01/18 04:17:37要素へのアクセスは線形探索を用いてvalofNode()で行える。
今日はこれで寝る。後は誰か適当にこいつに直接解法と反復解法のアレンジを
してくれるか、誰もしてなかったら明日俺が見てみる。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/87.txt
0303初心者
05/01/18 11:01:11課題として一つ目はテキストファイルの中の奇数番目の行と偶数番目の行とを分けて、それぞれを別々のファイルに書き出す。
二つ目はテキストファイルの各行の先頭に#の文字をつけて、新たなファイルに書き出す。
以上の二つです。
ちなみに期限は今日いっぱいです。
お願いします。
0304デフォルトの名無しさん
05/01/18 11:04:25> C++を使用してコマンドラインベースのプログラムを作成する。
そうですか。手を出さないから、生温かく見守ってあげましょう。
0305デフォルトの名無しさん
05/01/18 11:18:09ファイルストリームを開いて一行ずつgetsだぜ! ピカ!
0306デフォルトの名無しさん
05/01/18 12:03:27gets使うなんて正気?
0307デフォルトの名無しさん
05/01/18 13:12:26問題:「1からnまでの整数の総和を求める関数」sumを定義し、それをつかって
「適当な正の整数nを入力させ、sumを呼び出して総和を返させ、それを出力するプログラム」を書きなさい。
ヒント)1からnまでの総和=n(n+1)/2
環境:C言語
コンパイルできる環境がないので添削お願いします。
#include<stdio.h>
int sum(int a);
main()
{
int n,x;
x=1;
printf("整数を入力してください。\n");
scanf("%d,&x");
for(n=1;n<=x;n++)
x=sum(x);
printf("入力した整数の総和は%d\n",x);
return 0;
}
int sum(int a)
{
int n,ans;
ans=n*(n+1)/2;
return ans;
}
0308デフォルトの名無しさん
05/01/18 13:33:56なぜか出力ファイルにうまく書き込めていません。ソースを貼るのでご指摘、間違いに
気づいた方は教えてください。おねがいします。
#include <stdio.h>
#include <stdlib.h>
#define XSIZE 640/*画像の大きさ*/
#define YSIZE 480
#define HIGH 255 /*濃度値 255=HIGH=白*/
#define LOW 0 /*濃度値 255=LOW=黒*/
main(){
FILE *fp,*fg; /*入出力ファイル操作用ポインタの宣言*/
char input[XSIZE][YSIZE]; /*入力2次元配列の型宣言*/
char out[XSIZE][YSIZE]; /*出力用2次元配列の型宣言*/
int i,j,ikiti;
printf("input IKITI *** "); /*閾値の入力*/
scanf("%d",&ikiti);
for(j = 0;j < YSIZE;j++){
for(i=0;i<XSIZE;i++) {input[i][j]=out[i][j]=0; /*配列の初期化*/
}}
0309308
05/01/18 13:34:32if(fp==NULL){
printf("open error"); /*ファイルのエラー処理*/
exit(1);}
for(j=0;j<YSIZE;j++){
for(i=0;i<XSIZE;i++) {
input[i][j]=fgetc(fp); /*配列への画像データの代入*/
} }
for (j=0;j<YSIZE;j++){/*2値化,閾値以上の濃度値ならば*/
for(i=0;i<XSIZE;i++){
if((int)input[i][j]>=ikiti){
out[i][j]=HIGH;}
else{
out[i][j]=LOW; } } }
fg=fopen("sanple2.pgm","w"); /*出力ファイルのオープン*/
for(j=0;j<XSIZE;j++){
for(i=0;i<YSIZE;i++) {
fprintf(fg,"%c",out[i][j]); /*配列からディスクへの書き込み*/
} }
fclose(fp); /*入力ファイルのクローズ*/
fclose(fg); /*出力ファイルのクローズ*/
}
0310308
05/01/18 13:38:15fg=fopen("sanple2.pgm","wb"); /*出力ファイルのオープン*/
でした。よろしくおねがいします。
0311デフォルトの名無しさん
05/01/18 13:42:41XSIZEとYSIZEが逆。
sampleのつづり。
0312デフォルトの名無しさん
05/01/18 13:55:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/88.txt
修正しといた
0313デフォルトの名無しさん
05/01/18 14:07:55ありがとうございます。
0314308
05/01/18 14:09:00XSIZEとYSIZEを逆にすると一応ファイルへの書き込みは
できました!ありがとうございます!!
でもまだ画像として扱われていなくて、二値化もできていません。
引き続き間違いや指摘がありましたらよろしくお願いします。
0315デフォルトの名無しさん
05/01/18 15:12:01二値化は別関数に分けろ。
'\n'変換が起きてしまうので、バイナリ入出力にfprintfなどの文字や文字列を対象とした関数は使うな。fread/fwriteを使え。バイナリエディタを使え。
0316デフォルトの名無しさん
05/01/18 15:16:41iとjも逆
普通画像は[y][x]で格納する(スキャンライン(x)がメモリ上で連続になるように)
あとpgmヘッダを読み書きしてない
バイナリpgmなら
P5
xsize ysize
maxgray
pixeldata
になってる
0317デフォルトの名無しさん
05/01/18 15:23:050318デフォルトの名無しさん
05/01/18 15:27:570319デフォルトの名無しさん
05/01/18 15:29:01[2] 問題
(1) 標準入力からデータを読み込んで,以下のような棒グラフを標準出力に書くプログラムを作りなさい。
******************************
********************************
**********************
(2) 以下のようにスケールを入れなさい。データが40を超えたら,表示しないようにしなさい。グラフのどこかにデータの数値を表示しなさい。
+----+----1----+----2----+----3----+----4
23 |***********************
45 |***************************************+
35 |*********************************
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン): Windowsのc++
[3.3] 言語:c++
0320デフォルトの名無しさん
05/01/18 15:33:050321デフォルトの名無しさん
05/01/18 15:59:08[2] 実行ファイル名 [オプション][ファイル名]
−nファイルの末尾n行を表示(n>20)
−r 逆順表示
−v ファイル名表示
−a 行表示
で動作するプログラムをリングバッファ(動的確保)を使って作る。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ(バージョン): Microsoft Visual C++ 6.0
[3.3] 言語:C
[4] 期限:2005年01月22日まで
0322デフォルトの名無しさん
05/01/18 16:00:46すいません
「maxgray pixeldata になってる」これどういうことでしょう?
くわしくおしえてください。おねがいします。
0323デフォルトの名無しさん
05/01/18 16:21:33フリーコンパイラ使えば?
#include<stdio.h>
int sum(int n) { return n*(n+1)/2; }
int main(void)
{
int x;
printf("整数を入力してください。\n");
scanf("%d", &x);
printf("入力した整数の総和は%d\n",sum(x));
return 0;
}
0324デフォルトの名無しさん
05/01/18 17:02:310325デフォルトの名無しさん
05/01/18 17:21:09ヒント過剰
0326デフォルトの名無しさん
05/01/18 17:53:40大きい方から順に表示するプログラムを作成せよ。
お願いします
0327デフォルトの名無しさん
05/01/18 17:55:27Googleでpgm形式を検索したら発見
http://www.openspc2.org/format/PGM/
0328デフォルトの名無しさん
05/01/18 17:56:51qsort関数でソート
0329デフォルトの名無しさん
05/01/18 17:58:36>>1のテンプレも読まない貴様に誰が返信するかぼけっ!
0330デフォルトの名無しさん
05/01/18 17:58:53一応完成した。疎行列は正しく引数を与えないとガウス・ザイデル法が途中で
0による除算で異常終了してしまうため、ランダム配列は疎行列でない行列を
生成するようにした。0.でない値の発生確率はgenerateSparseMatrix()の
最後の引数をいじればよい。
クラウト法はこれを参考に自分で考えてくれ。今日は時間がない。LU分解法
とか直接解法でぐぐればいくらでもプログラムが出てくるから、それを参考にして
考えて欲しい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/89.txt
0332デフォルトの名無しさん
05/01/18 18:36:44ほらよ馬鹿
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <functional>
#include <boost/lambda/lambda.hpp>
int main(){
std::vector<int> v;
int i(0);
std::generate_n(std::back_inserter(v), 10, ++boost::lambda::var(i));
std::random_shuffle(v.begin(), v.end());
std::sort(v.begin(), v.end(), std::greater<int>());
std::for_each(v.begin(), v.end(), std::cout << boost::lambda::_1);
}
0333デフォルトの名無しさん
05/01/18 18:37:461問目
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char* argv[])
{
if (argc != 4)
std::cout << "使い方: 実行ファイル名 入力ファイル名 奇数行出力ファイル名 偶数行出力ファイル名" << std::endl;
else
{
std::ifstream in(argv[1]);
std::ofstream out_odd(argv[2]), out_even(argv[3]);
std::string line;
bool is_even = false;
while (std::getline(in, line))
{
if (is_even) out_even << line << std::endl;
else out_odd << line << std::endl;
is_even = !is_even;
}
}
return 0;
}
0334デフォルトの名無しさん
05/01/18 18:39:282問目
#include <iostream>
#include <fstream>
#include <string>
int main(int argc, char* argv[])
{
if (argc != 3)
std::cout << "使い方: 実行ファイル名 入力ファイル名 出力ファイル名" << std::endl;
else
{
std::ifstream in(argv[1]);
std::ofstream out(argv[2]);
std::string line;
while (std::getline(in, line)) out << '#' << line << std::endl;
}
return 0;
}
0335326
05/01/18 18:50:07スイマセンスイマセンスイマセンorz
[1] プログラミング実習
[2] 1〜10までの数字がランダムに置かれている。
大きい方から順に表示するプログラムを作成せよ。
[3] OS: windows2000
言語:C
[4] 期限:2005年1月20日まで
[5]二重のfor文を使用しろとのこと。
0336デフォルトの名無しさん
05/01/18 19:05:27ほらよ、レベルの低い問題だから俺が答えてやるよ
#include<stdio.h>
#define MAX 10
int main( void ) {
int test[] = { 1, 10, 9, 8, 7, 5, 4, 3, 2, 6 } ;
intcnt, idx ;
for( idx = 0 ; idx < MAX - 1 ; idx ++ )
for( cnt = 0 ; cnt < MAX - 1 ; cnt ++ )
if( test[cnt] > test[cnt + 1] )
test[cnt] ^= test[cnt + 1] ^= test[cnt] ^= test[cnt + 1] ;
return 0 ;
}
0337デフォルトの名無しさん
05/01/18 19:10:28数字がint型でなくてfloatとかdoubleだったらどうするんだ?
0338デフォルトの名無しさん
05/01/18 19:12:040339デフォルトの名無しさん
05/01/18 19:19:28バブルソートで。そこそこ柔軟性のあるコードだと思うけど。
#include <stdio.h>
int main(void)
{
int a[] = {6, 3, 5, 7, 10, 1, 9, 8, 4, 2};
int i, n, j, temp, *first = a, *last = a + sizeof(a) / sizeof(a[0]);
for (i = 0, n = last - first; i < n - 1; ++i)
for (j = 0; j < n - 1 - i; ++j)
if (*(first + j) < *(first + j + 1))
{
temp = *(first + j);
*(first + j) = *(first + j + 1);
*(first + j + 1) = temp;
}
for (i = 0; i < sizeof(a) / sizeof(a[0]); ++i)
printf("%3d", a[i]);
}
0340デフォルトの名無しさん
05/01/18 19:22:480341デフォルトの名無しさん
05/01/18 19:35:48ありがとうございます
>>339さんのやり方でやってみます
…が、sizeofってのが分かりませんorz
>>340
folatとかは習いました
0342デフォルトの名無しさん
05/01/18 19:37:35文字通りデータのサイズ
0343デフォルトの名無しさん
05/01/18 19:58:03これだと副作用が複数の個所で発生するから、規格上動作が未定義になるぞ
0344339
05/01/18 20:09:41sizeof(a)はaのサイズ(10×intの大きさ)でsizeof(a[0])はa[0]のサイズ(intの大きさ)。
だからsizeof(a) / sizeof(a[0])は10になる。これでaの要素数を求められる。
こうしておけば、aの要素数を変更したくなったときにあちこちで数字を書き換える
必要がない。「柔軟性」ってそういうこと。#define MAX 10とかしてもいいけど、
マクロは色々副作用があるから避けられるなら避けた方がよい。ほとんどの場合、
コンパイル時にsizeof(a) / sizeof(a[0])は定数に置き換えられるから、一回一回
計算するオーバーヘッドもないと考えてよい。
0345デフォルトの名無しさん
05/01/18 20:13:43知ってやってるんだと思うよ
0346336
05/01/18 20:20:550347デフォルトの名無しさん
05/01/18 20:28:43格好いいとか思って書いてるのか?
0348デフォルトの名無しさん
05/01/18 20:29:31//ポインタは不可。
#define ARRAYLEN(a) (sizeof(a)/sizeof((a)[0]))
0349デフォルトの名無しさん
05/01/18 20:35:36Cでテンポラリ変数使わずにスワップできるとかって。
なんかで読んでホラだと知らずに使ったんだろ、きっと。
0350デフォルトの名無しさん
05/01/18 20:47:20http://www.dd.iij4u.or.jp/~okuyamak/Information/xor_fixed_swapping.html
0351デフォルトの名無しさん
05/01/18 20:57:43>最近の CPU はレジスターリネーミング機構というものが入っています。
>ニーモニック上32個のレジスターが使えるとするなら、 内部的には40 個ぐらい
>レジスターを持っておいて、 必要に応じてその 40 個の中の適切なレジスターを、
>ニーモニック上のレジスターに割り振るのです。
これ知らなかった。勉強になった。
0352デフォルトの名無しさん
05/01/18 21:21:12[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
スキャンした画像を固めてあります。約20K
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/90.zip
問題は5問あります。1番のみやったのですがあとは手に負えず…
よろしくお願いしますm(__)m
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): VisualC++ Ver6.0
[3.3] 言語:C
[4] 期限:2005年01月26日まで
[5] その他の制限: 特になし
0353デフォルトの名無しさん
05/01/18 21:50:57俺の持ってる本に載ってるソースなんだがこれをちょっと書き換えれば3の1)と2)は出来る。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/91.txt
0355デフォルトの名無しさん
05/01/19 00:15:18[III]-(3)、ちと怪しいのでよろしく
#include <stdio.h>
#include <string.h>
double convSei( const char* p ){
double d = 0 ;
for(;;){
if( *p == '1' ) d += 1 ;
if( !*(++p) ) break ;
d *= 2 ;
}
return d ;
}
double convSyou( const char* top ){
double d = 0 ;
const char* p = top + strlen( top ) ;
for(; p != top ; --p ){
if( *(p-1) == '1' ) d += 1 ;
d /= 2 ;
}
return d ;
}
int main( int argc, char* argv[] ){
double d ;
d = convSei( strtok( argv[1], "." ) ) ;
d += convSyou( strtok( NULL, "." ) ) ;
printf( "%0.5f\n", d ) ;
return 0 ;
}
0356デフォルトの名無しさん
05/01/19 00:42:12#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#define BUF_MAX 256
struct Node{int element;struct Node *next;};
void main(){
int x,ans,diff,minDiff,mode;
char buf[BUF_MAX];
struct Node *startNode,*nowNode,*newNode;
startNode=(struct Node*)malloc(sizeof(struct Node));
fprintf(stdout,"input List element >");
fgets(buf,BUF_MAX,stdin);
startNode->element=atoi(buf);
startNode->next=NULL;
nowNode=startNode;
while(1){
fprintf(stdout,"input List element (* end)>");
fgets(buf,BUF_MAX,stdin);
if(buf[0]=='*')break;
newNode=(struct Node*)malloc(sizeof(struct Node));
nowNode->next=newNode;
newNode->element=atoi(buf);
newNode->next=NULL;
nowNode=newNode;
}
0357デフォルトの名無しさん
05/01/19 00:42:50while(1){
fprintf(stdout,"input x (* end)>");
fgets(buf,BUF_MAX,stdin);if(buf[0]=='*')break;x=atoi(buf);
fprintf(stdout,"1: most near\n2: most near but less than x\n, 3 most near but more than x >");
fgets(buf,BUF_MAX,stdin);mode=atoi(buf);
minDiff=INT_MAX;
for(nowNode=startNode;nowNode!=NULL;nowNode=nowNode->next){
diff=nowNode->element-x;
switch(mode){
case 1:if(minDiff>abs(diff)){minDiff=abs(diff);ans=nowNode->element;}break;
case 2:if(minDiff>abs(diff)&&x>=nowNode->element){minDiff=abs(diff);ans=nowNode->element;}break;
case 3:if(minDiff>abs(diff)&&x<=nowNode->element){minDiff=abs(diff);ans=nowNode->element;}break;
default:ans=0;/*これはまずいかも*/
}
}
fprintf(stdout ,"ans=%d",ans);
}
}
0358デフォルトの名無しさん
05/01/19 00:45:01リストと書いてあったのでリストで作ってしまったが、配列でも良いと思う。
0359デフォルトの名無しさん
05/01/19 00:49:38IIIの(4)、またまた怪しいがよろしく
#include <stdio.h>
#include <string.h>
void convSei( int i ){
int mask = 0x40000000 ;
for( ; mask > 0 ; mask /= 2 ){
if( ( mask <= i ) ) putchar( ( mask & i ) ? '1' : '0' ) ;
}
}
void convSyou( double d ){
putchar( '.' ) ;
int i ;
d -= (int)d;
for( i = 0 ; i < 5 ; i++ ){
d *= 2 ;
putchar( ( (int)d & 1 ) ? '1' : '0' ) ;
if( d - (int)d <= 0.0 ) break ;
}
}
int main( int argc, char* argv[] ){
double d ;
sscanf( argv[1], "%lf", &d ) ;
convSei( (int)d ) ;
convSyou( d ) ;
return 0 ;
}
0360352
05/01/19 00:54:58>>356さん
確か配列でやれと言ってたような気がします。
恥ずかしながら正直私のレベルで356さんが書いたプログラムは何がなんだか
分かりません(^_^;)凄いですね。
0361デフォルトの名無しさん
05/01/19 00:59:460363デフォルトの名無しさん
05/01/19 01:13:34条件・先生からのヒントはは先に言ってね*/
#define BUF_MAX 256
#define LIST_SIZE 256
void main(){
int x,ans,diff,minDiff,mode,listSize,cnt;
char buf[BUF_MAX];
int list[LIST_SIZE];
cnt=0;
fprintf(stdout,"input List element >");
fgets(buf,BUF_MAX,stdin); /*1行読み込む(最大BUF_MAX)*/
list[cnt]=atoi(buf);/*bufの内容をint型にしてlist[cnt]に格納*/
cnt++;
while(1){
fprintf(stdout,"input List element (* end)>");
fgets(buf,BUF_MAX,stdin);
if(buf[0]=='*')break;
list[cnt]=atoi(buf);
cnt++;
}
listSize=cnt;
0364デフォルトの名無しさん
05/01/19 01:14:36fgetsは習ってないなら、scanfでもいいかも。バグがあったら申し訳ない*/
while(1){
fprintf(stdout,"input x (* end)>");
fgets(buf,BUF_MAX,stdin);if(buf[0]=='*')break;x=atoi(buf);
fprintf(stdout,"1: most near\n2: most near but less than x\n, 3 most near but more than x >");
fgets(buf,BUF_MAX,stdin);mode=atoi(buf);
minDiff=INT_MAX;
for(cnt=0;cnt<listSize;cnt++){
diff=list[cnt]-x;
switch(mode){
case 1:if(minDiff>abs(diff)){minDiff=abs(diff);ans=list[cnt];}break;
case 2:if(minDiff>abs(diff)&&x>=list[cnt]){minDiff=abs(diff);ans=list[cnt];}break;
case 3:if(minDiff>abs(diff)&&x<=list[cnt]){minDiff=abs(diff);ans=list[cnt];}break;
default:ans=0;/*これはまずいかも*/
}
}
fprintf(stdout ,"ans=%d",ans);
}
}
0365352
05/01/19 01:17:09一応fgetsも習ってるんですが…(というか独習ですが)よく失敗します(^_^;)
0366デフォルトの名無しさん
05/01/19 01:28:32[2] 問題文(含コード&リンク):.(ドット)以降の空白をけす削除するプログラムを作ってます。
i love you.
me too.__ ←このアンダーバーの部分です。
[3] 環境 学校のUNIXです。
[4] 言語 C言語
[5] 期限 1/20 08:00
すみませんが、おねがいします。
#include<stdio.h>
int
main(int argc,char **argv)
{
int i,no,a;
char c, s[1000], t[1000];
i=0;
while((c=getchar())!='\n') {
s[i] = c;
i++;
if(i >= 999){
break;
}
}
0367デフォルトの名無しさん
05/01/19 01:31:41for(a=0;a<1001;a++){
if(s[a]=='.'){
if(s[a+1]=' '){
no++;
}
}
else if (s[a]==' '){
if(s[a+1]==' ') s[a+1] = '\0';
}
else
printf("%s", s[a]);
}
return 0;
}
0368デフォルトの名無しさん
05/01/19 01:38:17#include <stdio.h>
int main(void)
{
int c;
while ((c = getchar()) != EOF) {
int is_put;
if (c == '.') is_put = 0;
if (c == '\n') is_put = 1;
if (is_put) putchar(c);
}
return 0;
}
0369368
05/01/19 01:40:54#include <stdio.h>
int main(void)
{
int c, is_put = 1;
while ((c = getchar()) != EOF) {
if (c == '.') is_put = 0;
if (c == '\n') is_put = 1;
if (is_put) putchar(c);
}
return 0;
}
0370デフォルトの名無しさん
05/01/19 01:42:44むずかしいですね
ありがとうございます。
0371デフォルトの名無しさん
05/01/19 01:56:44「.(ピリオド)」が消えちゃわん?
0372デフォルトの名無しさん
05/01/19 02:01:59struct student{
char name[20];
int english;
int math;
int japanese;
double ave;
};
int main(void)
{
struct student s = {"A", 82, 72, 58};
struct student *ps;
ps = &s;
******
printf("%s: 英語=%3d 数学=%3d 国語=%3d : 平均=%2.2f\n", *****);
return 0;
}
ここの****の部分を補う問題なんですが・・・
お願いします。
0373372
05/01/19 02:05:282つめは psを使って成績を表示。
での場合です。
0374デフォルトの名無しさん
05/01/19 02:09:01ps->ave = ( ps->english + ps->math + ps->japanease ) / 3.0;
*****-2
ps->name, ps->english, ps->math, ps->japanease, ps->ave
0375372
05/01/19 02:15:17ありがとうございましたm(__)m
0376372
05/01/19 02:35:28[2] 問題文(含コード&リンク):372を改良し、
構造体のポインタ変数s(struct student *s)を宣言し
メモリを確保した後、そこに値を代入し、結果を出力せよ。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ(バージョン): Borland C++ 5.5.1
[3.3] 言語:C
[4] 期限:1月19日朝7時半
0377372
05/01/19 02:37:47#include <string.h>
#include <stdlib.h>
void print_data(struct student s);
struct student{
char name[20];
int english;
int math;
int japanese;
double ave;
};
int main(void)
{
struct student *s;
s = (struct person *)calloc(1, sizeof(struct student));
0378372
05/01/19 02:39:22strcpy(s->name, "A");
s->english = 82;
s->math = 72;
s->japanese = 58;
print_data(*s);
struct student *ps;
ps = &s;
ps->ave = ( ps->english + ps->math + ps->japanese ) / 3.0;
free(s);
return 0;
}
void print_data(struct student s){
printf("%s: 英語=%3d 数学=%3d 国語=%3d : 平均=%2.2f\n",
s.name, s.english, s.math, s.japanese, s.ave);
}
0379デフォルトの名無しさん
05/01/19 02:53:06すまんが(^^;;
>>377-378
このコードは元にしなくていいのだよね?
0380デフォルトの名無しさん
05/01/19 02:58:38*psとかは別にいらねえんじゃねえの?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void print_data(struct student s);
typedef struct student{
char name[20];
int english;
int math;
int japanese;
double ave;
}Student;
int main(void)
{
Student *s;
s = (Student *)malloc(sizeof(Student));
strcpy(s->name, "A");
s->english = 82;
s->math = 72;
s->japanese = 58;
s->ave = (s->english + s->math + s->japanese ) / 3.0;
print_data(*s);
free(s);
return 0;
}
void print_data(struct student s){
printf("%s: 英語=%3d 数学=%3d 国語=%3d : 平均=%2.2f\n",s.name, s.english, s.math, s.japanese, s.ave);
}
0381デフォルトの名無しさん
05/01/19 03:03:590382デフォルトの名無しさん
05/01/19 03:26:41途切れて表示されます
unsigned char in[Y][X]; /*入力2次元配列の型宣言*/
unsigned char out[Y][X]; /*出力用2次元配列の型宣言*/
こんなふうに配列を宣言してるんですけど配列って取り込める数値の制限って
あるんですか?
ちなみに画像は640×480です。
0383デフォルトの名無しさん
05/01/19 03:32:55それだけでは何とも言えんが、
原因はあなたが想像している事とは関係無い。
0384デフォルトの名無しさん
05/01/19 03:33:42素直に動的確保するが吉。
0385デフォルトの名無しさん
05/01/19 03:52:31こんな感じなんですがご指摘ありましたらよろしくおねがいます。
include <stdio.h>
#include <stdlib.h>
#define Y 480/*画像の大きさ*/
#define X 640
main(){
FILE *fp,*fg;
unsigned char in[Y][X];
unsigned char out[Y][X];
int x,y;
for(y= 0;y < Y;y++){
for(x=0;x<X;x++) {
input[y][x]=out[y][x]=0; /*配列の初期化*/
}}
fp=fopen("samlpe.pgm","rb"); /*入力ファイルのオープン*/
if(fp==NULL){
printf("open error");
exit(1);}
0386385
05/01/19 03:53:55for(y=0;y<Y;y++){
for(x=0;x<X;x++) {
input[y][x]=fgetc(fp); /*配列への画像データの代入*/
}}
fg=fopen("sample2.pgm","wb"); /*出力ファイルのオープン*/
for (y=0;y<Y;y++){
for(x=0;x<X;x++){
out[y][x]=input[y][x];}}
for(y=0;y<Y;y++){
for(x=0;x<X;x++) {
fprintf(fg,"%c",out[y][x]);
}}
fclose(fp); /*入力ファイルのクローズ*/
fclose(fg); /*出力ファイルのクローズ*/
}
0387デフォルトの名無しさん
05/01/19 04:01:13開口。ダメダメじゃん・・・
PGMの読み込みがちゃんとできていない
0388デフォルトの名無しさん
05/01/19 04:01:450389385
05/01/19 04:04:52そうなんですか?どうかけばいいんでしょう?
ちなみにこのプログラムは>308からつくりました
0390デフォルトの名無しさん
05/01/19 04:07:28PGMのファイルフォーマットを調べてからにしてくれ。
0391デフォルトの名無しさん
05/01/19 04:19:01P2
640 480
255
なってました
0392のりこ
05/01/19 05:12:45問題
「正規分布で平均値 S:0.3 L:0.7
分布3σ=0.2のとき マルコフ確立分布で表せるときのプログラムを組み出力せよ。」
どなたかわかる方いらっしゃいますか?
0393デフォルトの名無しさん
05/01/19 05:14:02>>ヘッダの分も確保するか、読み捨てるかすれ。
具体的にどうすればこれをできるのか詳しく書いてるサイトご存知の方or説明の
できる方いませんか?
0394デフォルトの名無しさん
05/01/19 05:18:30http://www.math.ucla.edu/~yan/10b.1.05w/projects/project1.html
fileから読み込んで、どこにStorageすればいいんでしょう?
やばい、わかんない。。。
0395デフォルトの名無しさん
05/01/19 05:18:51http://www.google.co.jp
0397デフォルトの名無しさん
05/01/19 07:34:24#include <stdio.h>
#include <string.h>
int main() {
struct data{
char str[100];
int turn;
};
int i=0,j,k;
char buf[100];
struct data d_array[100],tmp;
while(1) {
scanf("%s", buf);
if(buf[0] == '*') break;
else {strcpy(d_array[i].str, buf);d_array[i].turn = i; i++}
}
printf("Number of Data : %d\n", i);
for(j=0; j<i; j++)
for(k=j+1; k<i; k++)
if(strcmp(d_array[j].str,d_array[k].str) > 0) {
tmp = d_array[j];
d_array[j] = d_array[k];
d_array[k] = tmp;
}
for(j=0; j<i; j++) printf("Data(%d) %s \n",d_array[j].turn+1, d_array[j].str);
return 0;
}
0398397
05/01/19 07:38:10#include <stdio.h>
#include <string.h>
int main() {
struct data{
char str[100];
int turn;
};
int i=0,j,k;
char buf[100];
struct data d_array[100],tmp;
while(1) {
scanf("%s", buf);
if(buf[0] == '*') break;
else {strcpy(d_array[i].str, buf);d_array[i].turn = i; i++;}
}
printf("Number of Data : %d\n", i);
for(j=0; j<i; j++)
for(k=j+1; k<i; k++)
if(strcmp(d_array[j].str,d_array[k].str) > 0) {
tmp = d_array[j];
d_array[j] = d_array[k];
d_array[k] = tmp;
}
for(j=0; j<i; j++) printf("Data(%d) %s \n",d_array[j].turn+1, d_array[j].str);
return 0;
}
0399372
05/01/19 08:11:26ありがとうございました。
0400デフォルトの名無しさん
05/01/19 08:30:00[2] 問題文://
例:価格が$100のセーターが20%割引で売られている。 そのセーターを持っている30%割引のクーポンで更に割引した場合、合計金額は支払はなければならないのか?
User inputは以下のように表示されるようにしなければならない。
Example:
What is the price of the item? 100
What is the first percentage to be taken off? 20
What is the second percentage to be taken off? 30
Using the incorrect strategy, you would pay $50
In reality, the correct price is $56
This results in a difference of $6
上記の様に、二回割引されるようにしなければならず、例の様に20%割引された商品を更に30%割引することに加えて、30%と20%を足してしまい合計50%割引にするようにもしなければなりません。
間違った結果、正しい結果両方が表示される様にしなければならない。
Floatを使うこと。
どんな数値でも計算される様にしなければならない。
C++この学期から始めました。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ(バージョン): BCC 5.5.1
[3.3] 言語:C++
[4] 期限:一月二十一日
0401385
05/01/19 08:44:54間違い、指摘ありましたらよろしくおねがいます。ちなみに実行して見たところ
やっぱり途中で画像が途切れて表示されます
#include <stdio.h>
#include <stdlib.h>
#define YSIZE 480/*画像の大きさ*/
#define XSIZE 640
#define HIGH 255 /*濃度値 255=HIGH=白*/
#define LOW 0 /*濃度値 255=LOW=黒*/
main(){
FILE *fp,*fg; /*入出力ファイル操作用ポインタの宣言*/
unsigned char input[YSIZE][XSIZE]; /*入力2次元配列の型宣言*/
unsigned char out[YSIZE][XSIZE]; /*出力用2次元配列の型宣言*/
char str[1000];
int x,y,th;
int w,h; /* 画像の大きさ */
int d; /* 画像の階調 */
for(y= 0;y < YSIZE;y++){
for(x=0;x<XSIZE;x++) {
input[y][x]=out[y][x]=0; /*配列の初期化*/
}}
0402385
05/01/19 08:45:36if(fp==NULL){
printf("open error"); /*ファイルのエラー処理*/
exit(1); }
fscanf(fp,"%s",str); /* マジックナンバーの読込み */
fscanf(fp,"%d %d",&w,&h); /* 画像の大きさの読み込み */
fscanf(fp,"%d",&d); /* 画像の階調の読み込み */
for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++) {
input[y][x]=fgetc(fp); /*配列への画像データの代入*/
} }
fg=fopen("sample2.pgm","w"); /*出力ファイルのオープン*/
fprintf(fg, "P2\n%d% d\n%d",XSIZE , YSIZE, 255);
fwrite(input, sizeof(unsigned char), YSIZE*XSIZE, fg);
for (y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++){
out[y][x]=input[y][x];} }
for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++) {
fputc(out[y][x],fg); /*配列からディスクへの書き込み*/
}}
fclose(fp); /*入力ファイルのクローズ*/
fclose(fg); /*出力ファイルのクローズ*/
}
0403デフォルトの名無しさん
05/01/19 08:48:08who had come to review his records.
At one point the auditor exclaimed,
"Mr. Carr, we feel it is a great privilege to be allowed to
live and work in the USA. As a citizen you have an obligation to pay taxes,
and we expect you to eagerly pay them with a smile."
"Thank goodness,"
returned Mr. Carr, with a giant grin on his face,
"I thought you were going to want me to pay with cash."
0404デフォルトの名無しさん
05/01/19 08:50:38fgetcじゃうまくいかない。
fscanf(fp,"%d" のほうがまだマシだ
0405385
05/01/19 09:04:22されましたが・・・・・。
fscanfにするのならば
fscanf(fp,"%d",&○) ○の部分は何を入れればよいのでしょう?
0406デフォルトの名無しさん
05/01/19 09:09:47inputという配列に入れたいのだろう?
0407385
05/01/19 09:21:14for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++) {
fscanf(fp,"%d",&input[y][x]); /*配列への画像データの代入*/
こういう事でしょうか?
0408デフォルトの名無しさん
05/01/19 09:32:43マニュアルすら読めない知恵遅れの方ですか?
0409デフォルトの名無しさん
05/01/19 09:33:56いつまでの期限の宿題なのだ?
あなたは基礎が全然できていないから、答えのソースを貼っても
意味が無さそうだなあ
入門書からやり直してほしい
0410デフォルトの名無しさん
05/01/19 09:40:573日後です。すいません基礎からやり直すので、できれば模範ソース貼ってください
0411デフォルトの名無しさん
05/01/19 09:42:45FILE *fp,*fg; /*入出力ファイル操作用ポインタの宣言*/
unsigned char input[YSIZE][XSIZE]; /*入力2次元配列の型宣言*/
unsigned char out[YSIZE][XSIZE]; /*出力用2次元配列の型宣言*/
char str[1000];
int x,y,th;
int w,h; /* 画像の大きさ */
int d; /* 画像の階調 */
for(y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++){
input[y][x]=out[y][x]=0; /*配列の初期化*/
}}
fp=fopen("sample.pgm","r"); /*入力ファイルのオープン*/
if(fp==NULL){
printf("open error"); /*ファイルのエラー処理*/
exit(1); }
0412デフォルトの名無しさん
05/01/19 09:43:19fscanf(fp,"%d %d",&w,&h); /* 画像の大きさの読み込み */
fscanf(fp,"%d",&d); /* 画像の階調の読み込み */
for(y=0;y<h;y++){
for(x=0;x<w;x++) {
fscanf(fp,"%d",&input[y][x]);
} }
fg=fopen("sample2.pgm","w"); /*出力ファイルのオープン*/
fprintf(fg, "P2\n%d% d\n%d\n",XSIZE , YSIZE, 255);
for (y=0;y<h;y++){
for(x=0;x<w;x++){
out[y][x]=input[y][x];} }
for(y=0;y<h;y++){
for(x=0;x<w;x++) {
fprintf(fg," %3d",out[y][x]); /*配列からディスクへの書き込み*/
}fprintf(fg,"\n");}
fclose(fp); /*入力ファイルのクローズ*/
fclose(fg); /*出力ファイルのクローズ*/
return 0;
}
これでも15点くらいだがな。
0413デフォルトの名無しさん
05/01/19 09:44:46>できれば模範ソース貼ってください
こういう奴はほぼ間違いなくやりなおす気などない
0415デフォルトの名無しさん
05/01/19 09:52:08頑張ってね!
0416デフォルトの名無しさん
05/01/19 09:52:09一度ファイルを覗いてご覧>>407
0417デフォルトの名無しさん
05/01/19 09:52:58できればそうしたいのだがこれからさらに、二値化にするプログラムを作らなきゃ
いけないのですよ。だからどうしても模範ソースを理解しないとダメなんですよ。
>>411
ありがとうございます!!
これで自分のがどこが悪いのか分かりました。感謝します!
0418デフォルトの名無しさん
05/01/19 09:54:15・pgmフォーマットには(一応)行辺りカラム数制限があるわけだが。
・読み込み完了後、クローズまで引っ張っているのには何か理由があるのかな?
#自称15点ということで、意図的なのだとは思うが。
0419デフォルトの名無しさん
05/01/19 09:56:22もちろん意図的だ。親心だよ。
0420デフォルトの名無しさん
05/01/19 09:56:592値化についての要検索キーワード。
・諧調数
256諧調(最大255)のままでやるのか諧調数制御もするのか。
・閾値
いきなりディザはないだろうから2値化するのに閾値が必要。
0421デフォルトの名無しさん
05/01/19 10:01:23ありがとうございます。二値化の理論だけはなんとなく分かるのでこんな感じで
プログラム使用かと思ってるんですけどね。
for (y=0;y<YSIZE;y++){
for(x=0;x<XSIZE;x++){
if(input[y][x]>=ikiti){ /*2値化,閾値以上の濃度値ならば*/
out[y][x]=255;
}
else{
out[y][x]=0;
}
}
}
0422デフォルトの名無しさん
05/01/19 10:47:40#include <iostream>
#include <cstdlib>
int main(){
float price,first,second,incorrect,correct;
std::cout<<"What is the price of the item? ";
std::cin>>price;
std::cout<<"What is the first percentage to be taken off? ";
std::cin>>first;
std::cout<<"What is the second percentage to be taken off? ";
std::cin>>second;
incorrect=price*(100-(first+second))/100;
correct=price*(100-first)*(100-second)/10000;
std::cout<<"Using the incorrect strategy, you would pay $"<<incorrect<<std::endl;
std::cout<<"In reality, the correct price is $"<<correct<<std::endl;
std::cout<<"This results in a difference of $"<<fabs(incorrect-correct)<<std::endl;
return 0;
}
0423デフォルトの名無しさん
05/01/19 10:59:25頑張って二次配列とファイル入出力を調べてね。
0424お願いします
05/01/19 11:02:40という問題がわかりません。
誰か教えてくれませんか?
0425デフォルトの名無しさん
05/01/19 11:10:32[1] 授業単元:暗号化
[2] 問題文(含コード&リンク):
以下のグローバル変数CODEを使って,負でない整数を暗号・復号化する。
/* 0 1 2 3 4 5 6 7 8 9 */
int CODE[] ={0,7,8,9,3,4,5,2,1,6};
負でない整数を暗号にする関数[int encode(int data)],復号する(元に戻す)関数[int decode(int code)]を作りなさい。
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ(バージョン): VisualC++ Ver6.0
[3.3] 言語:C
[4] 期限:2005年01月31日まで
よろしくお願いします。
0426デフォルトの名無しさん
05/01/19 11:20:12x ++ ;
}
int decode(int code) {
code -- ;
}
main() {
int i,n = sizeof(CODE)/sizeof(CODE[0]) ;
for(i=0; i<n ;i++) {
CODE[i]=encode(CODE[i]) ;
}
for(i=0; i<n ;i++) {
CODE[i]=decode(CODE[i]) ;
} } // ・・・・・・・
0427デフォルトの名無しさん
05/01/19 11:21:56十進表示の各桁をCODE[]で撹拌しろ。nを10で割った余りはn%10
0428デフォルトの名無しさん
05/01/19 11:23:22全くダメ。使えない
0429デフォルトの名無しさん
05/01/19 11:24:360430デフォルトの名無しさん
05/01/19 11:29:23かき混ぜるの意
0431デフォルトの名無しさん
05/01/19 11:38:35[2] 問題文(含コード&リンク): 化学反応のサンプリング(反応量の平均と分散を求める)
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ(バージョン): GCC
[3.3] 言語:C言語
[4] 期限:2005年1月20日
A+B=Cとなるような化学反応式があり、Aを可変、Bを一定の時の計算をする
int i,j,k;
nstep=30;
loop=20;
for(0<j<loop){
A=(100/j);
B=100;
for(0<i<nstep){
A=(100/j)*drand48();
B=100*drand48();
func(x, y, z)// 結果を返す関数
result_A;
result_B;
}
ave_A = result_A / nsteps; // result_Aの平均値を求める
ave_B = result_B / nsteps; // result_Bの平均値を求める
printf("%f, %f\n", ave_A, ave_B);
}
2重ループの外にfor文を加えて3重ループ(for(0<k<20))にし、
平均値(ave_A、ave_B)の平均値を求めるにはどうすればいいのですか?
お願いします。
0432デフォルトの名無しさん
05/01/19 11:50:20平均値=合計値÷個数
0433デフォルトの名無しさん
05/01/19 11:51:010434デフォルトの名無しさん
05/01/19 11:58:55ソースお願いします
0435デフォルトの名無しさん
05/01/19 12:01:59もーれつに頑張って合計しろ
0436デフォルトの名無しさん
05/01/19 12:22:28言うだけでなにも出来ない人
0437デフォルトの名無しさん
05/01/19 12:26:460438デフォルトの名無しさん
05/01/19 12:27:54俺はなんでもできるぜ!!!
0439デフォルトの名無しさん
05/01/19 12:31:15>431を解決してください。
0440デフォルトの名無しさん
05/01/19 12:42:12input_data()で、表示はdisplay_data()と処理を関数で分けて行ないなさい」
という問題があるのですが、「一件分の入力処理はinput_data()で、表示はすべてdisplay_data()で
処理しなさい」ということですか??
0442デフォルトの名無しさん
05/01/19 12:46:43前スレで俺答えた気がする
0443デフォルトの名無しさん
05/01/19 12:50:33それは先生に聞きなさい
0444デフォルトの名無しさん
05/01/19 12:52:060445デフォルトの名無しさん
05/01/19 12:55:42#define decode(a,n) encode(a,n)
void encode(unsigned int a,int n)
{
int i;
unsigned int c,d;
for(i=0;i<n;i++){
c=a[i];
d=0;
while(c){
d*=10;
d+=CODE[i%10]c%10;
c/=10;
}
}
}
0446デフォルトの名無しさん
05/01/19 12:56:38d+=CODE[i%10]^(c%10);
0447デフォルトの名無しさん
05/01/19 13:04:070448352
05/01/19 13:27:26なぜかコンパイルしても動きません。
エラーはないのですがプログラムが実行出来ませんと出ます。
よろしくお願いします。
0449352
05/01/19 13:30:35error C2065: 'INT_MAX' : 定義されていない識別子です。
と出てビルドできません。
何か読み込む特殊なライブラリとかあるんでしょうか?
0450デフォルトの名無しさん
05/01/19 13:45:47stdio.h
stdlib.h
をインクルードしてみ
それでもINT_MAXが未解決なら
#define INT_MAX (0x7FFFFFFF)
0451デフォルトの名無しさん
05/01/19 13:47:030452デフォルトの名無しさん
05/01/19 13:49:27そだねlimits.hだね
0453352
05/01/19 13:54:22stdio.h
stdlib.h
この二つは入れてたんですが、<limits.h> でいけました。
0454352
05/01/19 14:05:03IIIの(3)、(4)ともに動作しませんでした。
3の方はビルドできるが実行するとエラー落ち
4のほうはビルドも出来ません。
0455デフォルトの名無しさん
05/01/19 19:06:05俺は355じゃないが、ともにビルドできて、動作もするぞ。
動作は、
./hoge.exe 101.01
と引数を与えなければ駄目だ。
標準入力からやりたい場合は、mainのd =の行を以下の3行に書き換え。
char temp[256];
fgets(temp,256,stdin);
d = convSei( strtok( temp , "." ) ) ;
(4)の方も同様に ./hoge 205.25 などの引数が必要。
これもsscanfの行をscanf("%lf",&d);に書き換え。
コンパイルが通らないなら、エラーメッセージくらいは書いてくれ。
0456デフォルトの名無しさん
05/01/19 19:21:28OS: WindowsXP
言語:C
問題文
問1
かけ算の九九の表には、全部で81種類のかけ算(1x1から9x9まで)が出てくる。
これらの積の総和を求めたい。
(1)関数を用いないで積の総和を求める。
(2)各段の積の総和は関数danで求め、それらの総和はmain関数で求める。
(3)個々の掛け算の積は関数sekiで求め、それらの総和はmain関数で求める。
問2
異なるn個のものからr個とって1列に並べる順列の数(nPr)と異なるn個のものか
らr個とる組み合わせの数(nCr)を求める。n!は関数factorialで求める。
どなたかよろしくお願いします。問2が全くわかりません・・・
0457デフォルトの名無しさん
05/01/19 19:38:07#include <stdio.h>
#include <string.h>
int factorial(int a){
if(a==0)return 1;
else return a*(factorial(a-1));
}
int permutation(int n,int r){
return factorial(n)/factorial(n-r);
}
int combination(int n,int r){
return factorial(n)/factorial(n-r)/factorial(r);
}
int main(){
printf("5P3=%d\n",permutation(5,3));
printf("5C3=%d\n",combination(5,3));
return 0;
}
0458デフォルトの名無しさん
05/01/19 19:38:27問2
factorialを作ってそれを使うならば、二項係数の関数c_factorialは次の通り。
int factorial(int n){return n == 1 ? 1 : n * factorial(n - 1);}
int c_factorial(int n, int r){return factorial(n) / factorial(n - r) / factorial(r);}
factorialを使わなくてもよいならば、パスカルの三角形の公式から
int c_pascal(int n, int r){return n == r || r == 0 ? 1 : c_pascal(n - 1, r - 1) + c_pascal(n - 1, r);}
と書くこともできる。
追加点(゚д゚)ウマー
0459デフォルトの名無しさん
05/01/19 19:46:36#include <stdio.h>
#include <string.h>
int dan(int a){
int i,sum=0;
for(i=1;i<=9;i++){sum+=i*a;/*sum=sum+i*/}
return sum;
}
int seki(int a,int b){return a*b;}
int main(){
int i,j,sum;
sum=0;/*(1)*/
for(i=1;i<=9;i++){for(j=1;j<=9;j++){sum+=i*j;}}
printf("(1)=%d\n",sum);
sum=0;/*(2)*/
for(i=1;i<=9;i++){sum+=dan(i);}
printf("(2)=%d\n",sum);
sum=0;/*(3)*/
for(i=1;i<=9;i++){for(j=1;j<=9;j++){sum+=seki(i,j);}}
printf("(3)=%d\n",sum);
return 0;
}
0460デフォルトの名無しさん
05/01/19 19:52:53たくさんレスつくなんてモテモテだな!
0461デフォルトの名無しさん
05/01/19 19:54:09>>458
>>459
ありがとうございます!助かりました!
これからやってみます。
0462デフォルトの名無しさん
05/01/19 20:00:10問題が簡単だと厨でも解けるからな。
0463デフォルトの名無しさん
05/01/19 20:02:440464デフォルトの名無しさん
05/01/19 20:11:27OS: WindowsXP
言語:C++
長い文字列と短い文字列(単語みたいなもの)を入力して
長い文字列の中に短い文字列がいくつ入ってるか数を出力するプログラムはどうすればいいですか?
0465デフォルトの名無しさん
05/01/19 20:50:26AAAAAA のなかに AA はいくつ入ってると考えるの?
0466デフォルトの名無しさん
05/01/19 21:55:07そうです〜長い英文の中にappleという文字列はいくつ入ってるかとかです
検索エンジンとかに使われてるやつらしいんですが
0467デフォルトの名無しさん
05/01/19 21:57:415個だと簡単だね。
0468デフォルトの名無しさん
05/01/19 21:57:43AA AA AAと数えて3個なのか、重なり許して5個と数えるのかってことさね。
0469デフォルトの名無しさん
05/01/19 21:58:360470デフォルトの名無しさん
05/01/19 22:12:37[3.1] OS: windows
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C言語
[4] 期限:明日の昼までです
問題文(含コード&リンク):
課題1
main関数のみで5人の学生の偏差値を求めるプログラムを作れ。
(関数goukei,goukei2を使うこと。)
公式
分散(D)=二乗和の平均 − 平均の二乗
標準偏差=√D ,プログラムではsqrt(D)
偏差値=50.0+10.0*(点数−平均)/ 標準偏差
課題2
課題1の偏差値の求め方を関数 hensatiを使って人数分の偏差値を求めよ。
注意 最初にプロトタイプ型で関数を3つ宣言する。
すいません、お願いします
0471デフォルトの名無しさん
05/01/19 22:21:25点数の入力はどーすんねん
0472デフォルトの名無しさん
05/01/19 22:30:23何も書いてないので恐らくscanfでキー入力かと思います
0473デフォルトの名無しさん
05/01/19 23:01:30>>468と、大文字小文字とかは区別するのかくらい書いとけ
0474デフォルトの名無しさん
05/01/19 23:14:460475デフォルトの名無しさん
05/01/19 23:15:48> main関数のみで5人の学生の偏差値を求めるプログラムを作れ。
> (関数goukei,goukei2を使うこと。)
は?
0476デフォルトの名無しさん
05/01/19 23:21:14int kaijo(int a)
{
int b,c;
c=1;
for(b=1;b<a+1;b++)
{
c=c*b;
}
return c;
}
main()
{
int x,y,z,nPr,nCr,n,r;
scanf("%d %d",&n,&r);
x=kaijo(n);
y=kaijo(n-r);
z=kaijo(r);
nPr=x/y;
nCr=x/(y*z);
printf("nPr=%d nCr=%d",nPr,nCr);
return 0;
}
nとrを入力してnPrとnCrを求めるプログラムを考えたのですが
あってますでしょうか?ちなみにscanfのところ2ついっぺんにしたんですが、
こんな書式あるんですか?
0477デフォルトの名無しさん
05/01/19 23:23:06「windows」って問題に書いてあるのか? 「windows」なら分かるがw
「main関数のみ」なのに「関数goukei,goukei2を使う」って矛盾してるだろ(藁
0478デフォルトの名無しさん
05/01/19 23:45:31[2] 問題文:配列の問題(Nを使う)で、素数の表を作ります。その際、エラトステネスのふるい
(まず2の倍数を消して、次に3の倍数、4,5、・・の倍数を消していく)という方法を使う。
nの値は2以上100000以下とする。それ以外の値が入力されたら、「不適切です!」と表示させる。
実行結果は
2 3 5 7 11 ・・・・・
・・・・・・・・・・
nまでの個数は〜個です。 と表示させ、かつ、10個で改行する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ(バージョン):確かVisual Basicだったかと・・
[3.3] 言語:C++
[4] 期限:2005年1月18日まで
[5] その他の制限:この授業では return を使わないので、それでお願いします。
0479デフォルトの名無しさん
05/01/19 23:46:520480デフォルトの名無しさん
05/01/19 23:51:150481デフォルトの名無しさん
05/01/19 23:54:04効率悪くて良かったら5行ぐらいで作れるよ。
0482デフォルトの名無しさん
05/01/19 23:54:47> [3.2] コンパイラ(バージョン):確かVisual Basicだったかと・・
違う。VisualC++だ。
0483デフォルトの名無しさん
05/01/19 23:58:32で、VBなの?C++なの?
0484478
05/01/19 23:59:10そうです。VisualC++でした。わがまま申し訳ないです
0485デフォルトの名無しさん
05/01/20 00:04:45#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;
int main()
{
int N;
cin >> N;
if (N < 2 || 100000 < N) { cerr << "不適切です!" << endl; exit(1); }
vector<bool> prime;
prime.resize(N + 1, true);
for (int i = 2; i <= N; i++) { if (prime[i]) { for (int j = 2; i * j <= N; j++) { prime[i * j] = false; } } }
int count = 0;
for (int i = 2; i <= N; i++) {
if (prime[i]) {
cout << i;
if (++count % 10 == 0) { cout << endl; }
else { cout << " "; }
}
}
if (count % 10 != 0) { cout << endl; }
cout << N << "までの個数は" << count << "個です。" << endl;
exit(0);
}
0486デフォルトの名無しさん
05/01/20 00:06:520487デフォルトの名無しさん
05/01/20 00:10:33金払え
0488478
05/01/20 00:14:08printf とか scanf とかは使わないんですか?
0489デフォルトの名無しさん
05/01/20 00:17:53お前、自分で書いたろう。
>[3.3] 言語:C++
文句言うな。
0490デフォルトの名無しさん
05/01/20 00:21:16終わってるな
0491デフォルトの名無しさん
05/01/20 00:29:17「すみません、C++ではなくて、C言語でお願いします」って言え。
0492478
05/01/20 00:31:38いや、本当に今謝ろうかずっと迷ってたとこです・・m( )m
ごめんなさい!
0493デフォルトの名無しさん
05/01/20 00:32:02えと、あの、ごめんなさいー!
printfもscanfもC++でも使えるんですよー^^
でもでも、それってレガシーでしょう?
0494デフォルトの名無しさん
05/01/20 00:32:49[2] 問題文(含コード&リンク):
与えられたグラフGに対しKruskalの算法をもちい最小木を求めるプログラムを作りなさい(言語は何でもよい)。
[3] 環境
[3.1] OS: ?
[3.2] コンパイラ(バージョン):?
[3.3] 言語:C/C++/どちらでも可
[4] 期限:2005年1月31日17:00まで
[5] その他の制限:
条件1・採用した辺からできる部分グラフの連結成分を保持するデータ構造において、
linkを行う際にunion by rank だけ取り入れたものとunion by rank と path compression を
併用したものの両方を作成。
条件2・四則演算、比較、代入の総数を計測し、最小木とともにその総数を出力すること
また、Gの入力は以下の形式で記述されたテキストファイルによるものとする
Gの頂点数Gの辺数
Gの各辺に対する以下のようなリスト
端点 端点 辺の重み
たとえば、次の頂点数が5、辺数が7のグラフの例である
5 7
1 2 3
1 3 5
1 5 20
2 4 10
2 5 7
3 4 19
4 5 5
0495デフォルトの名無しさん
05/01/20 00:51:37ワロタ
0496ぷ ◆wbKIYOMIZU
05/01/20 00:51:37#include <iostream>
#include <vector>
void main(void) {
int sievesize;
do {
std::cout << "素数を求める範囲(2-100000) > " ;
std::cin >> sievesize;
}while( (sievesize < 2 || sievesize > 100000)
&& (std::cout << "不適切です!" << std::endl, true));
std::vector<bool> sieve(sievesize, true);
for (size_type i = 2; i * i < sievesize; i++) {
if (sieve[i] == true) {
for (size_type j = i * 2; j < sievesize; j += i) {
sieve[j] = false;
}
}
}
int numOfPrime = 0, row = 0;
for (size_type j = 2; j < sievesize; j++) {
if (sieve[j] == true) {
std::cout << j << " ";
numOfPrime++, row++;
if (row > 9) {
std::cout << std::endl;
row = 0;
}
}
}
std::cout << std::endl;
std::cout << sievesize << "までの個数は" << numOfPrime << "個です。\n" ;
}
0497デフォルトの名無しさん
05/01/20 00:53:55間違いあるよ!
>>492を読んだらわかるよ!
0498ぷ ◆wbKIYOMIZU
05/01/20 00:54:250499デフォルトの名無しさん
05/01/20 00:55:16ドンマイ
0500デフォルトの名無しさん
05/01/20 00:58:49> if (sieve[i] == true) {
なんで (sieve[i] == true) が true であることを
if ((sieve[i] == true) == true) って調べないの?
0501ぷ ◆wbKIYOMIZU
05/01/20 01:07:32じゃあ
if ((sieve[i] == true) == true) がtrueであることを
if (((sieve[i] == true) == true) == true) って調べて下さい。
0502デフォルトの名無しさん
05/01/20 01:08:45union by rank と pass compression について手持ちの資料になんかあるなら追記してくれ。
英語サイトで解説してるのみつけたが、いまいちわからん。
0503494
05/01/20 01:34:14英語サイトまで読んでくれるなんて;;
> union by rank と pass compression について
手持ちのプリント2枚分あるんですが、プリンターで取り込んだんですが、
どうやったらアップできるのか…_| ̄|○
0504デフォルトの名無しさん
05/01/20 01:58:13スキャナとかで画像ファイルつくって
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
でUPすりゃいい
0505デフォルトの名無しさん
05/01/20 02:04:21アルゴリズムイントロダクション第2巻にのってるよ
0506デフォルトの名無しさん
05/01/20 02:11:58そんな情報じゃ、その本を持ってる人しかわからんじゃん。独りよがりな書き込みスンナ。
0507デフォルトの名無しさん
05/01/20 02:15:050508デフォルトの名無しさん
05/01/20 02:16:47ここは宿題スレだぞ。ブルジョアな書き込みスンナ。
0509デフォルトの名無しさん
05/01/20 02:22:58うっせハゲ。宿題に答える気がないなら失せろ。
0510デフォルトの名無しさん
05/01/20 02:23:110511デフォルトの名無しさん
05/01/20 02:24:58if ((sieve[i] == true) == true) がtrueであることをしらべられるんですか?
0512デフォルトの名無しさん
05/01/20 02:26:02投下された問題を先に解くか解かれるかたまんないね
0513デフォルトの名無しさん
05/01/20 02:28:26文は値をもたない。君の言明は意味がない。
0514デフォルトの名無しさん
05/01/20 02:38:270515デフォルトの名無しさん
05/01/20 02:38:36#include <stdio.h>
#include <math.h>
int main() {
int i, score[5];
double heikin, bunsan,sum=0.0,hyohen,hensati[5];
printf("成績を入力してください\n"); for(i=0; i<5; i++) scanf("%d", &score[i]);
heikin = ((double)score[0]+(double)score[1]+(double)score[2]+(double)score[3]+(double)score[4])/5.0;
for(i=0; i<5; i++) sum = sum + (double)score[i]*(double)score[i];
bunsan = sum/5.0 - heikin*heikin; hyohen = sqrt(bunsan);
for(i=0; i<5; i++) hensati[i] = 50.0+10.0*((double)score[i]-heikin)/hyohen;
printf("偏差値は、%lf %lf %lf %lf %lf\n",hensati[0],hensati[1],hensati[2],hensati[3],hensati[4]);
return 0;
}
0516515
05/01/20 02:39:49#include <stdio.h>
#include <math.h>
double hensati(double hyohen, int tensu, double heikin);
int goukei(int score[], int j);
int goukei2(int score[], int j);
int main() {
int i, score[5];
double heikin,bunsan,hyohen;
printf("成績を入力してください\n"); for(i=0; i<5; i++) scanf("%d", &score[i]);
heikin = (double)goukei(score, 5)/5.0;
printf("%lf", heikin);
bunsan = (double)goukei2(score, 5)/5.0 - heikin*heikin;
hyohen = sqrt(bunsan);
for(i=0; i<5; i++) printf("%lf \n", hensati(hyohen, score[i], heikin));
return 0;
}
int goukei(int score[], int j) {
int i,sum=0;
for(i=0; i<j; i++) sum = sum + score[i];
return sum;
}
int goukei2(int score[], int j) {
int i, sum=0;
for(i=0; i<j; i++) sum = sum + score[i]*score[i];
return sum;
}
double hensati(double hyohen, int tensu, double heikin){
return 50.0+10.0*((double)tensu-heikin)/hyohen;
}
0517デフォルトの名無しさん
05/01/20 02:49:47はい、C言語で。
#include <stdio.h>
int main(void) {
int i, j, n, sieve[100001], notprime;
scanf("%d", &n);
if (n < 2 || 100000 < n)
printf("不適切です!");
else {
for (i = 2; i <= n; i++) sieve[i] = 1;
sieve[0] = sieve[1] = 0;
for (i = 2; i <= n / 2; i++) {
notprime = i;
while ((notprime += i) <= n) sieve[notprime] = 0;
}
for (i = 2, j = 0; i <= n; i++) {
if (sieve[i]) {
printf("%d ", i);
if (++j % 10 == 0) printf("\n");
}
}
}
}
0518494
05/01/20 03:02:07>>503
ここにアップ出来てるのかどうか…
ttp://up.isp.2ch.net/upload/c=01owarai/index.cgi
ちなみにタイトルは「union by rank と pass compression 」
0519デフォルトの名無しさん
05/01/20 03:11:22#include <stdio.h>
#define MAX 1000
int main(){
char strBuf[MAX];
int i, length, c;
do{
i = 0;
while(((c = getchar()) != '\n')){
if(i < MAX-1){
strBuf[i++] = c;
}
}
strBuf[i] = '\0';
length = 0; i= 0;
while( strBuf[i] != '\0' ){
if( strBuf[i] == '.' ){
length = ++i;
while( strBuf[i] == ' ' )++i;
}else{
length = ++i;
}
}
strBuf[length] = '\0';
/*わかりやすいようにスラッシュを入れた*/
printf( "%s/\n", strBuf );
}while(strBuf[0] != '\0');
}/*何も入力せずにエンターで終了*/
0520デフォルトの名無しさん
05/01/20 04:32:390521デフォルトの名無しさん
05/01/20 04:40:13配列のクイックソートをするだけでいいじゃん
0522デフォルトの名無しさん
05/01/20 09:04:30f(x)=cos(x-1)+log(x/4 +1)-1;
f(x)=ln(x)-(1.5)^x/4; <--1.5のx/4乗
f(x)=tan(4+x/2)+3;
[3] OS: Unix Solaris
C++
[5] 倍精度計算、10の-12乗以下の絶対誤差、最高100回までの反復を用いる事。
正直、全然分からないまま 数日が過ぎてしまいました・・・
よろしく御願いします。
0523522
05/01/20 09:16:43[5] ・二分法には、0 <= i <= 9 の [i, i+1] 間隔 (f(i)と、f(i+1)の+、−サインは一致する事はない)を利用する事。
・ニュートン法の、反復開始地点は 0から10の間である。
・割線法は、 (i, i+1)で開始する。 (0 <= i <= 9)
・xが 求めたルートの10の-12乗内であるか確認し、もし違えば その開始条件ではルートを
見つける事は無理だということをPrintする。
・ニュートン法と割線法の場合、Convergeしない場合があることに注意。もし、Xiが [-10の5乗, +10の5乗]の範囲を超えたら、プログラムは停止する。
・gethrtime()を使って、式の時間を計る事。
以上が、書き忘れていた条件です。
0524デフォルトの名無しさん
05/01/20 09:41:191.リストの先頭の要素をとりだす。
2.ふたつの線形リストL,Rを用意して、1.でとりだした要素より小さい要素は
Lに、それ以外はRにつなぐ。
3.LとRをそれぞれソートしてから連結する。
じつは配列でやるより簡単。
0526352
05/01/20 13:19:47すみません。
とりあえず3-4のエラーメッセージなんですが、
error C2143: 構文エラー : ';' が 'type' の前に必要です。
と出ます。
0527デフォルトの名無しさん
05/01/20 13:25:16#include <string.h>
#define MAX_LEN 1024
int main()
{
char l[MAX_LEN],s[MAX_LEN];
char* p=l;
int i;
int n=0;
printf("対象文字列>");scanf("%256s",l);
printf("検索文字列>");scanf("%256s",s);
while(p){
p=strstr(p,s);
n++;
}
printf("%d個\n",n-1);
return 0;
}
0528デフォルトの名無しさん
05/01/20 13:31:08sの長さ足してない
俺落ちるから誰かフォローよろしく
0529デフォルトの名無しさん
05/01/20 13:48:13[2] 問題
(1)標準入力からデータを読み込んで,棒グラフを標準出力に書くプログラムを作りなさい。
(2)以下のようにスケールを入れなさい。データが40を超えたら,表示しないようにしなさい。グラフのどこかにデータの数値を表示しなさい。
+----+----1----+----2----+----3----+----4
23 |***********************
45 |***************************************+
[3] 環境
[3.1] OS:Windows2000
[3.2] コンパイラ(バージョン): VisualC++ Ver6.0
[3.3] 言語:c
[4] 期限:2005年1月21日まで
(1)は例題を見ながらやってみたんですがうまくいきません。修正するところがあったら教えてください。
よろしくお願いします。
0530529
05/01/20 13:50:42#include <stdlib.h>
#define LMT 512
int read2iary(int data[], int num);
int draw_bar(int d);
main()
{
int i, data[LMT], num;
num = read2iary(data, LMT);
for (i = 0; i < num; i++)
{
draw_bar(data[i]);
}
}
int read2iary(int data[], int max)
{
int i, d;
for(i=0; i<max; i++)
{
printf("[%d]> ", i);
scanf("%d", &d);
if(d < 0)
return(i);
data[i]=d;
}
return(i);
}
0531529
05/01/20 13:51:23{
int i;
for(i=0; i<d; i++)
{
printf("*");
}
printf("\n");
return(i);
}
0532デフォルトの名無しさん
05/01/20 13:51:380533デフォルトの名無しさん
05/01/20 14:24:45#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main( int argc, char *argv[] ){
FILE *fp_r,*fp_w;
int iBox,iStr,x;
char cFileName_r[1024],cFileName_w[1024],cNum[10][4];
memset(cFileName_r, 0x00, sizeof(cFileName_r));
memset(cFileName_w, 0x00, sizeof(cFileName_w));
memset(cNum, 0x00, sizeof(cNum));
if ( argc == 1 ) {
printf("ファイルを指定してください。\n");
return;}
strcpy(cFileName_r, argv[1]);
if ( (fp_r = fopen(cFileName_r, "r")) == NULL ){
printf("ファイル[%s]がオープンできません。\n", cFileName_r);
exit(0);}
0534デフォルトの名無しさん
05/01/20 14:25:35while ( fgets(cNum[0], sizeof(cNum[0]), fp_r) != NULL ) {
for( x = 1; x < 9; x++ ){
for( iBox = 0; iBox < 8; iBox++ ){
iStr=strcmp(cNum[iBox], cNum[iBox+1]);
if( iStr > 0 ){
strcpy(cNum[9], cNum[iBox]);
strcpy(cNum[iBox], cNum[iBox+1]);
strcpy(cNum[iBox+1], cNum[9]);}
}
}
}
printf("ファイル名を記入してください。(文字の最後に.txtを記入要)\n");
scanf("%s",cFileName_w);
printf("ファイルを書き換えます\n");
if ( (fp_w = fopen(cFileName_w, "w") ) ==NULL ){
printf("ファイル[%s]がオープンできません。\n", cFileName_w);
exit(0);}
for(iBox = 0; iBox < 9 ; iBox++){
fprintf(fp_w, "%s", cNum[iBox]);
fprintf(stdout, "%s", cNum[iBox]);}
printf("[%s]を並べ替えたものを", cFileName_r );
printf("[%s]に書込みしました。", cFileName_w );
memset(cFileName_r, 0x00, sizeof(cFileName_r));
memset(cFileName_w, 0x00, sizeof(cFileName_w));
memset(cNum, 0x00, sizeof(cNum));
fclose(fp_r);
fclose(fp_w);
}
0535デフォルトの名無しさん
05/01/20 14:29:04#include <stdio.h>
#include <string.h>
#define MAX_LEN 1024
int main()
{
char l[MAX_LEN],s[MAX_LEN];
char* p;
int n;
do{
n=0;p=l;
printf("対象文字列>");scanf("%256s",l);
printf("検索文字列>");scanf("%256s",s);
while(p=strstr(p,s)){
p+=strlen(s);
n++;
}
printf("%d個\n",n);
}while(strcmp(l,"nullpo"));
return 0;
}
0536デフォルトの名無しさん
05/01/20 14:36:22#include <stdio.h>
void put_line(unsigned n)
{
unsigned i;
if (n > 40) n = 40;
for (i = 0; i < n; ++i) {
putchar('*');
}
putchar('\n');
}
int main(void)
{
unsigned n, data[256], i;
for (n = 0; n < 256 && scanf("%d", &data[n]) == 1; ++n)
;
puts(" +----+----1----+----2----+----3----+----4");
for (i = 0; i < n; ++i) {
printf("%3u|", data[i]);
put_line(data[i]);
}
return 0;
}
0537デフォルトの名無しさん
05/01/20 15:10:06どこもおかしくないみたいだよ。タダ単にLMTがでかすぎるだけってオチじゃない?
ちゃんとグラフ出力されたよ。
0538デフォルトの名無しさん
05/01/20 15:25:29とにかくどこもおかしくないよ。
0539デフォルトの名無しさん
05/01/20 19:14:21問題2待ち行列 関数in.outを記述せよ
OS:WindowsXP
言語:C++
期限21日の昼12時まで
お願いします
0540デフォルトの名無しさん
05/01/20 19:46:55typedef int STACK_T;
void push(STACK_T* p,size_t n,STACK_T i){if(n<STACK_MAX-2)p[n++]=i;
else puts("overflow");}
0541デフォルトの名無しさん
05/01/20 19:49:23puts("underflow");return 0;}
0542デフォルトの名無しさん
05/01/20 19:59:38size_t nはsize_t&nの間違い
0543デフォルトの名無しさん
05/01/20 20:15:36式1:y=4/3*x
式2:y=-4/3*x
に挟まれた上下左右領域のどこに含まれるかをC(C++)言語で示せ
これを教えてください。
0544543
05/01/20 20:16:510545デフォルトの名無しさん
05/01/20 20:19:51x,y座標それぞれの場合を検証して、場合分けの木を書けばよかろう
0546デフォルトの名無しさん
05/01/20 20:43:11だれかこのプログラムをCに直してくれませんか?問題は↑
#include <iostream>
using namespace std;
int solve(int p, int q, int a, int n, int d, int cp, int cq){
int cnt = 0;
for (int x = d; cq * x <= a; ++x) {
int cp2 = cp * x + cq;
int cq2 = cq * x;
// p/q == cp2/cq2 <=> p * cq2 == q * cp2
if (p * cq2 == q * cp2) { ++cnt; }
if (n > 1) {
cnt += solve(p, q, a, n - 1, x, cp2, cq2);
}
}
return cnt;
}
int main(void){
int p, q, a, n;
while (cin >> p >> q >> a >> n, (p || q || a || n)) {
cout << solve(p, q, a, n, 1, 0, 1) << endl;
}
}
0547355
05/01/20 20:51:56エラーメッセージはすべて書きましょう。
特に行数は大切です。
また、切り貼りで行数がずれてしまうこともあるので、
該当行も示しましょう。
ちなみにgccでコンパイルしたからVCじゃむりかもな
>>455
あんがと
0548デフォルトの名無しさん
05/01/20 20:52:41cin>>はscanfに、cout<<はprintfに、endlは\nに相当する。地道に置き換えればいい。
whileの中の,の後の式は、いずれかが0かどうかを調べている。
なお、一般に直前に関数名のない式(a,b)はa,bの順に評価されbの値を返す。
0549デフォルトの名無しさん
05/01/20 21:02:061.#include <iostream>を#include <stdio.h>にする。
2using namespace std;を削除する。
3.while (cin >> p >> q >> a >> n, (p || q || a || n)) {を
while( ( scanf("%d %d %d %d", &p, &q, &a, &n ) == 4 ) &&
( p || q || a || n ) ){
にする。
4.cout << solve(p, q, a, n, 1, 0, 1) << endl;を
printf( "%d\n", solve( p,q,a,n,1,0,1) );
にする。
5.ファイルの拡張子をcにする。
6.コンパイラの意見に従って、変数宣言を関数の先頭に持っていく
7.一切試してないのでうまくいかなくても漏れを恨まない
0550546
05/01/20 21:04:40どうもありがとうございます…といいたいところですが
まだプログラミング初心者なので意味がよく分かりません(´・ω・`)
ソース載せてくれると嬉しいな
0551デフォルトの名無しさん
05/01/20 21:09:00やめてしまえ
0552550
05/01/20 21:10:470553デフォルトの名無しさん
05/01/20 21:22:41#include <stdio.h>
int main() {
double x,y;
printf("x座標を入力\n"); scanf("%f", &x);
printf("y座標を入力\n"); scanf("%f", &y);
if(y>4/3*x && y>-4/3*x) printf("上\n");
if(y<4/3*x && y>-4/3*x) printf("右\n");
if(y<4/3*x && y<-4/3*x) printf("下\n");
if(y>4/3*x && y<-4/3*x) printf("左\n");
if(y==4/3*x || y==-4/3*x) printf("線上\n");
return 0;
}
/*余談 問題にy=3/4xとか書いてあるもんだから掛け算記号の「*」の存在忘れて
デバッグに相当悩んだっす*/
0555デフォルトの名無しさん
05/01/20 23:13:36double → float にするか
%f → %lf にしないと正常に値が入らないと思われ
0556デフォルトの名無しさん
05/01/20 23:56:52そのへんよく分からないんだけど正確にはどうなってるの
教えてエロイ人
0557デフォルトの名無しさん
05/01/20 23:59:25scanf -> float は %f, double は %lf
0558デフォルトの名無しさん
05/01/21 00:56:410559デフォルトの名無しさん
05/01/21 01:03:27すみませんが、お願いします。
#include<stdio.h>
int
main(void)
{
int i, a;
char s[1024], t[1024], ch;
i = a = 0;
while((ch=getchar())!='EOF'){
s[i]=ch;
i++;
}
s[i]='\0';
i=0;
while(t[i]='\0'){
for(i=0;i<1024;i++){
if(s[i]=='k'){
if(s[i+1]=='a'){
if(s[i+2]=='n'){
if(s[i+3]=='b'){
if(s[i+4]=='u'){
if(s[i+5]=='n'){
0560デフォルトの名無しさん
05/01/21 01:05:40t[i]='k';
t[i+1]='o';
t[i+2]='b';
t[i+3]='u';
t[i+4]='n';
t[i+5]='';
for(i=i+6;i<1024;i++){
t[i]=s[i+1];
0561デフォルトの名無しさん
05/01/21 01:06:09そんな汎用性の無いソースを作ってはいけない
0562デフォルトの名無しさん
05/01/21 01:06:12}
else
t[i]=s[i];
}
else
t[i]=s[i];
}
else
t[i]=s[i];
}
else
t[i]=s[i];
}
else
t[i]=s[i];
}
else
t[i]=s[i];
}
}
printf("%s\n", t);
return 0;
}
0563デフォルトの名無しさん
05/01/21 01:14:57すみません・・・
初心者なのでこれが精一杯だったんです
0564デフォルトの名無しさん
05/01/21 01:15:58{
const int len1 = CAST(int)strlen(from);
const int len2 = CAST(int)strlen(to);
char* found = strstr(string, from);
while (found) {
if (len1 != len2) {
memmove(found + len2, found + len1, strlen(found + len1) + 1); /* シフト */
}
memcpy(found, to, len2);
found = strstr(found + len2, from);
}
}
replaceString(string, "kanbun", kobun");
C++なら
std::string s;
s.replace(s.find("kanbun", 6, "kobun");
または
boost::replace_all
0565デフォルトの名無しさん
05/01/21 01:23:43少し私には難しいみたいですけど;
ありがとうございました。
0566デフォルトの名無しさん
05/01/21 01:23:54strstrを使ってよいのか答えろ
0567デフォルトの名無しさん
05/01/21 01:28:28strstr使わないで書いてみたよ('A`)
#include <stdio.h>
#include <string.h>
int main()
{
char src[] = "kanbun", dst[] = "kobun";
char buf[sizeof(src)];
int i=0, ch;
while ((ch = getchar()) != EOF) {
if (ch == src[i]) {
if (++i == strlen(src)) {
printf("%s", dst);
i=0;
}
} else {
if (i != 0) {
strncpy(buf, src, i);
buf[i] = '\0';
printf("%s", buf);
i=0;
}
printf("%c", ch);
}
}
return 0;
}
0568デフォルトの名無しさん
05/01/21 03:52:150569デフォルトの名無しさん
05/01/21 04:18:07hoge.c_str(); // string -> const char*
char str[] = "nurupo";
string hoge(str); // array of char -> string
0570568
05/01/21 04:34:25できないのでしょうか?
strtolを使わなければならないので、使う直前に char[]に変換したいのです。
const char*の状態で ためしに、strtolを使ってみましたが やはりコンパイルエラーが
でてしまいました。
0571デフォルトの名無しさん
05/01/21 04:37:37プログラミングもあったかいものになると(・∀・)イイ!!と思ってる。
0572デフォルトの名無しさん
05/01/21 04:51:54char *a_char;
string hoge = "abcdef";
a_char = new char[hoge.length()+1];
strcpy(a_char, hoge.c_str());
delete [] a_char;
これじゃだめですかい?
というか、stringを使うなら、strtolではなくてSTLやboostのAlgorithmを使うべきでは。
0573デフォルトの名無しさん
05/01/21 04:53:20おまえ、(・∀・)イイ!!だろ。
こんな夜も明けぬ間にそんなバカなこと言ってはずかしくないのか?
このスレはなあ、お前を拒絶してるんだよ(・∀・)イイ!!
お前がなんでも(・∀・)イイ!!(・∀・)イイ!!言ってるからな、世の中に甘ちゃん厨房が
わんさか増えるんだよ。それがみんなにどれほど迷惑かけてるかわかってるのか、あ?
お前は偽善者だよ(・∀・)イイ!!。Noと言えない、典型的駄目人間だよ。
もう二度とこのスレに書き込むんじゃねーぞ。いいかげん、ぶちきれそうだからな。
0574568
05/01/21 05:13:20値が見つかった場合 それを知らせる方法を知らなかったので。。。
strtolについても、この板で教えていただきましたw
ただ、文字列というのが stringではない事に コンパイル時に気づき 今になってあたふたしております。
教えていただいた方法で試してみます。
0575デフォルトの名無しさん
05/01/21 05:23:16もうキレテルだろw
0576デフォルトの名無しさん
05/01/21 07:04:36http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/94.txt
このプログラムを小さい順に並べたものを別のテキストに書き込み
表示して最初と最後の5行を表示するにはどうしたらいいでしょうか?
0577576
05/01/21 07:07:31このプログラムを「小さい順に並べたものを別のテキストに書き込み
表示して最初と最後の5行を表示する」ように書き換えるには
どうしたらいいでしょうか?
0578デフォルトの名無しさん
05/01/21 09:03:33ソートするためには、ソートしたい全てのデータが必要。一度reallocなどによる動的割り当てで全ての行を取得せよ。
0579デフォルトの名無しさん
05/01/21 09:49:03#include <cstdlib>のstrtol()はconst char *を引き数として取ると思ったのだが。
よもや変なコンパイラを使ってないだろうな。
0580デフォルトの名無しさん
05/01/21 11:13:46正解だったら次のを表示するみたいなタイピングもどきを作りたいんですけど
したのコードだとファイルが数行あると同じに打ち込んでもbooとでてしまいます
一行だけなら正解になるんですけど…
どこが問題なんでしょうか?誰か教えてください、お願いします
while(fgets(a, 256, fp) != NULL)
{
while(1)
{
printf("%s\n",a);
scanf("%s",b);
if (strcmp(a, b) == 0)
{
printf(" good\n");
break;
}
else
{
printf(" boo\n");
}
}
}
0581デフォルトの名無しさん
05/01/21 11:18:36fgetsは\nも読む
0582デフォルトの名無しさん
05/01/21 11:23:050583デフォルトの名無しさん
05/01/21 11:44:52[2] 問題文(含コード&リンク): -無限から+無限の範囲で、sinx/xを積分するプログラムです。
・台形公式を用いたプログラムとシンプソン公式を用いたプログラムをそれぞれお願いします。
[3] 環境
[3.1] OS: Windows2000/XP
[3.2] コンパイラ(バージョン): VisualC++でもBorlandC++でも可。
[3.3] 言語:C
[4] 期限:2005年01月21日(今日中)
[5] その他の制限: 特になし。
期限過ぎてもいいのでよろしくお願いします。
0584580
05/01/21 12:06:28すみません初心者なもので…
0585デフォルトの名無しさん
05/01/21 12:20:13専門学校ならデバッグも教えるだろ? デバッグして変数値を見れば?
0586425
05/01/21 12:25:07うまくいかないのですが…
このまま使うだけではだめなのですか?
0587580
05/01/21 12:45:31fgetsが改行までよんでしまうならどうすればいんだろ…
scanfは何が問題なんでしょうか?
0588デフォルトの名無しさん
05/01/21 12:49:09普通のコンピュータの浮動小数点数では無限という値を取り扱えないよ。
制限を設ける必要がある。それでもよかったら、範囲を教えれ。
0589デフォルトの名無しさん
05/01/21 12:50:190591デフォルトの名無しさん
05/01/21 13:00:15scanf(" %s",b);
0592576
05/01/21 13:05:04元々小さい順に表示はされるのですが全部表示されてしまうんです。
これを最初と最後の5行だけ表示させるというようなんとかならないでしょうか?
0593デフォルトの名無しさん
05/01/21 13:07:47表示したい行番号の条件は?
0594デフォルトの名無しさん
05/01/21 13:08:47死ぬ程やったので飽きました。
0595デフォルトの名無しさん
05/01/21 13:10:04ほらよ。まず台形公式
#include <stdio.h>
#include <math.h>
double f(double x)
{
return sin(x) / x;
}
int main(void)
{
int i;
const int n = 100000000;
const double a = -10000001., b = 10000001.;
double h, s = 0., res, x;
h = (b - a) / n;
x = a;
for (i = 1; i <= 2 * n - 1; i++)
s += f(x += h);
res = h * ((f(a) + f(b)) / 2 + s);
printf("∫[x = %e, %e] sin(x) / xdx = %.10e\n", a, b, res);
return 0;
}
0596デフォルトの名無しさん
05/01/21 13:10:47#include <stdio.h>
#include <math.h>
double f(double x)
{
return sin(x) / x;
}
int main(void)
{
int i;
const int n = 100000000;
const double a = -10000001., b = 10000001.;
double h, s1 = 0., s2 = 0., res;
h = (b - a) / (2 * n);
for (i = 1; i <= 2 * n - 3; i += 2) {
s1 += f(a + h * i);
s2 += f(a + h * (i + 1));
}
res = (f(a) + f(b) + 4 * (s1 + f(b - h)) + 2 * s2) * h / 3;
printf("∫[x = %e, %e] sin(x) / xdx = %.10e\n", a, b, res);
return 0;
}
0597576
05/01/21 13:10:54すみません、よくわかりません・・・。
0598デフォルトの名無しさん
05/01/21 13:12:12aとbの範囲をより大きく、n(刻み値)をより大きくすればするほど精度があがる。
小数点以下6桁まで求まればよければ上のパラメータで十分。
0599デフォルトの名無しさん
05/01/21 13:16:51誤差が大きくなりがちで、区間も広すぎる。対称性により積分区間を半分に。無限大の代わりに<limits.h>にある値を使え。計算量も削らねば。
0600デフォルトの名無しさん
05/01/21 13:18:21limits.hではなくてfloat.hだろ。
0601デフォルトの名無しさん
05/01/21 13:21:05これはむしろ数学の問題だ。図を描いて積を考えてみろ。精度のために絶対値の小さい方から足し合わせるのがコツ。
0602デフォルトの名無しさん
05/01/21 13:24:51文句言うなら、お前がプログラム書いてやれよ。俺はもう書いたから降りる。
0603デフォルトの名無しさん
05/01/21 13:31:010604デフォルトの名無しさん
05/01/21 13:33:47能書きはよくわかったからプログラムは?
0605デフォルトの名無しさん
05/01/21 13:35:240606デフォルトの名無しさん
05/01/21 13:35:580607デフォルトの名無しさん
05/01/21 13:38:43誰かがやってくれるさ
0608デフォルトの名無しさん
05/01/21 13:40:12なんだ、数学の知識はあってもプログラムは書けないのか。
俺も>>601>>603は知っている。しかし>>583がそこまで要求している、かつ理解できるとは
思えないから、一般的なプログラムを書いただけ。
0609デフォルトの名無しさん
05/01/21 13:43:18理解はできるだろうさ。簡単なんだから。
0610デフォルトの名無しさん
05/01/21 13:45:41わかったよ、書けばいいんだろ、書けば。
区間を100等分ほどに分け、xが0に近づけば近づくほど刻み値を小さくする。
そして、-∞→0と、∞→0方向の二つに分けて足し合わせる。
0611デフォルトの名無しさん
05/01/21 13:48:340612デフォルトの名無しさん
05/01/21 13:54:390613デフォルトの名無しさん
05/01/21 14:12:080615583
05/01/21 14:16:110616583
05/01/21 14:27:11シンプソン法では-1と出ます。これは仕方のない事なのでしょうか?
0617デフォルトの名無しさん
05/01/21 14:30:56切腹モノ
0618580
05/01/21 14:35:09改行文字をよみこんじゃうから
abc ってでた後に
abc ってうちこんでも見えない改行文字のせいで
boo
ってでちゃうんですよね?
a[strlen(a)-1] = '\0';
ってのを入れてみたんですけど、そうするとファイルの数行あるうちの
最後の行しか表示してもらえなかったです。やっぱ違うか;
改行文字を0で消せばいいって感じはなんとなくわかるんですけど
やり方がわかりません。お願いします
0619デフォルトの名無しさん
05/01/21 14:37:03#include <stdio.h>
#include <math.h>
#define N 100
double f(double x)
{
if (x == 0.0) return 0.;
return sin(x) / x;
}
int main(void)
{
int i, j, n2[N];
const int n = 10000;
double h[N], s[2][N], a1[N], a2[N], res = 0., x, y;
for (i = 0; i < N; i++) {
n2[i] = n * (N - i / 2) + 1;
a1[i] = i * 100. * N;
a2[i] = (i + 1) * 100. * N;
h[i] = (a2[i] - a1[i]) / n2[i];
s[0][i] = s[1][i] = 0.;
}
0620デフォルトの名無しさん
05/01/21 14:37:44x = a1[j];
y = -a1[j];
for (i = 0; i < n2[j]; i++) {
s[0][j] += f(x += h[j]);
s[1][j] += f(y -= h[j]);
}
}
for (i = N - 1; i >= 0; i--) {
res += h[i] * ((f(a1[i]) + f(a2[i])) / 2 + s[0][i]);
res += h[i] * ((f(-a1[i]) + f(-a2[i])) / 2 + s[1][i]);
}
printf("∫[x = %e, %e] sin(x) / xdx = %.10e\n", -a2[N - 1], a2[N - 1], res);
return 0;
}
0621デフォルトの名無しさん
05/01/21 14:38:53#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
FILE *fp;
char s[256];
char s2[256];
int i;
if ( (fp = fopen("test.c", "r")) == NULL ){
printf("file open error\n");
exit(1);
} else {
while((fgets(s, 256, fp)) != NULL){
printf("%s", s);
for (i = 0; s[i] != '\0'; i++);
s[i - 1] = 0;
gets(s2);
if ( strcmp(s, s2) == 0 ){
printf("good\n");
} else {
printf("boo\n");
}
}
fclose(fp);
}
putchar('\n');
return 0;
}
0622デフォルトの名無しさん
05/01/21 14:39:44シンプソン法で-1と出る?俺の所ではほぼ台形公式と同じ値が出ているが・・・・
どっか間違っているのかな・・・・
0623デフォルトの名無しさん
05/01/21 14:40:46ちなみにコンパイラとOSは何ですか?
0624デフォルトの名無しさん
05/01/21 14:49:24最後の行に改行がないとどうなる?
0625デフォルトの名無しさん
05/01/21 15:00:29x→0
だから、
if (x == 0.0) return 1.;
return sin(x) / x;
と書き直すとそこそこ精度が出るようになった。
にしても、全然普通の台形公式のプログラムと結果が変わらん。
0626デフォルトの名無しさん
05/01/21 15:02:500の時ってそうしないとエラーになるでしょ。だって分母0だもん。
0627デフォルトの名無しさん
05/01/21 15:05:110628デフォルトの名無しさん
05/01/21 15:08:34だから無条件に0.を返すようにしてたが、今線形代数の本を読み直したら、
>>625のように書いてあったので、0.の替わりに1.を返すようにしただけ。
>>601>>603さんのようにしたプログラムで精度が上がらないか試してみているが、
さっぱり上がらない。奇関数の積分は別にシンプソン公式を使わなくても台形公式
で十分に精度が出るので、適応型積分でその効果が現れるようにするには、
まずおおよその関数の形をつかんでからでないと無意味だ。
0629デフォルトの名無しさん
05/01/21 15:09:29プログラムも書かないで、人を批判する資格はない。消えろ。
0630デフォルトの名無しさん
05/01/21 15:18:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/95.txt
こんなんでどう?
0631580
05/01/21 15:18:59最後の行だけ一文字削られちゃうんですけど、そこはなんとかごまかします
ありがとうございました!
0632デフォルトの名無しさん
05/01/21 15:26:52http://www.geocities.jp/proglang_shonan_it/rescue_report.ppt
0633デフォルトの名無しさん
05/01/21 15:33:25問題 次のような動作をする関数を定義しなさい。
文字列を引数に受け取り、そのコピーを返す関数strdup
仕様の詳細
・文字列を格納するのに必要な領域は関数の内部で確保(hint: malloc関数)
・引数の文字列は変更されないことを明示(hint: const修飾子)
・文字列を格納するのに必要な大きさは?(hint: strlen関数)
・文字列のコピーをするには?(hint: strcpy関数)
・戻り値として、コピーした文字列の先頭へのポインタを返す
・領域の確保に失敗した場合はNULLを返す
0634デフォルトの名無しさん
05/01/21 15:38:17sinx / x のグラフを描いてみろ。奇関数ではなくて偶関数だろ。
0636デフォルトの名無しさん
05/01/21 15:42:05>630のプログラムでは、ファイルと標準入力の双方に改行コードがあることを期待している。
従って、ファイル末尾が改行コードではない場合に誤動作する。
なので、どちらの場合も改行コードがある場合にのみ取り除いておけばいい。
void removeN(char * line) {char * p = strchr(line, '\0'); if (p > line && p[-1] == '\n') {p[-1] = '\0';}}
0637デフォルトの名無しさん
05/01/21 15:44:56インデントがグダグダだなぁ。
それはさておき、strcmp()を二回呼ぶのは感心しないし、0と比較するべきだと思う。
素直に
if (strcmp(type, s) == 0) {
/* 正解 */
} else {
/* 不正解 */
}
で充分だろ。
#ついでにいえば、bad(or num)をカウントする理由が全くない。
0638632 ◆gJ1B.hGsLk
05/01/21 15:45:58[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/96.txt
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ): VisualStudio.Net
[3.3] 言語:C++
[4] 期限1月31日18:00まで
最初のほうの課題を必死にやっているのですが、最初の方の課題にすら苦戦していて、
ほとんどできていません。
課題を計12個くらいは出さないと単位がもらえないらしく、四苦八苦しています。
全部とはいいませんので、少しでもといてやるかって問題があればお願いします。
0639638 ◆gJ1B.hGsLk
05/01/21 15:46:420640デフォルトの名無しさん
05/01/21 15:47:29char * strdup(const char * s) {char * p = malloc(strlen(s) + 1); return p ? strcpy(p, s) : p;}
0641デフォルトの名無しさん
05/01/21 15:47:38char *strdup(const char *str)
{
char *s;
if ((s = (char *)malloc(strlen(str) + 1)) == NULL)
return NULL;
strcpy(s, str);
return s;
}
int main(void)
{
char *p = strdup("abc");
puts(p);
return 0;
}
0642デフォルトの名無しさん
05/01/21 15:58:26>>633
〆切: 1/25(火)の正午
宛先: [email protected]
注意
友達と相談するのは構いませんが、丸写しのレポートは受け取りません
0643デフォルトの名無しさん
05/01/21 16:04:23free()しないの?
0644デフォルトの名無しさん
05/01/21 16:09:38freeするのが嫌いなんだって、彼。
アホでしょ?
0645デフォルトの名無しさん
05/01/21 16:11:04別にアホだとは思わんが、宿題としてはあった方がいいと思うな。
0646デフォルトの名無しさん
05/01/21 16:16:26課題7-1
class IntPair : public Ordered {
int first, second;
public:
IntPair(int i = 0, int j = 0) : first(i), second(j) {}
void setFirst(int i) { first = i; }
void setSecond(int i) { second = i; }
~IntPair() {}
bool thistype(const Ordered& x) const {
return typeid(*this) == typeid(dynamic_cast<const IntPair&>(x));
}
bool operator==(const Ordered& x) const {
return first == dynamic_cast<const IntPair&>(x).first && second == dynamic_cast<const IntPair&>(x).second;
}
bool operator>(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second > dynamic_cast<const IntPair&>(x).second : first > dynamic_cast<const IntPair&>(x).first;
}
bool operator>=(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second >= dynamic_cast<const IntPair&>(x).second : first >= dynamic_cast<const IntPair&>(x).first;
}
bool operator<(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second < dynamic_cast<const IntPair&>(x).second : first < dynamic_cast<const IntPair&>(x).first;
}
bool operator<=(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second <= dynamic_cast<const IntPair&>(x).second : first <= dynamic_cast<const IntPair&>(x).first;
}
};
0647デフォルトの名無しさん
05/01/21 16:17:41アホなんだよ。
0648デフォルトの名無しさん
05/01/21 16:18:42class IntPair : public Ordered {
int first, second;
public:
IntPair(int i = 0, int j = 0) : first(i), second(j) {}
void setFirst(int i) { first = i; }
void setSecond(int i) { second = i; }
~IntPair() {}
bool thistype(const Ordered& x) const {
return typeid(*this) == typeid(dynamic_cast<const IntPair&>(x));
}
bool operator==(const Ordered& x) const {
return first == dynamic_cast<const IntPair&>(x).first && second == dynamic_cast<const IntPair&>(x).second;
}
bool operator>(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second > dynamic_cast<const IntPair&>(x).second : false;
}
bool operator>=(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second >= dynamic_cast<const IntPair&>(x).second : first >= dynamic_cast<const IntPair&>(x).first;
}
bool operator<(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second < dynamic_cast<const IntPair&>(x).second : false;
}
bool operator<=(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second <= dynamic_cast<const IntPair&>(x).second : first <= dynamic_cast<const IntPair&>(x).first;
}
};
0649デフォルトの名無しさん
05/01/21 16:25:03「アホ」ということにしたいんですね?
0650デフォルトの名無しさん
05/01/21 16:30:12>>637
せっかく指摘されたので修正しときました。
インデントに関してはご勘弁を^^;
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/97.txt
0651デフォルトの名無しさん
05/01/21 16:34:52課題7-2
class IntPair : public Ordered, public Visible {
int first, second;
std::string str;
public:
IntPair(int i = 0, int j = 0, const std::string& s = "") : first(i), second(j), str(s) {}
IntPair(const IntPair& ip) : first(ip.first), second(ip.second), str(ip.str) {}
void setFirst(int i) { first = i; }
void setSecond(int i) { second = i; }
void setString(std::string& s) { str = s; }
~IntPair() {}
bool thistype(const Ordered& x) const {
return typeid(*this) == typeid(dynamic_cast<const IntPair&>(x));
}
bool operator==(const Ordered& x) const {
return first == dynamic_cast<const IntPair&>(x).first && second == dynamic_cast<const IntPair&>(x).second;
}
bool operator>(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second > dynamic_cast<const IntPair&>(x).second : false;
}
bool operator>=(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second >= dynamic_cast<const IntPair&>(x).second : first >= dynamic_cast<const IntPair&>(x).first;
}
bool operator<(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second < dynamic_cast<const IntPair&>(x).second : false;
}
bool operator<=(const Ordered& x) const {
return (first == dynamic_cast<const IntPair&>(x).first) ? second <= dynamic_cast<const IntPair&>(x).second : first <= dynamic_cast<const IntPair&>(x).first;
}
0652デフォルトの名無しさん
05/01/21 16:35:23void show() const { Visible::show(); }
IntPair* clone() const {
IntPair* ip = new IntPair(*this);
return ip;
}
};
0653デフォルトの名無しさん
05/01/21 16:36:57こんなの12個も出さないといけないのか。
0654デフォルトの名無しさん
05/01/21 17:06:29課題9-2?
template <int N> class Fact{
public:
enum{data=N*(int)Fact<N-1>::data};
};
template <> class Fact<0>{
public:
enum{data=1};
};
0655638 ◆gJ1B.hGsLk
05/01/21 17:08:27本当にありがとうございます。助かります。
7-1で1個、7-2で2個という換算です。
現在最初の方のを自力で2個終わっています。
ほかの最初のほうのもがんばれるだけがんばります。
0656638 ◆gJ1B.hGsLk
05/01/21 17:10:47ありがとうございます。
以下のプログラムは値のペアを表すtemplateクラスと, その使用例です〜の問題が課題1でした。
書き忘れててすいません…。
0657583=616
05/01/21 17:19:27WindowsXP、BorlandC++ではシンプソン法でも3.14・・・・と出ました。
みなさんどうもありがとうございました。
0658デフォルトの名無しさん
05/01/21 17:21:16そうか。そしたらシンプソン公式の方を今からVC7.1で動かしてみるから。
0659デフォルトの名無しさん
05/01/21 17:26:42本当だな。VC7.1だと、出力がおかしい。多分、sin()の入力を正規化しないと
だめっぽい。OVERFLOWとINEXACT例外が起きている。
0661デフォルトの名無しさん
05/01/21 17:35:55わかった。>>652にも出ているけど、
double f(double x)
{
if (x == 0.)
return 1.;
return sin(x) / x;
}
とすると、VCでもちゃんと動くようになる。台形公式の方も念のため直しておいてくれ。
0662デフォルトの名無しさん
05/01/21 17:36:420664デフォルトの名無しさん
05/01/21 17:48:29課題7-3
class RectangleArea : public Rectangle {
public:
RectangleArea(double v, double h) : Rectangle(v, h) {}
double area() const {
return get_virtical() * get_horizontal();
}
};
class RectangleAround : public Rectangle {
public:
RectangleAround(double v, double h) : Rectangle(v, h) {}
double around() const {
return 2 * (get_virtical() + get_horizontal());
}
};
0665デフォルトの名無しさん
05/01/21 17:59:57class RectangleArea : public virtual Rectangle {
public:
RectangleArea(double v = 0., double h = 0.) : Rectangle(v, h) {}
double area() const {
return get_virtical() * get_horizontal();
}
};
class RectangleAround : public virtual Rectangle {
public:
RectangleAround(double v = 0., double h = 0.) : Rectangle(v, h) {}
double around() const {
return 2 * (get_virtical() + get_horizontal());
}
};
class RectangleAreaAround : public RectangleArea, public RectangleAround {
public:
RectangleAreaAround(double v, double h) : Rectangle(v, h) {}
};
0666デフォルトの名無しさん
05/01/21 18:01:45[2] 問題文(含コード&リンク): 2重積分の問題です。
・∬cos(x+y)dxdyを計算するプログラムです。
・積分範囲はx,y共に0からπです。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): BorlandC++
[3.3] 言語:C
[4] 期限:2005年01月24日17:00
よろしくお願いします。
0667デフォルトの名無しさん
05/01/21 18:13:23コンパイラによっては、RectangleAreaとRectangleAroundに送るコンストラクタ呼び出しを
無視して最適化できる。
class RectangleArea : public virtual Rectangle {
public:
RectangleArea(double v, double h) : Rectangle(v, h) {}
double area() const {
return get_virtical() * get_horizontal();
}
};
class RectangleAround : public virtual Rectangle {
public:
RectangleAround(double v, double h) : Rectangle(v, h) {}
double around() const {
return 2 * (get_virtical() + get_horizontal());
}
};
class RectangleAreaAround : public RectangleArea, public RectangleAround {
public:
RectangleAreaAround(double v, double h) : Rectangle(v, h), RectangleArea(v, h), RectangleAround(v, h) {}
};
0668デフォルトの名無しさん
05/01/21 18:15:550669デフォルトの名無しさん
05/01/21 18:59:56使用言語 : C
できるだけ標準関数のみで解きたいんです。
意外に簡単かと思ったら分からんくて…。
0670デフォルトの名無しさん
05/01/21 19:01:48[2] 問題文(含コード&リンク):
0〜999までの数値をランダムで500個線形リストで生成する。
生成したリストをクイックソートを用いて、ソートする。
ソート前とソート後の状態を表示するプログラムを作成。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:2005年1月24日18:00まで
[5] その他の制限:
ソートは関数で行う。0〜999までの数値は整数、同じ数値があっても良い。
構造体は
struct node
{
int data;
struct node *next;
struct node *prev;
}
を使用すること。
どうかお願いします。
0671デフォルトの名無しさん
05/01/21 19:10:04本当にありがとうございます。
これで6個になり、課題7も終わりました。
>>688
IntPairのことですか?MyPairはでてない気がします。
0672デフォルトの名無しさん
05/01/21 19:13:58floor(x * 100) / 100;
0673デフォルトの名無しさん
05/01/21 19:15:420674デフォルトの名無しさん
05/01/21 19:45:17struct nude*new_nude(int _data)
{
struct nude*p=(struct nude*)malloc(sizeof(struct nude));
p->prev=p->next=NULL;
p->data=_data;
return p;
}
0675デフォルトの名無しさん
05/01/21 19:47:21#define delete_nude(p) free(p)
0676デフォルトの名無しさん
05/01/21 19:52:540677デフォルトの名無しさん
05/01/21 19:55:15static struct nude*phead=NULL;
0678デフォルトの名無しさん
05/01/21 19:55:40答えが-4.0になるのなら、これで合ってると思うが。自信なし
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/104.txt
0679デフォルトの名無しさん
05/01/21 19:59:11double round2(double val) {char buf[30]; sprintf(buf, "%.1f", val); return atof(buf);}
0680669
05/01/21 19:59:18一時的にintに変換してその値に小数を代入するんですか??
すいません、どういう処理がされているのか想像できなくて…。
0681669
05/01/21 20:02:13もう少し基本的な関数でやって頂けると助かります…。
sprintfやatofなどはまだ習ってないんです。
0682デフォルトの名無しさん
05/01/21 20:07:070683デフォルトの名無しさん
05/01/21 20:11:13文句付ける質問者からは金取ってやれ。
0685デフォルトの名無しさん
05/01/21 20:31:14一時的にintに変換 = 小数点以下切捨て。
0.5 足してから切り捨て = 小数点以下四捨五入。
10倍してから四捨五入して、その後10で割ることで、小数第2位を四捨五入。
0686669
05/01/21 20:48:20ありがとうございます。理解できました。
そこで早速プログラムを作ってみたのですが、どうも思うように動いてくれません。
例えば15.67を入力しても、出力される値が15.0000
以下が今作ったプログラムです。
#include <stdio.h>
int main(void)
{
double x;
printf("実数を入力して下さい : ");
scanf("%lf", &x);
x = ((int)(x * 100 + 5)) / 100;
printf("小数第2位を四捨五入した値は%fです", x);
return 0;
}
0687デフォルトの名無しさん
05/01/21 20:51:22/ 100.0;
にしてみ
0688デフォルトの名無しさん
05/01/21 20:52:24最初はややこしい式書いちゃだめだよ
x = ((int)(x * 100 + 5)) / 100;
をばらばらの式にしてちょっとづつ出力してみそ
double x2 = x * 100 ;
printf( "%f\n", x2 ) ;
double x3 = x2 + 5 ;
printf( "%f\n", x3 ) ;
なんてふうにね
0689669
05/01/21 21:03:0615.67
↓10倍して0.5足す
157.2
↓int型で0.2以下を削除(100倍だと小数第3位まで残ってしまいますね)
157
↓10.0で割り算
15.7
#include <stdio.h>
int main(void)
{
double x;
printf("実数を入力して下さい : ");
scanf("%lf", &x);
x = (int)(x * 10 + 0.5) / 10.0;
printf("小数第2位を四捨五入した値は%fです", x);
return 0;
}
無事動作しましたm(_ _)m
0690669
05/01/21 21:08:290692デフォルトの名無しさん
05/01/21 21:15:28ここ嫁。
http://www9.plala.or.jp/sgwr-t/detail/TypeConversion.html
0693デフォルトの名無しさん
05/01/21 21:15:52課題9-1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/105.txt
0695デフォルトの名無しさん
05/01/21 21:29:14[2] 問題文(含コード&リンク): 常微分方程式の初期値問題です
・y'=y-x 0≦x≦1 y(0)=0 をオイラー法と修正オイラー法で
yの値を求めるプログラムをそれぞれ作る。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): VisualC++
[3.3] 言語:C
[4] 期限:2005年01月22日12:00
答えは y=x+1-e^x になります。
よろしくお願いします。
0696デフォルトの名無しさん
05/01/21 21:37:41y'(0)の初期値は?
0698695
05/01/21 21:58:46y(x+h)=y(x)+hf(x,y(x))
のhです。
0699デフォルトの名無しさん
05/01/21 22:07:48わかるよ。>>696は多分二階の場合に必要。今回は一階なので不要。
h=0.1ってのは刻み幅。つまり10回繰り返す。
0700デフォルトの名無しさん
05/01/21 22:20:54お待たせ。ホイン法はいくつかバリエーションがあるけど、一番簡単なものを使った。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/106.txt
0701デフォルトの名無しさん
05/01/21 22:24:29#include <stdlib.h>と、x2[DIVN + 1]は不要だから、削除しておいてくれ。
0703デフォルトの名無しさん
05/01/22 04:39:59もっとスマートに。。。
printf("%.2f", x);
0704638 ◆gJ1B.hGsLk
05/01/22 05:36:08本当にありがとうございます。助かります。
[1] 授業単元: C言語研究2
[2] 問題文: http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/107.txt
[3] 環境
[3.1] OS: Windows2000
[3.2] コンパイラ): VisualStudio.Net
[3.3] 言語:C++
[4] 期限1月31日18:00まで
少しずうずうしいかとも思ったのですが、必修単位で落とすわけにはいかないので、
お暇な方がいましたらお願い致します。
これは簡単だからすぐにできそうだ。というのだけでもかまいません。
一番最後に一部、自分のソースもつけました。第3回のものなのですが、間違ってると指摘され
手直しを要求されました。
第8回のは先生に質問とかして頑張ってみます。
>>638のは課題9-3と課題8は以外は皆様のおかげで答えがそろいました。
ありがとうございました。
0705デフォルトの名無しさん
05/01/22 09:20:33改行制限のせいで詰め込んでいる。
MyVector operator + (const MyVector& a, const MyVector& b) {MyVector(a) += b;}
class Even {
(中略)
public:
Even(const Even& x) : data(x.data) { }
Even& operator++() {
data += 2;
return *this;
}
Even operator++(int) {
Even temp = *this;
++*this;
return temp;
}
Even& operator--() {
data += 2;
return *this;
}
Even operato--(int) {
Even temp = *this;
--*this;
return temp;
}
};
Even& operator++(Even& arg) {return ++arg;}
Even operator++(Even& arg, int) {return arg--;}
Even& operator--(Even& arg) {return --arg;}
Even operator--(Even& arg, int) {return arg--;}
0706デフォルトの名無しさん
05/01/22 10:48:05class Week {
int WeekNum;
static const char *WeekDay[7];
public:
Week() : WeekNum(0) {}
void ViewDay(){std::cout << WeekDay[WeekNum] << std::endl;}
Week& operator++() {
++p %= 7;
return *this;
}
Week& operator--() {
if (--p == -1)
p = 7;
return *this;
}
Week operator++(int) {
Week Temp = *this;
++*this;
return Temp;
}
Week operator--(int) {
Week Temp = *this;
--*this;
return Temp;
}
};
const char *Week::WeekDay[7] = {"月", "火", "水", "木", "金", "土", "日"};
0707デフォルトの名無しさん
05/01/22 10:49:41ところでインクリメント・デクリメントの前置・後置にはこういう違いがある。
#include <iostream>
int main() {
int a = 5, b = 5;
std::cout << a << '\t' << b << std::endl;
std::cout << a++ << '\t' << ++b << std::endl;
std::cout << a << '\t' << b << std::endl;
}
0708デフォルトの名無しさん
05/01/22 10:58:54[2] 問題文(含コード&リンク): 常微分方程式の初期値問題です
・y'=y におけるy(1.0)の値を、y(0.0)=1.0の初期条件の下で刻み幅h=0.1として
4階4次のRunge-Kutta法で求めるプログラムを作成しなさい
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): Cygwin
[3.3] 言語:C
[4] 期限:2005年01月24日9:00
よろしくお願いします
0709デフォルトの名無しさん
05/01/22 14:21:15[2] 問題文(含コード&リンク): https://webmail.your.biglobe.net/agent/mobmain/kadai.c?fold=INBOX&msgvw=INBOXMN382DELIM1024&part=2&FileName=kadai.c
このプログラムを動くようにし、さらにいろいろな機能をつけ、充実した家計簿ソフトをつくりなさい
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ(バージョン): Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:2005年01月24日12:00
初心者のためほんとお手上げです。どうかよろしくお願いします。
0710デフォルトの名無しさん
05/01/22 14:30:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/108.txt
高階にも使えるプログラムを流用して悪いが、こんな感じになる。
もしシンプルにするなら、y[][]をy[]にしてmを使ったループを取り去ればよい。
0711デフォルトの名無しさん
05/01/22 14:35:40悪い。x=0.9までしか求めてなかった。こちらが正しい版。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/109.txt
0712デフォルトの名無しさん
05/01/22 15:07:01ありがとうございました。
参考にさせていただきます。
0713352
05/01/22 15:56:27失礼しました。エラーはこの二つです。
c(11) : error C2143: 構文エラー : ';' が 'type' の前に必要です。
c(13) : error C2065: 'i' : 定義されていない識別子です。
13行目の方は一個目のエラーが原因だと思うのですが11行目の方がわかりません。
0715デフォルトの名無しさん
05/01/22 16:30:540716デフォルトの名無しさん
05/01/22 16:32:270717デフォルトの名無しさん
05/01/22 16:37:38ウェブメールへの直リンクはったところでよめねーだろ
ソースをコピーして
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
にいってどのスレにでもええから 返信 ってボタンあるからそれ押したら
そっからさきは小学生でもわかると思うぞ。
0718デフォルトの名無しさん
05/01/22 16:43:500719デフォルトの名無しさん
05/01/22 16:45:04http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/110.txt
0720デフォルトの名無しさん
05/01/22 16:55:490721デフォルトの名無しさん
05/01/22 17:01:49先入れ先出し
先入れ後出し
0722ぷ ◆wbKIYOMIZU
NGNGFILOはLIFOのこと?
FIFOはファイフォ/フィフォ
LIFOはリフォ
口に出すときはこういう聞き違えやすい語句は使わないのが一般的
普通に「キュー」と「スタック」だね。
0723デフォルトの名無しさん
05/01/22 17:07:460724デフォルトの名無しさん
05/01/22 17:08:01普通にアルファベット読みじゃないの?
0725デフォルトの名無しさん
05/01/22 17:18:51えふあいえふおー
えるあいえふおー
キュー
スタック
ってゆーたほうがええね。
ってすれ違うぞ。
0726デフォルトの名無しさん
05/01/22 17:23:21http://www.atmarkit.co.jp/icd/root/56/5783656.html
こんなんがあった
0727638 ◆gJ1B.hGsLk
05/01/22 17:24:29ありがとうございます。勉強になりました。
>>646>>651さんにやっていただいた課題を提出したら、こう返信がきました。
第7回の課題3,4を受けとりました.
課題1, 2については問題点を以下に記述します.
課題1について
条件の一つである, 「比較演算子の両辺の型が異なる場合はfalseを返す.」が
実装されていません.
課題2について
講義中に説明しましたが, Visibleクラスの意味を考えましょう.
単にstringを持つだけでは, 多重継承してまでVisibleを親にする意味がありません.
ここでの意図は, 「IntPairの内容を文字列として返すことができるようにする」と
いうことです.
先生。。厳しすぎるよ…。受講者の2割くらいしか単位とれそうな雰囲気だよ…。
0728デフォルトの名無しさん
05/01/22 17:26:24ふぁいふぉー
仕事が好き
ぴぴぴぴぴぴぴぴぴ
ふぁいふぉ
ふぁいふぉ
ふぁいふぉ
ふぁいふぉ
白雪姫 (SNOW WHITE)でも歌われているFIFO
0729デフォルトの名無しさん
05/01/22 17:34:05俺にはC++わからんが
宿題スレの意地をみせてやれっ!
0730デフォルトの名無しさん
05/01/22 17:48:25[2] 問題文(含コード&リンク):
テキストボックスに文字を入力し、"い"が入力されたら画像1を、"ろ"なら画像2を、
"は"なら画像1を1秒表示後、画像2に切り替え表示するプログラムを作成せよ。
画像の保管場所はそれぞれ、画像1="C:\1.bmp"、画像2="C:\2.bmp"とする。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン):C++
[3.3] 言語:C++
[4] 期限:2005年1月27日
よろしくおねがいします。
0731デフォルトの名無しさん
05/01/22 17:52:22> [3.2] コンパイラ(バージョン):C++
コンパイラ名になってないよ。
0732ぷ ◆wbKIYOMIZU
NGNGC++の機能だけじゃテキストボックスやら画像表示やらは実現できんのだが
使うのはMFCなのかVCLなのか.NETなのかそれ例外なのか
まずそれが肝心だ
0733638 ◆gJ1B.hGsLk
05/01/22 18:17:27すいません、いまさらあなたのいってることに気が付いた…。
#include <iostream>
using namespace std;
template <class T> //テンプレートクラスの定義開始
class MyPair
{
T fst; //テンプレート引数の型の変数
T snd;
public:
MyPair(){
fst = T(); //T型の値生成
snd = T();
}
MyPair(T a, T b){
fst = a;
snd = b;
}
T get_fst(){ return fst;}
T get_snd(){ return snd;}
void set_fst(T v){ fst = v;}
void set_snd(T v){ snd = v;}
};
int main(void)
{
MyPair<int> x(1,2); //MyPairのint版の変数xの宣言
MyPair<char> y('a','b'); //MyPairのchar版の変数yの宣言
cout << x.get_fst() << " " << x.get_snd() << endl;
cout << y.get_fst() << " " << y.get_snd() << endl;
return 0;
}
最近一日中この授業の課題ばかりやっている…。
0734638 ◆gJ1B.hGsLk
05/01/22 18:23:39ミスりすぎてすいません…。
#include <iostream>
using namespace std;
template<class Type, unsigned int number>
class MyArray {
Type data[number];
void check_valid(int index){
if(index < 0 || index >= (int)number)exit(1);}
public:
MyArray(){
for(int i=0 ; i < (int)number ; i++)data[i]=Type();
}
Type get_data(int index){
check_valid(index);
return data[index];
}
void set_data(Type x, int index){
check_valid(index);
data[index]=x;}
};
int main()
{
MyArray<int,10> array;
cout << array.get_data(9) << endl;
array.set_data(100,9);
cout << array.get_data(9) << endl;
return 0;}
0736638 ◆gJ1B.hGsLk
05/01/22 19:34:05自分が元のMyVectorを張り忘れていたからなのと、俺がよく理解してないからでしょうか。
今日はずっと705-706さんのを読んでます。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/112.txt
第三回自作ソースと問題、先生の指摘
先生に指摘されたこと
第三回課題1は, 適切とは言えません. +=の振舞いについて, よく考えてみて下さい.
課題2,3については, 問題を良く読んで下さい.
課題2について, 「何のために」「何を」要求されているのか考えて下さい.
課題3について, …→土曜→日曜→月曜→… という流れをきちんと実装して下さい.
0737デフォルトの名無しさん
05/01/22 19:56:04課題2の改良版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/113.txt
間違えてコメント入りをうpしてしまったので、上の方の#if 0 〜 #endifは削除しといてくれ。
ところで課題1についてだが、比較演算子というのは必ずある型の変数を引数に取るだろ。
C++で任意の型を取るように実装するには、テンプレートを使うしかないぞ。今、仮想基底
クラスがOrdered型のリファレンスを取るように実装されてしまっているので、ここから派生した
クラスの比較演算子のオーバーライドもそれに従わなければならない。
そこら辺の事情は先生はどう言っていた?わからんと手が付けられん。
0738デフォルトの名無しさん
05/01/22 19:57:47先生の言いたいことが良くわからないけど
>第三回課題1は, 適切とは言えません. +=の振舞いについて, よく考えてみて下さい.
MyVector& operator += ( const MyVector& arg)
にしろってことなのかな?戻り値は微妙だけど
>課題2について, 「何のために」「何を」要求されているのか考えて下さい.
は全般的にoperatorを理解できていないのが問題に思える。
A& operator++()とかA& operator++(int)は
++d ;とか d++;とか使う
++d.operator ++();なんて書き方は冗長な呼び出しだし、そもそも2回計算されてないかい?
>課題3について, …→土曜→日曜→月曜→… という流れをきちんと実装して下さい.
これは実装がまずすぎるんでないかな?
とりあえず、曜日のことは忘れて1から7までのカウンタクラスを作ってみたらどうかな
1->2->...->7->1
とうふうにループするカウンタだ
0739デフォルトの名無しさん
05/01/22 20:03:530740デフォルトの名無しさん
05/01/22 20:09:370741デフォルトの名無しさん
05/01/22 20:13:19シモタ。「仮想基底クラス」でなくて「抽象クラス」ですた。
MyPairが提示されたので、課題8についてもやってみるか・・・・
0742デフォルトの名無しさん
05/01/22 20:35:07(・∀・)イイ!!。お前は本当に女々しいやつだな。
お前のやっていることは嫌がらせだよ、いいかげん気づいたらどうだ?
お前の無意味なレスにこのスレの住人がどれほど憤慨しているかわかっているのか?
(・∀・)イイ!!よ。俺にはわかるよ。お前は誰かにかまってもらいたくてしかたないんだろ?
友達もおらず、暗い部屋に一日中閉じこもってコーディングしても、
糞プログラムをHDDに排泄していくだけで、何の意味も、何の価値もない日々を過ごしている
お前が、唯一コミュニケーションをとれる場がこのスレなんだもな。
哀れだよ(・∀・)イイ!!。震えた指で、キーボードを見ながら
(・∀・)イイ!!と書き込むお前。それが今のお前に出来る精一杯。
本当は、そっとしておくのがいいのかもしれない。
だがな(・∀・)イイ!!、俺はあえてお前を拒絶する。そうでもしないとお前はいつまでたっても
何も変わらないと思うから。
コンプレックスという名の鎖をはずして、自分の檻から脱出することができたら、
そのときこそ俺たちはお前を受け入れようと思う。
だから、俺は今、言わなければならない。
(・∀・)イイ!!よ、去れ。
0743デフォルトの名無しさん
05/01/22 20:35:52課題8-1
コメント削除が面倒くさくなってきたから、コメント付きでうpするので、削っておいてくれ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/114.txt
0745デフォルトの名無しさん
05/01/22 20:47:11gccなんかだとエラーが出る。それはわかっている。でも俺はエラーが出ないコンパイラを
使っているので面倒なのでこうしている。だから「削除しておいてくれ」と念を押している。
課題8-2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/115.txt
0746デフォルトの名無しさん
05/01/22 20:51:02課題8-3
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/116.txt
0747デフォルトの名無しさん
05/01/22 21:23:58http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/117.txt
#include <algorithm>は不要だった。削除よろ。
これで課題8は全部終わった。が、課題8-4は先生の意図する所が不明な点が
あるので、もしかしたら添削されて返ってくるかもしれない。その時はまた聞かせてくれ。
0748初心者
05/01/22 22:21:05実行して数を入力すると、止まってしまいます。
これが、漏れの作ったプログラムです。しょぼすぎるけど。
誰か、修正よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/118.txt
0749デフォルトの名無しさん
05/01/22 23:00:23#include<stdio.h>
int main()
{
float x,e[2][2],f[2][2],f1[2],f2[2],a[2][2],f3;
int i,j;
printf("値を入力してください");
scanf("%f %f %f %f" , &f[0][0],&f[0][1],&f[1][0],&f[1][1]);
f1[0] = f[0][0] + f[0][1]; printf("%f\n", f1[0]);
f1[1] = f[1][0] + f[1][1];
f2[0] = f[0][0] + f[1][0];
f2[1] = f[0][1] + f[1][1];
f3 = f1[0] + f1[1];
for(i=0;i<=1;i++)
for(j=0;j<=1;j++)
e[i][j] = (f1[i] * f2[j])/f3;
for(i=0;i<=1;i++)
for(j=0;j<=1;j++)
a[i][j] = ((f[i][j] - e[i][j]) * (f[i][j] - e[i][j])) / e[i][j];
x = a[0][0] + a[0][1] + a[1][0] + a[1][1];
printf("%f",x);
return 0;
}
0750デフォルトの名無しさん
05/01/23 00:02:51class MyVector
{
public:
int x, y;
MyVector(int a, int b) : x(a), y(b) {}
MyVector(const MyVector& arg) : x(arg.x), y(arg.y) {}
MyVector& operator +=(const MyVector& arg)
{
x += arg.x;
y += arg.y;
return *this;
}
};
MyVector operator+(const MyVector& a, const MyVector& b)
{
return MyVector(a) += b;
}
0751デフォルトの名無しさん
05/01/23 00:12:22メンバ関数の場合
class Even {
int data;
public:
Even(int val) : data(val) {}
Even(const Even& arg) : data(arg.data) {}
virtual ~Even(){}
void set_data(int val) {
if(val % 2 == 1) throw "The value is odd.";
data = val;
}
int get_data() const{return data;}
Even& operator++() {
data += 2;
return *this;
}
Even operator++(int) {
Even temp(*this);
++*this;
return temp;
}
};
int main() {
Even d(4);
Even e(8);
cout << (++d).get_data() << "," << (++e).get_data() << endl;
cout << d++.get_data() << "," << e++.get_data() << endl;
cout << d.get_data() << "," << e.get_data() << endl;
return 0;
}
0752デフォルトの名無しさん
05/01/23 00:15:58グローバル関数の場合。こんな感じかな?
class Even {
int data;
public:
Even(int val) : data(val) {}
Even(const Even& arg) : data(arg.data) {}
virtual ~Even(){}
void set_data(int val) {
if(val % 2 == 1) throw "The value is odd.";
data = val;
}
int get_data() const{return data;}
friend Even& operator++(Even&);
};
Even& operator++(Even& arg) {
arg.data += 2;
return arg;
}
Even operator++(Even& arg, int) {
Even temp(arg);
++arg;
return temp;
}
int main() {
Even d(4);
Even e(8);
cout << (++d).get_data() << "," << (++e).get_data() << endl;
cout << d++.get_data() << "," << e++.get_data() << endl;
cout << d.get_data() << "," << e.get_data() << endl;
return 0;
}
0753デフォルトの名無しさん
05/01/23 00:39:22class day_of_week {
int data;
public:
day_of_week(int day) : data(day % 7) {}
day_of_week& operator++() {++data %= 7; return *this;}
day_of_week& operator--() {if (--data < 0) data += 7; return *this;}
const day_of_week operator++(int) {
day_of_week temp(*this);
++*this;
return temp;
}
const day_of_week operator--(int) {
day_of_week temp(*this);
--*this;
return temp;
}
void print(ostream& o) const {
static const char c[][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
o << c[data];
}
friend ostream& operator<< (ostream& o, const day_of_week& arg) {
arg.print(o);
return o;
}
};
int main() {
day_of_week day(4);
cout << day << endl; cout << ++day << endl; cout << ++day << endl; cout << ++day << endl;
cout << ++day << endl; cout << --day << endl; cout << day-- << endl; cout << day << endl;
return 0;
}
0754638 ◆gJ1B.hGsLk
05/01/23 02:09:13ありがとうございます。
詳しくは聞いてないのでそこまではわかりません…。
とりあえず、その回の授業資料をアップしてみました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/119.txt
>>738
アドバイスありがとうございます。
自分でも一度勉強します。
>>743-747
本当にありがとうございます。
もし添削されてかえってくることがあれば、お知らせいたします。
>>750-753
ありがとうございました。本当に助かります。
皆様のおかげでなんとかなりそうです…。
0755638 ◆gJ1B.hGsLk
05/01/23 02:19:30>>704の課題3が解決しましたので(まだ返信はきていませんが)
自作ソースと第三回の内容を取り除いたものをアップしました。(長かったため)
第1回と2回にある
課題1-1
デストラクタは基本的に仮想関数にすべきです. なぜ仮想関数にすべきなのか,
仮想関数にしていないことによって生じる問題を具体的な例を用いて説明して下さい.
課題2-3
基本クラスのメンバ関数と同名のメンバ関数を派生クラスで定義したとき,
それが仮想関数であるかどうかは, 基本クラスでの定義によるのは何故でしょうか?
何故仮想関数を使うのかを考え, 上記のような言語仕様になっている理由を述べて下さい.
こういう説明系の問題って全く答えれません。
こういうのにすらすら答えれるようになるためには、実際になんどもプログラムを作って
経験をつんでいないと無理ですよね?
0756デフォルトの名無しさん
05/01/23 02:51:24class Derivedがclass Baseの派生クラスであるとする。
Base* p = new Derived;
delete p;
としたとき、もしこのときデストラクタが仮想関数であれば、~Derived()→~Base()の
順でデストラクタが呼び出される。一方、デストラクタが仮想関数でなければ、
deleteの文でDerivedのデストラクタは呼び出されず、~Derived()は呼び出されない。
よってDerivedが正しく破棄されない。よって、派生されうるクラスにおいては
デストラクタを仮想関数に指定すべきである。
0757デフォルトの名無しさん
05/01/23 03:10:51ついでに具体例
#include <iostream>
struct Base{};
struct Derived : public Base{
int* p;
Derived() : p(new int){}
~Derived(){delete p;}
};
int main(){
Base* p = new Derived;
delete p; // メモリリーク!
return 0;
}
0758デフォルトの名無しさん
05/01/23 03:17:38課題2-3
基本クラスのあるメンバ関数が仮想関数で宣言されていると、派生クラスの同名の
関数も仮想関数となる理由は、動的な結合を実現するためである。
もし基底クラスで仮想関数でない関数を宣言し、派生クラスで同名の関数を宣言すると、
それは基底クラスの関数を隠蔽してしまい、関数は静的に結合されてしまう。
例えば、
class Base {
void f() {}
};
class Derived : public Base {
void f() {}
};
ここで Base* pbが存在し、それがDerived型のインスタンスを指しているとすると、
pb->f(); はBase::f()を呼び出してしまう事になる。仮想関数を用いると、つまりBase側
で virtual void f() と宣言しておくと、
pb->f(); はちゃんとDerived::f()を呼び出してくれるようになる。
−−−−−以降は先生に出さないでね−−−−−
Effective C++の37項に詳しい説明があります。もしよかったらこれも読んでね。
0759デフォルトの名無しさん
05/01/23 03:36:49ちょっとヒマなので手伝ってみました。
人とかぶると嫌なので下の方にある課題です。
#include <utility>
#include <iterator>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
// 11回課題1
template <int SIZE>
class ShowArray : public unary_function<const int*, void>
{
public:
void operator () (const int* array) const
{
copy(array, array+SIZE, ostream_iterator<int>(cout, "\n"));
}
};
0760デフォルトの名無しさん
05/01/23 03:38:22{
int** array = newArray<3,5>()();
// 11回課題2
for_each(array, array+3, ShowArray<5>());
deleteArray<3>()(array);
return 0;
}
// 11回課題3
template <class T>
T f_11_3(T* first, T* last)
{
sort(first, last);
size_t maxCount = 0;
T result;
while (first != last)
{
const pair<T*, T*> range = equal_range(first, last, *first);
const size_t count = distance(range.first, range.second);
if (count > maxCount)
{
maxCount = count;
result = *range.first;
}
first = range.second;
}
return result;
}
0761アルペン
05/01/23 05:35:42[2] 問題文(含コード&リンク):
A: 整数の配列dataを5個用意し、次の数値(12345,6789,9876,6543,4321)にて初期化を行い、テキストファイル(ファイル名はlist1.txt)に書き込む。
B: ファイルに書き込みが出来ているのを確認の後、再度list1.txtを開き、書き込まれた数値を配列yを作成し読み込む。また、その時に配列yの全ての要素の表示ができるソースコードの作成
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ(バージョン):MicroSoft Visual Studio.Net2003
[3.3] 言語:C++
[4] 期限:2005年01月26日00:00まで
[5] その他の制限:C++を習ってまだ日が浅いので、なるべくシンプルなソースであれば助かります。
入院していた為内容についていけず、困っています。
どうぞよろしくお願いします。
0762デフォルトの名無しさん
05/01/23 06:28:19C++とあるが、ofstreamやifstreamを使ってもいいのか?
それとも、fscanf()/fprintf()系を使うのか?
こいつは次スレでテンプレに入れた方がいいな。
0763デフォルトの名無しさん
05/01/23 07:22:30#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int array1[5] = {12345,6789,9876,6543,4321};
ofstream fout("list1.txt");
if (!fout){
cout << "file open error\n";
return 1;
} else {
for (int i = 0; i < 5; i++){
fout << array1[i] << "\n";
}
fout.close();
cout << "list1.txtに書き込みました\n\n";
}
ifstream fin("list1.txt");
if (!fin){
cout << "file open error\n";
return 1;
} else {
int array2[5][16];
for (int i = 0; i < 5; i++){
fin >> array2[i][16];
cout << "[" << i << "] = " << array2[i][16] << "\n";
}
fin.close(); cout << "list1.txtから読み込みました\n";
}
return 0;
}
0764デフォルトの名無しさん
05/01/23 08:23:18シンプルなソースなんていうと、C++では初心者にとってはとんでもないものに
なるから、初心者向けのソースと書いた方がいいぞ?でないと次のようになる。(w
【A】(←多分AとBは個別にプログラムを作れということだと思うが)
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
int main() {
int a[] = {12345, 6789, 9876, 6543, 4321};
std::ofstream f("list1.txt");
std::copy(a, a + sizeof(a) / sizeof(a[0]), std::ostream_iterator<int>(f, "\n"));
return 0;
}
【B】
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
int main() {
int a[5] = {0};
std::ifstream f("list1.txt");
std::copy(std::istream_iterator<int>(f), std::istream_iterator<int>(), a);
std::copy(a, a + sizeof(a) / sizeof(a[0]), std::ostream_iterator<int>(std::cout, "\n"));
return 0;
}
0765デフォルトの名無しさん
05/01/23 08:33:39[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/110.txt
いろいろな機能をつけて家計簿をつくれ
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン):Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:2005年1月24日 12:00
初心者のためほんとわからず、単位をとりたいのでどうかお願いします。
0766デフォルトの名無しさん
05/01/23 09:20:530767デフォルトの名無しさん
05/01/23 10:12:38お願いします
0768デフォルトの名無しさん
05/01/23 11:32:370769デフォルトの名無しさん
05/01/23 11:48:18conioはなんか色を表示できるんですよね?微妙に、貼り付けたtxtは自分で
手を加えたがそれ以上はできなかった・・
機能的には、表で表示したり、全収支を計算、表示したりしたいんですよね。
あとは黒字とか赤字も出せたら家計簿みたいですよね。すいませんわがままで。
0770デフォルトの名無しさん
05/01/23 12:05:28conioは背景色や表示位置も設定できるし、ウィンドウシステムも作れる。
ともかく、以下のような関数を作ってみよ。
入力を要求する関数。
金額を表示する関数。
罫線などで表や箱を描く関数。
0771デフォルトの名無しさん
05/01/23 12:16:360772デフォルトの名無しさん
05/01/23 12:17:51下の関数部にmain文をつけて1つのプログラムにして頂けませんか?
よろしくお願いします。
void strrev(char s[])
{
int i;
int n = strlen(s);
char c;
for(i=0;i<=n/2;i++){
c = s[i];
s[i] = s[n-1-i];
s[n-1-i] = c;
}
}
0773デフォルトの名無しさん
05/01/23 12:22:04conio使えば、もっと付加価値が付けられるだろ? それに動作を共通化したい意図もある。
0774デフォルトの名無しさん
05/01/23 12:28:51n-1-iの区間チェックができていない。
仮引数の配列型はできればポインタ型に直す。
mainでは、scanfで読み込んだ文字列を使え。
0775ぷ ◆wbKIYOMIZU
05/01/23 12:36:410776デフォルトの名無しさん
05/01/23 12:37:26すいません Cをぜんぜん理解してないのでわからないので
具体的に示してもらってもよいですか?
0777デフォルトの名無しさん
05/01/23 12:41:44おまいらが低レベルコンソール入出力API使って、NT系でも動くconioを作ればいいだろう?
0778デフォルトの名無しさん
05/01/23 12:48:09777オメ
てことでオマイに任せた
0779デフォルトの名無しさん
05/01/23 13:01:07#include <stdio.h>
#include <string.h>
int main()
{
int len,i;
char temp,str[100];
scanf("%s",str);
len=strlen(str);
for(i=0;i<len/2;i++)
{
temp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=temp;
}
printf("%s\n",str);
return 0;
}
0780デフォルトの名無しさん
05/01/23 13:19:06http://www.monyo.com/technical/windows/25.html
http://www.google.co.jp/search?hl=ja&c2coff=1&q=conio.h+-%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90+%28%22windows+nt%22+OR+%22windows+
0781デフォルトの名無しさん
05/01/23 13:34:55#include <string.h>
void rev(char *s)
{
int i,n;
char c;
n = strlen(s);
for(i=0;i<n/2;i++)
{
c = s[i];
s[i] = s[n-1-i];
s[n-1-i] = c;
}
}
int main()
{
char str[100];
scanf("%s",str);
rev(str);
printf("%s\n",str);
return 0;
}
0782デフォルトの名無しさん
05/01/23 13:47:41>>765のを修正した物
誰か続きよろしく
0783デフォルトの名無しさん
05/01/23 13:52:33ありがとうございました。
0784デフォルトの名無しさん
05/01/23 14:36:03int
main() {
char str[]="123456789abcdef";
int i;
for(i=0;str[i]!='\0';i++){
};
printf("String length is %d\n",i);
}
これの文字をカウントする部分を別関数に分離して、
同じ結果を得られるようにしたいのですが、うまくいきません。
どなたか教えてください。よろしくお願いします。
0785デフォルトの名無しさん
05/01/23 14:41:47int my_strlen(const char* str)
{
int i;
for (i=0;str[i]!='\0';i++);
return i;
}
int main()
{
char str[]="123456789abcdef";
printf("String length is %d\n", my_strlen(str));
return 0;
}
0786デフォルトの名無しさん
05/01/23 14:44:55int strength(char *);
int main(void) {
char str[]="123456789abcdef";
printf("String length is %d\n"strlength(str));
return 0;
}
int strlength(char* str){
int i=0;
for(i=0;str[i]!='\0';i++)
;
return i;
}
0787デフォルトの名無しさん
05/01/23 15:02:14>>785
constで読み取りを追加しているのは、どういう意味があるのですか?
>>786
2行目で(char *)ってなってますけど、これってアリなんですか?
さらに質問すいません。
char* str == char *str なんですか?
0788デフォルトの名無しさん
05/01/23 15:07:19あり。
あり。
0789デフォルトの名無しさん
05/01/23 15:19:37やっぱり本よりリアルな返答の方がタメになります。
これからもよろしくお願いします。
0790デフォルトの名無しさん
05/01/23 15:21:26ここは幼稚園や小学校じゃ無いんだ
人に聞く前に自力で学ぶ努力しろ
0791638 ◆gJ1B.hGsLk
05/01/23 16:07:39第三回課題1〜3を受けとりました.
第八回の課題1〜4, 第九回の課題1,2を受けとりました.
第七回の課題はもう少し問題をしっかり読んで理解して下さい.
↑どこまで要求するんだこの先生は・・・。
>>747
添削されてかえってくることはありませんでした。
ありがとうございます!
>>756-758
なんかすごい勉強になりますね…。
ありがとうございます。
Effective C++は有名な本ですよね。
お金に余裕ができたら買って読んでみますね。
無理そうなら友達のを…。
>>759-760
本当にありがとうございます。
みなさんのソースをみていると勉強になります。
0792デフォルトの名無しさん
05/01/23 16:16:55結構長くなりそうだから、ファイル分割してよい?
後、カーソル移動や文字色変化にwindows.hも使ってよい?
0793デフォルトの名無しさん
05/01/23 16:24:41お願いします
0794デフォルトの名無しさん
05/01/23 16:33:42分割コンパイルだろ?いいよ。機能ごとにソースを分け。
出題者にconioとかwinとか使えって言われた?あまり無理しなくてもいいよ
0795デフォルトの名無しさん
05/01/23 16:45:110796792
05/01/23 16:45:40後、ポインタ、構造体、ファイル入出力とか使っても大丈夫?
難しい使い方はしないけど。
>>794
自分、小学生の時に3日ぐらい使った以来、家計簿を使っていなかったけど、
自分が使う場合にどういう機能があると使いやすいかなと思って考えると、
設計の形が見えてきて、カーソル移動は描画の速度を出すために、
色は単純に見やすくなるかなと思って使いたいと思った。
0797デフォルトの名無しさん
05/01/23 16:52:23ポインタ、構造体、ファイル入出力は大丈夫です。お願いします。
0799デフォルトの名無しさん
05/01/23 17:10:03ひとまず、次のような関数を作りなさい。まだconioのような飾りは不要です。
"何やらを入力〉"と表示して金額や文字列の入力を促し、入力が終わったら入力内容を返す関数。
金額をきれいに表示する関数(\を付け、','で区切り、負を考慮する)。
0800デフォルトの名無しさん
05/01/23 17:13:28遅くても大丈夫です すいません
0802デフォルトの名無しさん
05/01/23 17:37:190803デフォルトの名無しさん
05/01/23 17:38:21質問の意図が不明です。
0804デフォルトの名無しさん
05/01/23 18:37:140805792
05/01/23 18:51:22僕?
今は大まかな流れをイメージする所まで。ちゃんと間に合わす。
>>765
conio.hは必ず使わないといけない訳ではないよね?
カーソル移動、色変えを使わない場合は、
直接コンソール入力(Enterを押さない入力)のメリットが殆どない。
0806デフォルトの名無しさん
05/01/23 19:17:17そうか、そりゃあよかったな。
ここのスレでややディープなC++の課題が出たのはほとんどなかったから。
後はその課題7の同じ型か違う型かを判別するoperator==だけか。
もう少しちゃんと読んでみるよ。
0807デフォルトの名無しさん
05/01/23 19:57:08先生は多分メンバ関数thistype()を使って欲しかったのではないかと気づいた。
こんな感じになるかな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/123.txt
課題7-2も同じように変更しといてね。
あ、それとmain()関数にoperator==をテストする行を付け加えた方がいいかも。
int main()
{
IntPair ip1(1, 1), ip2(1, 2);
std::cout << std::boolalpha << ip1.thistype(ip2) << std::endl;
std::cout << (ip1 == ip2) << std::endl;
std::cout << (ip1 > ip2) << std::endl;
std::cout << (ip1 >= ip2) << std::endl;
std::cout << (ip1 < ip2) << std::endl;
std::cout << (ip1 <= ip2) << std::endl;
}
0808デフォルトの名無しさん
05/01/23 20:18:12以下のプログラムをクラスを使って書き換えよ。
・ 構造体ではなくクラスを用いること。(データメンバは全てプライベートとすること。)
・ initShukujitsu()ではなく、コンストラクタを用いてデータメンバの値を設定すること。
・ dispShukujitsu()ではなく、メンバ関数disp()によって内容を表示すること。
よろしくお願いします・・。
#include <iostream>
#include <cstring>
using namespace std;
class Shukujitsu {
private:
int tsuki;
int hi;
char meishou[20];
public:
void initShukujitsu(Shukujitsu *s)
{
s->tsuki = 1;
s->hi = 1;
strcpy(s->meishou, "元旦");
}
void dispShukujitsu(Shukujitsu *s)
{
cout << s->tsuki << "月" << s->hi << "日" << s->meishou << endl;
}
int main()
{
Shukujitsu shuku;
initShukujitsu(&shuku);
dispShukujitsu(&shuku);
return(0);
}
0809デフォルトの名無しさん
05/01/23 20:23:10更に課題7-1を改良。
>>807だと、IntPairから派生したクラスを型が異なると判別できないので、
そこを直した。こういう時typeof演算子があればいいのにと思う。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/124.txt
0810デフォルトの名無しさん
05/01/23 21:05:19#include <cstring>
using namespace std;
class Shukujitsu {
private:
int tsuki;
int hi;
char meishou[20];
public:
Shukujitsu() : tsuki(1), hi(1)
{
strcpy(meishou, "元旦");
}
void disp()
{
cout << tsuki << "月" << hi << "日" << meishou << endl;
}
}
int main()
{
Shukujitsu shuku;
shuku.disp();
return 0;
}
0811デフォルトの名無しさん
05/01/23 21:31:05ありがとうございます。
なんか、ヒントに
private:
int tsuki;
int hi;
char meishou[20];
public:
Shukujitsu() ; Shukujitsu::Shukujitsu(){}
void Shukujitsu::disp(){}
とか書いてあるんですが、サッパリわからんです…。
0812デフォルトの名無しさん
05/01/23 21:49:37[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:Cのみ
[4] 期限:2004年1月24日13:00まで/無期限 のいずれか
[5] その他の制限:
円周率をマチンの公式と級数展開を使って出来るだけ多くの桁数を
計算し表示させる問題でひとつの桁をひとつの配列に格納し作成せよ。
なんですが桁が格納されている配列を足すときの繰上げ、繰り下げがうまくいきません
0813812
05/01/23 21:54:46/* arctan(1/p) = 1/p - 1/(3p^3) + 1/(5p^5) - 1/(7p^7)... */
/* pi/4 = 4arctan(1/5) - arctan(1/239) */
です。
0814デフォルトの名無しさん
05/01/23 22:50:06そのヒントの通りにした。メンバ関数をクラス宣言内にまとめて書くか別に書くかの違い。
#include <iostream>
#include <cstring>
using namespace std;
class Shukujitsu {
private:
int tsuki;
int hi;
char meishou[20];
public:
Shukujitsu();
void disp();
};
Shukujitsu::Shukujitsu() : tsuki(1), hi(1)
{
strcpy(meishou, "元旦");
}
void Shukujitsu::disp()
{
cout << tsuki << "月" << hi << "日" << meishou << endl;
}
int main()
{
Shukujitsu shuku;
shuku.disp();
return 0;
}
0816デフォルトの名無しさん
05/01/24 00:41:37conioはつかわなくてもよいのかな?なんかもともと先生がくれた参考にするプログラムでは、
使われてるんですよね
0817アルペン
05/01/24 00:41:51<a href="http://pc5.2ch.net/test/read.cgi/tech/1105541524/763">>>763</a>
<a href="http://pc5.2ch.net/test/read.cgi/tech/1105541524/764">>>764</a>
ご回答、アドバイスを頂いた皆さん、どうもありがとうございました。
fstream、ifstreamを使うなどの詳細を書き忘れてしまって、すいません。
時間があるときに自分でも作ってみます。
またお世話になるかも知れませんが、どうぞよろしくお願いします。
0818& ◆TuixUkOm82
05/01/24 00:45:350819デフォルトの名無しさん
05/01/24 01:05:14ドンマイ
0821デフォルトの名無しさん
05/01/24 01:29:080822638 ◆gJ1B.hGsLk
05/01/24 03:26:37結構深い内容ですよね。
こんな内容の授業やってる割には、Cの二次元配列もわからないくらいのヒトが多数います。
正直ついていけてるヒトは2割くらいの世界です。
ありがとうございます。
今度こそ、受け取ってくれればいいのですが…。
0823_
05/01/24 03:48:02言語 C
100*100のテンプレートを640*480の画像に走査させて
テンプレートマッチングを行えという問題がわかりません。
どなたか教えていただけないでしょうか?
ちなみにテンプレート及び画像は.rawです
0824デフォルトの名無しさん
05/01/24 06:09:440825792
05/01/24 07:01:10まだ、日データの読み書きの後半の所。
間に合うかどうか。
0826デフォルトの名無しさん
05/01/24 09:43:410827792
05/01/24 11:40:04全然進まなかったorz。すいまそん。余り寝ないでやったんだけど。
http://kansai2channeler.hp.infoseek.co.jp - 125.lzh
0828792
05/01/24 11:42:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
の38番ね。日モードのみで、入力と削除が出来るだけ・・。
0829デフォルトの名無しさん
05/01/24 11:57:08ほんとありがとうございました。
0830デフォルトの名無しさん
05/01/24 12:42:20超遅レスだけど
lim[x->0]sinx/x
=lim[x->0](d(sinx)/dx)/(d(x)/dx)
=lim[x->0]cosx/1
=1 _
0831デフォルトの名無しさん
05/01/24 12:43:47受験生ですか?
0832デフォルトの名無しさん
05/01/24 12:51:390833デフォルトの名無しさん
05/01/24 12:57:590834デフォルトの名無しさん
05/01/24 12:58:06は?簡単なんだからそれくらい習うだろ。
っていうか、君、三流私大出身じゃね?
0835デフォルトの名無しさん
05/01/24 12:58:200836デフォルトの名無しさん
05/01/24 13:00:150837デフォルトの名無しさん
05/01/24 13:00:38フォロー先628の間違いじゃないか
0838デフォルトの名無しさん
05/01/24 13:01:21暇なんだろ
0839デフォルトの名無しさん
05/01/24 13:01:56>>832のから完全にずれてるし
ハゲ気にしてる香具師がハの発音を聞いて怒り狂うようなもんだろ
0840デフォルトの名無しさん
05/01/24 13:06:420841デフォルトの名無しさん
05/01/24 13:07:350842デフォルトの名無しさん
05/01/24 13:21:10で合点して頂けたでしょうか?
0843デフォルトの名無しさん
05/01/24 13:26:370844デフォルトの名無しさん
05/01/24 13:44:080845352
05/01/24 14:52:20まだ解決していない問題が3-4と4と二つあるのですが。
0846デフォルトの名無しさん
05/01/24 15:22:00IVやってみたけど、こんなんでいいの?
#include <stdio.h>
int main()
{
double h = 1, x, y=0;
printf("x = ");
scanf("%lf", &x);
while (h >= 0.00001) {
y += h;
if ((y+1)*(y+1) > x) {
y-=h;
h/=10;
}
}
y++;
printf("√x = %1.5lf\n", y);
return 0;
}
0847デフォルトの名無しさん
05/01/24 15:22:16誰か=自分。
ほとほどに頑張れよ
0848352
05/01/24 15:33:36自分の手に負えるところはすでに終わってるんですが…
0849352
05/01/24 15:37:01ビルドしてみたらエラーが40個ぐらい出ました。
error C2018: 文字 '0x81' は認識できません
error C2018: 文字 '0x40' は認識できません。
この二つが三行目から毎行続きます。
0851デフォルトの名無しさん
05/01/24 15:48:353-3ができて何で3-4ができないんだ
0852デフォルトの名無しさん
05/01/24 16:25:24>>359にあるだろ。>>359にあやまれスルーしてごめんなさいってあやまれ!!
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/126.txt
0853852
05/01/24 16:31:58訂正前:fprintf(stderr,"Usage:%s 2進数小数\n",argv[0]);
訂正後:fprintf(stderr,"Usage:%s 10進数小数\n",argv[0]);
0854デフォルトの名無しさん
05/01/24 16:50:300855デフォルトの名無しさん
05/01/24 17:40:29[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ:Borland
[3.3] C言語
[4] 期限:2005年2月1日まで
10以下の配列に入力された数値を
ポインタを使って最大値と最小値を出力しなさい。
データの終わりは-100が入力された時とする。
<出力>
---------------
15
21
7
38
12
54
-100
Min = 7
Max = 54
よろしくお願いします。
0856デフォルトの名無しさん
05/01/24 17:53:25これのなかに16進数で、
[A1][A2][A3][A4][A5][A6][X0]
と値があるのですが、
これをそのまま文字列として
[A1][A2][A3][A4][A5][A6][X0]
と取り出すことは可能でしょうか?
こういう感じで、文字型に変換しようとしてもうまくいきません。
sprintf(a,"%s",MacAdress[0]);
0857デフォルトの名無しさん
05/01/24 18:02:19パンツ
0858デフォルトの名無しさん
05/01/24 18:03:20%02xか%02Xを並べて使え。
0859デフォルトの名無しさん
05/01/24 18:06:280860デフォルトの名無しさん
05/01/24 18:16:21#include<stdlib.h>
#include<stdio.h>
int compare( const void* elem1, const void* elem2 ) ;
int main(void){
int cnt = 0 ;
char buf[255] ;
int ans[11] ;
while( cnt != 10 && ans[cnt-1] != -100 ) {
fgets( buf, sizeof buf,stdin ) ;
ans[cnt] = atoi( buf ) ;
cnt ++ ;
}
qsort( (void*)ans, cnt, sizeof(int), compare ) ;
printf("最小:%d\n" ,ans[0]) ;
printf("最大:%d\n" ,ans[cnt - 1]) ;
return 0 ;
}
int compare( const void* elem1, const void* elem2 ){
return ( (*(int*)elem1) ) > (*(int*)elem2) ? 1 : -1 ;
}
0862デフォルトの名無しさん
05/01/24 19:22:18[2] 問題文(含コード&リンク):http://www.geocities.jp/paid_to_chobits/
[3] 環境
[3.1] OS:windowsまたはLinux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C/C++/どちらでも可
[4] 期限:2005年01月25日15:00
[5] その他の制限:入力サンプルがきちんと動く(特に値が大きいとき)
大体はできるんですが値が大きくなると動きません。お願いします。
0863デフォルトの名無しさん
05/01/24 19:43:41わからないです
void hoge(int unko, char str[] ){
int cnt = 0 ;
int temp, max, loop ;
char wrk ;
while(( temp = ( unko >> ( 4 * cnt )) & 0xf )) {
if( temp >= 0xa )
str[cnt] = temp + 0x37 ;
else
str[cnt] = temp + '0' ;
cnt ++ ;
}
for( max = cnt, loop = ( max / 2 ) ; loop > max - cnt ; cnt -- ) {
wrk = str[cnt - 1] ;
str[cnt - 1] = str[max - cnt] ;
str[max - cnt] = wrk ;
}
str[max] = '\0';
}
0864デフォルトの名無しさん
05/01/24 19:47:43ポインタ使ってない
0865デフォルトの名無しさん
05/01/24 19:50:45int だよな? tbl[] に入ってるとする。
int i,min,max,minP,maxP;
min=max=tbl[0];
minP=maxP=0;
for(i=1; i<numOfItem; ++i){
if(min>tbl[i]){min=tbl[i];minP=i;}
if(max<tbl[i]){max=tbl[i];maxP=i;}
}
printf("最小:%d\n" ,tbl[minP]) ;
printf("最大:%d\n" ,tbl[maxP]) ;
0866デフォルトの名無しさん
05/01/24 19:51:03unkoをhogeする関数って何だよ?
0867デフォルトの名無しさん
05/01/24 19:53:00ポインタ使ってない
0868865
05/01/24 19:53:360869865
05/01/24 19:55:35min=max=&tbl[0];
for(i=1; i<numOfItem; ++i){
if(*min>tbl[i])min=&tbl[i];
if(*max<tbl[i])max=&tbl[i];
}
printf("最小:%d\n" ,*minP) ;
printf("最大:%d\n" ,*maxP) ;
0870865
05/01/24 19:57:34>printf("最小:%d\n" ,*minP) ;
>printf("最大:%d\n" ,*maxP) ;
そんな変数使ってねーし
0871863
05/01/24 19:59:00int main(void) {
char str[255] ;
int data ;
scanf("%x" ,&data) ;
hoge( data, str ) ;
printf( "%s\n" ,str ) ;
return 0 ;
}
0872デフォルトの名無しさん
05/01/24 20:01:160873デフォルトの名無しさん
05/01/24 20:02:00>858
0874デフォルトの名無しさん
05/01/24 20:05:200875デフォルトの名無しさん
05/01/24 20:09:250876デフォルトの名無しさん
05/01/24 20:11:06>これのなかに16進数で、
>[A1][A2][A3][A4][A5][A6][X0]
>と値があるのですが、
X0 ってなんだ?
0877デフォルトの名無しさん
05/01/24 20:11:070878デフォルトの名無しさん
05/01/24 20:11:510879デフォルトの名無しさん
05/01/24 20:12:05酒だろ?
0880デフォルトの名無しさん
05/01/24 20:13:23>>876
A B C D E F の文字のどれか、という意味かと。
0881863
05/01/24 20:25:020882デフォルトの名無しさん
05/01/24 20:25:20#include <stdio.h>
#include <string.h>
char* hoge(const char* input, int n, char* output)
{
int i;
char temp[3] = {};
for (i = 0; i < n; i++)
{
sprintf(temp, "%02X", *(input + i));
strcat(output, temp);
}
return output;
}
int main(void)
{
const char input[] = "Hello!";
char output[128] = {0};
printf("%s", hoge(input, strlen(input), output));
return 0;
}
0883デフォルトの名無しさん
05/01/24 20:37:17>printf( "%s\n" ,str ) ;
...つりか?つりだな
0884デフォルトの名無しさん
05/01/24 20:41:07>>863
0885デフォルトの名無しさん
05/01/24 20:59:51超遅レスだし板違いだけど
高校レベルでは三角関数の微分の定義に
lim[x->0]sinx/x = 0
を使ってるからこれを示すためにロピタルの定理(の中で三角関数の微分)を使うのはおかしい
0886デフォルトの名無しさん
05/01/24 21:11:20?
>return output;
!?
0887デフォルトの名無しさん
05/01/24 21:21:42return output;は作った文字列を利用しやすいようにと思って。
0888デフォルトの名無しさん
05/01/24 21:24:5048656C6C6F21
0889デフォルトの名無しさん
05/01/24 22:19:24ありえなーい。
サインカーブの原点付近の傾斜はどう見たって45度。
0890デフォルトの名無しさん
05/01/24 22:20:08[2] 問題文(含コード&リンク):
a.キーボードから20個の数字を配列に入力し、その最大値・最小値を表示
b. 〃 、大きい順に並べ替え、それを表示
c.二次元配列のデータを表示し、各行・各列の和を求める
(↓のように表示。4列目・4行目が和)
1 2 3 6
4 5 6 15
7 8 9 24
12 15 18
[3] 環境
[3.1] OS:Windows XP Professional
[3.2] コンパイラ(バージョン):
[3.3] 言語:Borland C++ Builder
[4] 期限:2005年1月25日18:00まで
[5] その他の制限:ありません
すいません、お願いします
0891デフォルトの名無しさん
05/01/24 22:27:27俺の一流大学にはそんなもの無いんだが(w
0892デフォルトの名無しさん
05/01/24 22:28:050893デフォルトの名無しさん
05/01/24 22:38:070894デフォルトの名無しさん
05/01/24 22:56:41とか
a /= 2
とかってどういう意味なんですか?
0895デフォルトの名無しさん
05/01/24 22:58:56CなのかC++なのかどっちだ
>>894
d*=2 d=d*2
a/=2 a=a/2
=や*や/の意味すらわからないとか言わないよな
0896デフォルトの名無しさん
05/01/24 23:29:10[1] 授業単元:C言語入門
[2] 問題文:
自宅から学校までの道のりは片道190円です(往復380円)
sdddd年smm月sdd日〜syyyy年emm月sdd日まで、毎日学校に通う(休日、休日は考えなくてよい)と、運賃はいくらになるか求めるソースコードを作りなさい
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ(バージョン): Microsoft VisualStdio.NET2003
[3.3] 言語:C++
[4] 期限:2005年01月30日00:00まで
[5] その他の制限:
◆#include<iostream>と#include<string>程度しか習っていません。
◆総日数を扱う部分と運賃の計算を行う部分は関数化を行います。
(ex int get_day(開始年、開始月、開始日、終了年、終了月、終了日)といった風に)
12ヶ月の日付最大値を格納する部分は、自分では下記のように考えました(たぶん間違っていると思いますが・・。)
int season[12]={31,28,31,30,31,30,31,31,30,31,30,31};
とにかく初心者なので、どうにも作っていく流れが分からず、途方にくれています。
どうぞよろしくお願い致します。
0897デフォルトの名無しさん
05/01/24 23:32:02なかなかおもろい出題するじゃないか。感心したゾ
0898デフォルトの名無しさん
05/01/25 00:18:590899デフォルトの名無しさん
05/01/25 00:21:100900デフォルトの名無しさん
05/01/25 00:46:301.
#include <algorithm>
#include <iostream>
int main()
{
int input[20];
for (int i = 0; i < sizeof(input) / sizeof(input[0]); ++i) std::cin >> input[i];
std::cout << "Min:" << *std::min_element(input, input + 20) << "Max:" << *std::max_element(input, input + 20);
return 0;
}
2.
#include <algorithm>
#include <functional>
#include <iostream>
int main()
{
int input[20];
for (int i = 0; i < sizeof(input) / sizeof(input[0]); ++i) std::cin >> input[i];
std::sort(input, input + sizeof(input) / sizeof(input[0]), std::greater<int>());
std::cout << "sorted:\n";
for (int i = 0; i < sizeof(input) / sizeof(input[0]); ++i) std::cout << input[i] << std::endl;
return 0;
}
0901デフォルトの名無しさん
05/01/25 00:47:013.
#include <iomanip>
#include <iostream>
#include <iterator>
int main()
{
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
static const int row = sizeof(a[0]) / sizeof(a[0][0]), col = sizeof(a) / sizeof(a[0]);
int sum_row[row] = {0}, sum_col[col] = {0};
for (int i = 0; i < col; ++i)
for (int j = 0; j < row; ++j)
sum_row[i] += a[i][j];
for (int i = 0; i < col; ++i)
for (int j = 0; j < row; ++j)
sum_col[j] += a[i][j];
for (int i = 0; i < col; ++i)
{
for (int j = 0; j < row; ++j)
std::cout << std::setw(3) << a[i][j];
std::cout << std::setw(3) << sum_row[i] << std::endl;
}
for (int i = 0; i < row; ++i)
std::cout << std::setw(3) << sum_col[i];
}
以上。
0902デフォルトの名無しさん
05/01/25 00:55:00>[1] 授業単元:C言語入門
> [3.3] 言語:C++
ってことに感心した
0903デフォルトの名無しさん
05/01/25 00:59:500904デフォルトの名無しさん
05/01/25 01:06:46[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ:Borland
[3.3] 言語:C言語
[4] 期限:2005年1月30日まで
2次元配列に野球の得点をそれぞれ格納し、
ポインタを使ってそれぞれの合計得点を出力しなさい。
後攻の点数が9回表を終わって
先攻より上回る場合は9回裏は入力させないこと。
<入力>
1,0,0,0,1,0,0,2,0
0,0,0,1,0,0,2,0,2
<出力>
1回表 = 1
1回裏 = 0
2回表 = 0
2回裏 = 0
--- 省略 ---
9回裏 = 1
先攻の得点 = 4
後攻の得点 = 5
よろしくお願い致します。
0905904
05/01/25 01:09:00でした。
よろしくお願い致します。
0906デフォルトの名無しさん
05/01/25 01:19:55すいません、C++入門です。
自分で書いたのを見て凹みました・・。
閏年も設定しなくていいと書いてあります。
休日も来い、というのは最初「土日」は休み、という設定が難しかったので変更されたものです。
0908デフォルトの名無しさん
05/01/25 01:22:09[2] 問題文
1、多角形を構成している頂点列を、自己参照構造体を使って線形リストで表現し
頂点データの入出力をせよ
2、1のプログラムを基にして多角形の各辺を二等分する位置に新しい頂点を生成し
それをリスト構造に追加する関数を作成せよ
3、元の頂点をリスト構造から削除する関数を作成せよ。
1は解けましたが2と3がわかりません、よろしくお願いします。
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ(バージョン): 大学のコンピュータなのでわかりません
[3.3] 言語:C言語
[4] 期限:2005年1月25日13:00まで
[5] その他の制限:
0910デフォルトの名無しさん
05/01/25 01:30:41int cnt,sc[2][9+1]={0};
scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d",
&sc[0][1],&sc[0][2],&sc[0][3],&sc[0][4],&sc[0][5],&sc[0][6],&sc[0][7],&sc[0][8],&sc[0][9]);
scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d",
&sc[1][1],&sc[1][2],&sc[1][3],&sc[1][4],&sc[1][5],&sc[1][6],&sc[1][7],&sc[1][8],&sc[1][9]);
for(cnt=1; cnt<=9; ++cnt){
sc[0][0]+=sc[0][cnt];
printf("%d回表 = %d\n", cnt, sc[0][cnt]);
if(sc[1][0]<=sc[0][0]){
sc[1][0]+=sc[1][cnt];
printf("%d回裏 = %d\n", cnt, sc[1][cnt]);
}
}
printf("先攻の得点 = %d\n", sc[0][0]);
printf("後攻の得点 = %d\n", sc[1][0]);
return 0;
}
0911デフォルトの名無しさん
05/01/25 01:32:29何故問題文を省略する?
・問題文は、解いてもらう方にわかりやすいように全文を書きましょう。
・後から問題に付け足しするのはやめましょう。解いてもらっている方に失礼です。
字も読めないのか?
0912デフォルトの名無しさん
05/01/25 01:55:32問題文が正確だとすると
>先攻より上回る場合は9回裏は入力させないこと。
であって「出力させない」こと、ではない。
よってもまえ間違ってるぞw
0913デフォルトの名無しさん
05/01/25 02:30:56#include <stdio.h>
int main() {
int array[20];
int i,j,tmp, max=0, min=0;
printf("数字を入力してたもれ\n");
for(i=0; i<20; i++) {
scanf("%d", &array[i]);
if(max < array[i]) max = array[i];
if(min > array[i]) min = array[i];
}
/*並べ替え*/
for(i=0; i<20; i++)
for(j=i+1; j<20; j++)
if(array[i] <array[j]) {tmp = array[j]; array[j] = array[i]; array[i] = tmp;}
printf("最大値は %d 最小値は %d\n",max, min);
printf("並べると\n");
for(i=0; i<20; i++) printf("%d ", array[i]);
printf("\n");
return 0;
}
0914デフォルトの名無しさん
05/01/25 02:32:45>for(j=i+1; j<20; j++)
ダメだろw
0915デフォルトの名無しさん
05/01/25 02:35:320916デフォルトの名無しさん
05/01/25 02:37:130917デフォルトの名無しさん
05/01/25 02:37:420918デフォルトの名無しさん
05/01/25 02:44:12[2] 問題文:
名前の頭文字を読み込み、それに該当するもののデータのみプリントせよ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/129.txt
ここまでやったんですが、最後の構造体へのポインタの渡し方?がよくわかりません
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ:lcc-win
[3.3] C言語
[4] 明日昼まで
0919デフォルトの名無しさん
05/01/25 02:47:24問題がわかりません
0920918
05/01/25 02:52:26頭文字を1文字読み込み、構造体データのa[].nameの頭文字がそれと同じならその構造体データを表示せよ
という問題です
わかりにくくてすみません・・・
0921デフォルトの名無しさん
05/01/25 02:57:37printf("input initial\n");
c=getchar();
printf("%5s%5s%5s%5s%5s\n",t[0].name,t[0].sex,t[0].age,t[0].tel,t[0].mail);
i=0;
while(pa->name!=NULL){
if (pa->name[0] == c) {
printf("%10s%5s%3d%20s%30s\n",pa->name,pa->sex,pa->age,pa->tel,pa->mail);
}
pa++;
}
0922デフォルトの名無しさん
05/01/25 02:59:030923デフォルトの名無しさん
05/01/25 03:00:29プ
0924デフォルトの名無しさん
05/01/25 03:01:540925デフォルトの名無しさん
05/01/25 03:02:590926デフォルトの名無しさん
05/01/25 03:03:040927デフォルトの名無しさん
05/01/25 03:04:370928デフォルトの名無しさん
05/01/25 03:05:150930デフォルトの名無しさん
05/01/25 03:15:04・・・
0931アルペン
05/01/25 03:31:52申し訳ありませんが、今回もお世話になります。
[1] 授業単元:C++入門
[2] 問題文(含コード&リンク):
次の条件でタクシーの料金を計算するプログラムを作りなさい
◆最初の1500mは630円、それ以後は311mごとに+90円していく
◆料金が5000円以上なら1割引をする
◆走行距離は整数で、cin関数にて入力
◆料金表示は整数で、cout関数にて出力
以上が全文です。
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ(バージョン):VISUAL STUDIO.NET
[3.3] 言語:C++
[4] 期限:2005年01月27日
(時間は書いていなかったので、27日中かと思います)
[5]
5000円以上の金額で1割引を行うところが分からず、困っています。
その他の制限:C++を習ってまだ日が浅いので、なるべく初心者向けのソースであれば助かります。
どうぞよろしくお願いします。
0932デフォルトの名無しさん
05/01/25 03:33:320.9かけろ
0933764
05/01/25 03:57:48#include <iostream>
int main()
{
int distance, fare;
std::cout << "お客さん、何m走りますかい?:";
std::cin >> distance;
fare = 630;
distance -= 1500;
if (distance > 0)
while (distance > 0)
{
fare += 90;
distance -= 311;
}
std::cout << "着きましたよ。";
if (fare >= 5000)
{
std::cout << "あんたいい女だから今回はまけとくよ。";
fare *= 0.9;
}
std::cout << "運賃は" << fare << "円になりまさぁ";
}
0934& ◆TuixUkOm82
05/01/25 04:37:32言われてから気が付きました・・orz。
ありがとうございます。
>>933
コメント部分も使わせて頂きます。
迅速に回答頂いてありがとうございます。
0935デフォルトの名無しさん
05/01/25 05:07:10while文のループカウンターのみ使用
九九の表作成・行番号列番号あり
OS:XP
borlandやらbcc32やら書いてます。
課題は今日の10時40分に提出・・・・いくらやってもできません
0936935
05/01/25 05:08:21#include<stdio.h>
main()
{
int x,y;
printf(" 1 2 3 4 5 6 7 8 9\n");
x=1;
y=1;
while(x<=9,y<=9)
{
printf("\n%3d",x);
printf("%3d",x*y);
printf("\n");
x++;
y++;
}
}
0937デフォルトの名無しさん
05/01/25 05:18:56[2] 問題文(含コード&リンク):
二次元配列を用いて九九の表を作成してください
(以下の条件を満たす様に指示されています)
●動的メモリを確保しておくこと
●データ(九九のことです)はコンソールに出力したあと、最後にメモリを解放しておくこと
[3] 環境
[3.1] OS:Windows xp Home
[3.2] コンパイラ(バージョン):VisualStudio.Net2003
[3.3] 言語:C++
[4] 期限:2005年01月30日
[5]
二次元配列で九九は作れたのですが、動的メモリというのが何なのかがわからず挫折しました。
どうぞよろしくお願いします。
0938デフォルトの名無しさん
05/01/25 05:21:41#include <stdio.h>
int main(void)
{
int i, j;
printf(" | 1 2 3 4 5 6 7 8 9\n");
printf("-----------------------------\n");
i = 1;
while (i <= 9) {
j = 1;
printf("%d|", i);
while (j <= 9) {
printf("%3d", i * j);
j++;
}
printf("\n");
i++;
}
return 0;
}
0939デフォルトの名無しさん
05/01/25 05:33:23#include <iostream>
using namespace std;
int main()
{
const int SIZE = 9;
int** A = new int*[SIZE];
for (int i = 0; i < SIZE; i++) {
A[i] = new int[SIZE];
}
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
A[i][j] = (i + 1) * (j +1);
}
}
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
for (int i = 0; i < SIZE; i++) {
delete[] A[i];
}
delete A;
return 0;
}
0940935
05/01/25 05:37:49ありがとうございます。
なるほど・・・while二つ使ってる・・・
なんとなく理解できて来ました
0941935
05/01/25 05:47:42二次元配列を使用したプログラム
81個分の値をまず計算し、9X9の二次元配列に格納する。
その後、81個分の値を表示する。for文を使用する。
これも行番号・列番号の表示が必要です。
OS:XP
borland bcc32を使用しています。
0942935
05/01/25 05:48:15#include<stdio.h>
main()
{
intm[9][9]={
{1,2,3,4,5,6,7,8,9},
{2,4,6,8,10,12,14,16,18},
{3,6,9,12,15,18,21,24,27},
{4,8,12,16,20,24,28,32,36},
{5,10,15,20,25,30,35,40,45},
{6,12,18,24,30,36,42,48,54},
{7,14,21,28,35,42,49,56,63},
{8,16,24,32,40,48,56,64,72},
{9,18,27,36,45,54,63,72,81}
};
int x,y;
printf(" 1 2 3 4 5 6 7 8 9\n");
for(y=0;y<=8;y++)
{
printf("%d",y);
for(x=0;x<=8;x++)
printf("%3d",m[x][y]);
printf("\n");
}
}
0943デフォルトの名無しさん
05/01/25 06:08:53はじめっから配列に入れるんじゃなくて、計算して配列に入れるんじゃないの?
#include <stdio.h>
int main(void) {
int i, j, table[9][9];
for (i = 0; i < 9; i++)
for (j = 0; j < 9; j++)
table[i][j] = (i + 1) * (j + 1);
printf(" |");
for (i = 0; i < 9; i++)
printf("%3d", i + 1);
printf("\n-+");
for (i = 0; i < 9; i++)
printf("---");
for (i = 0; i < 9; i++) {
printf("\n%d|", i + 1);
for (j = 0; j < 9; j++)
printf("%3d", table[i][j]);
}
printf("\n");
return 0;
}
0944935
05/01/25 06:24:56あ・・・なるほど。そうか・・・。
不眠でやってたら頭がパンクしそう。
ありがとうございます。
もう一度確認してできるようにします。
0945デフォルトの名無しさん
05/01/25 08:28:42自分のやっているのがCかC++かすらわからん(書かない)奴はどうかと思う
0946デフォルトの名無しさん
05/01/25 09:12:32[2] 問題文:関数checknumを使い、与えられた変数(整数)が、
50または100の場合のみ真(true)を返し、それ以外の場合は偽(false)を返す
プログラムの作成。
[3] 環境:C言語
[4] 期限:1月26日まで
よろしくお願いします。
0947デフォルトの名無しさん
05/01/25 09:51:25int checknum(int num)
{
if(num == 50 || num == 100) return true;
else return false;
}
0948デフォルトの名無しさん
05/01/25 10:18:530949デフォルトの名無しさん
05/01/25 11:37:29{
switch(num){
case 50:
case 100:
return true;
default:
return false;
}
}
0950デフォルトの名無しさん
05/01/25 11:41:13{ return num == 50 || num == 100; }
これでいいだろ
0951デフォルトの名無しさん
05/01/25 11:56:57>>948
0952デフォルトの名無しさん
05/01/25 12:07:23{
if(num -= 50)
if(num -= 50)
return false;
return true;
}
0953デフォルトの名無しさん
05/01/25 14:14:38>948
どう定義しているかわからないからちゃんとtrue,falseを返しとけw
int checknum(int num) {
return (num == 50 || num == 100)?true:false;
}
0954デフォルトの名無しさん
05/01/25 14:15:170956デフォルトの名無しさん
05/01/25 15:11:32>どう定義しているかわからないからちゃんとtrue,falseを返しとけw
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
C99、C++なら大丈夫。
0957デフォルトの名無しさん
05/01/25 15:19:31>[3] 環境:C言語
ここからどうやってそれがわかるんだ?
0958デフォルトの名無しさん
05/01/25 15:27:590959デフォルトの名無しさん
05/01/25 15:37:32[2] 問題文(含コード&リンク):
貯金を500万円している。年利0.9%とすると10年でいくらになるか。
6ヶ月ごとの額を表示する。
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ(バージョン): gcc
[3.3] 言語:C
[4] 期限:1月末日まで
[5] その他の制限:
1年目 6月
12月
2年目 6月
12月
このように表示したいと思っているのですが、うまくできません。
年利は12で割って0.075で計算してよいとのことです。
よろしくお願いします。
0960デフォルトの名無しさん
05/01/25 15:51:14単利? 複利?
利子が掛かるのは一月目から? 二月目から?
一月目は1月?
0961デフォルトの名無しさん
05/01/25 16:13:39そのへんの説明が無かったんですが、
複利で1月から初めて一月目から利子をかけるということでやろうと思ってます。
説明無かったのに、この設定でやって文句言われたら・・・('A`)
0962デフォルトの名無しさん
05/01/25 16:53:07やり方がわかりません。
こんなかんじでやりたいと思っています。
main(){
A a;
_kansu(&a);
}
_kansu(A *a){
memset(a,0,(ここがわからない))
}
sizeofだと構造体のポインタのサイズしか返ってこないので…
よろしくお願いします。
0963デフォルトの名無しさん
05/01/25 16:56:27sizeof A
0964デフォルトの名無しさん
05/01/25 16:56:35sizeof(*a)もしくはsizeof(A)
それから、自作関数は'_'で始めちゃダメ。
0965デフォルトの名無しさん
05/01/25 17:00:48いいい
ううう
えええ
・
・
・
といったテキストファイルがある時に,
あああ
いいい
あああ
ううう
あああ
えええ
いいい
ううう
いいい
えええ
ううう
えええ
・
・
・
というふうに全組み合わせを出力させるプログラムは
どのようにして作ったらよろしいでしょうか…
よろしくお願いします.
0966デフォルトの名無しさん
05/01/25 17:07:03それは参照渡しとは呼ばない。
0968デフォルトの名無しさん
05/01/25 18:32:09どういうふう?
それでは全組み合わせがわからんのだ
0969デフォルトの名無しさん
05/01/25 19:15:31ってのを作りたくて、皆さんの意見を参考に
int r;
char *str;
r = (int)((double)11*((double)rand()/RAND_MAX));
str = malloc(sizeof(char)*256);
while(fgets(str,1024,fp)!=NULL)
while(){
pritnf(%s,str[r]);
というのを作ったんですけど、やっぱりファイルの中身の上から順に
しか表示されません。どう直すべきなのかお願いします
0970デフォルトの名無しさん
05/01/25 19:29:16考えろ。丸投げするな。
それじゃコンパイルできるわけない。ごまかすな。ばーか
0971デフォルトの名無しさん
05/01/25 19:47:40whileの用途と使い方が駄目。
変数rを使ってない
0972デフォルトの名無しさん
05/01/25 19:49:18#include <algorithm>
#include <cstdio>
#include <ctime>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
int main()
{
std::srand(unsigned(std::time(0)));
std::vector<std::string> vec;
std::string line;
std::ifstream input("words.txt");
while (getline(input, line)) vec.push_back(line);
std::random_shuffle(vec.begin(), vec.end());
std::copy(vec.begin(), vec.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
0973969
05/01/25 19:52:08コンパイルはできましたよ
int r;
char *str;
r = (int)((double)11*((double)rand()/RAND_MAX));
str = malloc(sizeof(char)*256);
while(fgets(str,1024,fp)!=NULL){}
while(タイムリミットまで){
pritnf("%s",str[r]);
ちょびっと直しました。charにファイルのものを全部いれてるんですよね
それをstr[r]で引き出すってものだと思うんですけど、
これじゃ行指定みたいになってないんですかね?
0974デフォルトの名無しさん
05/01/25 19:54:11ほざけ
0975デフォルトの名無しさん
05/01/25 19:56:29ぼるじょあがC/C++の宿題を片付けますYO! 39代目
http://pc5.2ch.net/test/read.cgi/tech/1106650397/
0976デフォルトの名無しさん
05/01/25 20:10:20テキトーに作ってみた。こんなんでどう?
char *rand_line(FILE *fp, char *buf, size_t bufsize, int numline) {
int i, x = (int)(numline * ((double)rand() / RAND_MAX));
rewind(fp);
for (i = 0; i < x; i++) {
if (!fgets(buf, bufsize, fp)) {
break;
}
}
return buf;
}
0977969
05/01/25 20:11:38cしか勉強してなくて…すみません972さん。ありがとうございます
0978デフォルトの名無しさん
05/01/25 20:13:00printf("%s", rand_line(fp, buf, 256, 11);
こんなかんじ。
0979デフォルトの名無しさん
05/01/25 20:15:16ああ、それじゃ文字指定だし、一行しか確保できていない。ヒントだ:char**plns=NULL;
plns=realloc(plns,n*sizeof(char*));
plns[i]=malloc...
0980デフォルトの名無しさん
05/01/25 21:40:47ハードの勉強で、電子回路とかやってんのに、関係ないプログラミングが必修なのは非常にウザイ
0981お願いします・・・!
05/01/25 21:41:17[2] 問題文(含コード&リンク):
csvファイルを読み込んで何らかの処理をするアプリケーションを作成する
[3] 環境
[3.1] OS: WIN2000
[3.2] コンパイラ(バージョン):visual c++
[3.3] 言語:C++/
[4] 期限:2005年1月25日つまりあと数時間でス・・・。
超ど初心者でス・・・.
プログラの授業なんかとったのが間違いだったのかもしれません。
お暇な方、神になってくださらないでしょうか・・・
0982デフォルトの名無しさん
05/01/25 21:48:48カンマをタブ\tにするプログラムはどうだ?
これなら一行ずつ処理するだけさ。
頑張れよw
0983デフォルトの名無しさん
05/01/25 21:57:31ん?HDLとか使わないの?
0984デフォルトの名無しさん
05/01/25 22:07:02完全に「ソフトウェア」の感覚。
0985デフォルトの名無しさん
05/01/25 22:10:32短い間だったが、台湾工場でも頑張れよ。うんうん。達者でな
0986デフォルトの名無しさん
05/01/25 22:11:44楽しいなぁ
0987969
05/01/25 22:26:17わざわざ書いていただいたんですけど悩んでもわかりません;;
976さんのでやってみたんですけど文字化けみたいになってしまって。
979さんのヒントでreallocがでてくるんですけどこれってサイズを拡張したり
するものですよね?これがどう一行確保につながっていくのかわからなくて…
自分の書いてるやつがおかしいってなんとなくわかるんですけど
なおせません;;何度もすみませんけど、ご指導のほどを…
0988デフォルトの名無しさん
05/01/25 22:34:060989デフォルトの名無しさん
05/01/25 22:34:33俺は電子回路のほうがうざかった
0990デフォルトの名無しさん
05/01/25 22:34:44979は要するにいったんファイルの中身を全てメモリに行単位で読み込めと言うわけだ。
0991デフォルトの名無しさん
05/01/25 22:36:150992デフォルトの名無しさん
05/01/25 22:49:510993デフォルトの名無しさん
05/01/25 22:50:520994デフォルトの名無しさん
05/01/25 22:51:310995994
05/01/25 22:52:06http://pc5.2ch.net/test/read.cgi/tech/1106650397/
0996デフォルトの名無しさん
05/01/25 22:52:43ぼるじょあがC/C++の宿題を片付けますYO!39代目
http://pc5.2ch.net/test/read.cgi/tech/1106650397/
0997デフォルトの名無しさん
05/01/25 22:55:500998デフォルトの名無しさん
05/01/25 22:55:560999デフォルトの名無しさん
05/01/25 22:56:21こちらこそ
1000デフォルトの名無しさん
05/01/25 22:56:2710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。