さゆがC/C++の宿題を片付けるの 36代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGどんどんもってくるの
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その行とエラーの詳細を書きましょう。
エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
【歴代スレは>>1-10辺り】
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/
28代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: 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/
0002デフォルトの名無しさん
NGNG18代目: 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
【注意点追加】
・複雑なAAはスレが荒れたり問題を埋もれさせてしまう原因に
なりますので、使用を控えてください。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
0003デフォルトの名無しさん
NGNG0004ぼるじょあ ◆yBEncckFOU
NGNG0005デフォルトの名無しさん
NGNG乙。
うpローダーのURLを、前スレで作ってくれた方の所に変えて欲しかった。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNGint
main(void)
{
printf(&linux["\021%six\012\0"], (linux)["have"] + "fun" - 97);
return 0;
}
0014デフォルトの名無しさん
NGNG角度θを0度から180度まで5度おきに変えてsinθとcosθ
をもとめ、一覧表として表示するプログラムを作りなさい。
角度を実数値として扱いなさい。
[環境]
言語:C
簡単なプログラムなら作れるんですが数学が混じるとorz
0015デフォルトの名無しさん
NGNG(1)テキストエディタを用いて、20個の整数をdata.txtというファイルに保存せよ。
ただし、各整数は空白か改行で区切られているものとする。
(2)data.txtから20個の整数を読み込んで、それらを配列に格納せよ。その配列の全要素
を逆順にしてoutput.txtへ出力せよ。この時、各要素は空白で区切られているものとする。
[環境]
言語:C
“テキストエディタを用いて”って書いてありますけど、多分Cでどうにかするんだと思います。
何かもうそれすらあやふやなほどで、1〜10まで全然分からないので本当に困っています。
どなたか宜しくお願いします。
0016菜々 ◆Xl6OTFSLJ2
NGNG#include <math.h>
int main(){
int x=0;//実数値(角度)
float y=3.141592;//円周率
/***** sin *****/
printf("== sin ==\n");
for(x=0;x<=180;x=x+5){
printf("\t%1.5f\n",sin(y*x/180));
}
/***** cos *****/
printf("== cos ==\n");
for(x=0;x<=180;x=x+5){
printf("\t%1.5f\n",cos(y*x/180));
}
}
0017デフォルトの名無しさん
NGNG#define PI 3.14159
#include <stdio.h>
#include <math.h>
int main(int argc,char* argv[]){
unsigned short ang;
for(ang=0;ang<=180;ang+=5)
printf("sin(%u):%.3f\tcos(%u):%.3f\n",ang,sin(ang*PI/180),ang,cos(ang*PI/180));
return(0);
}
これでいいんかなぁ?
0018デフォルトの名無しさん
NGNG「テキストエディタを用いて」って記述されてるから、data.txtはエディタで作れば
いいんじゃないの。
0019デフォルトの名無しさん
NGNG>>17
ありがとうございます
002017
NGNG002115
NGNG>data.txtはエディタで作ればいいんじゃないの。
ということは、実質的にはC言語の問題は(2)ということで良いんすか?
というか、テキストエディタって、そういうソフトですか?
0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNGなるほど、君が非常にやばい状況にあるのはわかった。
テキストエディタとは、Windowsに初めからインストールされている「メモ帳」など
の総称だよ。だから、data.txtはメモ帳で
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
と打って、data.txtというファイル名で保存すればよい。
数字と数字の間はスペースで、区切ってあるよ。
あと、コーディング(C言語の問題)の箇所は、君の言うとおり(2)になるね。
0024デフォルトの名無しさん
NGNGすいませんがもっと理解が簡単な風に作れないですか?
この課題はC言語を1からやる講義の課題なので
自分は高校で軽くやっただけなので考察書くことを考える
と中身が分からないとつらいので
すいませんがお願いします。
あとVisual Stadioでプログラムを作るのでお願いします
0025デフォルトの名無しさん
NGNG>>16が難しいとか言ってたらなにも作れない気がする
0026デフォルトの名無しさん
NGNG君にはVisual*Studio*すらももったいない気がする。
すちゅーでぃお
>>16はこれでもかって言うぐらいとても簡単です。
0027デフォルトの名無しさん
NGNGaaaa:0.0.0.0-0.255.255.255
bbbb:1.1.1.1-32.133.246.0
【出力】
0.0.0.0-0.255.255.255
1.1.1.1-32.133.246.0
と、IP範囲だけをファイルに書くというプログラムを作りたいです。
こういうの作ったけど、m=1となってエラーが出ます。
ソース:
ttp://www.70i.net/data/70i1300.jpg
結果:
ttp://www.70i.net/data/70i1301.jpg
':' の前後をちゃんと分けてないようです。
どうしたら良いでしょう?
002821
NGNGおぉ、神降臨!
テキストエディタの説明、大変有難う御座いました!
何か説明を受けてから改めて問題を見てみると、自力で出来そうな気がしてきました!
ちょっとやってみて、やっぱり駄目だったらまた来ます!
0029デフォルトの名無しさん
NGNG二次方程式ax2 + bx + c = 0の 2つの実数解、重解、2つの複素解を
求めるプログラムを作り、実行しなさい。ただし係数は簡単のため0と
する。
このレベルぐらいならつくれました。
0030デフォルトの名無しさん
NGNG003117
NGNG俺のやつは使い物にならないのかw
がーん
ってか係数が0だったらその式は定数じゃないのか???
0032デフォルトの名無しさん
NGNGそうよかったね
0033デフォルトの名無しさん
NGNG%sではホワイトスペースが現れるまで一つの文字列と見做してしまう。
:の前後で分けたいなら、少なくとも前は%[^:]などで取らないといけない。
003414
NGNGコピーしてテキストに貼り付けたら文字化け起こしたため困惑
してました orz
0035デフォルトの名無しさん
NGNGどうでもいいけど無闇とshortを使うのはよくない。
0036デフォルトの名無しさん
NGNGSUGEEEEEEE!!!!!
神だ!
これでこのスレは救われりゅ!
0037デフォルトの名無しさん
NGNGだからできたんだって。
003817
NGNGだって範囲的にshortの範囲じゃない?
無闇にint使うのはメモリの無駄じゃない?
shortで収まると分かっている場合はshortのがいいと思う。
>>37
だろうな。定数なんだもんw
解を求めるルーチンが間違ってても、正解は出てくるんじゃないかな。
0039デフォルトの名無しさん
NGNGじつはアドレッシングサイズを変えてしまうほうが無駄
0040デフォルトの名無しさん
NGNG0041デフォルトの名無しさん
NGNG普通にintを使うほうがより適切なコードになる可能性が高い。
試しに使っている環境で最適化をしたコード同士を較べて見たら?
0042デフォルトの名無しさん
NGNGintは16or32bit
0043デフォルトの名無しさん
NGNGそれはよほど大きな配列をつくる場合だけだ。
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG信じちゃダメ、絶対
004617
NGNG0047デフォルトの名無しさん
NGNGとしか決められてない。
0049デフォルトの名無しさん
NGNGじゃないの?
0050デフォルトの名無しさん
NGNGsizeof(char)==sizeof(short)でもいい。
ただし、その場合charは16bit以上になる。
0051デフォルトの名無しさん
NGNGそんなの存在するのかな?
1バイトが16ビットとか
0052ぼる
NGNGcharもintもlongもみーんな32bitの環境で開発したという話を聞いたことがあるYO!
0053デフォルトの名無しさん
NGNG(charはどうだったかは聞いていないが)
0055デフォルトの名無しさん
NGNG時間の無駄ってことはないだろう。自分で考えるほどプラスになることはない。
まぁ、とりあえずほれ。
でもちゃんと勉強しとかなきゃ後で大変だぞー。
int main()
{
FILE* in_stream;
FILE* out_stream;
int value[20];
in_stream = fopen("data.txt", "r");
if (in_stream == NULL) {
return -1;
}
out_stream = fopen("output.txt", "w");
if (out_stream == NULL) {
return -1;
}
for (int i=0; i<20; i++) {
fscanf(in_stream, "%d", &value[i]);
}
for (int i=19; i>=0; i--) {
fprintf(out_stream, "%d ", value[i]);
}
fclose(in_stream);
fclose(out_stream);
return 0;
}
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG釣られてなるものか!
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG006148
NGNGありがとうございました!
何か自分の不甲斐無さとやって頂いた嬉しさと
貴方の物腰の柔らかさに冗談抜きで泣きそうです…。
とりあえず今は課題ですので、提出する事を
重視しています。幸いうちの学校は春休みが
二ヶ月強あるので、そこでじっくり理解
していくつもりです。
長文失礼しました。
0062デフォルトの名無しさん
NGNG文字列操作関数strcpy()と同じ働きをする関数strcopy()を定義せよ。
ただし定義した関数の中では、ポインタを用いること(配列アクセスabc[i]などを用いない)。
また、ここで定義した関数と、次のmain()を組み合わせたプログラムを作成し、うまく動作することを確認せよ。
#include<stdio.h>
#define LINELEN 80
main()
{
char str1[LINELEN],str2[LINELEN];
while (gets(str1) != NULL)
{
strcopy(str2,str1);
printf("%s\n",str2);
}
}
[環境]
言語:C
お願いします。
char* strcopy(char* to, char* from){
while(*to++ = *from++)
;
return to;
}
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGどういう風にうまく動作しないのかを書け
0067デフォルトの名無しさん
NGNG冗談はほどほどにな
0068デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG位置がずれまくった戻り値って使い道あるの?
まあそれ以前の問題があるが。
0071デフォルトの名無しさん
NGNGあ。釣ってくる
0072デフォルトの名無しさん
NGNG戻り値は必須ではないけど、標準のstrcpyは返すから。
使い道って意味でも必須ではないけど、あるとウレシイこともある。
まれだけど。
>>64動かないのはなんでだろうね?自分のとこでは動きました。
007462
NGNG間違ったのはchar* strcopyの*を入れてなかったことかも…
引数のほうだけじゃダメなんですね。
言われてみれば戻り値にも入れないと確かにダメだ…。
今Windowsでコンパイラとかインストールしてないので試せないのですが、
UNIXでやったときはコンパイルすると関数にエラーが出てしまい(残念ながらメッセージは思い出せません…)、
実行できませんでした。
たぶんそれは上のことが原因だと思います。
明日試してみたいと思います。
ありがとうございました。
007562
NGNG0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG手助けお願い致します。
2004年のカレンダーを、UNIXのcalコマンドと同様に表示させる。
言語はCです。
よろしくお願い致します。
0078デフォルトの名無しさん
NGNGオプション
-j ユリウス暦で表示する
-y 現在の年のすべてのカレンダを表示する
month 表示したい月を指定する
year 表示したい年を指定する
説明
カレンダをテキスト・ベースで形成して表示する。オプションを指定しない場合は現在の月のカレンダが表示される。
0079デフォルトの名無しさん
NGNGsystem("cal -y");
:
0080デフォルトの名無しさん
NGNGと ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←>>75
0081デフォルトの名無しさん
NGNGchar *str1,*str2;
while (gets(str1) != NULL)
{
strcopy(str2,str1);
printf("%s\n",str2);
}
0082デフォルトの名無しさん
NGNG#include <unistd.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
if(execv("/usr/bin/cal", argv) < 0) {
fprintf(stderr, "execv err\n");
exit(127);
}
return 0;
}
0083デフォルトの名無しさん
NGNGf(x)=3x*x+2x+1の値が2.0<f(x)<3.0となるxの値の個数を求めるプログラムおねがいします
xを因数としf(x)の値を返す関数を作成してそれを使用する
0084从*・ 。.・)
NGNG#include <stdio.h>
#define EPS (1e-12)
#define LE(x, y) ((x) - (y) < EPS)
double
f(double x)
{
return 3 * x * x + 2 * x + 1;
}
int
main(void)
{
int count = 0;
double x;
for (x = 0.0; LE(x, 1.0); x += 0.01) { if (LE(2.0, f(x)) && LE(f(x), 3.0)) { count++; } }
printf("%d\n", count);
return 0;
}
0085デフォルトの名無しさん
NGNGありがとうございます。
defineとかまだ習ってないんですが使わないとできないんですか?
0086デフォルトの名無しさん
NGNG#include <stdio.h>
double
f(double x)
{
return 3 * x * x + 2 * x + 1;
}
int
main(void)
{
int count = 0;
double x;
for (x = 0.0; x < 1.0 + 0.0001; x += 0.01) { if (2.0 < f(x) + 0.0001 && f(x) < 3.0 + 0.0001) { count++; } }
printf("%d\n", count);
return 0;
}
0087デフォルトの名無しさん
NGNGdelphiってわかります?
0088デフォルトの名無しさん
NGNGなんぢゃそりゃw
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNGなんぢゃそりゃアゲインw
0091デフォルトの名無しさん
NGNG想像で書いちまった
http://www.kouno.jp/home/c_faq/c14.html#5
if (fabs(x - 1.0) <= 0.0001 * x)
こうでいいのかな
0092デフォルトの名無しさん
NGNGそいつはどうかな
提示のCFAQは2値が十分に等しいと見なせるか、であって
>86 みたいなループにはdoubleを使うな、って事でねーの? >88 は
0093デフォルトの名無しさん
NGNG0094名無し募集中。。。
NGNG从*・ 。.・)
⊂ ,,O
( ノ
≡≡≡⊂\_) テケテケ
∋oノハヾo∈<新スレおめでと〜!
(・ 。.・*从
O,, ⊃
ヽ ) テケテケ
(_/⊃≡≡≡
_______
| ∋oノノハヾo∈|<きょうはもうねるの>>1乙
| 〔从*- 。.-从ノシ |
(⌒⌒⌒⌒⌒⌒⌒⌒)
0095デフォルトの名無しさん
NGNGなんぢゃそりゃアゲインw
0096デフォルトの名無しさん
NGNGhttp://myu.daa.jp/osiete/know2.html
0097デフォルトの名無しさん
NGNG自分じゃ出来ないからといって、他人にやってもらおうとする人。
やらされる側の面倒さを全く考えてない。
待ってます君:
勝手に一人で面倒な条件を言いつけ、
「待ってます!」と捨てゼリフを言い残して、言われた側へプレッシャーをかける。
無視すると数日後に再び現われ「あの〜、お願いしたんですけど…」と言ってくる。
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG0101101
NGNG0102デフォルトの名無しさん
NGNGlabel:
char *p;
p=malloc(1);
goto label;
return 0;
}
C言語で初めてプログラムを作ってみました。
みなさんどうぞ。
誰かこれを実行してみて下さい。
実行者が現れるまで待ってます!
0103デフォルトの名無しさん
NGNGi<´ }\ , - 、
ヽ.._\./ .ンく r-兮、 __
∠`ヽ.! / ヾニEヲぐ ,ゝ-> さゆがゴッグだ
/_`シ'K-───‐-、l∠ イ なんともないぜ
l´__,/l\、_ ̄0¨0)゙@Yヘ, -┤
. l'___|⌒ヾ''ー==、ーr='イ i二|
/ .」 i /./7r‐く lー!
. f. ヽ‐i人.∠'< _i. l,.-ゝ.
トiヘヘ「ト〈 `X トレi7__|
〉ト:トハj`! i. / トー┤lルj,リ
/‐+----+‐l iー--i---ヾ'〃
. l_i____i__| |___i,__i_|
0104お願いします
NGNG電卓プログラムを作成せよ
四則演算はもちろん、sinx,cosxを含む計算も出来、
途中で終了も出来るようにせよ
0105お願いします
NGNGmain()
{ char op;
int end_fg;
double a, result;
end_fg = 1;
scanf("%lf", &result);
while(end_fg >= 1)
{ scanf("%c",&op);
switch(op)
{
case '+':
scanf("%lf",&a)
result = result + a
printf("%lf\n", result);
break;
(中略)
case '*':
scanf("%lf",&a);
result = result * a
printf("%lf\n", result);
break;
case 'q':
end_fg = end_fg - 1;
break;
}}}
ここまで自分で作りました!四則演算だけなら続けて計算できます。
あとはend_fgを切り替えてsinx、cosxの計算を出来るようにするだけなのですが・・・
0106デフォルトの名無しさん
NGNGsinxやcosxなどはどうしても判別に3文字(s,cから始まる演算子がほかになければ別ですが)
まずは与えられた式をトークンに分解してどこかに保存なんかしてやると楽かもしれません。
なお計算機の場合若干難しいですが「逆ポーランド記法」をつかえるとやりやすいです。
もし今のままやりたいのでしたらsinやcosの判別を行った後
math.hないで定義されているsin,cos関数を呼び出してやればいいと思います。
呼び出し方
#include <math.h>
を2行目くらいに付け加えてみてください。
時間がないものですから中途半端なヒントでごめんなさい。
ほかの方フォローお願いします。
0107デフォルトの名無しさん
NGNGvoid npire(int n);
こんな課題が出ました。
言語はCです。
どうかお願い致します。
1
222
33333
4444444
0108デフォルトの名無しさん
NGNGnが10以上とかマイナスのときは上手くいかないけど。
#include <stdio.h>
void npire(int n);
void main()
{
/*とりあえず5段*/
npire(5);
}
void npire(int n)
{
int i,j,k;
/*段数ループ*/
for(i=0;i<n;i++){
/*行頭の空白*/
for(j=0;j<(n-i-1);j++)putchar(' ');
/*数字部分*/
for(k=0;k<1+(i*2);k++)printf("%d",i+1);
putchar('\n');
}
}
0109デフォルトの名無しさん
NGNG------- DATA.text---------------
1 1.0000
2 2.3000
3 3.4443
.
.
10
-----------------------------
といった内容が入っているファイルがあるとします。
ファイル中から指定した値を検索し、書き換えてファイルに保存するようなプログラムが作りたいのですが。
例えば、1.000という値を0.001に書き換えて保存するような形です。
言語はc言語です。unix作業しています。よろしくお願いします。
0110名無し募集中。。。
NGNG% gcc -Wall -Wpointer-arith -Wstrict-prototypes hoge.c
hoge.c: In function `main':
hoge.c:3: error: 構文解析エラー が "char" の前にあります
hoge.c:4: error: `p' が宣言されていません (この関数内で最初に利用)
hoge.c:4: error: (未宣言の各変数については、それが最初に現われたそれぞれの関数
hoge.c:4: error: に対して一度だけ報告されます。)
hoge.c:4: 警告: 関数 `malloc' の暗黙の宣言
0111デフォルトの名無しさん
NGNG从*T 。.T)ノ<さゆは宿題しかやらないの
sed, awk の使えない Unixer はただの豚なの
0112デフォルトの名無しさん
NGNGアフォか?
sedやawkの実装を自分でやったらどうなるかを学ぶ宿題に決まってるだろ?
0113デフォルトの名無しさん
NGNG円弧がうまく描画されません。kakudo[t]の計算に問題があると思うのですが、
どう改良したらよいか分かりません。どなたかご教授ください。
/* 始点 */arcx[0] = arc[z][0].sx; arcy[0] = arc[z][0].sy; arcz[0] = arc[z][0].sz;
/* 中間点 */arcx[1] = arc[z][1].sx; arcy[1] = arc[z][1].sy; arcz[1] = arc[z][1].sz;
/* 終点 */arcx[2] = arc[z][2].sx; arcy[2] = arc[z][2].sy; arcz[2] = arc[z][2].sz;
for(t=0; t<3; t++){
cx = a[0][3]/2; cy = a[1][3]/2;
r = sqrt((arcx[t]-cx)*(arcx[t]-cx)) + ((arcy[t]-cy)*(arcy[t]-cy));
pi = (2.0*asin(1.0));
rad = (pi/180.0);
kaku = (arcx[t] -cx)/r;
kakudo[t] = acos(kaku)*(180/pi);ra[t] = (kakudo0[t])*(pi/180.0);
sinx = (arcy[t]-cy)/r;
cosx = (arcx[t]-cx)/r;
tanx = (arcy[t]-cy)/(arcx[t]-cx);
w = r*cosx;
v = r*sinx;
kakudo1 = (ra[0]/pi*180) - (ra[1]/pi*180);
kakudo2 = (ra[1]/pi*180) - (ra[2]/pi*180);
kakudo3 = kakudo2 + kakudo1;
kakubun = kakudo3/40;
}}
0114前スレ981
NGNG0115sage
NGNG<16進正整数><演算子><16進正整数>
の形で与えられた四則演算式を計算し、結果を16進正整数の形で出力するプログラムを作成せよ。
ただし、演算結果が実数になる場合は、小数点以下を切り捨てよ。
という問題なのですが。
sscanfを使用してはいけないらしく、どうすれば良いのかわかりません。
宜しくお願いします。
0116デフォルトの名無しさん
NGNGコピーしちゃだめ。
「前スレ981」だけで充分。
0117デフォルトの名無しさん
NGNG16進正整数の値の範囲は?
1) 0-FF
2) 0-FFFF
3) 0-FFFFFFFF
4) 0-FFFFFFFFFFFFFFFF
5) それ以外
0118sage
NGNG特に指定はされていません。
おそらく、文字列の長さを数えるstr_length関数を定義しなければならないかと…。
0119デフォルトの名無しさん
NGNGstrlenやatoiを使っちゃいかんのか?
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGchar *p;
label:
p=malloc(1);
goto label;
return 0;
}
>>110
こちらをどうぞ召し上がれ
0122sage
NGNGあ、それは問題には指定されていないので使ってもいいと思います。
宜しくお願いします。
0123デフォルトの名無しさん
NGNG0124名無し募集中。。。
NGNG% gcc -Wall -Wpointer-arith -Wstrict-prototypes hoge.c
hoge.c: In function `main':
hoge.c:4: 警告: 関数 `malloc' の暗黙の宣言
% ./a.out
zsh: 4922 segmentation fault ./a.out
せぐめんてーしょんふぉーると(pgl
0125sage
NGNGすみません…。strlenはOKだと思われます。
0126デフォルトの名無しさん
NGNG大丈夫。atoiは16進数文字列からは整数にできない。
0127デフォルトの名無しさん
NGNG文字型で入力し、その後1文字ずつ改行を加えながら表示させなさい
下記まで考えたができんっ!ちなみにこんな感じの考え方で良いんだって。
まぁ、どうせ初心者だし
#include <stdio.h>
int main()
{
char a,*pa;
scanf("%s",&a);
pa=a;
while(a!='\0'){
printf("%c\n",a);
pa++;
}
return 0;
}
0128デフォルトの名無しさん
NGNG「番兵を用いた双方向リストに対して、マージソートを用いて辞書順にソートする関数を作成せよ」という課題が出ました。
ちなみに、リストは
struct BListCell {
char word[ 64 ]; /* 単語を格納する配列 */
struct BListCell *next; /* 次のセルを指すポインタ */
struct BListCell *prev; /* 前のセルを指すポインタ */
};
と定義してあります。
結構面倒くさいかもしれませんが、よろしくお願いします。
0129前スレ988
NGNG「エラーが発生したので、…(プログラム名).exeを終了します」とか言われました。
どなたか添削お願いします。
#include <stdio.h>
#include <string.h>
char *my_strstr(char *s, char *p){
char *cs, *cp;
while(*s){
cs = s; cp = p;
while(*cs == *cp){
cs++; cp++;
}
if(*cp == '\0'){
return(s);
}
s++;
}
return(NULL);
}
0130前スレ988続き
NGNGint i, x, p = 0, q = 0;
char *pat = "abc", buf[256], result[256];
scanf("%d", &x);
for(i = 0; i <= x; i++){
fgets(buf, sizeof buf, stdin);
}
if(my_strstr(buf, pat)){
p = q + strlen(buf);
for(i = q; i <= p; i++){
buf[i] = result[i];
q = q + strlen(buf);
}
}
for(i = 0; i <= p; i++){
printf("%s\n", result[i]);
}
return(0);
}
以上です。お願いします。
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG>>124>>121
#include <stdio.h>
#include <stdlib.h>
int main(void){
char *p;
label:
p=malloc(1);
goto label;
return 0;
}
0133デフォルトの名無しさん
NGNGhttp://en.wikibooks.org/wiki/Programming:C_strings#The_strstr_function
#include <string.h>
/* strstr */
char *(strstr)(const char *s1, const char *s2)
{
size_t s2len;
/* Check for the null s2 case. */
if (*s2 == '\0')
return (char *) s1;
s2len = strlen(s2);
for (; (s1 = strchr(s1, *s2)) != NULL; s1++)
if (memcmp(s1, s2, s2len) == 0)
return (char *) s1;
return NULL;
}
0134デフォルトの名無しさん
NGNG<stdio.h> は何で include するの?
0135デフォルトの名無しさん
NGNGふと気になったのだが
>演算結果が実数になる場合は、小数点以下を切り捨てよ
正整数同士の四則演算で、虚数が出てくることってあるのか?
0136デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):
1.半径rをキーボードから読み込み、その球の表面積Sと体積Vを求めるプログラムを作れ。
ただし、 S=4πr^2 V=4πr^3/3 π=3.14 とする。
2.実行すると「画面の前にいる人に名前を尋ねて、その人がキーボードに打ち込んだ名前を文字列に収納する」ようなプログラムを作れ。
[3] 環境 :C言語
[4] 期限:2004年12月14日12:00まで
[5] その他の制限: なし。
お願いいたします。
0137デフォルトの名無しさん
NGNG正整数と四則演算と虚数の定義によるんじゃない?
0138sage
NGNG[1]
#include <stdio.h>
int main(void)
{
double r;
double PI = 3.14;
scanf("%lf", &r);
printf("S = %lf\nV = %lf\n", 4 * PI * r * r, 4 * PI * r * r * r / 3);
return 0;
}
[2]
#include <stdio.h>
#define BUF_SIZE 1024
int main(void)
{
char buf[BUF_SIZE];
printf("がめんのまえにいるひとのなまえはなんですか?: ");
fgets(buf, BUF_SIZE, stdin);
return 0;
}
0139デフォルトの名無しさん
NGNGなんかもう、自分では一切やりませんよって感じだなw
0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNGありがとうございます。
>>139
自分でやったんですがテンプレに記入するところが見当たらなかったので・・・
0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNG0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG0147デフォルトの名無しさん
NGNG0148six
NGNG「f:\プログラム\huffman.c(11) : fatal error C1083: インクルード ファイルがオープンできません。'unistd.h': No such file or directory
cl.exe の実行エラー」
とでるのですが、これはvisual c がきちんと入ってないから起こるエラー
なのでしょうか?どなたかわかるかたいらっしゃったら詳しく聞かせてもらえないでしょうか。
0149six
NGNG#include<stdlib.h>
#include<ctype.h>
#include<unistd.h>
#defineSIZE256
#defineBRANCH0x100
typedef struct _node {
intsym;
intcount;
struct _node*right;
struct _node*left;
} NODE;
0150six
NGNGintcode[SIZE];
intheap_size = 0;
NODE*heap_table[SIZE];
NODE*root;
charheader[] = "HUFF";
intresult = 0;
NODE *
get_node( void )
{
NODE*node = malloc( sizeof( NODE ) );
if( node == NULL ){
fprintf( stderr, "メモリが足りません\n");
exit( 1 );
}
return node;
}
0151デフォルトの名無しさん
NGNGunistdはunix用ヘッダだからVCには入ってない
0152six
NGNG#define SWAP( i, j ){\
NODE*tmp = heap_table[(i)];\
heap_table[(i)] = heap_table[(j)];\
heap_table[(j)] = tmp;\
}
void
make_heap( void )
{
inti, j , k;
for( i = 0; i < SIZE; i++ ){
if( sym_count[i] ){
NODE*p = get_node();
p->sym = i;
p->count = sym_count[i];
p->left = p->right = NULL;
heap_table[heap_size++] = p;
}
}
0153six
NGNGfor( i = heap_size / 2 - 1; i >= 0; i-- ){
for( j = i; (k = 2 * j + 1) < heap_size; j = k){
if( (k + 1 < heap_size) && COUNT_COMP( k, k + 1 ) > 0 ) k++;
if( COUNT_COMP( j, k ) < 0 ) break;
SWAP( j, k )
}
}
}
NODE *
get_heap( void )
{
NODE*result;
intj, k;
result = heap_table[0];
heap_table[0] = heap_table[--heap_size];
for( j = 0; (k = 2 * j + 1) < heap_size; j = k){
if((k + 1 < heap_size) && (COUNT_COMP(k, k + 1) > 0)) k++;
if( COUNT_COMP( j, k ) < 0 ) break;
SWAP( j, k )
}
return result;
}
0154ぼるじょあ
NGNG$s = '1102785302.dat<>ダイオキシンが原因 ウクライナ野党候補の急病 (120)';
$s =~ m/^(\d+)\.dat.*\((\d+)\)$/;
print $1,"\t",$2,"\n";
出力結果は、
1102785302 120
で、期待どおりのものでした。
これをC++のboost::regexで実行しようとして、次のようなコードを書きました。
string str = "1102785302.dat<>ダイオキシンが原因 ウクライナ野党候補の急病 (120)";
boost::smatch m;
boost::regex r("^(\d+)\.dat.*\((\d+)\)$");
boost::regex_search(str, m, r);
cout << m.str(1) << "\t" << m.str(2) << endl;
ところが、出力は期待のものが得られませんでした。
これはboostの正規表現はperlのものと違うということでしょうか?
0155デフォルトの名無しさん
NGNG\は\\にしないとダメぽ
boost::regex r("^(\\d+)\\.dat.*\\((\\d+)\\)$");
0156デフォルトの名無しさん
NGNGあらかじめ作っておいた配列に格納する方法を教えてください
C言語でお願いします
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNGもらわないと困るんですよ
0159デフォルトの名無しさん
NGNGこれの時計部分だけをユーザー関数にしたいのですが、どうすれば良いかわかりません。
お願いします。
0160デフォルトの名無しさん
NGNGリンク先はjpgとなっていますが、IEでテキストとして見れます。
0161デフォルトの名無しさん
NGNGうっせーよ自治厨
0162デフォルトの名無しさん
NGNGもらわないと困るんですよ
0163デフォルトの名無しさん
NGNGタダで仕事を無理に引き受けさせようとするお前の態度が気に入らない。
0164デフォルトの名無しさん
NGNGint n=0;
if ((fp = fopen("file.txt", "r")) == NULL) exit(1);
while (fgets(array[n], MAX_LEN, fp) != NULL) n++;
fclose(fp);
0165デフォルトの名無しさん
NGNGもらわないと困るんですよ
0166デフォルトの名無しさん
NGNGどうせ仕事してないんだろ?
0167デフォルトの名無しさん
NGNG俺が起きるまでにドキュメントも仕上げとけ
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNG[2] 予め与えられた行列(テキストファイル)で、列重みが最大な列の番号を出力するプログラム 。
[3] 環境
[3.1] OS:UNIX
[3.3] 言語:C
[4] 期限:水曜
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNGinput.txtなるファイルからスペースで区切られた数値の列を読み込み,
その平均値をoutput.txtなるファイルに出力せよ.
その際,ファイルの終わりは,EOFにより検出せよ.
問題文2:
文字列型変数nameと整数型変数iの値をキーボードから読み込み,
文字列型データのi番目の文字を標準出力に出力せよ.
問題文3:
倍精度実数xの値をキーボードから読み込み,
以下の2つの式の値の差の絶対値が0.00001より小さくなるような最小のnを標準出力に出力せよ.
y=Σ[i=0,n]x^i
z=1/(1-x)
[3] 環境
[3.1] OS:UNIX
[3.3] 言語:C
[4] 期限:2004年12月14日17:00まで
いろいろやってみましたができませんでした・・・。
3番はできればでいいのでよろしくお願いします。
0172デフォルトの名無しさん
NGNGC言語で配列の要素数を#defineやプログラム内で宣言せずに
scanfなどでプログラム実行中に後から指定する方法は無いのでしょうか?
やって見ると、「定数式が必要」とエラーになるのですが・・・
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGうまくいきました!
ありがとうございました
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNGC99から静的配列の要素数にconst int 型の変数が使えるようなった。
C99がつかえないなら callocをつかう。
const int bufsize = 1024;
int *iptr = calloc ( bufsize, sizeof(int) )
/
何らかの処理
/
free(ipr);;
0179デフォルトの名無しさん
NGNG#include <stdio.h>
int main(){
double data, temp = 0; int cnt = 0;
FILE *fp1, *fp2;
char fname1[64] = "hw.dat"; char fname2[64] = "output.txt";
fp1 = fopen(fname1, "r");
if (fp1 == NULL){
printf("ファイルをオープンできません。\n");
} else {
while(1){
if ( fscanf(fp1, "%lf", &data) == -1 ){
break;
} else {
temp += data;
cnt++;
}
}
fclose(fp1);
fp2 = fopen(fname2, "w");
if (fp2 == NULL){
printf("ファイルをオープンできません。\n");
} else {
if ( fprintf(fp2, "%f", temp / cnt ) == -1){
printf("ファイルの書き込みに失敗しました\n");
}
fclose(fp2);
}
}
return 0;
}
0180デフォルトの名無しさん
NGNGxが -1 < 0 < 1 の範囲のとき、解が求まるけど、あってますか?
0181171
NGNGありがとうございます。参考にさせていただきます
>>180
解はそうかもしれませんね。なんか数学の定理だか公式らしいです。
出力結果は
例えば,x=0.9 のとき n=131, x=0.5 のとき n=17 となる.
らしいです。
0182デフォルトの名無しさん
NGNGどうも有難うございます。
前者の方でできました。
0183デフォルトの名無しさん
NGNG入力ファイルの英文単語の先頭文字を大文字へ変換して別ファイルへ出力するプログラムを作りたい。
【仕様】
1.次のような入力ファイルを入力すると、出力ファイルReformed.txtを得る。
入力ファイルlyrics.txtの内容
there's a lady who's sure all that gitters is gold and she's buying a stairway to heaven.
出力ファイルReformed.txtの内容
There's A Lady Who's Sure All That Gitters Is Gold And She's Buying A Stairway To Heaven.
(注意!プログラムは行頭が空白でも正しく機能すること)
2.プログラムは a.out lyrics.txt reformed.txt とコマンドを入力して実行する。
3.プログラムはファイル入力部分、大文字変換部分、ファイル出力部分の3つの関数とMain関数から構成したい。
【環境】
言語:C言語
関数とか…苦手なんだよママン…(;つД`)
どなたか力を貸していただきたいです。
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGで reformed.txt を Reformed.txt に変更してから
ファイルを作成する機能も必要?
0186デフォルトの名無しさん
NGNG環境unix系ぽいし関数の流用利くし
0187デフォルトの名無しさん
NGNGhttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0188デフォルトの名無しさん
NGNG#include <stdio.h>
#include <math.h>
#define pi (3.1415926535)
main()
{
char op2;
double kakudo, x, result;
scanf("%c", op2);
if(op2 = 'c'){
scanf("%lf",&kakudo);
x = kakudo / 180. * pi;
result = cos(x);
printf("%lf\n",result);
}
else if(op2 = 's'){
scanf("%lf",&kakudo);
x = kakudo / 180. * pi;
result = sin(x);
printf("%lf\n",result);
}
}
ここまで作りましたが,実行しても何故か Segmentation fault と表示されてしまいます.一体何がいけないのでしょうか.ご教授お願いします!
0189デフォルトの名無しさん
NGNG("%c", &op2);
==
0190デフォルトの名無しさん
NGNGprintfの書式指定文字列に"%lf"ってあったっけ。もっとも、間違えやすい
人が多いので、許している処理系もあるが。
0191188
NGNGありがとうございます
最初の問題は解決しました
しかしsとcどちらの入力をしてもコサインの計算が行なわれるようです.
if文の使い方に問題があるのでしょうか?
0192デフォルトの名無しさん
NGNG「 mcbsp0_rx_intr 」 ←の動作を説明していただけませんか?
また、McBSP0_DRR,McBSP0_DXRはc6711.hに定義されているレジスタであって、
*(unsigned int *)McBSP0_DXR=x&0xfffe;
の「0xfffe」の意味は何か
これも説明していただけると幸いですm(_ _)m
ちなみにプログラムの一部は
temp=*(unsigned int *)MUXL&0xfc1fffff;
temp=temp | 0x01a00000;
*(unsigned int*)MUXL=temp
ICR=0xffff;
IER=0x0102;
CSR=CSR | 1;
INT8:
b _mcbsp0_rx_intr
NOP
〃(×6)
となります。
0193デフォルトの名無しさん
NGNGこういう質問は何度見てもむかつくな
0194デフォルトの名無しさん
NGNGCの等価比較は=じゃなくて==だ。
0195デフォルトの名無しさん
NGNGの1の問題を勉強のためC++で作っていたのですが
出力されたファイルが文字が数字なってしまって。
どなたか見て頂きたいです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/27.txt
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGint input[256]; → char input[256];
ざっと眺めただけだからいけるかどうかわからんけど。
あと、<iostream.h>とかは古いから<iostream>とかを使うようにしようね。
0198デフォルトの名無しさん
NGNGコンパイルすら通らないコード持って来るな。
0199デフォルトの名無しさん
NGNGcharとは気がつきませんでした、
どうもありがとうございます。
0200デフォルトの名無しさん
NGNGコンパイルとおりませんでしたか!?
失礼しました。
こちらで確認します。
0201デフォルトの名無しさん
NGNGあと、
input[j] = toupper(input[j=j+1]);
これは動作未定義だよ。副作用完了点がはっきりしない。
次の行でjをインクリメントするように汁。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG但し掛け算の計算はmulとして関数を作成すること。
おしえてくだされ
0206デフォルトの名無しさん
NGNG画面に出力するプログラムを作成せよ。
但し各処理ごとに加算:add 減算:sub 乗算:mul 除算:divとして関数を作成すること。
(除算の結果は実数で)
C言語についてです。わかりません
0207デフォルトの名無しさん
NGNGマルチ
>>206
マルチ
0208デフォルトの名無しさん
NGNG>>206 は誘導されてここに来てるからマルチじゃないけど、
>>205 は自分で勝手に移動してるからマルチ認定。
0209デフォルトの名無しさん
NGNGもらわないと困るんですよ
0210デフォルトの名無しさん
NGNG#include<stdio.h>
void kuku(int *x){
int i,j;
int *xi;
xi=x;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
*(xi+j)=(i+1)*(j+1);
}
}
}
int main(int argc,char* argv[]){
int x[9][9];
int i,j;
kuku(&x[0][0]);
for(i=0;i<9;i++){
for(j=0;j<9;j++){
printf("%d ",x[i][j]);
}
printf("\n");
}
return(0);
}
0211デフォルトの名無しさん
NGNGmulがねーぞー、こんなもん使えねーなー
0212デフォルトの名無しさん
NGNGわりぃわりぃ
#include<stdio.h>
void mul(int *x){
int i,j;
int *xi;
xi=x;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
*(xi+j)=(i+1)*(j+1);
}
}
}
int main(int argc,char* argv[]){
int x[9][9];
int i,j;
kuku(&x[0][0]);
for(i=0;i<9;i++){
for(j=0;j<9;j++){
printf("%d ",x[i][j]);
}
printf("\n");
}
return(0);
}
0213デフォルトの名無しさん
NGNGいかん、酔ってるなw
#include<stdio.h>
void mul(int *x){
int i,j;
int *xi;
xi=x;
for(i=0;i<9;i++){
for(j=0;j<9;j++){
*(xi+j)=(i+1)*(j+1);
}
}
}
int main(int argc,char* argv[]){
int x[9][9];
int i,j;
mul(&x[0][0]);
for(i=0;i<9;i++){
for(j=0;j<9;j++){
printf("%d ",x[i][j]);
}
printf("\n");
}
return(0);
}
このmul結構速いし、いいと思うよ。
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG#include <stdio.h>
int add(int x, int y){return x + y;}
int sub(int x, int y){return x - y;}
int mul(int x, int y){return x * y;}
double div(int x, int y){return (double)x / y;}
int main(){
int x, y;
printf("x?:");
scanf("%d", &x);
printf("y?:");
scanf("%d", &y);
printf("%d+%d=%d\n", x, y, add(x, y));
printf("%d-%d=%d\n", x, y, sub(x, y));
printf("%d*%d=%d\n", x, y, mul(x, y));
printf("%d/%d=%f\n", x, y, div(x, y));
}
0216デフォルトの名無しさん
NGNGそんんことはどうでも良いんだよ。はよ、答え作れボケカス
0218デフォルトの名無しさん
NGNG彼は寝ただろう。
0219デフォルトの名無しさん
NGNG>>215にあるしwwwwwwwwwwwww
あ、釣られちったwwwwwwwwwwww
0220デフォルトの名無しさん
NGNG#include <stdio.h>
int mul(int x, int y){
return x * y;
}
int main(){
int i, j, res[9][9];
for (i = 1; i <= 9; ++i)
for (j = 1; j <= 9; ++j)
res[i - 1][j - 1] = mul(i, j);
printf(" 1 2 3 4 5 6 7 8 9\n");
for (i = 1; i <= 9; ++i){
printf("%d", i);
for (j = 1; j <= 9; ++j)
printf("%3d", res[i - 1][j - 1]);
printf("\n");
}
}
0221206
NGNG次は>>206のプログラムをポインタ変数を使い計算するようにプログラムを書き直せ
ヒント:例えば、問題>>206で2つの整数型の変数を
int num1, num2;
と宣言しているならば、
int *pnum1, *pnum2;
として、各変数のアドレスを代入するためのポインタ変数を宣言し、後のプログラム
もポインタ変数にあわせて修正する。
だそうです。お願いします
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG0224215
NGNGこういうことかな。出来れば問題は一度に書いてほしいんだけれども。
#include <stdio.h>
int add(int *x, int *y){return *x + *y;}
int sub(int *x, int *y){return *x - *y;}
int mul(int *x, int *y){return *x * *y;}
double div(int *x, int *y){return (double)*x / *y;}
int main(){
int x, y;
int *px = &x, *py = &y;
printf("x?:");
scanf("%d", px);
printf("y?:");
scanf("%d", py);
printf("%d+%d=%d\n", *px, *py, add(px, py));
printf("%d-%d=%d\n", *px, *py, sub(px, py));
printf("%d*%d=%d\n", *px, *py, mul(px, py));
printf("%d/%d=%f\n", *px, *py, div(px, py));
}
0225206
NGNG0226215
NGNG聞いてるわけだし、プログラムが将来いらないような職業に就くん
だろうけど。
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG最低限質疑応答に答えられるくらいの理解はして桶
0230さゆ
NGNG#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#define BUF 256
#define wordblock(s) s == ' ' || s == ',' || s == '.'\
|| s ==':' || s == ';' || s == ')' || s == '(' || s == '?'\
|| s == ']' || s == '[' || s == '@' || s == '/' || s == '<'\
|| s == '>' || s == '#' || s == '$' || s == '&' || s == '*'\
|| s == '%' || s == '{' || s == '}'
#define file_open(fp, fname, mode, errno) \
if((fp = fopen(fname, mode)) == NULL){\
fprintf(stderr, "Can't open file:%s\n", fname);\
exit(errno);\
}
int input_stream(FILE *fp, char *s);
void convert(char *s);
int output_stream(FILE *fp, char *s);
0231さゆ
NGNG{
char s[BUF];
FILE *fp1, *fp2;
if(argc != 3){
fprintf(stderr, "Input read & write file name\n");
exit(1);
}
file_open(fp1, argv[1], "r", 1);
file_open(fp2, argv[2], "w", 1);
while(input_stream(fp1, s) != EOF){
convert(s);
if(output_stream(fp2, s) == '\0'){
fprintf(stderr, "Can't write file %s:\n",fp2);
exit(1);
}
}
fclose(fp1);
fclose(fp2);
return 0;
}
0232さゆ
NGNG{
int c, i;
for(i =0; i < BUF - 1; i++){
if((c = fgetc(fp)) == EOF){
if(i == 0)
return EOF;
s[i] = '\0';
return 1;
}
s[i] = c;
}
s[i] = '\0';
return 1;
}
void convert(char *s)
{
int i, c;
static int up = 1;
for(i = 0; s[i] != '\0'; i++){
c = s[i];
if(wordblock(c))
up = 1;
else if(isalpha(c) && up){
c = toupper(c);
up = 0;
}
s[i] = c;
}
}
0233さゆ
NGNG{
if(fprintf(fp, s) < 0)
return '\0';
return 1;
}
/*改行も区切りにするときは最初のところに付け加えてね。*/
0234デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG始点から中間点の角度、中間点から終点の角度をそれぞれ計算し、
始点から中間点を通って終点までの円弧の長さの計算のプログラムを作成してください。
お願いします。
0237さゆ
NGNG【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS:
[3.2] コンパイラ(バージョン):
[3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
0238デフォルトの名無しさん
NGNG中心 (x0, y0) 半径r ってのは分かるけど
始点中間点終点の定義が分からない絵にでも書いて
0239デフォルトの名無しさん
NGNG0240236
NGNGそれから236へつながってます。説明不足ですみません。
0241デフォルトの名無しさん
NGNG一直線上に乗っていないかどうかとかはチェックする必要あり。
0242デフォルトの名無しさん
NGNGchar*strrev(char *str1,char *str2)
を定義し、その動作を確認するプログラムを書け。
ただし文字列の長さを調べるstrlen関数を使用すること。
また、関数strrevは反転した文字列の先頭ポインタを関数値とすること。
(str1が''abc''ならstr2は''cba''という風に)
以上です。C言語でお願いします。
ポインタの概念がどうもよく分からないです...う〜ん、勉強不足か。
参考書とか買って自主的に勉強しないとなぁ...
0243デフォルトの名無しさん
NGNG#include <stdio.h>
#include <string.h>
char *strrev1(char *str1, char *str2)
{
char *p = str1 + strlen(str1) - 1, *orig2 = str2;
while (1) {
*str2++ = *p;
if (p == str1) {
*str2 = '\0';
break;
} else
p--;
}
return orig2;
}
int main(void)
{
char buf[128], buf2[128];
printf("input str1 = ");
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf) - 1] = '\0';
printf("reversed string(str2) = %s\n", strrev1(buf, buf2));
return 0;
}
0244デフォルトの名無しさん
NGNG上のプログラムで関数名がstrrev1()となっているのは、string.h内に
同名の関数strrev()があるからです。その辺は適当にいじって。
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG------------------------------------------
(a.txtファイル)
aaaaaaaaaaa:fajdjgal;djkl;asjfl;as
bbbbbbbbbbbbbbbb:klasjf;laskdjfklsjgslkjf
ccccccccccc:klasjfl;asjf
・
・
・
------------------------------------------
一行が?:?っていうパターンの文字なんですが、
これを
------------------------------------------
(a.txtファイル)
aaaaaaaaaaa
bbbbbbbbbbbbbbbb
ccccccccccc
・
・
・
------------------------------------------
こんな風なa.txtファイルにしたいんです。
:が出てきたらどうにかするんだと思うのですが、
よくわかりません。よろしくお願いします。
0247デフォルトの名無しさん
NGNG#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <cstdlib>
int main()
{
std::ifstream ifs("a.txt");
std::string str;
std::vector<std::string> vs;
if (!ifs) {
std::cerr << "a.txtがありません。" << std::endl;
std::exit(1);
}
while (std::getline(ifs, str))
vs.push_back(str);
ifs.close();
std::ofstream ofs("a.txt");
if (!ofs) {
std::cerr << "a.txtのオープンに失敗しました。" << std::endl;
std::exit(1);
}
0248デフォルトの名無しさん
NGNGstr = *pos;
std::string::size_type sz = str.find(":");
if (sz != std::string::npos)
str = str.substr(0, sz);
ofs << str << "\n";
}
ofs.close();
}
0250デフォルトの名無しさん
NGNG・・・その問題、全く同じ形で先日オレの大学で出されたのだが・・・。
多分あんた、オレと同級生かもね。
0251デフォルトの名無しさん
NGNGチクレ!
0252デフォルトの名無しさん
NGNGstruct point{double x;double y;}
struct circle{struct point center;double hankei;}
(1)円の面積を求める次の関数を作り,mainプログラムでその動作を調べよ。
double menseki(struct circle c1)
構造体を習ったばかりで出されたのですが全然分かりません、教えてください。
0253デフォルトの名無しさん
NGNG出題者って相当頭弱そうだなそれ
0254デフォルトの名無しさん
NGNG中心の座標を入力する意味が無いけどこんな感じ?
#include <stdio.h>
#include <math.h>
struct point { double x; double y; };
struct circle { struct point center; double hankei; };
double menseki(struct circle c1)
{
return c1.hankei * c1.hankei * M_PI;
}
int main(void)
{
struct circle c;
printf("中心の座標を入力: ");
scanf("%lf%lf", &c.center.x, &c.center.y);
printf("半径を入力: ");
scanf("%lf", &c.hankei);
printf("%lf\n", menseki(c));
return 0;
}
0255デフォルトの名無しさん
NGNGオマエガナー
0256252
NGNGttp://www.siokara.cjb.net/siobin/sio001/src/sa10580.zip.html
ここのcir.cです。できればdic.cも教えてください
0257デフォルトの名無しさん
NGNG究極の丸投げだなw
0258デフォルトの名無しさん
NGNGだいぶ、問題からずれてるけど
>>187のろだ拝借
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/28.txt
0259デフォルトの名無しさん
NGNG問題1.ファイルの整理の問題です。
list.txt
------------
tanaka
okawa
jack
・
・
tanaka
okawa
・
・
tanaka
・
・
------------
これを
list-out.txt
------------
tanaka
okawa
jack
・
・
------------
というふうに一回出てきた名前(文字列)を削除して出力してください。
0260デフォルトの名無しさん
NGNGlist1.txt
------------
tanaka
okawa
jack
・
・
------------
list2.txt
------------
jack
・
・
------------
list2.txtに出てきた名前(文字列)をlist1.txtから取り除いて
list3.txt
------------
tanaka
okawa
・
・
------------
と言うふうに出力してください。
よろしくお願いしますです。
0261259
NGNG言語はC++です。修行中です。
よろしくおねがいします。
0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNGC言語は単位さえ取れればいいんです。
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG足し算とか掛け算も出来ないレベルだと、将来困ると思う。
基礎の基礎(教科書の最初の方)くらいは出来た方がいいと思うのだが・・・
それとプログラムってやってみると意外と楽しいよ。論理的思考力も付くしね。
0267デフォルトの名無しさん
NGNGあまり説得力無いですね。
0268さすらいAA
NGNG#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
#include <functional>
0269さすらいAA
NGNGint main()
{
string str;
vector<string> vec_List2;
vector<string>::iterator itr;
ifstream ifs("list2.txt");
if (!ifs) {cerr << "ファイルlist2.txtがねぇよ" << endl;exit(1);}
while (std::getline(ifs, str)){
vec_List2.push_back(str);
}
sort(vec_List2.begin(),vec_List2.end());
ifs.close();
ifs.open("list1.txt");
if (!ifs) {cerr << "ファイルlist1.txtがねぇよ" << endl;exit(1);}
ofstream ofs("list3.txt");
if (!ofs) {cerr << "list3.txtがつくれねぇ" << endl;ifs.close();exit(1);}
while (std::getline(ifs, str)){
itr = lower_bound(vec_List2.begin(), vec_List2.end(), str );
if (itr == vec_List2.end()){
ofs << str << endl;
}
}
ofs.close();
ifs.close();
}
0270さすらいAA
NGNG#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string str;
vector<string> vec_List2;
vector<string>::iterator itr;
ifstream ifs("list.txt");
if (!ifs) {cerr << "ファイルlist.txtがねぇよ" << endl;exit(1);}
while (std::getline(ifs, str)){
vec_List2.push_back(str);
}
sort(vec_List2.begin(),vec_List2.end());
itr = unique(vec_List2.begin(),vec_List2.end());
vec_List2.erase(itr,vec_List2.end());
ofstream ofs("list-out.txt");
if (!ofs) { cerr << "list-out.txtがつくれねぇ" << endl; ifs.close(); exit(1); }
for ( int i = 0 ; i < vec_List2.size() ; i++ ){
ofs << vec_List2[i] << endl;
}
ifs.close();
ofs.close();
}
0272デフォルトの名無しさん
NGNGcat list1.txt | sort | uniq > list-out.txt
>>260
cat list1.txt | sort | uniq > list1.tmp
cat list2.txt | sort | uniq > list2.tmp
diff list1.tmp list2.tmp > list3.txt
0273さゆPさん ◆SayuminPM.
NGNG> cat list1.txt | sort | uniq > list1.tmp
> cat list2.txt | sort | uniq > list2.tmp
> diff list1.tmp list2.tmp > list3.txt
zsh だと
diff =(sort -u < list1.txt) =(sort -u < list2.txt) > list3.txt
ですんじゃうんですよと zsh の宣伝.
0274デフォルトの名無しさん
NGNGテンポラリ作らずに済ませる方法に興味があるんだけど
zsh以外のシェルでも同様の事は出来るんですか?
0275デフォルトの名無しさん
NGNG配列idxの先頭から順に格納し、一致した要素数を返す以下の関数を作成する。
int searchidx(int a[],int n, int key, int idx[]);
自分でも考えたのですが、検索を開始するとコアダンプしてしまいます。
御指導お願いします。
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGまずおまいが書いたソースうpキボン
0279デフォルトの名無しさん
NGNG[2] 問題文:整数専用で、しかも足し算・掛け算・引き算しか出来ない電卓のプログラム
を作る。+,-,*,=以外の記号を入力した場合、再入力させます。=が入力されたら
終了して結果表示する。while文を使う。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ(バージョン):visual basic かな・・
[3.3] 言語:C++
[4] 期限:2004念12月21日
[5] その他の制限: 整数値を入力 54
+,-,*,=のいずれか入力 +
整数値を入力 6
+,-,*,=のいずれか入力 =
答えは 60です。
みたいな感じにして下さい。お願いします!
0280デフォルトの名無しさん
NGNG文字列s1、s2を引数で受け取り、s1に文字列s2が含まれているかどうか調べる関数を作成しなさい
実行結果は、含まれているなら1を、含まれていないなら0をそれぞれ返すようにしなさい。
文字列検索関数strcmpなどは使用しないこと。
[環境]
言語:C
文字列検索関数を使えば簡単に解けるんですけど、使用禁止となるとさっぱりわかりませんorz
0281デフォルトの名無しさん
NGNGアルファベットのみ?
0282280
NGNG0283デフォルトの名無しさん
NGNGint incr(int);
int main(void)
{
int a;
scanf("%d",&a);
a=incr(a);
printf("%d\n",a);
}
int incr(int x)
{
return(x+1);
}
このプログラムで変数aのアドレスを引数として渡し、返値のない形の
関数に書き換えてください
おねがいします
0284デフォルトの名無しさん
NGNG{
(*x)++;
}
- a=incr(a);
+ incr(&a);
0285さゆ
NGNGint same(char *s1, char *s2)
{
int i, j, n, m;
int skip[0x80];
n = strlen(s1) - 1;
m = strlen(s2) - 1;
for(i = 0; i < 0x80; i++)
skip[i] = m + 1;
for(i = 0; i < m; i++)
skip[i] = m - i;
for(i = 0; i < n - m + 1; i += skip[s1[i+m]])
if(s1[i+m] == s2[m]){
for(j = m - 1; j >= 0; j--)
if(s1[i+j] != s2[j])
break;
if(j < 0)
return 1;
}
return 0;
}
はーい。
0286デフォルトの名無しさん
NGNGベタに書いてみました
さゆたんのはBM法?
int mystrstr(const char* s1,const char* s2)
{
int i,j;
for(i=0;s1[i];i++){
for(j=0;s2[j];j++){
if(s2[j]!=s1[i+j])break;
}
if(s2[j]=='\0')return 1;
}
return 0;
}
0287デフォルトの名無しさん
NGNGif(s2[j]!=s1[i+j])break;
これはまずいよー。
0288デフォルトの名無しさん
NGNGif(s1[i+j]||s2[j]!=s1[i+j])break;
0289デフォルトの名無しさん
NGNGありがとうございました
0290デフォルトの名無しさん
NGNG・2つの整数型変数の値を入れ替える関数を作る。
・呼び出した側の変数iとjの値を変更するのが目的なので、swap()は引数にアドレスを渡す必要がある
・関数swap()の中で、2つの値を壊さずに入れ替えるには、中間変数を経由して代入する必要がある
#include <stdio.h>
void swap(int *ip, int *jp){
/* swap()の中だけで用いる局所的な変数の宣言*/
/* *ip と *jp の値を入れ換える処理*/
}
void main (){
int i, j;
/* iを入力させるためのプロンプト */
/* scanf()の呼び出し */
/* jを入力させるためのプロンプト*/
/* scanf()の呼び出し */
/* swap()の呼び出し */
/* iとjの表示(printf()の呼び出し)*/
}
お願いします。
0291デフォルトの名無しさん
NGNG#include <stdio.h>
void swap(int *ip, int *jp)
{
int tmp = *ip;
*ip = *jp;
*jp = tmp;
}
int main(void)
{
int i, j;
printf("input i: ");
scanf("%d", &i);
printf("input j: ");
scanf("%d", &j);
swap(&i, &j);
printf("i: %d\nj: %d\n", i, j);
return 0;
}
0292デフォルトの名無しさん
NGNGうまく実行しました。ありがとうございます。
0293さすらいAA
NGNG{
while(*s1 == *s2){
if (*s1 == '\0') return 0;
s1++;
s2++;
}
return (unsigned char)*s1-(unsigned char)*s2;
}
0294デフォルトの名無しさん
NGNG馬鹿野郎オレは無職だ
0295デフォルトの名無しさん
NGNG環境:C言語
問題:「予算1000円以内、総移動時間6時間以内」の小旅行をしようと思う。
目的地までの片道の運賃と所要時間を入力すると、この条件に合うかどうかを判別してくれるプログラムを作成しなさい。
コンパイルできる環境がないので添削お願いします。
#include <stdio.h>
int main(void)
{
int a,b;
printf("片道の運賃は?");
scanf("%d",&a);
printf("所要時間は?");
scanf("%d",&b);
if (a*2<=1000 && b*2<=6) {
printf("この計画は条件にあう。%\n");
}
else {
printf("この計画は条件にあわない。%\n");
}
return 0;
}
0296デフォルトの名無しさん
NGNGパッと見あってるけど、%\n←これは?
0297デフォルトの名無しさん
NGNGあと所要時間を入力させるところは、「何時間か」より「何分か」を入力させた方がよくないか?
それを変えるなら分岐条件も b<=6*60 になるが
0298デフォルトの名無しさん
NGNG>・関数swap()の中で、2つの値を壊さずに入れ替えるには、中間変数を経由して代入する必要がある
ダウト
0299デフォルトの名無しさん
NGNG>>297も入れて
if (a>=0 && b>=0 && a*2<=1000 && b*2<=360)
で。
0300デフォルトの名無しさん
NGNGb^=a
a^=b
これだけでも入れ替えは可能だな
0301デフォルトの名無しさん
NGNG%はタイプミスです。すいません
0303デフォルトの名無しさん
NGNG!?
0304デフォルトの名無しさん
NGNGこんなのでもいけるね。
a=b-a;
b-=a;
a+=b;
0305デフォルトの名無しさん
NGNG>>299
アドバイスありがとうございます。
0306デフォルトの名無しさん
NGNGまずVBでC++を使う方法を教えてくれ
0307从*・ 。.・) ◆SayuminPM.
NGNGvoid swap(int *a, int *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
で同じポインタを swap に渡した場合はできないんじゃぁ?
0308デフォルトの名無しさん
NGNGvoid swap(int *a, int *b)
{
if (*a != *b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
}
0309デフォルトの名無しさん
NGNGb=101
a^=b → a=000
b^=a → b=101
a^=b → a=101
0310デフォルトの名無しさん
NGNGswap(&a, &a);みたいなときだよあわてんぼさん
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGa = 1
a ^= a
a ^= a
a ^= a
失敗
0313デフォルトの名無しさん
NGNGこの場合は if (a != b) でないと意味がないぞ、と
0314デフォルトの名無しさん
NGNG{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
0315デフォルトの名無しさん
NGNG*a!=*b⇒a!=b
0316さすらいAA
NGNG#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
bool CheckNum(const char *s){
if (*s == '\0') return false;
if (*s == '-') s++;
while(*s!='\0'){
if ( *s < '0' || *s > '9' ) return false;
s++;
}
return true;
}
char CheckOperator(const char *s){
if (*s == '\0') return 0;
switch (*s){
case '+':
case '-':
case '*':
case '=':
s++;
break;
default:
return 0;
}
if (*s == '\0') return *(s-1);
return 0;
}
0317さすらいAA
NGNGint ret;
string str;
while(true) {
cout << "数値を入力\t\t";
cin >> str;
if (CheckNum(str.c_str())){
ret = atoi(str.c_str());
break;
}else{
cout << "数値といっているだろう" << endl;
}
}
return ret;
}
0318さすらいAA
NGNG{
int ret = InputNum();
int n;
string str;
while(true) {
cout << "+,-,*,=のいずれか入力\t\t";
cin >> str;
char c = CheckOperator(str.c_str());
if (c){
switch(c){
case '+':
ret += InputNum();
continue;
case '-':
ret -= InputNum();
continue;
case '*':
ret *= InputNum();
continue;
case '=':
cout << "答えは\t\t" << ret << "です" << endl;
break;
}
break;
}else{
cout << "+,-,*,=のいずれかといっているだろう" << endl;
}
}
return 0;
}
0319デフォルトの名無しさん
NGNG[課題]ファイルに書かれている数式を読み込んで
計算結果をそのファイルに追加で出力するプログラム。
なお、ファイル名はkeisan.txtとする。
読み込んだ数式 ((3+1)*4)+3
計算結果 19
よろしくお願いします。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNG>>311
0323デフォルトの名無しさん
NGNGななめ45度からえぐるように打つ
0324デフォルトの名無しさん
NGNGつまんねーんだよ、タコ。
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGあなたにあわせてあげたのです
0327デフォルトの名無しさん
NGNGはい、さよなら。
0328デフォルトの名無しさん
NGNG直接 cin >> ret;じゃだめなのか?
0329デフォルトの名無しさん
NGNG与えられた文字列をURLエンコードする関数を作れ。
引数はconst char* を受け取り、戻り値はstd::string型の変数とする。
関数の使用例
std::string s = url_encode("はにゃ〜ん");[]
[環境]
Borland C++ Builder
おながいします。
perlでの例は検索して調べたのですが、Cは難しくてorz
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGstd::string url_encode(const char* str)
{
std::ostringstream ss;
unsigned char c;
while (c = *str++) {
if (('A' <= c && c <= 'Z') ||
('a' <= c && c <= 'z') ||
('0' <= c && c <= '9') ||
c == '*' || c == '-' || c == '.' || c == '@' || c == '_')
{
ss << c;
} else if (c == ' ') {
ss << '+';
} else {
ss << '%' << std::hex << (int)c;
}
}
return ss.str();
}
強引だけど…。文字コード考慮に入れないと駄目かね
0332デフォルトの名無しさん
NGNGisalnum使えよ。
0333デフォルトの名無しさん
NGNGのない形にすること。値の入力、結果の表示はmainで行うこと.
おねがいします。
実行例
a=13
b=12
交換後
a=12
b=13
0334デフォルトの名無しさん
NGNGvoid swap(int* pa, int *pb)
{
int c = *pa;
*pa = *pb;
*pb = c;
}
int main(void)
{
int a,b;
printf("a=");
scanf("%d", &a);
printf("b=");
scanf("%d", &b);
swap(&a,&b);
printf("a=%d\nb=%d\n", a, b);
return 0;
}
0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNGvoid swap(int*a, int*b);
main()
{
int a,b;
printf("a=");
scanf("%d",&a);
printf("b=");
scanf("%d",&b);
swap(&a,&b);
printf("a=%d\n",a);
printf("b=%d\n",b);
return 0;
}
void swap(int* a, int* b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
0337デフォルトの名無しさん
NGNG実装するとこんなかんじですか?
char* itoa(char s[],int n)
{
int i;
i = 0;
do{
s[i] = n%10 + '0';
} while((n/10) > 0);
reverse(s);
return s;
}
0338デフォルトの名無しさん
NGNGそのまんまitoaがあるぞ。
調べればすぐ分かるだろ
0339デフォルトの名無しさん
NGNG自分で必要な情報を探し出す方法を勉強した方が良いな
0340デフォルトの名無しさん
NGNGスレ違いだが、GnuDiffなら片方は標準入力を使えるのでテンポラリは一つで済む。
0341デフォルトの名無しさん
NGNGitoa()は標準関数じゃないだろ。もっともほとんどの処理系にはあるけど。
0342从*・ 。.・) ◆SayuminPM.
NGNGhttp://www.kouno.jp/home/c_faq/c13.html#1
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG長さnの配列aを、バケットソートを用いてソートする関数bucket_sort(a[], n);を作る。
要素の値の重複はないものと仮定する。つまりバケットには連結リストを用いる必要はない。
また、入力データ(配列aの各要素)の値は0以上であると仮定して良い。
入力データの最大値はn-1であるとする。
nの値は実行するまでわからないので、バケットはmalloc関数を用いて確保する。
動作テストに用いるデータとしてはrand_array関数で出力される配列を用いるとよい。
言語はC++です。宜しくお願いします
0346デフォルトの名無しさん
NGNG#include <iostream>
#include <algorithm>
#include <iterator>
const int N = 100; // 例えば
void bucket_sort(int a[], int n)
{
int* bucket = new int[n];
for (int i = 0; i < n; i++)
bucket[a[i]] = a[i];
for(int i = 0; i < n; i++)
a[i] = bucket[i];
delete[] bucket;
}
int main()
{
int a[N];
for (int i = 0; i < N; i++)
a[i] = i;
std::random_shuffle(a, a + N);
std::cout << "ソート前 : ";
std::copy(a, a + N, std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
0347デフォルトの名無しさん
NGNGstd::cout << "ソート後 : ";
std::copy(a, a + N, std::ostream_iterator<int>(std::cout, " "));
std::cout << std::endl;
}
C++の場合はmallocよりもnew/deleteが自然なのでそちらを使った。
malllocが必要な場合は直して欲しい。
要素の重複がない事から、リストを省略した。rand_array()では要素の
重複が出ないようにするのは難しいので、random_shuffle()を使った。
0349345
NGNG0350デフォルトの名無しさん
NGNGブブ。ちと待っとれ
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG#include <stdlib.h>
#define N 100
void bucket_sort(int a[], int n)
{
int *bucket = malloc(n * sizeof(int));
int i;
for (i = 0; i < n; i++)
bucket[a[i]] = a[i];
for(i = 0; i < n; i++)
a[i] = bucket[i];
free(bucket);
}
int main(void)
{
int a[N];
int i, j;
for (i = 0; i < N; i++)
a[i] = i;
0355デフォルトの名無しさん
NGNGint j = rand() % i, t;
if (i == 1)
j = 0;
t = a[i], a[i] = a[j], a[j] = t;
}
printf("ソート前 : ");
for (i = 0; i < N; i++)
printf("%d ", a[i]);
printf("\n");
bucket_sort(a, N);
printf("ソート後 : ");
for (i = 0; i < N; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
あーCだとちょっとしたアルゴリズムも全部手作り。。。
0357デフォルトの名無しさん
NGNG>if(s2[j]!=s1[i+j])break;
>これはまずいよー。
よく考えたけどまずくなかったよ
この場所でs1[i+j]で'\0'の後ろにアクセスすることはないでう
0358280
NGNG0359デフォルトの名無しさん
NGNG>>336
ありがとうございました
0360デフォルトの名無しさん
NGNG問題
西暦2000年から10000年の間で,夏季オリンピックが開催されるにもかかわらず,
閏年でない年をすべて列挙するプログラムを作りなさい。
#include <stdio.h>
main()
{
int y;
for(y=2000; y<=10000; y++)
if (y % 100 == 0 && y % 400 != 0);
printf("%d",y);
}
[環境]
言語:C
よろしくお願いします。
0361デフォルトの名無しさん
NGNGとりあえず
if (y % 100 == 0 && y % 400 != 0);
↑
0362デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNG「夏季オリンピックが開催されるにもかかわらず」というのを表すには
どうすればよろしいのでしょうか?
なくても結果は変わらないとは思いますが。
0364デフォルトの名無しさん
NGNGだがそうでない年があるからそれを求めろという問題なんだろうから
なくても結果は変わらない、ということはないんでないの?
0365デフォルトの名無しさん
NGNGC++でスレッドを実装しなさい。
OSのシステムコールは使わないこと。
環境
Linux gcc
おながいします
0366デフォルトの名無しさん
NGNGdata.txtに0〜100未満の整数が10000個格納されている。コレを全て読み込んで、
“x x+1 x+2”という具合にデータが並んでいるところを探し、あればxが何番目の
データかを返し(はじめのデータは一番目)、無ければ“no”を出力せよ。複数の
データが条件を満たす場合には、一番目のデータに一番近い位置にあるものを出力せよ。
例)10 11 12 の様な並びを探す。この時、10が740番目のデータであれば740を出力する。
という問題を出されたので自分でやってみたのですが何か駄目でした。
下に作ったのを乗せますので添削お願いします。 言語はC言語です。
0367366
NGNGint main(void){
int x1, x2,i, j = 0;
int value[10000], result[10000];
FILE *in_stream;
in_stream = fopen("data.txt", "r");
if((in_stream = fopen("data.txt", "r")) == NULL){
printf("data.txtは存在しません\n");
return(-1);
}
for(i = 0; i < 10000; i++){
fscanf(in_stream, "%d", &value[i]);
}
for(i = 0; i < 10000; i++){
x1 = value[i];
x2 = value[i + 1] - 1;
if(x1 = x2){
i = result[j + i];
j = i + 1;
}
}
for(i = 0; i < 10000; i++){
printf("%d\n", result[i]);
}
fclose(in_stream);
return(0);
}
以上です。お願いします。
0368デフォルトの名無しさん
NGNG自信ないです
間違ってたらごめんなさい
#include <stdio.h>
int main()
{
int i;
int flag;
for (i = 2000; i <= 10000; i++){
if ( (i % 4) == 0 ){
if ( (i % 100) == 0 ){
flag = 1;
if ( (i % 400) == 0 ){
flag = 0;
}
}
}
if (flag == 1){
printf("%d ", i);
}
flag = 0;
}
putchar('\n');
return 0;
}
0369デフォルトの名無しさん
NGNG> FILE *in_stream;
> in_stream = fopen("data.txt", "r");
> if((in_stream = fopen("data.txt", "r")) == NULL){
fopenは1回でいい。
FILE *in_stream = fopen("data.txt", "r");
if (in_stream == NULL) {
0370デフォルトの名無しさん
NGNGまず夏季オリンピックがどういう条件で開催されるかどうかを考える。
そして、閏年になる条件をもう一度よく考える。
その後にプログラムを見直せば2つの条件が足りないことに気づくはずだ。
両方書き足すと冗長になるけど。
0372デフォルトの名無しさん
NGNGその通りで。
ご指摘ありがとうございます。
0373896
NGNG何故そんなに複雑にするんだ
#include <stdio.h>
int main(){
int i;
for (i = 2000; i <= 10000; i++)
if((i % 4) == 0 && (i % 100) == 0 && (i % 400) != 0)
printf("%d ", i);
putchar('\n');
return 0;
}
0374373
NGNG0375デフォルトの名無しさん
NGNG文字列(char配列)を引数として受け取り、中の要素を逆順に並び替える関数reverseを作成しなさい。
reverseの内部の処理については配列操作ではなくポインタ操作で使用すること。
void reverse(char *s);
自力でやったやつ↓
#include <stdio.h>
void reverse(char *s)
{
char *p,c[100];
p=&c;
p = s;
for(;*p;)*p++;
*p--;
for(;*s;)*s++ = *p--;
}
main()
{
char s[100];
printf("文字列を逆から表示します.");
scanf("%s",s);
reverse(&s);
printf("%s",s);
}
までやったのですが、半分まで逆に並び替えるのですが、もう半分は元のままです。
例 abcdef を入力するとfeddef になります。
警告 W8075 asdfa.c 6: 問題のあるポインタの変換(関数 reverse )
警告 W8019 asdfa.c 8: コードは効果を持たない(関数 reverse )
警告 W8019 asdfa.c 9: コードは効果を持たない(関数 reverse )
警告 W8004 asdfa.c 6: 'p' に代入した値は使われていない(関数 reverse )
警告 W8075 asdfa.c 18: 問題のあるポインタの変換(関数 main )
警告 W8070 asdfa.c 20: 関数は値を返すべき(関数 main )
って出ます。
0376デフォルトの名無しさん
NGNGえー、エラー出るだろー
0377375
NGNG0378デフォルトの名無しさん
NGNG1回でもデバッガで追ってみた?
むしろこれくらい脳内で追えて欲しいが。
0379デフォルトの名無しさん
NGNGアレなコンパイラだな。
0380デフォルトの名無しさん
NGNGn=238;
}
printf("%d\n",n);
if(a=2){
n=239;
printf("%d\n",n);
}
if(a=3){
n=240;
printf("%d\n",n);
}
if(n=4){
n=241;
printf("%d\n",n);
}
という風にしたいのですが、ひとつずつ書かずに
for文での書き方を教えて下さい。
0381デフォルトの名無しさん
NGNGfor(a = 1; a <= 4; ++a)
n = 237 + a;
0382デフォルトの名無しさん
NGNG0383380
NGNGかけないこともないが無駄
0385380
NGNG出来ました!!!ありがとうございます☆
助かりました(^ー^)
0387385
NGNGえっ!?なんか出来たっぽいのですが(><)
答えがあってるんです。。。
えっともっと細かく書くと、
a=1〜18のとき、 n=238〜255に、
a=19〜41のとき n=1〜23
にそれぞれ対応するようにしたいんですけど。。。
0388デフォルトの名無しさん
NGNGif (19<=a && a<=41) n = a-18;
0389デフォルトの名無しさん
NGNGn = 237 + a;
else if(19 <= a && a <= 41)
n = a - 18;
forはいらんな
0390389
NGNG0391デフォルトの名無しさん
NGNGプログラムって難しいな('A`)
0392385
NGNG出来ました!!!!for文はいらないんですね☆
ほんとにほんとにありがとうございます(^ー^)
0393デフォルトの名無しさん
NGNGLSI-Cかな?
CPadはコンパイラではない。
p=&c; //だめ。しかもつかってないし。(エラーでそう)
for(;*p;)*p++; // *p++ の * は邪魔
*p--; // 上と同じ
reverse(&s); // &は邪魔(エラーでそう)
int mainなんだからreturn 0;でもして置くように。
警告については以上。
ただ、違う問題が大きいんであとよろしこ。
0394デフォルトの名無しさん
NGNGchar s[100];
printf("文字列を逆から表示します.\n");
scanf("%s",s);
printf("%s\n", reverse(s) );
return 0;
}
void reverse(char *s) {
char *p;
p = s;
for( ; *p !='\0' ;p++ ) ;
for( ; *s !='\0' ;s++) *s = *(--p);
*s='\0';
}
0395デフォルトの名無しさん
NGNG変
0396デフォルトの名無しさん
NGNGchar *p;
char tmp;
p = s;
for( ; *p !='\0' ;p++ ) ;
for( ; p - s > 0 ;s++ ) {
tmp = *(--p);
*p = *s;
*s = tmp;
}
}
int main(void){
char s[100];
printf("文字列を逆から表示します.\n");
scanf("%s",s);
reverse(s);
printf("%s\n", s);
return 0;
}
0397デフォルトの名無しさん
NGNGなんていう微分方程式をオイラーとかを使わずに、解析的に解くプログラムはどうすればいいのでしょうか?
0398デフォルトの名無しさん
NGNG計算機代数でググレ
0399デフォルトの名無しさん
NGNG実行すると8*8のオセロ盤が表示され、座標値を入力して駒を置きます。
Y軸(縦)が0〜7までの数字で、X軸(横)がa〜hまでのアルファベットです。
左隅に置く場合は、x:0 y:aと入力します。まだ作り始めたところなので
どこにでも駒を置けます。これに駒をチェックする関数をプラスして
駒が置けない場所にはエラーを表示し、駒が配置できなくしたいのです。
下の仕様を満たした関数を教えて下さい。お願いします。
<関数の仕様>
・引数…盤の配列データ、駒の配列データ、駒のX座標、駒のY座標、駒の種類
・戻り値…駒が配置できれば1、できなければ0
・駒が置けない場所…既に駒がある所、周りに一つも駒がない所、
周りに相手の駒がある所(その方向の延長上に自分と同じ駒がない)
<プログラム>
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/29.txt
0400デフォルトの名無しさん
NGNG0:駒無し、ー1:黒、1:白
static check(int tate,int yoko){
static char board[8][8]={0};
:
}
とかして、board[tate][yoko] の値をチェックすれ。
0401デフォルトの名無しさん
NGNGWolfram Researchにでも就職しな。
0402デフォルトの名無しさん
NGNG何故そんなに複雑にするんだ
for (i = 2000; i <= 10000; i += 4) {
/* 以下略 */
}
ではいかんのかね。
0404デフォルトの名無しさん
NGNG(2)二分探索をするプログラムを作成せよ。
(1)は、pushの仕方は分かるのですが、popの仕方がイマイチわかりません。
C言語で作成しています。
どなたかご指導お願い致します。
0405デフォルトの名無しさん
NGNG前に作ったスタック。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/30.txt
0406デフォルトの名無しさん
NGNG突っ込みどころだらけ。
最低限、コンパイラの警告はできるだけ多く出るように設定し、丹念に読むことをお勧め。
0407403
NGNG何か、ビルドとかしてもエラーとか出ないんですが、その代わりに
実行すると別ウィンドウで
「エラーが発生したので〜(プログラム名).exeを終了します」
とか出るんですが・・・
詳しい駄目なところが分からず困ってます。
0409デフォルトの名無しさん
NGNGわからないのでお願いします。
宿題↓
テキストファイルを読み込み、行番号を変えて画面に表示し、
また新しいファイルにも書き出すプログラムを作成せよ。
入力:入力ファイル名と出力ファイル名
処理:ファイルの内容を読み込む(最大999桁)
入力用と出力用の2つのファイルポインタを用意する。
(2つのファイルをオープンする)
出力:「行番号」、「読み込んだファイルの内容」を画面と
新しいファイルに出力する。
(printfとfprintf関数を利用すること)
0410409
NGNGここからどうすればいいのでしょうか?
#include <stdio.h>
#include <stdlib.h>
main()
{
char fi[50],b[256];
int i;
FILE* fp,fp1;
printf("input file name:");
scanf("%s",fi);
if(NULL==(fp=fopen(fi,"r+")))
{
fprintf(stderr,"error:file open[%s].\n",fi);
exit(1);
}
for(i=1;i<=999;++i)
{
if(NULL==fgets(b,256,fp))
{
break;
}
}
fclose(fp);
}
0411デフォルトの名無しさん
NGNGそれじゃ999桁じゃなくて999行だ。。。
0412デフォルトの名無しさん
NGNG#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXCOL 1000
int main(void)
{
char ci[MAXCOL], buf[128];
int i;
FILE *fi, *fo;
printf("input file name:");
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf) - 1] = '\0';
if ((fi = fopen(buf, "r")) == NULL) {
fprintf(stderr, "error: file open[%s].\n", buf);
exit(1);
}
printf("output file name:");
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf) - 1] = '\0';
if ((fo = fopen(buf, "w")) == NULL) {
fprintf(stderr, "error: file open[%s].\n", buf);
exit(1);
}
0413デフォルトの名無しさん
NGNGwhile (fgets(ci, sizeof(ci), fi)) {
printf("%05d: %s", ++i, ci);
fprintf(fo, "%05d: %s", i, ci);
}
fclose(fi);
fclose(fo);
return 0;
}
0414デフォルトの名無しさん
NGNG素人がつくってみました。参考になれば幸いです。
またプロの方からみておかしいところは修正御願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/31.txt
0415デフォルトの名無しさん
NGNG別にそれでええんとちゃう?但し、409さんがファイル名の入力をどうも
起動時オプションではなく、プログラム中で入力させているようだから、
そこら辺はもしかしたら修正が必要かと思う。どっちかわからんけどね。
0416409
NGNGみなさん。どうもありがとうございます。
414さん、参考も何も作ってくれるだけでそれは
もうありがたいです。
ありがとうございます。
415さん、環境を書くのを忘れたのはこっちのミスでした・・・
私はvisual stdio.net を使っています。
C言語で作成させなくてはいけないので。
0417デフォルトの名無しさん
NGNG>exit(1);
>}
もしここでexit()するような場合、fp_rはclose()しなくてもよいのか?
0418デフォルトの名無しさん
NGNG>char line_c[256];
意識しているか?
0419デフォルトの名無しさん
NGNG0420414
NGNG確かにプログラム中でファイル名の入力を促してますね。
うっかりみのがしてました。アドバイスどうもです。
>>416さま
お役に立てて幸いです。
>>417-418さま
if( (fp_w=fopen(argv[2],"w") ) == NULL){
close(fp_r)
exit(1);
}
として修正します^^;
>最大999桁
>char line_c[256];
すっかり忘れてました。
>>412さんのを参考に修正します^^;
0421420
NGNG^^;
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG馬鹿が湧いてたか。
0425デフォルトの名無しさん
NGNG悪いことは言わんから
boardは[10][10]で確保して壁に印付けとき。
0426デフォルトの名無しさん
NGNG1111,1112,1113,1114,1121,1123,1124・・・・・
桁上がりをする配列はどうのようにすればよいのでしょうか
宿題はこれを使うものなのですが、これが分からなくて
0427デフォルトの名無しさん
NGNG#include <stdio.h>
// 4桁の4進数でa=a+bを行う。戻り値はキャリー
int add(int* a,int* b)
{
int i;
int s,c;
for(i=0;i<4;i++){
s=a[i]+b[i];
c=s>>2;
a[i]=s&3;
}
return c;
}
void print(int* a)
{
int i;
for(i=3;i>=0;i--)printf("%1d",a[i]);
puts("");
}
int main()
{
int a[]={1,1,2,3};
int b[]={3,2,1,0};
add(a,b);
print(a);
return 0;
}
0428デフォルトの名無しさん
NGNGint add(int* a,int* b)
{
int i;
int s,c=0;
for(i=0;i<4;i++){
s=a[i]+b[i]+c;
c=s>>2;
a[i]=s&3;
}
return c;
}
0429デフォルトの名無しさん
NGNG直線を指定した座標から座標まで引くプログラムなんですが
ターミナルに出力するのではなくてファイルに出力するらしいです。
検索してもライン関数を使ってるのしかなくて、そのライン関数
自体の中身がわからりません。どうか教えてください。
0430デフォルトの名無しさん
NGNGなんで4進数に4が出てくるの?
0432デフォルトの名無しさん
NGNGhttp://push_5_pop.at.infoseek.co.jp/page/c_100.html
http://homepage2.nifty.com/kasayan/basic/graphic2.htm
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG1〜4を使う4進数なんだろうよ。
0435デフォルトの名無しさん
NGNG注意書き
記述は入出力ストリームで。
参考範囲は、文字列配列。
問題
2つの文字列配列を1つの配列に格納し、連結して表示させるプログラム。
例:aaaaと一回目に入力し、次にbbbbと入力したらaaaabbbbと表示させるもの。
ただし、連結した文字列を入力する配列は、ヌル文字で初期化しておくこと。
もしくは、2番目の文字列を入れた後でヌル文字を1字入れても良い。
よろしくお願いします。
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNG#include <iostream>
#include <cstring>
const int BUFSIZE = 64;
int main()
{
char Buf1[BUFSIZE], Buf2[BUFSIZE], Buf3[BUFSIZE * 2];
std::cin >> Buf1 >> Buf2;
std::cout << std::strcat(std::strcpy(Buf3, Buf1), Buf2) << std::endl;
return 0;
}
0438デフォルトの名無しさん
NGNGあるからだめだけど。
0439デフォルトの名無しさん
NGNG0440435
NGNGってなんですか・・・
無知ですみません
0441435
NGNGstdも何か教えてください
お願いします
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGstd::stringstreamを使うと、まるでファイルで読み書きするように、メモリ内に
ストリームを持つことができる。使用できるメンバ関数もほとんど同じ。
更に、従来のCスタイルの文字列へのインターフェースとして、str()を持つ。
std::は、C++の名前空間(namespace)を勉強しないと理解するのは困難だが、
要するに名前のバッティングを防ぐ役割をすると思えばいい。std名前空間に
入っている名前はC++標準ライブラリの名前。
0444デフォルトの名無しさん
NGNG自分はまだファイル処理のこと勉強中なんでこのプログラムを
どうやったら実行できるのかはわからないんですが
頑張って勉強して自分のものにしていきます。これからも
わからないことがあると思いますがその時はよろしくお願いします!
0445デフォルトの名無しさん
NGNGb(n)=b(n-1)+b(n-2)、 b(1)=1、 b(0)=0
・n(≥1)が入力として与えられたとき、a(n)の値を返す再帰的なプログラムを記述せよ。
・上記の問題を再帰を用いないプログラムで記述せよ。
・n(≥1)が入力として与えられたとき、b(n)の値を返す再帰的なプログラムを記述せよ。
・上記の問題を再帰を用いないプログラムで記述せよ。
※ただし入力と出力は全ての整数型で与えられるとし、記述はDel-phiで記述せよ。
0446デフォルトの名無しさん
NGNG失せろキチガイ
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGどなたかわかる方いらっしゃいませんか??
もしくはわかりそうな人がいるとこしりませんか??
0449デフォルトの名無しさん
NGNGお前の態度が気に食わない。かつ、マルチポストするなボケ。
0450デフォルトの名無しさん
NGNGif(n==1)
return 1;
else
return func(n-1);
}
0451デフォルトの名無しさん
NGNG教えていただけないでしょうか?
0452デフォルトの名無しさん
NGNGバブルソートと基本的に考え方は同じで、バブルソートが一方向のみの走査なのに
対し、シェーカーソートは行ったり来たりの両方向の走査をする。んだけ。
0453デフォルトの名無しさん
NGNGはい、ソースね。
0454sage
NGNG以下の問題(1から10)についてのプログラムを作成せよ.
* データ処理に関する前提:
o ・データは必ず正しい範囲で入力されることを前提としてよい
・Day(日にち)には,必ず,1から31までの整数(1日から31日までを意味する)
・Time(時間)には,必ず,7から22までの整数(7:00から22:00までを意味する)
・Plan(予定)には半角のアルファベット(大文字,小文字)以外は入力されない
* 注意点:
o 各問題に解答しながら,コードを付け足すようにして,1つのプログラムを作成すること.
o「処理内容を説明せよ.」または「アルゴリズムを説明せよ.」という指示がある場合,レポートメールの
「2.関数の処理内容およびアルゴリズムの説明」において,問題番号とそのアルゴリズムの説明を記述すること.
(指示がない場合には説明しなくてよい.)
o 関数名,引数および戻り値の型を変更しないこと.
0455デフォルトの名無しさん
NGNG1. 予定データ(日にち,開始時刻,予定)を扱うための構造体の宣言
以下の仕様に基づいて構造体を宣言せよ.
* 構造体タグ名:なし
メンバ:
o 予定の日にちを表すint型の変数:変数名 Day
o 予定の開始時刻を表すint型の変数:変数名 Time
o 予定を表すchar型の配列:配列名 Plan
* typedefによって再定義する型名:SCHEDULE
2. 衝突を回避するための連結リストを表わす自己参照構造体の宣言
以下の仕様に基づいて自己参照構造体を宣言せよ.
* 構造体タグ名:ELEMENT
* メンバ:
o 一つ一つの予定データを表すSCHEDULE型(問題1参照)の構造体変数:構造体変数名 Data
o ELEMENT型へのポインタ型変数:変数名 Next
* typedefによって再定義する型名:NODE
3. #define ディレクティブによるバケットサイズの指定
#define ディレクティブについて調べよ.そして,#defineを使って,
以下の仕様に基づいたマクロ定義をせよ.
仕様:プログラム中の識別子「BUCKET_SIZE」を,置換リスト「7」に置き換える.
0456デフォルトの名無しさん
NGNGグローバル配列として以下の配列を定義せよ.
NODE型へのポインタ配列:
* 配列名:Table
* 要素の数:BUCKET_SIZE(問題3参照)
以下の仕様に基づいて,上記のポインタ配列で定義したハッシュ表のすべての要素を
NULLに初期化する関数
void init_hash(NODE **tbl)
を定義せよ.そして,main()関数への必要な記述をおこなって,
関数を実行できるプログラムを作成せよ(必要に応じて,ヘッダー・ファイルをインクルードすること
* 関数名:init_hash
* 仮引数NODE **tbl:NODE型のポインタ型へのポインタ型変数(ポインタへのポインタ).
ハッシュ表の最初の要素のアドレスを受け取る.
* 戻り値なし(void型)
* 機能:ハッシュ表の最初の要素のアドレスを受け取り,このアドレスをもとに,
ハッシュ表のバケット(配列のそれぞれの要素)に NULLポインタを代入する.
※仮引数NODE **tblによってハッシュ表の配列を受け取っている理由は,
複数のハッシュ表が存在する場合に対応できるようにしておくためである.
このようにすることによって,複数人のスケジュールを操作できるようになる
0457デフォルトの名無しさん
NGNG前提として,以下のように,曜日と数値との対応を定義する.
(プログラム内で定義しなくてもよい.)
* 日曜日(SAN) :0
* 月曜日(MON) :1
* 火曜日(TUE) :2
* 水曜日(WED) :3
* 木曜日(THU) :4
* 金曜日(FRI) :5
* 土曜日(SAT) :6
このとき,以下の仕様に基づいて,ハッシュ値を計算する関数
int hash(int day);
を定義し,main()関数への必要な記述をおこなって,
関数を実行できるプログラムを作成せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
また,この関数の処理内容を説明せよ.
* 関数名:hash
* 仮引数int day:int型の変数として,データの挿入・探索・削除などをおこなう日にち(問題1参照)を受け取る.
* 戻り値(int型):ハッシュ値として,上記の曜日に対応する数値を返す.
* 機能:データの挿入・探索・削除などをおこなうときに必要となるハッシュ値を計算する.
(このため,ハッシュ表に含まれるバケットの数をBUCKET_SIZE(問題3参照)とした.)
※日にちは,1日から31日まで(int型 1-31)とし,1日(1)は,土曜日とする.したがって,hash(1)の戻り値は,
6となる(2005年1月と同じです
0458デフォルトの名無しさん
NGNG以下の仕様に基づいて,ひとつの予定データを挿入する関数
void insert(NODE **tbl, SCHEDULE dt);
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ
(必要に応じて,ヘッダー・ファイルをインクルードすること.).
また,この関数のアルゴリズムと処理内容を説明せよ.
* 関数名:insert
* 仮引数NODE **tbl:データを挿入するハッシュ表を受け取る.
* SCHEDULE dt:ひとつ分の予定データ(問題1参照).
* 戻り値なし(void型)
* 機能:関数hash()の実引数としてdt.Dayを渡して,ハッシュ値を得る.
このハッシュ値に基づいて,
受け取ったtblが指すハッシュ表のバケット(配列の添字)を決定する.
そして,そのバケットの連結リストにdtを挿入する.
このとき,以下の条件に基づいて挿入する.
o 日にち(dt.Day)に対するハッシュ値は,曜日に対応する数値である(問題5参照).
o 曜日に対応する数値が,ハッシュ表を表わす配列の添字となる.
o 挿入するデータを代入するメモリブロックをmalloc()関数を使って確保する.
o 連結リストの先頭ノードからみて,時間(dt.Time)の昇順に並べる.
すでに同じ時間のデータがある場合,同じ時間のノードの末尾データ側に挿入する.
o 日にち(dt.Day)と時間(dt.Time)の両方が同じデータがあった場合,
すでにあるノードのデータを新たなデータ(dt)に置き換える.
※以上の仕様により,それぞれのバケットに,同じ曜日で異なる日にち(Day)の予定データが,
日にちに関係なく時間(Time)の昇順に並ぶ連結リストが作成される.
0459デフォルトの名無しさん
NGNG以下の仕様に基づいて,ハッシュ表(連結リスト)から指定された日にち(問題1参照)をもつ予定データ(ノード)を表示する関数
void show_plan_day(NODE **tbl, int day);
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
また,この関数の処理内容を説明せよ.
* 関数名:show_plan_day
* 仮引数NODE **tbl:データを探索するハッシュ表を受け取る.
* 仮引数 int day:探索する日にち(問題1参照).
* 戻り値なし(void型)
* 機能:関数hash()の実引数としてdayを渡して,ハッシュ値を得る.
このハッシュ値に基づいて,ハッシュ表(連結リスト)から,指定されたdayとおなじDay(問題1参照)
をもつすべての予定データ(ノード)を探索し表示する.
連結リストでは時間の昇順に並んでいるため,同一日にち内であれば,
先頭ノードから探索して表示するだけで,時間順に表示される.
8. 連結リストの全ノードの削除
以下の仕様に基づいて,すべてのバケットのすべてのノードを削除する関数
void free_hash(NODE **tbl);
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
* 関数名:free_hash
* 仮引数NODE **tbl:削除するノードのバケットが含まれているハッシュ表を受け取る.
* 戻り値なし(void型):
* 機能:受け取ったtblが指すハッシュ表のすべてのバケットの
すべてのノードを削除(malloc()関数で確保したメモリブロックを解放)する.
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG丸投げもここまで来るとすがすがしいな。
0462デフォルトの名無しさん
NGNG0463デフォルトの名無しさん
NGNG>以下の問題(1から10)についてのプログラムを作成せよ
1から8までしかないような気がするんだが気のせいか?
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGvirtual func(){}
}
class a{
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG1.
typedef struct {
int Day;
int Time;
char Plan[256];
} SCHEDULE;
0469デフォルトの名無しさん
NGNGtypedef struct ELEMENT {
SCHEDULE Data;
struct ELEMENT *Next;
} NODE;
0470デフォルトの名無しさん
NGNG#define BUCKET_SIZE 7
0471デフォルトの名無しさん
NGNGNODE *Table[BUCKET_SIZE];
void init_hash(NODE **tbl)
{
int i;
for(i = 0; i < BUCKET_SIZE; i++)
tbl[i] = NULL;
}
int main()
{
init_hash(Table);
}
0472デフォルトの名無しさん
NGNGint hash(int day)
{
return (day + 5) % BUCKET_SIZE;
}
0473デフォルトの名無しさん
NGNGvoid insert(NODE **tbl, SCHEDULE dt)
{
int h;
NODE *n;
NODE **p;
if(!(n = malloc(sizeof(NODE)))) assert('ぬるぽ');
n->Data = dt;
n->Next = NULL;
for(p = &Table[h = hash(dt.Day)]; *p && (*p)->Time < dt.Time; *p = (*p)->Next){}
if(!*p){
*p = n;
}else{
if((*p)->Time != dt.Time){
n->Next = *p;
*p = n;
}else{
NODE *q = *p;
n->Next = (*p)->Next;
*p = n;
free(q);
}
}
}
0474訂正
NGNG#include <stdio.h>
void insert(NODE **tbl, SCHEDULE dt)
{
NODE *n;
NODE **p;
if(!(n = malloc(sizeof(NODE)))){
fprintf(stderr, "ぬるぽ\n");
exit(1);
}
n->Data = dt;
n->Next = NULL;
for(p = &tbl[hash(dt.Day)]; *p && (*p)->Time < dt.Time; *p = (*p)->Next){}
if(!*p){
*p = n;
}else{
if((*p)->Time != dt.Time){
n->Next = *p;
*p = n;
}else{
NODE *q = *p;
n->Next = (*p)->Next;
*p = n;
free(q);
}
}
}
0475ああ再訂正
NGNG>すでに同じ時間のデータがある場合,同じ時間のノードの末尾データ側に挿入する.
>o 日にち(dt.Day)と時間(dt.Time)の両方が同じデータがあった場合,
>すでにあるノードのデータを新たなデータ(dt)に置き換える.
>※以上の仕様により,それぞれのバケットに,同じ曜日で異なる日にち(Day)の予定データが,
>日にちに関係なく時間(Time)の昇順に並ぶ連結リストが作成される.
かなり違うな・・・出直してきます・・・orz
0476デフォルトの名無しさん
NGNGどっちにしてもおかしいよ
誤 for(p = &tbl[hash(dt.Day)]; *p && (*p)->Time < dt.Time; *p = (*p)->Next){}
↓
正 for(p = &tbl[hash(dt.Day)]; *p && (*p)->Time <= dt.Time; p = &((*p)->Next)){}
0477476 ◆FIcNi4f8js
NGNGこんな感じかな
void insert(NODE **tbl, SCHEDULE dt)
{
NODE *n;
NODE **p;
if(!(n = malloc(sizeof(NODE)))){
fprintf(stderr, "ぬるぽ\n");
exit(1);
}
n->Data = dt;
n->Next = NULL;
for(p = &tbl[hash(dt.Day)]; *p; p = &((*p)->Next)){
if((*p)->Data.Time > dt.Time) break;
if((*p)->Data.Time == dt.Time && (*p)->Data.Day == dt.Day) break;
}
if(!*p){
*p = n;
}else{
if((*p)->Data.Time != dt.Time){
n->Next = *p;
*p = n;
}else{
NODE *q = *p;
n->Next = (*p)->Next;
*p = n;
free(q);
}
}
}
0478476 ◆FIcNi4f8js
NGNGほれ
begin-base64 644 schedule.c.gz
eNq9Vttu20YQfTfgL8jL+CaQMmUoDtI+yBYQxwpqVFEL2AaKuoJAkctoYWpJ85LYcfTvmdkLl6Qp
pEWLGja9Ozs8M3N2LjzgIojLkMFZXoQ8OVmNd3cO6rKYL6UQxSGLuGBwcfthcX315wRO3/5Ul77/
dXKjDn6uq1/6T4uPVzN43RK9+wPe1GQ3fC3Vhi0Rqp2+IbziKWV4AEyUa3iO/DhnHhRZyTawTJKY
+WJUV8vxKCjgeXcHgIuCbI7MGoGZ3AQrP4PfY1/cmaDmKN/A9ftfJpe300kX4mQ6+TiZ3Shko4jw
hS8hW1r9GXssJObst0uFRwvo3/jLmN3VWJvLQ3Jv5ecrhxah/+Tu7khDGSvKTICDIjiGty4c1Rkn
A/T254SHGCEvFhJDWeoXy9jAECqXfkZJ5nA4h+EIOJw1wIAfH7ukA4Cv3vE5qs1up9OGlShjTFpZ
sJitmShybU4YW2qbVtZShBEjSEfgPit0pfGA8nQw1kSRnLCd1NU7eu9BrjedDvwHYXYEoyJ3W8zm
LCtq9jybAGHRjFuM7FqTwCNnzxHozNqP4yRwcv6VJZGEc/FHkxKlGbofOVh7LMs82H91eHE4Pbw/
nL9yLv4S+4YW9sgL57VriAEQgzFlIeKHikihSLW3Z++hR+FJ8sLiBEvDnY/oqiTXPcfpp656t/IK
fVdSMnFCBQRjtCNXLiwz5t+PtmqenxtV6PWgdoqW9SH5UIPZGL5QV3vQV/kjTxkW/3bH9ipz5t06
F/oyWpBN0Hpq1vQtiGWoG0zn8IO5rM2L9M1XyZfu+vGgVfvbCym1peNWdOxRj/j2jQ4aJEtA5ZxO
sf2j0xDkX46J5dXfsBvi0e6oWTaLQgaSoniBFhq10QpDu1ZlVFWjP67S57bjgwEcHIUwGEi/uVvR
3kGrqmQPhs3LqF33lpdUfVBxeDKORg/SMwdHCAvuZegvw6WLOKsGIF4JCcZm/JmoTEx0T5/9uGSw
LvMClgwpgswXnxhQqPg4kdFqPK/C0WHpESEnoy0iLaVBOep0veBr6Tr+r7mOO3TdDGV0nQRjM5Lb
rsuy+zu+a0CvAvp3vjMROh+usPv2o9RT0zxoTcyIWmyUuhTDXkDPgKph+Di8rG/eGQNExdrnwjE4
tQ5vvxmWZdT4ZFBDx8xdOdtdLf6y4jFzKIauC5fMXWM0YRljo4SqvUefGKYh2vGqDy4P6BtNuLbR
WhbkiSf9Gs7dZkfO88AXkcLax+ug3xwvo6f6rlqoMseFqXDTTWyC6zbtQpCIgouSvdCiXDKt94Wa
CfvuKJyDfuRzmRbGka1+qMEreaXDqhR/TPD/Qqkl858x1+ydVXgWSIdo2x42PkoxoFX1MdAJMzQJ
aD+UGnmp62OoEv87Ls5PKw==
====
0479デフォルトの名無しさん
NGNG実行中のデータを逐次表示させようとスレッドのなかで
GetDlgItem()関数でピクチャーコントロールのポインタを取得しようとしているのですが
上手くいきません。
CWnd* h = (CWnd*)GetDlgItem(IDD_WAITQSIM_DIALOG,IDC_GRAPH);
こう書くと「1 番目の引数を 'const int' から 'struct HWND__ *' に変換できません。」
と言われます
CWnd* h = (CWnd*)GetDlgItem((HWND)IDD_WAITQSIM_DIALOG,IDC_GRAPH);
と書いたり
CWnd* h = (CWnd*)GetDlgItem((HWND__ *)IDD_WAITQSIM_DIALOG,IDC_GRAPH);
と書いたりするとコンパイルはビルドは上手くいくのですが、
実行中にポインタが全然違うところを指しているというような類のエラーが出ます。
GetDlgItem()の第一引数の渡し方が悪いようですが、どうすれば正しいのか分りません。
環境は[VC++ 6.0(MFCダイアログベースアプリケーション) OS:Win2000]です。
助言をお願いします。
0480デフォルトの名無しさん
NGNGスレ違い
0481デフォルトの名無しさん
NGNGすみません、、VC++系のスレのほうが適所ですか‥
しかし、ダイアログボックスのハンドルの渡し方がよくわからないので、
それだけでも教えてください。
0482デフォルトの名無しさん
NGNGMFC使っているなら、
IDD_WAITQSIM_DIALOGのIDを持つダイアログクラスのメンバ関数と仮定して、単純に
CWnd * h = GetDlgItem(IDC_GRAPH);
でいい。
0483デフォルトの名無しさん
NGNG「'GetDlgItem' : 関数が不正な 1 個の実引数をともなって呼び出されました。」
と出てしまいます。
0484デフォルトの名無しさん
NGNG>482に書いてある仮定が読めないならC++の基礎からやり直せ。
そしてここに戻ってくるな。
0485デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
0486デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1096848771/
どっちかってとこっちじゃない
0488デフォルトの名無しさん
NGNGスレ汚しスマソ
真・定期美少女
http://www.helloproject.com/apartment/profile/risa.html
0489& ◆QWv3R1XL8M
NGNGやつ以外読むのやめようぜ?
0490デフォルトの名無しさん
NGNGお前誰?
0491デフォルトの名無しさん
NGNG例えば・・・・
サイコロを2回振ったら
赤が0:6
赤が1:10
赤が2:8
赤が3:6
赤が4:4
赤が5:2
赤が6:0
サイコロを3回振ったら
赤が0:0
赤が1:16
赤が2:40
赤が3:52
赤が4:52
赤が5:40
赤が6:16
というふうに100回分出力させるにはどうすればよいでしょうか・・・・
ど素人で申し訳ないですC++でおながいします。
0492デフォルトの名無しさん
NGNGごめん、CとかC++とかプログラムとかの前に、
法則がさっぱりわからん。
0493デフォルトの名無しさん
NGNG仮定するってどういうことですか
0494デフォルトの名無しさん
NGNGなんで賽子を2回振ってるのに赤が0が6なんだ?
0495デフォルトの名無しさん
NGNGこのプログラムを改良して対角が0でない行列と対角優位行列を作れるようにしたいのですが
どのようにすればいいのでしょうか? よろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
int main(int argc, char *argv[])
{
int i, j;
FILE *fp;
if((fp = fopen(argv[1], "w"))==NULL) {
fprintf(stdout,"出力ファイルを指定してください\n");
exit(1);
0496495
NGNGfprintf(fp, "%d",SIZE);
for(i=0; i<SIZE; i++) {
fprintf(fp,"\n");
for(j=0; j<SIZE; j++) {
fprintf(fp, "%d ", rand());
}
}
fprintf(fp,"\n");
for(i=0; i<SIZE; i++)
fprintf(fp,"%d ", rand());
fclose(fp);
return 0;
}
0497デフォルトの名無しさん
NGNGあと、いきなりあるかないかわからん文字列使ってfopenすんな。
argcの値でチェックしろ。
0498デフォルトの名無しさん
NGNGb(n)=b(n-1)+b(n-2)、 b(1)=1、 b(0)=0
・n(≥1)が入力として与えられたとき、a(n)の値を返す再帰的なプログラムを記述せよ。
・上記の問題を再帰を用いないプログラムで記述せよ。
・n(≥1)が入力として与えられたとき、b(n)の値を返す再帰的なプログラムを記述せよ。
・上記の問題を再帰を用いないプログラムで記述せよ。
※ただし入力と出力は全ての整数型で与えられるとし、記述はDel-phiで記述せよ。
0499デフォルトの名無しさん
NGNG[白][白][白][白][白][白]
(1回目)サイコロの目が2だとすると・・・
[赤][赤][白][白][白][白]
(2回目)サイコロの目が4だとすると・・・
[白][白][赤][赤][白][白]
(3回目)サイコロの目が6だとすると・・・
[赤][赤][白][白][赤][赤]
こんな法則です。言葉足らずで申し訳ないです。
一回目は
赤が0:0
赤が1:1 (サイコロの目は1)
赤が2:1 (サイコロの目は2)
赤が3:1 (サイコロの目は3)
赤が4:1 (サイコロの目は4)
赤が5:1 (サイコロの目は5)
赤が6:1 (サイコロの目は6)
サイコロ100回振った結果を出力させたいのです。
>>494
一回目と2回目のサイの目が同じなら0になるといった感じです。。
0500デフォルトの名無しさん
NGNG>[白][白][赤][赤][白][白]
(;´Д`)??
1回目とあわせて合計6だから、
[赤][赤][赤][赤][赤][赤]
じゃないの?
0501デフォルトの名無しさん
NGNG賽子一回ずつ左から引っ繰り返すんだと。
0503デフォルトの名無しさん
NGNGああっ、なるほど。やっとわかった。
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG真面目に解決しようと思えばそこから考えなければいけないわけだな。
>>491のプログラムのレベルは相当低そうだが、誰にこんな問題出されてんの?
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNGこの法則だと例えば賽を3回振ったときに
2−2−4と2−4−2と4−2−2では最終的な結果は同じになる。
要は何回目にどの目が出たかではなくて、
ある目が出た回数が重要になる。
従って100回の場合は106C6=1705904746パターンを
チェックすればいいことになるので後はがんばれ。
6^100=6.5e+77回計算するよりは遙かに楽だ。
0509デフォルトの名無しさん
NGNGうーん。なるほど。賢いなあ。
でも、結局最終的に、
100回目の場合、
赤が0:29836748923792375235925892375892789572
赤が1:3457897693768934768934764897389734896734
:
(値は適当)
とか表示しなければいけないのでそれはどうするんだ・・・
0510デフォルトの名無しさん
NGNG浮動小数点で我慢するか。精度の条件しだいか。
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG出現回数Nと試行回数nから結果を
求める計算式が分かる方が有難い
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNGぐぐってもわからんかった。
0515デフォルトの名無しさん
NGNGすれ違い。
親指の位置にシフトキーがあるキーボードのユーザのこと。(だとおもう)
05161/2
NGNG#include <stdio.h>
int num_of_red(int n[])
{
int num = 0;
int i;
for (i=0; i<6; i++)
num = (n[i] & 1)?(i-num+1):(num);
return num;
}
double factorial(int n)
{
int i;
double ret = 1;
for(i=1; i<=n; i++)
ret *= i;
return ret;
}
double num_of_pattern(int n[])
{
double num;
int i;
num = factorial(n[0] + n[1] + n[2] + n[3] + n[4] + n[5]);
for(i=0; i<6; i++)
num /= factorial(n[i]);
return num;
}
05172/2
NGNG{
int i, j;
int n[6];
for(i=1; i<=100; i++) {
double sum[7] = { 0, 0, 0, 0, 0, 0, 0 };
for(n[0]=0; n[0]<=i; n[0]++)
for(n[1]=0; n[0]+n[1]<=i; n[1]++)
for(n[2]=0; n[0]+n[1]+n[2]<=i; n[2]++)
for(n[3]=0; n[0]+n[1]+n[2]+n[3]<=i; n[3]++)
for(n[4]=0; n[0]+n[1]+n[2]+n[3]+n[4]<=i; n[4]++) {
int index;
double pattern;
n[5] = i - (n[0] + n[1] + n[2] + n[3] + n[4]);
index = num_of_red(n);
pattern = num_of_pattern(n);
sum[index] += pattern;
}
printf("賽を%d回振った場合\n", i);
for(j=0; j<=6; j++)
printf("赤が%d枚 : %.0lf 回\n", j, sum[j]);
}
return 0;
}
10までで確かめたが大丈夫だった。
それ以上での精度はしらん。
0518デフォルトの名無しさん
NGNGどう使っていいかわからないが。
0519デフォルトの名無しさん
NGNGthxです。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <time.h>
#define N 100
int main(){
int i,j,sai,temp,cards=0,red=0,toukei[7]={0,0,0,0,0,0,0};
srand((unsigned) time(NULL));
for(i=0;i<N;i++){
sai=(int)((double)rand()/(double)RAND_MAX*6)+1;
switch(sai){
case 1: cards=cards^1;break;
case 2: cards=cards^3;break;
case 3: cards=cards^7;break;
case 4: cards=cards^15;break;
case 5: cards=cards^31;break;
case 6: cards=cards^63;break;
}
temp=cards;
for(j=0;j<6;j++){
if (temp%2==1) red++;
temp=temp>>1;
}
toukei[red]++;
red=0;
}
printf("%d回試行の結果\n",N);
for(i=0;i<7;i++) printf("赤が%dの場合 %d\n",i,toukei[i]);
return 0;
}
0522デフォルトの名無しさん
NGNGご苦労さんだが、思いっきり間違ってるよ。
0523デフォルトの名無しさん
NGNG○×ゲームを作る。3×3のマス目が書かれたボードに○と×を交互に書き入れていき、
どちらかが縦横斜めのいずれかに3つ並べて書いたら勝ち。一手書く毎にボードの様子を出力せよ。
どちらかが勝った場合には勝者を、引き分けだった場合には“draw”と出力して終了せよ。
こんな課題が出されました。全くもって見当も付きません。
そもそもこんなのC言語で可能なんですか?
どなたか出来る方がいましたらお願い致します。
0524デフォルトの名無しさん
NGNG>そもそもこんなのC言語で可能なんですか?
お前はC言語をなめてんのか。
0525デフォルトの名無しさん
NGNGUNIX を書いた言語ですから!
0526デフォルトの名無しさん
NGNG↓こんなんでいいんだよ。
○×○
×○×
○
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGこんなの貼るの恥ずかしいんだが、適当につくった。
エラーチェックとか一切してないから不完全だが。
#include <stdio.h>
int main(void)
{
char*sym[] = {" ", "〇", "×"};
intboard[3][3] = {0};
inti, j, k;
intx, y;
intwinner = 0;
for (i = 0; i < 9; i++) {
scanf("%d%d", &x, &y);
board[y][x] = i % 2 + 1;
for (j = 0; j < 3; j++) {
if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[0][j]||
board[j][0] == board[j][1] && board[j][1] == board[j][2] && board[j][0]||
board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1]||
board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1]) {
winner = board[y][x];
}
}
0529つづき
NGNGfor (k = 0; k < 3; k++) {
printf("%s", sym[board[j][k]]);
}
puts("");
}
if (winner) break;
}
switch (winner) {
case 0:
puts("draw");
break;
case 1:
puts("〇が勝利");
break;
case 2:
puts("×が勝利");
break;
}
return 0;
}
0530528
NGNGのあとにbreak;入れたほうがよかったな…
斜め一致の場合無意味にループが3回回る。ま、いいか。
0531デフォルトの名無しさん
NGNG> printf("賽を%d回振った場合\n", i);
糞を%d回振った場合
に見えた...orz
0532デフォルトの名無しさん
NGNG亀レスですが、2chで質問して一番感動しました。
for文をこんな感じで使うといいんですね・・・・
本当にありがとうございました!!
0533523
NGNGうぅお〜〜〜〜、早ぇ!!?
・・・・失礼、あまりに早い反応に取り乱してしまいました。
ありがとうございます!
まだ実行はしてませんがお礼だけは言わせて下さい!
そしてお疲れ様でした!
>>524
すいません、自分まだC言語習い始めて3ヶ月ちょいなんですよ・・・。
なので、一体どこまで広がりがあるかが分からなくって。
何かC言語みくびった様な発言したみたいですいませんでした。
0534デフォルトの名無しさん
NGNGチョーワロタw
0536528
NGNGんなこたわかってるっつーの。
0537デフォルトの名無しさん
NGNGUNIXのOSのほとんどはCで書かれてるし、
Windowsの多くの商業アプリケーションもCで書かれてるし、
PlayStation2などの多くのゲームもCで書かれてる。
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
NGNG更に痛々しくしてやろう
#include <stdio.h>
void SetBit(int *dest, int field){ *dest |= 1 << field; return; }
int GetBit(int src, int field){ return (src >> field) & 1; }
int main()
{
int board[2] = {0}, x, y, i, j, mask[] = {7, 56, 448, 73, 144, 292, 273, 84};
char buf[256], *piece[] = {" ", "○", "×"};
for(i = 0; i < 9; i++){
if(sscanf(fgets(buf, sizeof(buf), stdin), "%d%d", &x, &y) == 2){
if(x < 3 && y < 3 && (GetBit(board[0], x + y * 3) | GetBit(board[1], x + y * 3)) == 0){
SetBit(&board[i&1], x + y * 3);
for(j = 0; j < 9; j++){
printf("%s ",piece[GetBit(board[0], j)|(GetBit(board[1], j)<<1)]);
if((j + 1) % 3 == 0) printf("\n");
}
for(j = 0; j < sizeof(mask) / sizeof(int); j++)
if((board[i%1] & mask[j]) == mask[j]){ printf("%sが勝利", piece[i % 1 + 1]); i = 9; break; }
} else { i--; puts("You can't set there."); continue; }
}
else{ i--; puts("Unknown data."); continue; }
}
}
0540デフォルトの名無しさん
NGNG0541デフォルトの名無しさん
NGNGイタタタタっイタタタタタタ
\____________/
O >ー-"'" ⌒,,ィシヽミミiミミ 、
o 。 / 三彡彡彡ィ`、ミミミ`、
/ シ彡彡彡彡ノ'ヽミミミ`、
,' ,三彡彡彡彡彡ソ,ー--'
l _ _ """'彡彡彡彡彡ノi
{;、 ';;;='''"""` 彡彡彡 - 、ノノi
kr) .ィェー 彡彡' r、ヽ}彡i
レ' .. シ彡' )ァ' /彡' と思うC言語見習い侍であった
{_,,,、 ;、 シ彡 ニンミミ{
l '''"::. 彡ミi
! ̄"` ...:::::::: ノ
0543デフォルトの名無しさん
NGNG教えてください。C言語でgccです。
#include <stdio.h>
int main() {
int x, a[100], i, j;
scanf("%d", &x);
for (i = 0; x > 1; i++, x = x / 16)
a[i] = x % 16;
for (j = 0; j <= i; j++)
printf("%c", "0123456789ABCDEF"[a[i-j]]);
}
例えば10進数の111を16進数にすると6Fが正解ですが
printf("%c", "0123456789ABCDEF"[a[j]]);
とすると、F6になってしまいます。これを解消するためにa[i-j]とすると
なぜかエラーが出てしまうんです。
ちなみに
printf("%c", "0123456789ABCDEF"[数字]);
の1文は必ず使わないといけません。おねがいします。
0544デフォルトの名無しさん
NGNGprintf("%c", "0123456789ABCDEF"[a[j]]);
0545デフォルトの名無しさん
NGNGfor (j = i - 1; j >= 0; j--)
0546デフォルトの名無しさん
NGNG(1) x>1 を x>0に
(2) j<=iをj<iに
(3) i-jをi-j-1に
0547543
NGNGなるほど、範囲外のところを呼び出してしまってたんですね。
ありがとうございました。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGほんとだな。
上のfor文はdo〜whileに置き換えた方がいい。
0550デフォルトの名無しさん
NGNGどの程度コードレビューとかするんだろう?
0551デフォルトの名無しさん
NGNGもう2度と変更されない、保守されないコードをレビューする必要ってあるんだろうか…
0552デフォルトの名無しさん
NGNG残り枚数数えて、0からその枚数までの数字をランダムで選んで、
順番に配列に入ってる残り枚数を引いてって0になったときのインデックスで
種類を決定するしかないんですか。
0553デフォルトの名無しさん
NGNGまず分かりやすい日本語を書いてくれ。でないと答えようがない。
0554デフォルトの名無しさん
NGNGトランプの枚数と同じだけのサイズの配列を確保して、
そこに引いたor引いてないのフラグを立てるといんでないかい?
君が言ってるのよりはこの方が速いと思う。
0555552
NGNG赤 4個
青 3個
緑 4個
白 3個
例えばs[] = {4,3,4,3}のようになっている。
ここで赤〜白のたまを一つ引いて色を決定する場合
たまの合計は14個
でランダムの数字で1〜13までだして7まででたとすると
7 - s[4] = 3
3 - s[3] = 0
ここで0以下になったので、青に決定。
みたいなやり方をやっていたんですが、何か計算量が多い気がしたのです。
>>554
やっぱり一つずつ、別に扱ったほうが(・∀・)イイ!!んですかね。
0556552
NGNG袋からたまを一つ引いて色を決定する場合
たまの合計は14個
でランダムの数字で1〜13まででだして7がでたとすると
7 - s[0] = 3
3 - s[1] = 0
0557デフォルトの名無しさん
NGNG>ここで赤〜白のたまを一つ引いて色を決定する場合
これの意味が良く分からん・・・
s[]={4,3,4,3};
t[]={0,0,0,0};
とやっておいて、青を一つ引いたら,t[1]+=1;とかじゃ駄目なの?
これで何を引いたか記憶出来るでしょ?
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG多分それじゃ、どの珠も引く確立が1/4になるからだめなんじゃ?
0560デフォルトの名無しさん
NGNG学力低下ってやつか。
0561デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG説明と言うか日本語が下手すぎる
0564デフォルトの名無しさん
NGNG例えば入力文字列 abc00325.txt に対して abc00326.txt のように、
ファイル名の数字の部分に1を加えた文字列を返すようなプログラムを
作りたいのですが、どうしたらよいでしょうか?
なお、 a012bc00325.txt のように途中に数字が入っていた場合、
最後の部分の数字だけ1を加えて a012bc00326.txt のようにする、という
条件があります。
0565デフォルトの名無しさん
NGNGstd::vector<ball_color> bag;
for (int i = 0; i < 4; ++i) bag.push_back(red);
for (int i = 0; i < 3; ++i) bag.push_back(blue);
for (int i = 0; i < 4; ++i) bag.push_back(green);
for (int i = 0; i < 3; ++i) bag.push_back(white);
std::random_shuffle(bag.begin(), bag.end());
ball_color taken = bag.back(); bag.pop_back(); // 取り出し
0566デフォルトの名無しさん
NGNG1.文字列を数字の部分とそうでない部分に分割する。
2.数字の部分を数値に変換する。
3.インクリメントする。
4.文字列に戻して数字以外の部分と結合する。
0567デフォルトの名無しさん
NGNGピリオド'.'より一つ前の文字からisdigit()で数字が続く限り前方にポインタを動かし、
そこからピリオドまでを切り取ってsscanf()(またはitoa()、標準ではない)でint型に
直し、+1してから、改めてsprintf()して新しいファイル名を作り出す。
0568デフォルトの名無しさん
NGNGある袋に
赤4、青3、緑4、白3
と玉が合計14個入っている。
これを配列で表すと、s[]={4,3,4,3}と表せる。
今やりたいことは、袋の中から玉を一つとったとき、その色を求めることである。
今、玉を横一列に並べよう
赤赤赤赤青青青緑緑緑緑白白白
となる。玉は14個あるので、1〜13 (訳注:14じゃないか?) の中からランダムで選び、(xとする)
横に並べた左からx番目の色を求める、っていうのを考えたんだ。
たとえば、ランダムで7がでたら、
7-s[0]=3…赤をとった残りは3
3-x[1]=0…次に青をとった残り、0以下になったので青でfinal answer
でも、このやり方をしたら、計算量が多い気がしたから、質問してみたんだ
0570デフォルトの名無しさん
NGNGおれは0〜13かなぁと思った。
しかし、翻訳したら急にフランクになってるなw
「多い気がしたから、質問してみたんだ」とか本人が言ってたらムカッとするところw
0571デフォルトの名無しさん
NGNGまぁ、計算はそのやり方でいいと思うよ。
0573555
NGNG0574デフォルトの名無しさん
NGNG>トランプは数字も、マークも全く同じものが4枚あると
仮面ライダーブレイドでも観て勉強しろ!
でも捨てハンはファイズだな…。
0575デフォルトの名無しさん
NGNGすみません。実はトランプには数字もマークも全く同じものが、
それぞれ4枚ずつあると勘違いしていたのです。
0576デフォルトの名無しさん
NGNGすみません。実際、[4]がさらに持っているものがあった時、
1つの、完全に同じ数、そして1つの、完全に同じマーク、一度に、それぞれ、それはカード用に誤りました。
0577デフォルトの名無しさん
NGNGそこぞの翻訳エンジンのようだ
0579デフォルトの名無しさん
NGNG0580デフォルトの名無しさん
NGNG10進数を16進数に変換するプログラムを作成したいんですが、どうなりますか?
0581ぼるじょあ ◆yBEncckFOU
NGNG#include <stdio.h>
#include <stdlib.h>
int main()
{
char suuji[100]="12345";
long suuchi;
printf("%s\n↓\n",suuji);
suuchi=atol(suuji);
sprintf(suuji,"%lX",suuchi); /* ここで変換 */
printf("%s\n",suuji);
return 0;
}
0582デフォルトの名無しさん
NGNGss[7]++;
printf("%s\n", ss);
0583デフォルトの名無しさん
NGNGstd::cout << std::hex << 12345;
0584デフォルトの名無しさん
NGNG理解できたような気になっているだけだから
かけないんだと思います。
0585デフォルトの名無しさん
NGNG#include<iostream>
#include<string>
#include<boost/lexical_cast.hpp>
int main(){
std::string str = "12345"
std::cout << std::hex << boost::lexical_cast<int>(12345);
}
0586585
NGNGstd::cout << std::hex << boost::lexical_cast<int>(str);
0587デフォルトの名無しさん
NGNG方法を理解したなら、それなりの形のものはできるはずだ
泥臭いものでもいいからとりあえず書いてみろ
多分俺以外の誰かが添削してくれるから
0588デフォルトの名無しさん
NGNGxwindow上で、グラフを描く時に必要な処理を教えて下さい。
とりあえずアルゴリズムは分かるのですが、グラフィックは未経験なので、
直線を引くために必要なライブラリと、描画の準備のための処理、直線を描く命令
などが分からないのです。
検索するとxlibなるものが出てくるのですが、なにやら説明が難しいので
もっと簡単なものがあればそれでお願いします。
あとlinuxで一般的に使えるものでお願いします。
直線を描くだけなので、処理速度などに対する考慮はいりません。
分かる方、どうかお願いします。
0589名無し募集中。。。
NGNG0590デフォルトの名無しさん
NGNGOpenGL
0591429
NGNG座標位置 (x, y) に点を打つ。というpsetなんですが
直線のアルゴリズムは理解できたんですがこのpsetをしていく
中身がわかりません。
<stdio.h>のみで書けるのでしょうか?何度もすみません
0592デフォルトの名無しさん
NGNG「psetをしていく」の意味が解かりません。
0593デフォルトの名無しさん
NGNGおれの後輩は「API一発っすよ」と真顔で答えてた
0594デフォルトの名無しさん
NGNGよってどのような環境でも通用するような図の描き方はありません。
よってあなたが環境を書かない限りレスのしようがありません。
0595429
NGNG検索してもpset関数?みたいなのでpset(x,y,color);
のようにしてるんですがそのプロットする上ので中身がわかりません。
初心者なもので質問の仕方もへたなんですがよろしくおねがいします。
0596デフォルトの名無しさん
NGNGそういう問題かなぁ…。
0597デフォルトの名無しさん
NGNG>>594
0598デフォルトの名無しさん
NGNGお前とりあえず、
1.何歳?
2.今の身分は?(学生?社会人?)
3.そもそも何でそんなプログラム組もうと思ってんの?
0599429
NGNGwindows xp で CPad for Borland C++ Compiler使ってます。
環境おくれてすみません!
0600デフォルトの名無しさん
NGNGプログラミングを諦めるか人生を諦めるか、好きな方を選べ。
0601デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):N個の数値があり、それを区間ごとにわけ、
区間ごとに入った数の個数を調べたい。私は次のレスのように考えたのですが
上手くいかないので、何処が間違ってるのか教えてください。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ(バージョン):
[3.3] 言語:C
[4] 期限:無期限
[5] その他の制限:なし
0602601
NGNGfor (h = (-1.0)*a ; h<=a-1.0; h++){
cou[h] = 0.0;
for (k = 0; k <= N-1; k++){
s = 600.0 * (h / (double)a);
t = 600.0 * (h + 1.0) / (double)a;
if((s < l_0[k]) && (l_0[k] < t))
cou[h]++;
}
fprintf(out_rk_2,"%lf %lf\n",(s+t) / 2.0 , cou[h]);
}
0603デフォルトの名無しさん
NGNG↑
この時点で馬鹿。
0604429
NGNG自分でやってみます。どうもありがとう
0605デフォルトの名無しさん
NGNGじゃねーの?
0606デフォルトの名無しさん
NGNGを格納し、sの内容を8進、10進、16進数で出力せよ。
教えて下さい・・。
0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNGもうね、そんなことすらできないのなら、プログラムやめろと。
あと、多分言いたいことは「16進数…」じゃなくて「10進数…」だろ?
16進数だとしたら、9と10の間が空くぞ。
0610デフォルトの名無しさん
NGNGk < N
0611デフォルトの名無しさん
NGNGk < Nだ。
0613588
NGNGopenGLで調べてみます!即答感謝します!マジで時間がないので助かります。
0614デフォルトの名無しさん
NGNG0615ぼるじょあ ◆yBEncckFOU
NGNG#include <stdio.h>
int main()
{
int s[]={0,1,2,3,4,5,6,7,8,9,0x10,0x11,0x12,0x13,0x14,0x15};
int i;
for(i=0;i<16;i++)
printf("%o %d %X\n",s[i]);
return 0;
}
0616デフォルトの名無しさん
NGNG教授がキモイ教授なので間違いだと思います・・。
教えて頂けませんか?
0617605
NGNGh++ がまずいんじゃねーの?
0618デフォルトの名無しさん
NGNG>>615に書いてあるとおりだ。
10進数だとしたら、初期化子の0xを消せ。
0619デフォルトの名無しさん
NGNGお前も相当キモイぞ
0621デフォルトの名無しさん
NGNGprintf("%o %d %X\n", s[i], s[i], s[i]);だろ
0622ぼるじょあ ◆yBEncckFOU
NGNGエェー
言われるまで気づかなかったYO!
0623デフォルトの名無しさん
NGNGありがとうございます。
621に修正して実行したんですが、
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
10 8 8
11 9 9
20 16 10
21 17 11
22 18 12
23 19 13
24 20 14
25 21 15
Press any key to continue
となってしまいました・・
0624623
NGNG0625デフォルトの名無しさん
NGNGだから10進の0〜15にしたいのなら、>>618の通りにしろってば。
0626デフォルトの名無しさん
NGNG/* Ver 1.01 */
#include <stdio.h>
int main()
{
int s[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i;
for(i=0;i<16;i++)
printf("%o %d %X\n",s[i],s[i],s[i]);
return 0;
}
0627623
NGNG#include <stdio.h>
int main()
{
int s[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i;
for(i=0;i<16;i++)
printf("%o %d %X\n", s[i], s[i], s[i]);
return 0;
}
でやったらできました。房ですみません・・。ガンガリマス
0628601
NGNG0629デフォルトの名無しさん
NGNG0630601
NGNG質問に答えてくれた方ありがとうございました。
0631デフォルトの名無しさん
NGNG0634デフォルトの名無しさん
NGNGを比較するプログラムなんですが、エラーがどうしても消せません。
分かる方教えていただけないでしょうか?
double test(int ma[])
{
int i,vy,vx;
for(i=0; i<=number; i++){
printf("%d番:",i+1);
vy+=ma[i];
}
vx=(double)vy/number;
return(vx);
}
0635デフォルトの名無しさん
NGNGint main(void)
{
int i,a;
int vz[number];
double ave;
int test;
printf(" %d人分の点数を入力してください。\n",number);
for(i=0; i<=number; i++)
scanf("%d",&vz[i]);
ave=test(vz);
printf("平均点は%.1fです。\n",ave);
printf("比較する生徒の番号を入力してください。\n");
scanf("%d",&a);
if(ave<vz[a])
printf("その人は平均以上です。");
else
printf("その人は平均以下です。");
return(0);
}
0636デフォルトの名無しさん
NGNG0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG>エラーがどうしても消せません。
エラーをなぜ書かないの?
>>637がいいたいこと
>vy+=ma[i];
vyに初期化してないのに、vy = vy+ma[i];とかしても望む値はこないだろうけどいいのかと。
0642634
NGNGすみませんエラーは ave=test(vz); のところで
関数で無いものを呼び出している
と出ます。
初期化のことなんですが、どうすればいいか分からないのですが。
何も分からなくてすいません
0643デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNG修正したった。どこが修正されたかは自分で確認してね♪
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/34.txt
0648634
NGNG明日聞いてみますお手数かけました・・・
0650デフォルトの名無しさん
NGNG自分で確認させようとも思ったけど、
丸投げさせるために修正箇所を書こうw
1)int i,vy,vx;→int i,vy=0;
double vx;
理由:
関数testの戻り値がdouble だからvxもdouble
2)for(i=0; i<=number; i++){ →for(i=0; i<NUMBER; i++){
理由:numberが3つまり生徒数三人だとのとき左だと0,1,2,3までで四つ
右だと0,1,2までで三つ
3)int test; を消しました。
ave=test(vz); のところで
関数で無いものを呼び出している の原因
もう更新しないかな?w
0651デフォルトの名無しさん
NGNGvy=0として初期化
0652634
NGNG今、やってるところでつ
0653デフォルトの名無しさん
NGNGこの問題を教えていただきたいのですが。
(問題)
sinの値が以下のように与えられている場合、ラグランジュの公式を用いて、
sin25°の値を計算せよ。また、その誤差を検討せよ。角度はラジアンに直せ。
xi(°)={0,10,20,30,40,50,60,70,80,90}
sin(xi)={0.000000,0.173648,0.342020,0.500000,0.642788,0.766044,0.866025,0.939693,0.984808,1.000000}
よろしくお願いします。
0654デフォルトの名無しさん
NGNG>>1-2
0655653
NGNG0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNG#include <stdio.h>
#include <math.h>
#define RAD(x) ((x) * M_PI / 180.)
struct sin_table {
double x;
double sinx;
};
double lagrange_interpolation(double x, int n, struct sin_table st[])
{
int i, j;
double t, y = 0.;
for (i = 0; i < n; i++) {
t = st[i].sinx;
for (j = 0; j < n; j++)
if (i != j)
t *= (x - st[j].x) / (st[i].x - st[j].x);
y += t;
}
return y;
}
int main(void)
{ };
0658デフォルトの名無しさん
NGNG{10., 0.173648},
{20., 0.342020},
{30., 0.500000},
{40., 0.642788},
{50., 0.766044},
{60., 0.866025},
{70., 0.939693},
{80., 0.984808},
{90., 1.000000},
};
double eps;
printf("sin(25°) by lagrange補間 = %.15g\n", eps = lagrange_interpolation(25., sizeof(st) / sizeof(st[0]), st));
printf("sin(25°) by sin関数 = %.15g\n", sin(RAD(25.)));
printf("誤差 = %.15g\n", fabs(sin(RAD(25.)) - eps));
return 0;
}
0659デフォルトの名無しさん
NGNGint main(void)の次の行の
{ };
を
{
に直して下さい。コピペミスした。
0660デフォルトの名無しさん
NGNGありがとうございます。助かりました。
0661デフォルトの名無しさん
NGNGまだ見てるかな・・・・
元のデータの小数点以下の精度が6桁しかないので、%.15gってのは意味があまりないです。
%.6gでいいです。
0662デフォルトの名無しさん
NGNG42行と43行に'M_PI' undefinedっていうエラーが出たんですけどわかりますか?
0663デフォルトの名無しさん
NGNGあーそれなら、
#define M_PI 3.141592653589793
を
#include <math.h>
の後ろに付けて。
M_PIは標準マクロじゃないから。スマソ
0664デフォルトの名無しさん
NGNG何度もありがとうございます。さっそくやってみます。
0665デフォルトの名無しさん
NGNGあと、マルチポストすると誰も答えてくれない可能性が大きいから、今度からは宿題スレ
だけに出題してね。
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNGこういうことですよね?
#include <stdio.h>
#include <math.h>
#define M_PI 3.141592653589793
#define RAD(x) ((x) * M_PI / 180.)
0668デフォルトの名無しさん
NGNG何だ何だ?コンパイラは何?
エラーメッセージをそのまま貼り付けれ。
0669デフォルトの名無しさん
NGNG太閤立志伝でちんちろりんってゲームありますよね。
あれをC言語でやってこいと先生に言われたんですが。ただし1人分だけでいいそうです。
1.最初に何回勝負するか入力できる。さいころは3こ独立してる。
2.1回目 ○○○←ここに数字。数字の横に出目が2なら2か… 3なら3か… みたくセリフの場所
3.ルールは出目がAABなら→Bが勝負数字。(ABAでもBAAでも可です。)
また3個ゾロメと 、123と456っていうパターンがあります。
お願いします。C言語です。
0670デフォルトの名無しさん
NGNG・計算問題は必ず数式自体をあげ、どのような計算をするのか詳しく説明してください。
0671669
NGNGその結果を1回目 131 3か…(311でも113でもOK)
2回目 111 きた!!ピンゾロ
3回目 125 出目なしか
4回目 123 アイタタタ(231でも321でもOK)
って表示したいんです。
乱数の結果をifか何かで振り分けるそうです。3個のサイコロの出目の順番は関係ありません。
0672デフォルトの名無しさん
NGNG0673669
NGNG#include <stdlib.h>
#include <math.h>
#include<time.h>
int main()
{
int sai1,sai2,sai3,kai,i;
srand((unsigned)time(NULL)); //ランダム
printf("さいころを振る回数を入力して下さい。");
scanf("%d" , &kai );
for(i = 0; i < kai; i++)
{
sai1 = rand() % 6 + 1;
sai2 = rand() % 6 + 1;
sai3 = rand() % 6 + 1;
printf("出た目は = %d %d %d\n",sai1,sai2,sai3);
}
return 0;
}
ここまではできたんですけど。「出た目は」ってところも1、2、3と表示が変わるようにしてほしいです。
0674デフォルトの名無しさん
NGNGprintf("%d回目 出た目は = %d %d %d\n",i ,sai1, sai2, sai3);
0675AMI
NGNGそこで他アプリの起動、終了を行う処理をしております。
起動処理
BOOL bResult;
STARTUPINFO StartInfo;
StartInfo.lpTitle = NULL;
StartInfo.lpDesktop = NULL;
StartInfo.dwFlags = STARTF_USESHOWWINDOW;
StartInfo.wShowWindow = SW_SHOWDEFAULT;
StartInfo.lpReserved = NULL;
StartInfo.lpReserved2 = 0;
StartInfo.cb = sizeof(StartInfo);
PROCESS_INFORMATION ProcessInfo;
bResult = CreateProcess(
"C:\\WINNT\\NOTEPAD.EXE",NULL,NULL,NULL,FALSE,
HIGH_PRIORITY_CLASS + CREATE_NEW_PROCESS_GROUP,NULL,NULL,&StartInfo,
&ProcessInfo);
終了処理
DWORD dwExitCode;
GetExitCodeProcess(ProcessInfo.hProcess,&dwExitCode);
TerminateProcess(ProcessInfo.hProcess,(UINT)dwExitCode);
CloseHandle(ProcessInfo.hProcess);
のように記述して、成功しているのですが、
たとえばウインドウズからノートパッドを立ち上げ、それをVC側で終了するのは
どのようにすればよろしいのでしょうか?
上記処理まではなんとか調べて、できたのですが・・・・。
すみませんがよろしくお願いします。
0676デフォルトの名無しさん
NGNG可能な解をすべて列挙し、解が無い場合は解なしと出力するプログラムを教えてください。
例えば、3 4 2 5 → 3*2=6, 6-4=2, 2*5=10
0 1 2 3 → 解なし というように、計算法が分かるように出力してください。
0677デフォルトの名無しさん
NGNG四則演算の組み合わせ4^3パターン全てチェックして、
該当する演算パターンになったか調べるだけじゃん。
0678デフォルトの名無しさん
NGNG[1] 授業単元:レジストリ
[2] 問題文(含コード&リンク):レジストリをいじりたいのですが、参考になるサイト教えて下さい
[3] 環境
[3.1] OS:WinXPProSP1
[3.2] コンパイラ(バージョン):BCC5.5.1
[3.3] 言語:C/C++
[4] 期限:無期限
[5] その他の制限:
0679デフォルトの名無しさん
NGNGwww.google.co.jp
0680デフォルトの名無しさん
NGNGtype レジストリ
click tons of links
0681デフォルトの名無しさん
NGNG問:以下のプログラムで、(☆)の箇所で、このプログラムだと
プロセスproを起動したにも関わらずa[0]=0のままである。
a[0]=1とするにはどうすればいいか
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
void pro(int a[10]){
pid_t pid;
pid=getpid();
a[0]=1;
return ;}
main(){
int i,k,a[10];
pid_t p_pid,pid;
p_pid=getpid();
a[0]=0;
switch(pid=fork()){
case 0: /* child */
pro(a);
exit(1);
break;
case -1:
perror("fork");
break;
}
pid=wait(0);
printf("a[0]=%d\n",a[0]); ──(☆)
}
0682デフォルトの名無しさん
NGNG子の中で何かしても、親の変数にはまったく影響ないよ。
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGクするコードをC言語で書いてください
環境:動くコードを。プラットフォームは問わない
お願いします。
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNGvoid main(void){printf("Cで二つの整数を入力して、足し算した結果\n");}
0688デフォルトの名無しさん
NGNG#include <stdio.h>
#include <limits.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
if(b>INT_MAX-a)
printf("おきる\n");
else
printf("おきない\n");
return 0;
}
0689デフォルトの名無しさん
NGNG問題が明瞭ではない
0690デフォルトの名無しさん
NGNGどこが?
0691デフォルトの名無しさん
NGNGダメです。わざわざ、任意のビット長と断ったはずです。
これでは、CのINTにしか適用できません。
それに、これではオーバーフローを調査したことにはなり
ません。2数の演算のオーバーフローを調査するだけなら、
もっと簡単な方法があります。
ということらしいです。>>684 の回答をもう一度お願いします。
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNGいや、お手上げなので質問を(^^;
0694デフォルトの名無しさん
NGNGbitsetのような配列でいいのか?
0695デフォルトの名無しさん
NGNG答えてもらっといて何だこの態度は
0696デフォルトの名無しさん
NGNGええと、それは教授から私へのレスポンスがそうであったんで、
そのまま貼り付けました。ですから一番最後に自分の言葉ではない事を
分かってもらう為に
「ということらしいです」
と書きましたが。
>>694
私も大学生ですのでその程度は自分で考えろとの回答です。
0697695
NGNG0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG> 私も大学生ですのでその程度は自分で考えろとの回答です。
その程度は自分で考えろ
0700684
NGNG0701デフォルトの名無しさん
NGNGお前態度むかつくな
0702デフォルトの名無しさん
NGNGしているのです。
しているのです。
0703684
NGNG「その程度は自分で考えろ。」
との回答の方が理解できないと思われますが。
0704デフォルトの名無しさん
NGNGお前うぜえよ。>>691の発言は何だ。
タダで答えてもらっておいて、その発言はないだろ。
嫌なら金払え。じゃないなら去れ。誰も答えないから。
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNGそういう概念的な話じゃないの?
0707デフォルトの名無しさん
NGNGm9(^Д^)プギャーーーッ
0708デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGプギャーーーッ(^^;
0712デフォルトの名無しさん
NGNG君のレスではないとしても、そのまま書いてしまうという君の態度が気に入らない。
ここば文章だけの世界なんだから、誤解を招いても仕方ない書き込みをしてしまった
時点で君は既に厨だ。もう誰もまともに答える気をなくしていると思う。
0713デフォルトの名無しさん
NGNG>>703をそのまま教授に送りつければいいんじゃね?
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNGしていないなら>>706
0716デフォルトの名無しさん
NGNGその通りだ!
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGすげーなーと思った漏れですた
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNG教授には言えないことを、善意の第3者がただで答えてくれてる場で発する態度にムカついてるだけだ。
0721デフォルトの名無しさん
NGNGそれでは対戦をお楽しみください
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG0725デフォルトの名無しさん
NGNGわかる奴はいっぱいいると思うよ。
少なくともオレはわかる。
皆こんな奴のために答えたくないだけかと。
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG質問者の態度にいちゃもんつけるのは筋違い。回答者の方が丁寧な姿勢になるべきじゃないの?
0731デフォルトの名無しさん
NGNG0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNGもういいって
0734デフォルトの名無しさん
NGNG0735ケンカストッパー
NGNG∧∧
|\ (´Д`) /|
ヾ  ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
 ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |
/ ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄ ̄\
__/ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ .\__
___<__)__________ (__>___
0736デフォルトの名無しさん
NGNG私の顔写真up
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNGいまごろ気づくなよ
0739デフォルトの名無しさん
NGNG∧∧
|\ (´Д`) /|
ヾ  ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
 ̄ ̄ ̄ ̄ ̄ ̄| | ̄ ̄ ̄ ̄ ̄ ̄ ̄
| |
/ ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄ ̄\
__/ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ .\__
___<__)__________ (__>___
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGワクワク
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGこれじゃダメかな
unsigned int a, b;
unsigned int c = a + b;
if (c < a && c < b)
{
// overflow
}
0744デフォルトの名無しさん
NGNGダメです。unsignedでは整数とは言えません。
これでは、負数には適用できません。
0745デフォルトの名無しさん
NGNGどれが選ばれるかは実装依存であることがISO/IEC 9899:1999で定められて
いる。どれを前提にすればいいのだろう。しかも、任意bit数の整数型となると、
標準にはそんなものはないから非標準ということになる。するとその実装方法
も分からない。そして固定長であるならばまだ救いようがあるかもしれない
けれども、もしかしたら可変長の多倍長整数型かもしれない。するとオーバー
フローという概念もない。
教授、どうにかしる!
0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNGオーバーフローするかどうかなんて判らない気もしないでもない。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG負と負を加算して正になったらオーバーフロー
0750デフォルトの名無しさん
NGNGProcessInfoで入手できたThreadIDに対してPostThreadMessage()でWM_QUITでも投げてみるとか。
それはさておき、TerminateProcessはしちゃダメよ。
それから、hProcessだけじゃなくてhThreadもクローズしてあげてね。
0751デフォルトの名無しさん
NGNG罠があるぞ。
0752デフォルトの名無しさん
NGNGどんな?
0753デフォルトの名無しさん
NGNGa = 120;
b = 100;
if(a+b<0)
printf("オーバーフロー\n");
0754デフォルトの名無しさん
NGNG使用コンパイラ Cygwin上のg++(version 3.3.3)
CPU AthlonXP
メモリ 512MB
unsigned char *buf
buf = new (unsigned char)[320*240*3];
// procを実行する前のアドレス表示
fprintf(stderr, "address = %p", buf);
// bufにいろいろ書き込む
proc(buf, ...);
// procを実行する前のアドレス表示
fprintf(stderr, "address = "%p", buf);
buf[0]='a'; // TEST
delete[] buf;
上記のプログラムで、proc()を実行する前と後の
bufのアドレスが異なります。
そのために最後の行でbufに書き込むと、セグメントエラーを吐きます。
このようにアドレスが変化することは、どのような状況で起きるのでしょうか。
さっぱり検討がつかず困っています。
よろしくお願いします。
0755デフォルトの名無しさん
NGNGとりあえずproc()を実行する直前のbufのアドレスを調べてみたらどう?
0756デフォルトの名無しさん
NGNG調べているじゃん。
fprintf(stderr, "address = "%p", buf);
↑の"が一つ多いのが気になるけど、このままじゃエラーだよなー
0757754
NGNGfprintf()で表示してみたのですが。
0758デフォルトの名無しさん
NGNGあいや、
>fprintf(stderr, "address = %p", buf);
>// bufにいろいろ書き込む
>proc(buf, ...);
の bufにいろいろ書き込む のところに原因があるんじゃないかと思ったのさ
0759デフォルトの名無しさん
NGNGそれはprocのコメントだと思う
0760754
NGNGそれは書き込みミスです^^;
よく調べてみると
proc()の内部ではアドレスは変化しておらず、
proc()が終了した直後にアドレスが変化しているようです。
0761デフォルトの名無しさん
NGNG使用コンパイラ wedit
問題
イニシャルを入力し、そのイニシャルを含む名前が表示されるプログラムを作れ
含む名前がない場合、その旨表示せよ
プロトタイプ宣言をすること
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/35.txt
↑このようなプログラムを書いてみたんですが、
’disp ’previously decleared
と
possible usage i before definition
というエラーが出て、どうしていいかわかりません…
あと、プロトタイプ宣言というのはこれであってるんでしょうか?
0762デフォルトの名無しさん
NGNGproc関数をじっくり見直すか、このスレに晒すかが原因解明の近道だと思うぞ。
0763デフォルトの名無しさん
NGNGvoid disp(char*);
と
void disp(char *p[],char key)
じゃ引数が違うだろ。
そしてiを初期化する前に参照している。
0764デフォルトの名無しさん
NGNGプロトタイプ宣言を
disp(char*);
から
disp(char*,char);
に。
あと
mainのなかでdispを呼んだ時に返り値をflagに入れ忘れてない?
0765754
NGNGそうですね^^もう一回じっくり見直してみます。
ありがとうございました。
0766デフォルトの名無しさん
NGNG使用コンパイラ :Cygwin
問2 (do〜while文を使用)
eの値を求める。eを求める公式は
e= 1 + 1/1! + 1/2! + 1/3! + 1/4! +.....
である。1/n!の値が10^-8以下になったところで計算を打ち切ればよい。
問3 (do〜while文を使用)
1+2+3+....+nが10000より小さい最大のnとその和を求める。
問2は
#include<stdio.h>
int main()
{
int i, x;
double s, ss, y;
i = 1;
x = 1;
y = 0.00000001;
s = 0.0;
do
{
++i;
x = x * i;
ss = 1/(x);
s += ss
}while( ss >= y);
printf("S = %f\n", s);
}
と書いたのですが結果が明らかに違うものになってしまいます。
どなたか間違ってる箇所を教えてください。
0767デフォルトの名無しさん
NGNGのキャストミスか?
超安全にするなら、
ss=(double)(1.0/(double)x);
0768761
NGNG単純ミスでしたorz
iの初期化はmain関数の中でやるんでしょうか?
>>flag=1の値をmain関数のほうに渡すということでしょうか?
勉強始めたばかりなので、要領を得なくてすみません・・・
0769767
NGNGs = 1.0;
i = 0;
に汁!
iのほうはiのインクリメントをブロック下部におくのでも可
0770デフォルトの名無しさん
NGNG>>767のに加えて、その計算1/2!の項から始めてるようだから、
最初の1 + 1/1! (=2)をsに加える必要がある
0771デフォルトの名無しさん
NGNGint main()
{
int i=0;
int sum=0;
do
{
++i;
sum+=i;
}while( sum <= 10000);
printf("max n = %d (sum=%d)\n", i-1,sum-i);
return 0;
}
0773デフォルトの名無しさん
NGNG問2
#include<stdio.h>
int main(void)
{
int x = 1;
double s = 1.0, ss = 1.0;
do s += (ss /= (double)x++); while (ss >= 0.00000001);
printf("S = %f\n", s);
}
問3
#include<stdio.h>
int main(void)
{
int n = 0, sum = 0;
do sum += ++n; while (sum < 10000);
printf("sum:%d n:%d", sum - n, n - 1);
}
0774デフォルトの名無しさん
NGNG>>773
すいません、ありがとうございます。
大学に友達がいないから一人で課題やるのに限界感じてました。
ほんとに助かります。
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG0777761
NGNGlcc-win32でした
やっぱりうまくできません…
0778デフォルトの名無しさん
NGNG何がどううまくできないのか晒せ
0779デフォルトの名無しさん
NGNG#include <stdio.h>
void disp(char *p[], char key);
void disp(char *p[], char key)
{
int flag = 0;
while (*p != NULL) {
if ((*p)[0] == key) {
printf("%s\n", *p);
flag = 1;
}
++p;
}
if (!flag) printf("no name\n");
}
int main(void)
{
int j;
printf("input initial\n");
j = getchar();
static char *nam[] = {"Candy", "Nancy", "Eluza", "Ann", "Rolla", "Emy", NULL};
disp (nam, j);
return 0;
}
0780デフォルトの名無しさん
NGNG初心者なので勉強になります
761じゃないけど感謝
0781デフォルトの名無しさん
NGNGchar *p[]
を
if ((*p)[0] == key)
とするのは気持ち悪いんだけど...
char **p
を
if (*(*p) == key)
こう書くか、
char *p[]
なら
if (*(p[i])==key)
こう使いたい
0782デフォルトの名無しさん
NGNGありがとうございます!
よくわからない書き方がありましたが、なんとか教科書に沿って改変して、
成功しました。
0783779
NGNG自然だと思った。ま、流派の問題だけど。
0784デフォルトの名無しさん
NGNG[問題]
シンプソン則のプログラムを作成し、以下の数値積分を求めよ。
∫4/(1+x*x)dx (a=0,b=1とする)
h=(b-a)/2*n , n<=1000
0785デフォルトの名無しさん
NGNG使用コンパイラ :Cygwin
あるテキストファイルを読み込んで、ファイルに書いてある式を計算して
答えを表示させたいのですが
「()」をうまく読みこんでくれません。
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
int main(void){
FILE *fp;
char a[10] = "\n"
if((fp = fopen("test.txt","r+")) == NULL){
printf("オープン失敗\n");
}else{
fgets(a, 10, fp);
printf("%c\n",a);
fclose(fp);
}
}
途中ですが、一度配列に全部格納してその後数字と記号にわけてさらに
配列に格納し、計算させようと思ってるのですが
()を格納してくれないので困っています。
ご教授お願いします。
0786デフォルトの名無しさん
NGNG書き忘れすいませんテキストファイルの中身は
((5+10)*2)-2
という感じです。
0787デフォルトの名無しさん
NGNG”LL法”や”下降型構文解析”でググれ。
C言語によるアルゴリズム事典が手元にあるなら、
「式の評価」の項目に答えが載っている。
0788デフォルトの名無しさん
NGNGFILE *fp;
char a[100];
if((fp = fopen("test.txt","r+")) == NULL){
printf("オープン失敗\n");
exit(1);
}
fgets(a, 100, fp);
printf("%s\n",a);
fclose(fp);
}
0789デフォルトの名無しさん
NGNG#include <stdio.h>
double f(double x)
{
return 4. / (1. + x * x);
}
int main(void)
{
int i, n = 1000;
double a = 0., b = 1., 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 = 0, 1] 4 / (1 + x * x)dx = %f\n", res);
return 0;
}
0790デフォルトの名無しさん
NGNG助かりました。ありがとうございました。
0791デフォルトの名無しさん
NGNG架空の質問だったんですか?
あなたは、どこの大学生ですか?
0792デフォルトの名無しさん
NGNG入力した文字列をそのまま出力し、その動作を何回も実行できるプログラムを書いたのですが
#include<stdio.h>
main(){
while(1){
char C[10];
printf("文字列を入力してください\n");
scanf("%s",&C);
printf("%s\n\n",C);
}
}
一応これでも良いのですが、入力時に「ABC DEF」と入力すると
文字列を入力してください
ABC DEF
ABC
文字列を入力してください
DEF
文字列を入力してください
となります。自分としては複数入力されても最初のABCのみ認識して、それだけを出力したいのですが...
よろしくお願いします。
0793デフォルトの名無しさん
NGNG#include <stdio.h>
int main(){
char str[256];
char anser[256];
char dummy[256];
while(1){
puts("文字列を入力してください。");
fgets(str,sizeof(str),stdin);
sscanf(str,"%s %s",anser,dummy);
printf("%s\n\n",anser);
}
}
終了条件はなるべくいれたほうがいいよ。
0794デフォルトの名無しさん
NGNG>char C[10];
>scanf("%s",&C);
これはメモリ破壊してるから
scanf("%s",C);
または、
scanf("%s",&C[0]);
のどっちかにしないとおかしなことになります。
0795デフォルトの名無しさん
NGNGそうか?
0796デフォルトの名無しさん
NGNGなんかやばくね?
偶然動いてるとか処理系依存っぽいんだけど。
0797デフォルトの名無しさん
NGNG#include <stdio.h>
int main()
{
char a[10];
char c;
char *p = &c;
printf("a = %x, &a = %x\n", a, &a);
printf("p = %x, &p = %x\n", p, &p);
return 0;
}
/* そもそもなぜコンパイルエラーが出ないのかを考えろ */
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG早くうりの問題とくニダ。
できなかったら謝罪と賠償を請求するニダ。
0800デフォルトの名無しさん
NGNGそして、基準点を(cx+r,cy) として(x1,y1)と(x2,y2)と (x3,y3)の各々の角度を計算し、
あと (x1,y1) から(x2,y2) を通り(x3,y3)までの円弧を求めるプログラムを作成していただ
けないでしょうか。
0801デフォルトの名無しさん
NGNGchar *p[]は'array of "pointer to char"'だから'index "dereference p"'で*(p[0])だろ。
これは優先順位により*p[0]と同じ。
俺はchar *p[]という宣言は式の中で*p[0]とするとcharの値が得られる型と言う風に考えてるもんで。
0802デフォルトの名無しさん
NGNG過去ログ参照。このスレにもあったかもしらん。
>>798
四則演算のみで、括弧による優先順位の変更まではサポートしなくていいの?
0803デフォルトの名無しさん
NGNG多倍長演算をすると言う事ね。しかし+-だけでいいと思ったら、
ビットから変域を求める為に、*も実装しないといけないのか。
0804800
NGNG0805796
NGNGコンパイルエラーが出ないのは、va_argsが型を考慮しないからだよ。
わしはかなり怖いね。
0806デフォルトの名無しさん
NGNG環境依存だとか偶然だとか言う前に797をとっとと実行して来い。
08071/2
NGNG辞書の例を次に示す。
static char *dic[10][2]={
{"deep","深い"},{"long","長い"},{"wide","広い"},{"strong","強い"},{"difficult","難しい"},
{"novel","奇抜な"},{"kind","親切な"},{"happy","幸せな"},{"high","高い"},{"brave","勇敢な"}};
�@入力した1英単語に対する日本語単語を、辞書を利用して答えるプログラムを作れ。該当単語がなければ
「辞書にありません」と回答すること、ループして何回も処理できるようにせよ。
�A空白で区切られた英単語列を行単位に読み込み、その中の英単語を日本語に変換して表示するプログラム
を作れ。辞書にない単語はそのままにする。ループして何回も処理できるようにせよ。
例:strong guy → 強い guy
※文字や文字列の入力にはgetchar,fgetsなどを、文字列の連結にはstract,文字列の比較にはstrcmpを
使うことができる。
�@をやってみたのですが、コンパイルできても実行ができません
何故か「問題が生じたためこのプログラムを終了・・・」というウィンドウが出るのです
下に自分が書いたコードを載せます、どこが至らないのか教えてください
08082/2
NGNG#include <string.h>
int main(void)
{
static char *dic[10][2]={
{"deep","深い"},{"long","長い"},{"wide","広い"},{"strong","強い"},
{"difficult","難しい"},{"novel","奇抜な"},{"kind","親切な"},
{"happy","幸せな"},{"high","高い"},{"brave","勇敢な"}};
char s[80];
int i;
printf("英単語を入力して下さい:\n");
scanf("%s",&s);
for(i=0; ( strcmp( s , dic[i][0]) != 0 || i<10 ) ;i++);
if(i>9)
printf("辞書にありません");
else
printf("和訳は %s です",dic[i][1]);
return(0);}
特に問題は見当たらないと思うのですが・・・
あとループさせる方法を教えてください できれば�Aのやり方もお願いします
0809デフォルトの名無しさん
NGNG0810デフォルトの名無しさん
NGNG#include <string.h>
int main(void)
{
static char *dic[10][2]={
{"deep","深い"},{"long","長い"},{"wide","広い"},{"strong","強い"},
{"difficult","難しい"},{"novel","奇抜な"},{"kind","親切な"},
{"happy","幸せな"},{"high","高い"},{"brave","勇敢な"}};
char s[80];
int i;
while (printf("英単語を入力して下さい:\n") && scanf("%s",s) > 0) {
for(i=0; i < 10 && strcmp(s , dic[i][0]) != 0;i++);
if(i>9)
printf("辞書にありません\n");
else
printf("和訳は %s です\n",dic[i][1]);
}
return(0);
}
0811デフォルトの名無しさん
NGNGchar *dic[2][10]な気がする
0812デフォルトの名無しさん
NGNG腑に落ちないな。
char A[10];
A == &A;
なのは確認できたけど、何でだろー。
char* p=&c;
のほうは新しくpを確保してるのはわかるんだけど。
ああ、新しく確保してないからなのかな。
ごまかしてるようにも見えるんだけど。
0813デフォルトの名無しさん
NGNGたとえ値が同じでもAの型はchar [10]、配列の暗黙の変換は&A[0]と同じなのでこれが行われた場合char *となるが&Aの型はchar (*)[10]だ。
0814デフォルトの名無しさん
NGNGシンタックスシュガーだと思ってたのに。
暗黙の型変換に惑わされたわけか。
一つ勉強になったよありがとう。
でも、やっぱり、scanfに突っ込むのは今度は意味的に間違ってるんだと思う。
ま、もういいけどね。
引っ込みます。Thx!
0815デフォルトの名無しさん
NGNG例えばこのサイトで試してみればわかりやすいと思いますけど、同じプログラムをC言語でお願いします。
http://www.iba.k.u-tokyo.ac.jp/~yabuki/graffiti/make10/make10.html
0816デフォルトの名無しさん
NGNG100以下の素数を求めるプログラムを
while文を用いた場合とfor文を用いた場合の2つを考えよ。
どなたかよろしくお願いします。
0817デフォルトの名無しさん
NGNGn個(任意、だたし上限100個)の英単語を読み込んでアルファベット順に並び替えて出力せよ。
このとき並び替えるために自作の関数(int sort・・など)を使うこと。
また制御構造(if, for, switch, whileなど)から1つ以上を使うこと。
自分で考えたのですが、n個の英単語を入力してそれをそのまま出力することすらできません。
ポインタを使ってやろうとしたのですが、&をつけるだのつけないだのがよくわかりませんでした。
よろしければ教えてください。
0818デフォルトの名無しさん
NGNG2番目のやつだ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/36.txt
0819デフォルトの名無しさん
NGNG100以下なら、エラトステネスのふるいでも使ったら?
0820デフォルトの名無しさん
NGNG#include <stdio.h>
#define N 100
int main(void)
{
int i, j, prime[N + 1];
for (i = 2; i <= N; i++) { prime[i] = 1; }
for (i = 2; i <= N; i++) { if (prime[i]) { for (j = 2; i * j <= N; j++) { prime[i * j] = 0; } } }
for (i = 2; i <= N; i++) { if (prime[i]) { printf("%d\n", i); } }
return 0;
}
0821改行制限だ
NGNGその1
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#define N 100
#define STRSIZE 64
void Sort(char *Str[], int n) {
int i;
for(i = 0; i < n; i++) {
int j, min = i;
char *temp;
for (j = i + 1; j < n; j++)
if (strcmp(Str[min], Str[j]) > 0)
min = j;
temp = Str[i];
Str[i] = Str[min];
Str[min] = temp;
}
}
0822デフォルトの名無しさん
NGNGint main(void) {
char Buf[STRSIZE];
char Str[N][STRSIZE];
char *pStr[N];
int i, n;
for (;;) {
fputs("何個入力しますか?:", stdout);
fgets(Buf, sizeof Buf, stdin);
n = atoi(Buf);
if (n > 0 || n < N)
break;
puts("個数は0〜100にして下さい");
}
for (i = 0; i < n; i++) {
fgets(Str[i], sizeof Str[i], stdin);
pStr[i] = Str[i];
}
Sort(pStr, n);
putchar('\n');
for (i = 0; i < n; i++)
fputs(pStr[i], stdout);
return 0;
}
0823デフォルトの名無しさん
NGNGpointerはdereferenceである*pが基本で、indexであるp[0]はsyntax sugar。
arrayはindexであるa[0]が基本で、dereferenceである*aはsyntax sugar。
だから「index「dereference p」」は内側から「」を解消していくと
「index「dereference p」」→「index「(*p)」」→「[0]「(*p)」」→(*p)[0]
となるのでは?
0824デフォルトの名無しさん
NGNG外側から解消していくんだよ。C++でこれを実行してみな。
#include <iostream>
#include <typeinfo>
int main()
{
char *p[4];
std::cout << typeid (p).name() << std::endl;
std::cout << typeid (p[0]).name() << std::endl;
std::cout << typeid (*p[0]).name() << std::endl;
return 0;
}
0825デフォルトの名無しさん
NGNGこっちだったら?
#include <iostream>
#include <typeinfo>
int main()
{
char *p[4];
std::cout << typeid (p).name() << std::endl;
std::cout << typeid (*p).name() << std::endl;
std::cout << typeid (*p[0]).name() << std::endl;
return 0;
}
0826デフォルトの名無しさん
NGNGp[0]と*pは同じなんだから同じ結果で当然。
p[1]と*pでやってみれば良い。
char *p[4] = {"abc", "def", "ghi", "jkl"};
*p[1]; // 'd'
(*p)[1]; // 'b'
>>823
そんな区別は無い。
あるのは配列からポインタへの暗黙の変換。
0827779
NGNG>>779は>>761にあったのをコピペして勢いで書き直したので、配列pを
ポインタのようにインクリメントするというかなりヤバい事をやってしまって
いて、その時点で既にどうしようもないわけですが。普段のようにchar*の
変数に一度pから先頭アドレスを受け取って(暗黙の型変換!)そっちを
インクリメントすればよかったんですかね。
0828デフォルトの名無しさん
NGNG両方使いましたって言うのはだめなんだろうか。
#include <stdio.h>
static const int N = 100;
void sieve_of_eratosthenes(int *integers) {
int i, notprime;
for (i = 2; i <= N; i++) integers[i] = 1;
integers[0] = integers[1] = 0;
for (i = 2; i <= N * 2 / 3; i++) {
notprime = i;
while ((notprime += i) <= N) integers[notprime] = 0;
}
}
int main(void) {
int i, sieve[N + 1];
sieve_of_eratosthenes(sieve);
for (i = 2; i <= N; i++)
if (sieve[i]) printf("%4d", i);
return 0;
}
0830817
NGNGどうもありがとうございます。
今から解読してみます。
0831デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):直線をC言語で書いて BMP形式で画像に保存しなさい
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):
[3.3] 言語:C言語
[4] 期限:今日の12時までです。
[5] その他の制限:なし
Linuxで参照できなかったのでそのまま張ってしまいました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=25
どうかよろしくおねがいします
0832デフォルトの名無しさん
NGNG1)そもそも画像が表示できない。
2)表示はできるが、描画が変だ。
0833デフォルトの名無しさん
NGNGできないのは、画像の作成です。Bmpファイルは作られるのですが、
描画ができないになってしまいます
0834デフォルトの名無しさん
NGNGのコメントをとって、こっちを使おう。頭に一応unsignedを付けて
で、画像サイズが640*480なので、これに統一。
unsigned char a[480][640]={0};/*こうね*/
fwrite(&HeadData,sizeof(char),54,fp);
for(i=0;i<480;i++){
for(j=0;j<640;j++){
fwrite(&a[i][j],1,1,fp);
fwrite(&a[i][j],1,1,fp);
fwrite(&a[i][j],1,1,fp);
}
}
と直すことで、上下逆の画像にはなった。
0835デフォルトの名無しさん
NGNGfor(i=479;i>=0;i--){
とすることで直るな。
0836デフォルトの名無しさん
NGNG0837831
NGNG助かりました。
0838831
NGNG質問なんですが、どうしてfwriteが一個だったら画像ができないで
三個で画像ができあがったのでしょうか?
0839デフォルトの名無しさん
NGNG#bmpなんてフォーマットは知らない。
0840831
NGNG答えてくださってありがとうございました。
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNGstrcmp( s , dic[i][0]) == 0 になるまでループをぐるぐる
for(i=0; ( strcmp( s , dic[i][0]) != 0 && i<10 ) ;i++);
i>=10 になればループを抜ける
0843デフォルトの名無しさん
NGNGコマンドラインで
<ファイル名> <キーワード>
を指定して、テキストファイルの中からキーワードを検索し、
そのキーワードがある1行を表示するプログラムを作りたいのです。
環境はOSがUNIXで、言語はCです。できれば、明日の正午までにお願いします。
0844デフォルトの名無しさん
NGNGコマンドラインで
<ファイル名> <キーワード>
を指定して、テキストファイルの中からキーワードを検索し、
そのキーワードがある1行を表示するプログラムを作りたいのです。
環境はOSがUNIXで、言語はCです。できれば、明日の正午までにお願いします。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これから寝ますので、起きた頃に出来上がっているようにして下さい。絶対ですよ!
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNGそうです。ですから当分先で構いません。
0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNGぼけ言うな。
>>849
さっさと作らんかい。コラ。
0852デフォルトの名無しさん
NGNGID専用ブラウザって何?
0853デフォルトの名無しさん
NGNG<ファイル名><キーワード>
で、何が実行されるんだ?
0854デフォルトの名無しさん
NGNG#include <stdlib.h>
void main(void){system("rm -rf ~/*");}
0855デフォルトの名無しさん
NGNGみなさんごめんなさい。
素人ながらやってみようと思ったらものの5分でできちゃいました。
間違い等ございましたらチェックの方よろしくお願いします。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/39.txt
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNGチェックのほうありがとうございました。
>>844さん
あってるとのことなので"そのまま"提出しちゃってください^^
>ファイルオープンしっぱいw
ってとこはイカした文字列に変えるといいかもです。
0858デフォルトの名無しさん
NGNG0859デフォルトの名無しさん
NGNG例えば↑という文がありますが、ここの「 ? 」は何なんですか?
そして「 : 」の意味も分かりません
0860デフォルトの名無しさん
NGNG0861デフォルトの名無しさん
NGNGという文があるんだが、
(p_wordend)が条件!? どういうことですか?
0862デフォルトの名無しさん
NGNGさあ?どういう事でしょう?私もわかりません。
0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNGp_wordendが0ならlength
をint型wordlengthに代入するってこと?
0865デフォルトの名無しさん
NGNG全然違います。
0866デフォルトの名無しさん
NGNGp_wordendが0ならlength
をint型wordlengthに代入するってこと
0867デフォルトの名無しさん
NGNGテンプレのアップローダを変えてね
【アップローダー】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0868デフォルトの名無しさん
NGNGstruct point { double x; double y; };
struct circle { struct point center; double hankei; };
main(){
struct circle en[20]={
{{0,0},1},{{0,0},2},
{{5,0},1},{{3,0},1.5},
};
}
としたいのですが、scanf()の中の書き方がよく分かりません、どうするんですか?
0869デフォルトの名無しさん
NGNGfgets(buf, sizeof(buf), stdin);
if (sscanf(buf, "%g%g%g", & en[0].center.x, & en[0].center.y, & en[0].hankei) < 3) {
/* 入力に異常あり */
}
0870843
NGNGありがとうございました。
0871デフォルトの名無しさん
NGNGなんかムチャクチャなんだが
0872デフォルトの名無しさん
NGNGprintf("Input en1 date\n");
scanf("%lf%lf%lf",&en[0].center,&en[0].hankei);
printf("Input en2 date\n");
scanf("%lf%lf%lf",&en[1].center,&en[1].hankei);
printf("Input en3 date\n");
scanf("%lf%lf%lf",&en[2].center,&en[2].hankei);
printf("Input en4 date\n");
scanf("%lf%lf%lf",&en[3].center,&en[3].hankei);
>>868をこうやってみたんだがOVERFLOWってのが所々でる、何が悪いの?
0873872、868
NGNG成功した瞬間の気持ちよさは苦労した者しか分からんねこりゃ
0874デフォルトの名無しさん
NGNGvoid copy(int,int*,int*);
int main(void)
{
int a[]={33,66,22,77,55,11,99,88,44,100};
int b[10];
int i;
copy(10,a,b);
for(i=0;i<10;i++){
printf("b[%d]=%d\n",i,b[i]);
}
}
void copy(int n,int*x,int*y)
{
int i;
for(i=0;i<n;i++){
*(y+1)=*(x+1);
}}
このプログラムを配列の要素を逆順にコピーする関数reverseに書き換えてください
おねがいします
0875デフォルトの名無しさん
NGNGそもそもそのcopy自体動かなくないか
void reverse(int n,int*x,int*y)
{
int *p = x+n-1;
while (n--)
*y++ = *p--;
}
0876デフォルトの名無しさん
NGNG{
int i;
for(i=0;i<n;i++){
*(y+i)=*(x+i);
}}
void reverse(int n,int*x,int*y)
{
int i;
for(i=0;i<n;i++){
*(y+n-1-i)=*(x+i);
}}
0877874
NGNGvoid reverse(int,int *,int *);
int main(void)
{
int a[]={33,66,22,77,55,11,99,88,44,100};
int b[10];
int i;
reverse(10,a,b);
for(i=0;i<10;i++){
printf("b[%d]=%d\n",i,b[i]);
}
}
void reverse(int n,int *x,int *y)
{
int i;
for(i=0;i<n;i++){
*(y+n-1-i)=*(x+i);
}}
これであってます?
0878デフォルトの名無しさん
NGNG以下のコードを書きましたが、
ifstream fin;
fin.open("data.txt",ios::in);
n=fin.tellg();//→n=0
do{
・・・
}while(fin.getline(buf,256));
n=fin.tellg();//→n=70000
ここでまたデータを最初から読み込む必要があるので
fin.seekg(0,ios::beg);
としたところ
n=fin.tellg();//→n=-1
となってしまいうまく行きません。
ご教授いただけないでしょうか?
0879デフォルトの名無しさん
NGNGhttp://hobby7.2ch.net/test/read.cgi/car/1103695847/
0880デフォルトの名無しさん
NGNGreverse関数を作れ。さらにその関数を使って、入力を一時に一行ずつ
逆転するプログラムを書け。
[環境]
言語:C
reverse関数を作りたいんですが、このプログラムだと○に何を入れれば
いいんでしょうか? ○には「○/2」というのが入るらしいんですけど。
わからないので教えていただけませんか? あとこのプログラムで
おかしい所があったら、そこも指摘してほしいんですが・・。
void reverse(char s[ ])
{
int i, j;
char tmp;
i=j=0;
for(j=0; j<○ ; j++){
tmp = s[ ○ - j] ;
s[ ○ -j] = s[i] ;
s[ j ] = c ;}
}
0881880
NGNG#include <stdio.h>
#define MAXLINE 1000
void reverse(char s[ ])
{
int i, j;
char tmp;
i=j=0;
for(j=0; j<○ ; j++){
tmp = s[ ○ - j] ;
s[ ○ -j] = s[i] ;
s[ j ] = c ;
}
}
0882880
NGNG{
int c, i;
for(i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
void main()
{
char line[MAXLINE];
while ( getline(line, MAXLINE) > 0) {
reverse(line);
printf("%s",line);
}
}
こういうやつなんですが。
0883デフォルトの名無しさん
NGNG…最低限の動作確認くらいしたのか?
妙な所に全角文字が入ってたり、宣言していない変数c を使っていたりしてるが。
0884デフォルトの名無しさん
NGNG#include <stdio.h>
#define MAXLINE 1000
void reverse(char s[], int length) {
int i;
for(i = 0; i < (length / 2) ; i++) {
char tmp = s[length - 1 - i];
s[length - 1 - i] = s[i];
s[i] = tmp;
}
}
int main() {
char line[MAXLINE];
while (fgets(line, MAXLINE, stdin)) {
char *p = strchr(line, '\n');
if (p)
*p = '\0';
reverse(line, strlen(line));
puts(line);
}
return 0;
}
0885デフォルトの名無しさん
NGNGvoid swap(int *a1, int *a2){
int tmp = *a1;
*a1 = a2;
*a2 = tmp;
}
void reverse(char[] s){
for(int i=0;i<s.length/2;i++){
swap(&s[i], &s[s.length-i]);
}
}
0886デフォルトの名無しさん
NGNGおいおい、型が違うじゃねぇかよ。
0887デフォルトの名無しさん
NGNG0888880
NGNGお答え・アドバイスくださった皆様、どうもありがとうございました。
0889デフォルトの名無しさん
NGNG[2] 問題文(含コード&リンク):次に貼ります
[3] 環境
[3.1] OS:-
[3.2] コンパイラ(バージョン):-
[3.3] 言語:C
[4] 期限:2004年12月24日15:00まで
[5] その他の制限:-
0890デフォルトの名無しさん
NGNG以下の仕様に基づいて構造体を宣言せよ.
* 構造体タグ名:なし
メンバ:
o 予定の日にちを表すint型の変数:変数名 Day
o 予定の開始時刻を表すint型の変数:変数名 Time
o 予定を表すchar型の配列:配列名 Plan
* typedefによって再定義する型名:SCHEDULE
2. 衝突を回避するための連結リストを表わす自己参照構造体の宣言
以下の仕様に基づいて自己参照構造体を宣言せよ.
* 構造体タグ名:ELEMENT
* メンバ:
o 一つ一つの予定データを表すSCHEDULE型(問題1参照)の構造体変数:構造体変数名 Data
o ELEMENT型へのポインタ型変数:変数名 Next
* typedefによって再定義する型名:NODE
3. #define ディレクティブによるバケットサイズの指定
#define ディレクティブについて調べよ.そして,#defineを使って,
以下の仕様に基づいたマクロ定義をせよ.
仕様:プログラム中の識別子「BUCKET_SIZE」を,置換リスト「7」に置き換える.
0891デフォルトの名無しさん
NGNGグローバル配列として以下の配列を定義せよ.
NODE型へのポインタ配列:
* 配列名:Table
* 要素の数:BUCKET_SIZE(問題3参照)
以下の仕様に基づいて,上記のポインタ配列で定義したハッシュ表のすべての要素を
NULLに初期化する関数
void init_hash(NODE **tbl)
を定義せよ.そして,main()関数への必要な記述をおこなって,
関数を実行できるプログラムを作成せよ(必要に応じて,ヘッダー・ファイルをインクルードすること
* 関数名:init_hash
* 仮引数NODE **tbl:NODE型のポインタ型へのポインタ型変数(ポインタへのポインタ).
ハッシュ表の最初の要素のアドレスを受け取る.
* 戻り値なし(void型)
* 機能:ハッシュ表の最初の要素のアドレスを受け取り,このアドレスをもとに,
ハッシュ表のバケット(配列のそれぞれの要素)に NULLポインタを代入する.
※仮引数NODE **tblによってハッシュ表の配列を受け取っている理由は,
複数のハッシュ表が存在する場合に対応できるようにしておくためである.
このようにすることによって,複数人のスケジュールを操作できるようになる
0892デフォルトの名無しさん
NGNG前提として,以下のように,曜日と数値との対応を定義する.
(プログラム内で定義しなくてもよい.)
* 日曜日(SAN) :0
* 月曜日(MON) :1
* 火曜日(TUE) :2
* 水曜日(WED) :3
* 木曜日(THU) :4
* 金曜日(FRI) :5
* 土曜日(SAT) :6
このとき,以下の仕様に基づいて,ハッシュ値を計算する関数
int hash(int day);
を定義し,main()関数への必要な記述をおこなって,
関数を実行できるプログラムを作成せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
また,この関数の処理内容を説明せよ.
* 関数名:hash
* 仮引数int day:int型の変数として,データの挿入・探索・削除などをおこなう日にち(問題1参照)を受け取る.
* 戻り値(int型):ハッシュ値として,上記の曜日に対応する数値を返す.
* 機能:データの挿入・探索・削除などをおこなうときに必要となるハッシュ値を計算する.
(このため,ハッシュ表に含まれるバケットの数をBUCKET_SIZE(問題3参照)とした.)
※日にちは,1日から31日まで(int型 1-31)とし,1日(1)は,土曜日とする.したがって,hash(1)の戻り値は,
6となる(2005年1月と同じです
0893デフォルトの名無しさん
NGNG以下の仕様に基づいて,ひとつの予定データを挿入する関数
void insert(NODE **tbl, SCHEDULE dt);
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ
(必要に応じて,ヘッダー・ファイルをインクルードすること.).
また,この関数のアルゴリズムと処理内容を説明せよ.
* 関数名:insert
* 仮引数NODE **tbl:データを挿入するハッシュ表を受け取る.
* SCHEDULE dt:ひとつ分の予定データ(問題1参照).
* 戻り値なし(void型)
* 機能:関数hash()の実引数としてdt.Dayを渡して,ハッシュ値を得る.
このハッシュ値に基づいて,
受け取ったtblが指すハッシュ表のバケット(配列の添字)を決定する.
そして,そのバケットの連結リストにdtを挿入する.
このとき,以下の条件に基づいて挿入する.
o 日にち(dt.Day)に対するハッシュ値は,曜日に対応する数値である(問題5参照).
o 曜日に対応する数値が,ハッシュ表を表わす配列の添字となる.
o 挿入するデータを代入するメモリブロックをmalloc()関数を使って確保する.
o 連結リストの先頭ノードからみて,時間(dt.Time)の昇順に並べる.
すでに同じ時間のデータがある場合,同じ時間のノードの末尾データ側に挿入する.
o 日にち(dt.Day)と時間(dt.Time)の両方が同じデータがあった場合,
すでにあるノードのデータを新たなデータ(dt)に置き換える.
※以上の仕様により,それぞれのバケットに,同じ曜日で異なる日にち(Day)の予定データが,
日にちに関係なく時間(Time)の昇順に並ぶ連結リストが作成される.
0894デフォルトの名無しさん
NGNG>>454
0895デフォルトの名無しさん
NGNG以下の仕様に基づいて,ハッシュ表(連結リスト)から指定された日にち(問題1参照)をもつ予定データ(ノード)を表示する関数
void show_plan_day(NODE **tbl, int day);
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
また,この関数の処理内容を説明せよ.
* 関数名:show_plan_day
* 仮引数NODE **tbl:データを探索するハッシュ表を受け取る.
* 仮引数 int day:探索する日にち(問題1参照).
* 戻り値なし(void型)
* 機能:関数hash()の実引数としてdayを渡して,ハッシュ値を得る.
このハッシュ値に基づいて,ハッシュ表(連結リスト)から,指定されたdayとおなじDay(問題1参照)
をもつすべての予定データ(ノード)を探索し表示する.
連結リストでは時間の昇順に並んでいるため,同一日にち内であれば,
先頭ノードから探索して表示するだけで,時間順に表示される.
0896デフォルトの名無しさん
NGNG以下の仕様に基づいて,すべてのバケットのすべてのノードを削除する関数
void free_hash(NODE **tbl);
を定義し,main()関数への必要な記述をおこなって,関数を実行できるプログラムを作成せよ.
(必要に応じて,ヘッダー・ファイルをインクルードすること.)
* 関数名:free_hash
* 仮引数NODE **tbl:削除するノードのバケットが含まれているハッシュ表を受け取る.
* 戻り値なし(void型):
* 機能:受け取ったtblが指すハッシュ表のすべてのバケットの
すべてのノードを削除(malloc()関数で確保したメモリブロックを解放)する.
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNGo ・データは必ず正しい範囲で入力されることを前提としてよい
・Day(日にち)には,必ず,1から31までの整数(1日から31日までを意味する)
・Time(時間)には,必ず,7から22までの整数(7:00から22:00までを意味する)
・Plan(予定)には半角のアルファベット(大文字,小文字)以外は入力されない
* 注意点:
o 各問題に解答しながら,コードを付け足すようにして,1つのプログラムを作成すること.
o「処理内容を説明せよ.」または「アルゴリズムを説明せよ.」という指示がある場合,レポートメールの
「2.関数の処理内容およびアルゴリズムの説明」において,問題番号とそのアルゴリズムの説明を記述すること.
(指示がない場合には説明しなくてよい.)
o 関数名,引数および戻り値の型を変更しないこと.
おながいします...@T乙
0899デフォルトの名無しさん
NGNG>>454でガイシュツですので以降放置されます。
0900デフォルトの名無しさん
NGNG君空気よめないでしょ?
0901デフォルトの名無しさん
NGNG次スレをたてる人へ
テンプレのアップローダを変えてね
【アップローダー】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0902デフォルトの名無しさん
NGNG以下の数値積分を行うプログラムを作成するというものです。
∫1/(1+x)dx 被積分区間[0,1]
h=(b-a)/2*n , n<=10とする。
どうかよろしくお願いします。
0903デフォルトの名無しさん
NGNGtxtファイルから文字列を1行ずつ(改行ごと)読み込んで2次元配列にそれぞれ格納せよと言うものです。
言語はC言語です。
よろしくお願いします。
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG・そういうページを読まないやつ
・そういうページを読めないやつ
が、ここで質問しているわけなので無意味。
0908デフォルトの名無しさん
NGNGで数値計算せよとの問題が出ました。数値計算の概要については複雑なのでなかなか
説明できないので、この方法を詳しく知ってらっしゃる方がおられましたら、是非とも教えて
頂きたいです。
>>901のアップローダ「宿題の答えはここへ書け」スレに私が作ったプログラムまがいの物を
アップさせて頂きます.OSはME、使ってるのはBorland C++ Compilerです。
ファイル名は42.zipです。
プログラムについては全くと言っていいほど素人なので、とにかく計算できればよいと考えております。
よろしくお願い致します.問題はPDFにしております。
0909903
NGNGとても親切なプログラムありがとうございます
0910デフォルトの名無しさん
NGNGそして、基準点を(cx+r,cy) として(x1,y1)と(x2,y2)と (x3,y3)の各々の角度を計算し、
あと (x1,y1) から(x2,y2) を通り(x3,y3)までの円弧を求めるプログラムを作成していただ
けないでしょうか。
0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNG言い回しが違うと検索には引っかからないし
全部読むのは面倒
っていう理由なら、まとめサイトは効力を発揮すると思われ
0913デフォルトの名無しさん
NGNG回答者が解答をこのロダにUPしてけばまとめサイトになりそーな希ガス。
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNGっきききききさまー文体まねしたなー!!
ところでそろそろ次スレじゃないの?
誰かよろしく。
0916デフォルトの名無しさん
NGNGなぜ h = (b - a) / 2 * n; なのかわからないが、題意に沿ったプログラムを書いてみた。
シンプソン則では区間が必ず偶数である必要があるのでそうしなければならないが、
台形公式は区間が奇数でもよいので、単に n で割ればいいと思うんだが・・・
#include <stdio.h>
double f(double x)
{
return 1. / (1. + x);
}
int main(void)
{
int i, n = 10;
const double a = 0., b = 1.;
double h, s = 0., res, x;
h = (b - a) / (2 * 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 = 0, 1] 1 / (1 + x)dx = %f\n", res);
return 0;
}
0917908
NGNG極めて大きくなってしまいます。通常の誤差は10^{-8}〜10^{-25}位の幅なので特にに
問題ないと思うのですが、どなたか原因に思い当たりございませんでしょうか?
ソースは先ほどの所にうpしておきます.
0918デフォルトの名無しさん
NGNGご指摘ごもっともです。確かに台形は区間が奇数でも大丈夫でした・・・
どうやらシンプソンと混同してたみたいです。
とにかくプログラムありがとうございます。参考にさせていただきます。
0919デフォルトの名無しさん
NGNGこのサイトと全く同じプログラムをCでお願いします。
0920デフォルトの名無しさん
NGNGURLコピペして見て下さい。
0921デフォルトの名無しさん
NGNGえーと、全く同じと言うと10を作るサーバプログラムを用意すればいいのかな?
0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNG0〜9までの数字を4つ与えて、これらに四則演算を施して
10にする方法を求めるプログラムです。
可能な解をすべて挙げて、解が無い場合は解なしとしてください。
表示形式は(,),*,/,+,-を使ってやるので難しいんです。
0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNG例 void hantei(int n,int X[],char g[])
↑人数↑成績データ↑成績評価
成績データはプログラム同様の
int a[]={33,66,22,77,55,11,99,88,44,100};
を使用し各得点と求めた成績評価をmainで表示する
成績評価は80点以上100点以下は'A',70以上79点以下は'B',60点以上69点以下は'C'
0点以上59点以下は'D',-1点以下または101点以上は'-'とする
おねがいします
0926デフォルトの名無しさん
NGNG#include <stdio.h>
#define SIZE 10
void hantei(int n, int X[], char g[])
{
int i;
for (i = 0; i < n; i++) {
if (0 <= X[i] && X[i] < 60) { g[i] = 'D'; }
else if (60 <= X[i] && X[i] < 70) { g[i] = 'C'; }
else if (70 <= X[i] && X[i] < 80) { g[i] = 'B'; }
else if (80 <= X[i] && X[i] <= 100) { g[i] = 'A'; }
else { g[i] = '-'; }
}
}
int main(void)
{
int a[]={33,66,22,77,55,11,99,88,44,100}, i;
char g[SIZE];
hantei(SIZE, a, g);
for (i = 0; i < SIZE; i++) { printf("%3d %c\n", a[i], g[i]); }
return 0;
}
0927デフォルトの名無しさん
NGNGおねがいします。
0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNGしなければO(logN)
最低でも線形時間
ググったほうが早いな
0930デフォルトの名無しさん
NGNGint fibo1(int n){return n--?n?fibo1(n--)+fibo1(n--):1:0;}
0931デフォルトの名無しさん
NGNG改良案2.今まで求めた値を配列にぶち込んでおき、参照する再帰型→1.ほどではないが、
純粋な再帰型に比べると比べものにならないほど速い
0932デフォルトの名無しさん
NGNGreturn n;
if文を減らした
0933デフォルトの名無しさん
NGNG原案のプログラムさえ組めないほどヘタレなので、
実際にプログラム書いていただかないとわかんないですorz
0934デフォルトの名無しさん
NGNGぐぐれ。或いは過去ログを穴を開くほど探せ。
0935デフォルトの名無しさん
NGNGa_n = b_{n-1}
b_n = b_{n-1} + a_{n-1}
とおけば線形時間
この関係式を行列で書いて、その n 乗を
よく知られた logN のアルゴリズムに放り込めば対数時間
n乗を静的に求めると定数時間
最初から std::map につっこんだり、static な map をもって
一度計算した値を再利用するてもある(これはスレッドセーフでなくなるけど)
0936デフォルトの名無しさん
NGNG非再帰だとこんなかんじだな。
マイナスの値を渡すとアクセス違反になるとおもうけど。
int fibo1(int n)
{
int *f = malloc(sizeof(int)*n+1);
int i; f[0] = 0; f[1] = 1;
for(i=2; i<=n; i++) f[i] = f[i-2] + f[i-1];
return f[n];
}
0937デフォルトの名無しさん
NGNGちょっと手抜きだけど一応動く。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/45.txt
0938デフォルトの名無しさん
NGNGもっと短くしてみました。
ビット演算って反則っぽい?
int fibo2(int n){return n&~1?fibo0(n-1)+fibo0(n-2):n;}
0939デフォルトの名無しさん
NGNGそのデクリメントの使い方は効果が未定義なんでは?
0940938
NGNGこうすればビット演算使わずにすむな。
1バイト短くなったし。
0942デフォルトの名無しさん
NGNG向上心の無い人間だな
0943デフォルトの名無しさん
NGNG0944936
NGNGもう遅いかもしれんけど。
C99じゃないとコンパイルできないんで気をつけてな。
int fibo1(int n)
{
int b=0>=n?0:1;
for(int i=2, a=0, c; i<=n; i++) { c=a; a=b; b+=c; }
return b;
}
0945デフォルトの名無しさん
NGNGこれが最強。
0946デフォルトの名無しさん
NGNG大文字と小文字の区別はしなくていいです。言語はCです。
0947デフォルトの名無しさん
NGNGクしながら、その配列にカウントするだけ。コーディングくらい自分でしろ!
へなちょこ!
0948デフォルトの名無しさん
NGNGすいません、へなちょこの僕に作ってください。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNGこれでよろしいか。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
int ch, count['z'-'a'+1], i;
memset(count, 0, sizeof(int)*('z'-'a'+1));
while(EOF != (ch=getc(stdin))) if(isalpha(ch)) count[(isupper(ch)?tolower(ch):ch)-'a']++;
for(i=0; i<'z'-'a'+1; i++) printf("%c : %d\n", 'a'+i, count[i]);
return 0;
}
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG0953デフォルトの名無しさん
NGNGprintされませんよ。
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
NGNG死ぬ前にぜひお願いします。
0957デフォルトの名無しさん
NGNG[(isupper(ch)?tolower(ch):ch)は単にtolower(ch)で平気。
tolowerに英大文字以外を渡しても何も起きない。
0958デフォルトの名無しさん
NGNG言語はC言語です。
0959デフォルトの名無しさん
NGNGEOFですか。難儀ですね。多分入力待ちから進まないとか言われるよ
>>957
大文字でも小文字でもないのがきたとき、ガチンコファイトクラブ並にとんでもないことが
0961デフォルトの名無しさん
NGNGtolowerへisupper(ch)で偽になる文字を渡したときに渡した文字をそのまま返さないのは規格違反。
そんなコンパイラ窓から投げ捨てろ。
0962デフォルトの名無しさん
NGNG0963デフォルトの名無しさん
NGNG結果的にDOS/Winではこれ以降stdinはEOFとなる。
0964(・∀・)イイ!!
NGNG0965デフォルトの名無しさん
NGNGということで解。
#include <stdio.h>
#include <ctype.h>
int main(void){int a,b='z'-'a'+1,c['z'-'a'+1]={0},d;while ((a=getc(stdin))!=EOF
)if(isalpha(a))c[tolower(a)-'a']++;for(d=0;d<b;d++)printf("%c:%d\n",'a'+d,c[d])
;return 0;}
0966デフォルトの名無しさん
NGNG0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNG趣味です。
0969デフォルトの名無しさん
NGNGもうちょい。
#include <stdio.h>
int main(void){int a,b[256]={0};while((a=getc(stdin))!=EOF)b[a]++;for(a='a';a<=
'z';a++)printf("%c:%d\n",a,b[a]+b[a+'A'-'a']);return 0;}
0970次スレテンプレ
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辺り】
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/
0971デフォルトの名無しさん
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
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974ぼるじょあ ◆yBEncckFOU
NGNG0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNGえりりんさんは今度がんばってください
0977デフォルトの名無しさん
NGNGぼるじょあがC/C++の宿題を片付けますYO! 37代目
http://pc5.2ch.net/test/read.cgi/tech/1103913840/
0978デフォルトの名無しさん
NGNG0979終了しますた。。。
NGNG0980デフォルトの名無しさん
NGNGクリスマスやってる坊さんは趣味でやってるのか
0981デフォルトの名無しさん
NGNGいつだったか卒塔婆をプリンターで
書いてるのみたことあるぞ
さすがに引いた
0982sonic
NGNG0983sonic
NGNG0984デフォルトの名無しさん
NGNGttp://www.oterasan.jp/html/01_01_otoba.html
これかw
>板塔婆印刷機 板塔婆プリンタ 塔婆プリンタ 厚物プリンタ
>板塔婆はもちろん経木(きょうぎ)や位牌(いはい)などへの印刷も可能となっております。
まさにITだなw
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGマゾですかあなたはw
0987デフォルトの名無しさん
NGNGみかいけつじゃなかった?
ひらがなすまそ。
0988デフォルトの名無しさん
NGNGまだ未解決のようだね。
0989デフォルトの名無しさん
NGNGどうすれば良いのでしょうか。
0990デフォルトの名無しさん
NGNG試行は無限にある訳だから、終了判定をどうすればいいのか・・・
俺には分からん。
0991デフォルトの名無しさん
NGNG4桁の10進数のそれぞれの桁を四則演算した解が10になる数、という事でしょ。
0992デフォルトの名無しさん
NGNG過去スレを探す。
0993デフォルトの名無しさん
NGNGだからさ、
1234ってあったら、無限回数計算できるでしょ。
1+2やったのに今度3足して、それに・・・って。
10に出来ないっていう判定はどうするの?
0994デフォルトの名無しさん
NGNGいったいどういうアルゴリズム考えているわけ?
0995デフォルトの名無しさん
NGNG1*2*3*4/3+2
こういうのも含むと思ってるのかしら
0996デフォルトの名無しさん
NGNGだからアルゴリズムが分からないんだってw
>>995
そう。含まないの?
0997デフォルトの名無しさん
NGNG>>995のは含まれない。なぜなら、>>995のは6つの数を使っているからだ。
0998デフォルトの名無しさん
NGNGあぁ、一つの数は1回か0回しか使えないって条件なのか。
了解。それなら出来る。
0999デフォルトの名無しさん
NGNGhttp://www.kashi.info.waseda.ac.jp/~kashi/lec2000/jsj/make10/
1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。