トップページ⇒tech
1001コメント309KB

暇な人がエレガントにC/C++の宿題片づけます 33代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
暇な人がエレガントにC/C++の宿題を片づけて見せます。
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか
・エラーは、その行とエラーの詳細を書きましょう。
エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10】
0153ジョンNGNG
>>152
#define MAX(a, b)(a) > (b) ? (a) : (b)
の?っていうのはどういうものですか?
0154デフォルトの名無しさんNGNG
if(a>b)
return b;
else
return a;
を総画
0155152NGNG
あー、小修正。
#define OUTPUT(x) printf("%d\n", (x)) /* 開始位置の出力(0オリジン) */
#define MAX(a, b) ((a) > (b) ? (a) : (b)) /* 大きいほうの数値を得るよくあるマクロ */
0156デフォルトの名無しさんNGNG
どうしてもわかりません。どなたかご教授ください。おねがいします!
f(x)=exp(-x^2)-sinx=0を2分法で根を求めるプログラムを作成せよ。
・初期値a,bをそれぞれ1,0とし、収束判定値eを5*10^-7とすること。
・コマンドライン引数として「-k」を与えると計算量を表示すること。
・計算結果はファイルに保存できるようにすること。
(実行例1)
C:\....\C>nibunpou
a=1
b=0
e=5E-7

出力ファイル名を入力してください。 > test.txt
c  n
----------------
1  0.5000000
2  0.7500000
3  0.6250000
4  0.6875000
5  0.6562500
・
・
・
20  0.6805983
(実行例2)
C:\....\C>nibunpou -k
a=1
b=0
e=5E-7

計算量は20回です。
0157デフォルトの名無しさんNGNG
言語はCです。お願いします。
0158デフォルトの名無しさんNGNG
>>156
どこがどう判らない?
全部丸ごと一分たりとも判らないなら死ね。
0159デフォルトの名無しさんNGNG
>>118
#include <locale>
#include <string>
#include <list>
#include <iostream>

int main() {
std::locale::global(std::locale("japanese"));
std::wstring wstr;
std::wcin >> wstr;
std::list<wchar_t> wclst(wstr.begin(), wstr.end());
wclst.reverse();
wstr.assign(wclst.begin(), wclst.end());
std::wcout<< wstr << std::endl;
}
0160デフォルトの名無しさんNGNG
>>156
#include <stdio.h>
#include <assert.h>
#include <math.h>
#include <string.h>
#define func(x) (exp(-pow((x),2))-sin(x))
int main(int argc, char **argv) {
double low=0, mid, high=1, ret;
double e = 5 * pow(10,-7);
int count = 0;

assert((func(low)<0&&func(high)>0) || (func(low)>0&&func(high)<0));
for (;;) {
count++;
mid=(low+high)/2;
if (fabs(ret=func(mid))<e)
break;
if (ret>0)
low = mid;
else
high = mid;
}
if (argc==2 && strcmp(argv[1],"-k")==0)
printf("%d times, ans: %f\n",count,mid);
else
printf("ans: %f\n",mid);
return 0;
}
完全に仕様には沿ってないけど、こんなもんでどう?
0161デフォルトの名無しさんNGNG
どうでもいいこと気にしてみたり。
#define func(x) (exp(-(x)*(x))-sin(x))
double e = 5e-7;
0162デフォルトの名無しさんNGNG
>>156
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=249
0163デフォルトの名無しさんNGNG
>double e = 5e-7;
完全に忘れてたよ(;´Д`)
0164156NGNG
>>160,>>161,>>162
丁寧にお答えいただき非常に助かりました。
ありがとうございます!
0165デフォルトの名無しさんNGNG
ここって大学の入試問題のプログラムとか面倒見てくれるの?
海外向け携帯電話の英文入力インターフェース作ってるんだけど
今日の昼までの期限なんですが未だ出来ておらず…
自宅受験なんですがカンニングではなく情報収集力のテストもかねられてるっぽいんで
ttps://www.52school.com/rits/ans_menu.jsp
とりあえず問題見て感想ぷりーず
0166デフォルトの名無しさんNGNG
↑みれない
0167デフォルトの名無しさんNGNG
↑へんなsはいってるぞ
ttp://www.52school.com/rits/ans_menu.jsp
0168デフォルトの名無しさんNGNG
おもしろそうだけど今日の昼までにはさすがに無理。
3日くらいほしいな。。
0169165NGNG
>>168
独創的なのを作ろうとして*ボタンを切り替えボタンにして、
キーボードのQWERTY配列をキーボード左から3×3マスずつカットして3分割したのを
*ボタンで切り替えてうつって方式やりたいんだけど
切り替えボタンのプログラムがわからないっぽ
0170165NGNG
キーボードの3×3カットの意味わかります?
こゆことです
パターン1

  1ボタン q 2ボタン w 3ボタン e

  4ボタン a 5ボタン s 6ボタン d

  7ボタン z 8ボタン x 9ボタン c
パターン2

1ボタン r 2ボタン t/ 3ボタン y

4ボタン f 5ボタン g 6ボタン h

7ボタン v 8ボタン b 9ボタン n
パターン3 

1ボタン u 2ボタン i 3ボタン o

4ボタン j 5ボタン k 6ボタン l

7ボタン m 8ボタン p 9ボタン 記号
0171デフォルトの名無しさんNGNG
マルチすんなボケ
0172デフォルトの名無しさんNGNG
>>165
オオ同じ穴の狢よw
ところで、オレはオーソドックスにToUpperを使って小文字を大文字に変換するプログラムを作ろうと思ってるんだけど

else if(SensePressedDuration(2) == LONG){//強く押された時
if (status == 10 ){//直前に入力された文字が10[a]なら
DeleteLetter();//[a]を削除し
DisplayLetter(ToUpper(10));     //大文字の[A]に変換、表示し ←ここがかなり間違ってる臭い・・
status = -1;//文字を確定する
}
でいのでしょうか・・・教えて偉い人・・・
0173デフォルトの名無しさんNGNG
>>172
終わりそう?
俺取扱説明書で死にそう。2000字もいかね
創意工夫点も1000字もいかねw
0174デフォルトの名無しさんNGNG
質問です。
配列に格納された文字列を1文字ずつ表示する関数。

void put_st(const char str[])
{
unsigned i=0;

while(str[i])
putchar(str[i++]);
}

これをprintf関数を用いるとコンパイルは出来るのですが、
実行途中でエラーがでます。
printf("%s",str[i++]);

なぜでしょうか?
どう直したらいいのでしょうか?

おねがいします。
0175173NGNG
>>172
else if(SensePressedDuration(2) == LONG){//強く押された時
ってPressedDurationは長さのやつやのにコメントが「長く」じゃなくて「強く」
になってんの?
0176デフォルトの名無しさんNGNG
>>169
配列とかでパターンごとのマップで持つくっといて、
'*'が押されたらマップを切り替えるようなものを作ってみたら?
0177デフォルトの名無しさんNGNG
>>165
マルチじゃねぇか。消えろ。

>>174
%sってなんだよ。
0178デフォルトの名無しさんNGNG
%sは文字列。この場合は%c。
0179デフォルトの名無しさんNGNG
>>176
アドバイスさんくすです。
それ考えてたんですが。パターンごとのボタン表示のプログラム(今は3つ繋げられないんでパターンごとに保存してます)
はできているんですが、マップとしてくくるためにどんなプログラム使えばよろしいでしょうか?
0180174NGNG
みなさんどうもありがとうございましたm(. .)m
すっきりしました。
0181デフォルトの名無しさんNGNG
>174

printf("%c",str[i++]);
じゃないの?あるいは
printf("%s",str+i);i++;
0182デフォルトの名無しさんNGNG
ランレングス符号化において、
効率よく圧縮を行う方法はどのようなものがありますか?

0183デフォルトの名無しさんNGNG
>>173
こっちに書き込むときに間違ってたw
本文は確かめたけどちゃんと短く長くになってた・・
取り扱い説明書は、いろんな所のマニュアルからひっぱってくればいいとおもうよ
創意工夫は・・・むずいw
0184ドシロウトかもしれない・・・NGNG
int SensePressedDuration(int ButtonNum)のくだりは合ってると思う
int ToUpper(int LetterNum)の使い方がちょっとわからなくて・・・
0185デフォルトの名無しさんNGNG
>>183
てか海外向けだから説明書は英語じゃなくていいのか?w
0186デフォルトの名無しさんNGNG
>>182
ランレングス法の問題点は、ランダムな文字列を符号化する場合
かえってサイズを大きくしてしまうことがある
そこで 「ここからn文字先までは符号化をしない――」 
ような情報を付加すれば、極端な膨張をおこさずに効率よく圧縮できる。
0187デフォルトの名無しさんNGNG
C言語:分割コンパイルの宿題

2つの値(実数)をキーボードから入力し、
それぞれ以下のことを行う関数を作成し画面に表示するソースコードを記述しなさい。
ただし、main()関数と以下の関数は別ファイルに記述し、ヘッダファイルmp用いること。
-�@加算 �A減算 �B乗算 �C除算
-�D大きいほうを出力 �E小さいほうを出力

よろしくお願いします。
0188デフォルトの名無しさんNGNG
誤字です、すいません
mp→も
0189デフォルトの名無しさんNGNG
>>185
もしそうだとしたら絶望的だ・・w
0190デフォルトの名無しさんNGNG
>>189
そんなときはExcite翻訳で。
#事後チェックを忘れずにw
0191デフォルトの名無しさんNGNG
エキサイト翻訳を使うのは初心者。
漏れみたい玄人は暗記パンを使う。
0192デフォルトの名無しさんNGNG
人の宿題をやってあげるなんて・・・。
なんていい人たちだ・・
0193デフォルトの名無しさんNGNG
教えたがり人種
0194デフォルトの名無しさんNGNG
CやC++のスレで宿題教えてと書くと邪魔だからこの隔離スレがあるのだよ
0195デフォルトの名無しさんNGNG
そしてスルーされる187
0196デフォルトの名無しさんNGNG
>>187
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "calc.h"
int main() {
  char Buffer[128];
  double Num[2];
  int i;
  for (i = 0; i < 2; i++) {
    printf("%dつめの数:", i + 1);
    fgets(Buffer, sizeof Buffer, stdin);
    Num[i] = atof(Buffer);
  }
  Add(Num);
  Sub(Num);
  Mul(Num);
  Div(Num);
  Max(Num);
  Min(Num);
  return 0;
}
0197デフォルトの名無しさんNGNG
//calc.c
#include <stdio.h>
#include "calc.h"

void Add(double d[]) {
  printf("加算:%f\n", d[0] + d[1]);
}

void Sub(double d[]) {
  printf("減算:%f\n", d[0] - d[1]);
}

void Mul(double d[]) {
  printf("乗算:%f\n", d[0] * d[1]);
}

void Div(double d[]) {
  printf("除算:%f\n", d[0] / d[1]);
}

void Max(double d[]) {
  printf("最大値:%f\n", d[0] > d[1] ? d[0] : d[1]);
}

void Min(double d[]) {
  printf("最小値:%f\n", d[0] < d[1] ? d[0] : d[1]);
}
0198デフォルトの名無しさんNGNG
//calc.h
void Add(double []);
void Sub(double []);
void Mul(double []);
void Div(double []);
void Max(double []);
void Min(double []);
0199デフォルトの名無しさんNGNG
>>197
0除算チェックは?
0200デフォルトの名無しさんNGNG
どうすべきか指定がないから、対応しようがないわな
0201Cの課題NGNG
#include <stdio.h>
int gi;
void main(void)
{
int i,gi=0;
void count();
printf("\t gi\t ai\t si\n");
for(i=0; i<3; i++){
count();
gi=gi+1;
printf("main()\t gi= %d\n",gi);
}}
void count(void)
{
int i, ai=0;
static int si;
for(i=0; i<3; i++){
printf("count()\t gi= %d\t ai=%d\t si=%d\n",gi,ai,si);
ai =ai+1;
gi =gi+1;
si =si+1;
}}
(1)以上のプログラムを実行し,表示結果を説明せよ。
また,main()の中と外で変数名giを誤って重複使用している。
この場合,コンピュータは重複した変数をどう扱ってると考えられるか。
(2)変数宣言のところで,自動変数のgiやaiを0に初期化しているが,
初期化を行わないとどうなるか。
なんだかよく分からないので、どなたか説明して下さい!お願いします。


0202デフォルトの名無しさんNGNG
(1)count関数を呼び、グローバル変数gi,自動変数ai,静的変数siを表示し、
  それぞれ+1する。これを3回繰り返しcount関数から戻る。
  自動変数giを+1して表示する。
  main関数内ではこの、「count関数を呼ぶ,自動変数giを+1して表示」を3回繰り返す。
  main関数内では、giは自動変数としてグローバル変数giとは別に扱われる。

(2)自動変数を初期化しないと、変数の内容は不定(なにが入っているか分からない)
  で開始される。
0203デフォルトの名無しさんNGNG
#include <stdio.h>
#defineVSIZE 256
#defineHSIZE 256
int im[VSIZE][HSIZE];
main ()
{
int i,j;
int c;
FILE *fp;
fp = fopen("カラー.psd","rb");
for(i=0;i<VSIZE;i++){
for(j=0;j<HSIZE;j++){
c = fgetc(fp);
im[i][j] = c;
}
}
fclose(fp);
fp=fopen("グレースケール.psd", "wb");
for (i=0;i<VSIZE; i++){
for(j=0;j<HSIZE;j++){
fputc(im[i][j],fp);
}
}
fclose(fp);
}
カラー画像をグレースケール画像に変換する式は分かったんですが
どうやって書いていいのか分かりません。
変換式 グレースケール = 0.299R + 0.587G + 0.114B
おねがいします
0204デフォルトの名無しさんNGNG
>>203
食事のあと入浴してから紅茶を飲んだ後に作ってあげるけれど、
言語はCでカラーのPSDフォーマットの画像をグレイスケールのPSDフォーマットの画像
に変換するんだね?
0205デフォルトの名無しさんNGNG
C++でもOK?
0206203NGNG
>>204 グレースケールは.rawに
>>205 OK
0207デフォルトの名無しさんNGNG
>>165がどんな問題だったのか教えてくれorz気になって眠れん(´д`)
0208デフォルトの名無しさんNGNG
PSDってどんな形式だっけ…。
0209デフォルトの名無しさんNGNG
>>208
ホトショップ
0210デフォルトの名無しさんNGNG
変換式がわかっててなんでかけないんだろう……
0211デフォルトの名無しさんNGNG
psdって、レイヤー情報も持ってるんじゃなかったっけ?
単純に>203みたいには読めないと思うのだけど。
0212デフォルトの名無しさんNGNG
PSDフォーマットの詳細がみつからないんだけど、
だれか知らない?
0213デフォルトの名無しさんNGNG
psdの仕様が教えられている or 仕様書を貰っている
でもなきゃ、そんな宿題でないはず…。
0214デフォルトの名無しさんNGNG
ちょっとお聞きしたいのですが、C言語の
関数からで.midiの再生をするプログラムを作ることは可能ですか?
.wavの再生にはPlaySound関数を使ってるのですがwavはファイルサイズ
が大きすぎて人に渡すプログラムを作るときに困ってしまいます。
もし再生する方法をどなたかご存じでしたらお願いします。


0215デフォルトの名無しさんNGNG
>>214
とてもすれ違いです
0216デフォルトの名無しさんNGNG
ふーん、宿題スレは誘導されなかったのに敢えてマルチとはねぇ。
0217デフォルトの名無しさんNGNG
調べた方が早い上に労力もいらないだろうに
0218デフォルトの名無しさんNGNG
216>>ついてきたか
217>>アフォだからわかんなかったんだよ
0219デフォルトの名無しさんNGNG
>>203
ttp://www.wotsit.org/download.asp?f=psd3_4
0220デフォルトの名無しさんNGNG
>>219
うへっ、めんどくせ。>204は満漢全席でも食べに行ったのか、一向に仕上がってこないから
フォーマットが来たことだしちょっとやってみようかと思ったら……
ImageMagickでも拾ってこいって感じだな。
0221デフォルトの名無しさんNGNG
ポインタについて易しく書いてあるサイトありませんか?・・・
0222デフォルトの名無しさんNGNG
ttp://www.plus-vision.com/jp/product/laserpointer/laserpointer.html
ttp://pya.cc/pyaimg/pimg.php?imgid=7198
ttp://www9.plala.or.jp/sgwr-t/

つーかググッたら結構出るだろうし、
ポインタ関連ならC専門スレのほうが的確(ここもスレ違いではないが)
0223デフォルトの名無しさんNGNG
基礎的な事はサイトに頼る前に本買ってじっくり読めと思うが。

推薦図書/必読書のためのスレッド PART 20
http://pc5.2ch.net/test/read.cgi/tech/1097627740/l50
0224デフォルトの名無しさんNGNG
ポインタの理解が変な人って、大抵メモリがイメージできてないんだよね
0225デフォルトの名無しさんNGNG
目盛りですか?
軽量カップみたいなものを想像すればよろしいのでしょうか?
それとも、メジャーみたいなもののほうがいいのでしょうか?
0226デフォルトの名無しさんNGNG
軽量カップですか?
NASAが開発した新素材かなんかを想像すればよろしいのでしょうか?
0227デフォルトの名無しさんNGNG
昼間は厨房ばかりだな。つまんねーんだよ
0228デフォルトの名無しさんNGNG
もう夕方だ
0229デフォルトの名無しさんNGNG
クワガタ
0230常識人NGNG
厨房ですか?
厨房は確かに、私のスーパープログラムの作成を阻害し、
またそれにより、私のスーパープログラムを、お目にかかることのできなくなった
このスレの住人には大損失です。
ですか、そもそも宿題を丸投げする人種は厨房なのです。
自分に利益をもたらす厨房(自己満足、優越感、技術向上を与えてくれる)は、歓迎し、
そうでない厨房(ネタレスをする厨房)は貶める。これはただのわがままです。
つまり、厨房ということになります。
厨房をこのスレでは許容すべきです。

お前が厨房だという意見は受け付けないので悪しからず。

0231デフォルトの名無しさんNGNG
ほんたま?とはキャラ違うか
0232デフォルトの名無しさんNGNG
> またそれにより、私のスーパープログラムを、お目にかかることのできなくなったこのスレの住人には大損失です。
日本語の勉強をしましょう
0233デフォルトの名無しさんNGNG
優越感なんて感じるかよ・・・・こんな糞簡単な質問ばかりで・・・・・・
そりゃあ、君にはかなり難しいかもしれないがな・・・・
0234常識人NGNG
批判は受け付けません。以上。
0235デフォルトの名無しさんNGNG
まあコピペなんだがな。
0236デフォルトの名無しさんNGNG
常識人さん。
またあなたですか?
どうして、あなたはわざわざ、長文を書いてまでこのスレを荒らすのです?
スーパープログラムですって?なんですか、スーパーって?
プログラマー以前に、人間として恥ずかしくないのですか?
もし、私だったらそんな生き恥をさらす前に、死を選ぶところです。
常識人さん。
わたしはこれまであなたに、「もう来ないで下さい」
そう言い続けてきました。
ですが、今日はあえて言わねばなりますまい。

常 識 人 死 ね。
0237デフォルトの名無しさんNGNG
それもコピペなんだがな。
0238デフォルトの名無しさんNGNG
コピペではないだろうが
>>236
お前は少し言いすぎなんじゃねーの?
”死ね”なんて軽々しく人に対して言っていいもんじゃない。
せめて”氏ね”とかにして”死”という字を使わないのが2ちゃんの常識。
そういう意味でお前は常識知らず。常識人のほうが
常識を持っている分だけまし。
もうこないでほしいのはお前のほうだ。常識人は、宿題が枯渇しているときの
俺たちの心のオアシス。
水がなければ俺たちは死ぬ。>>236、お前は俺たちを殺すつもりか?
殺される前に、俺はお前のことを警察に通報するつもりだ。


0239デフォルトの名無しさんNGNG
これもコピペなんだがな。
0240 NGNG
数系変換プログラムをつくってくれませんか?
0241デフォルトの名無しさんNGNG
>>240
template< T_>
int henkan( T_ arg_ ){
    return 1;
}
0242デフォルトの名無しさんNGNG
ここではレポートの書き方とか質問しても大丈夫ですか?
0243デフォルトの名無しさんNGNG
言いわけねーだろ
0244デフォルトの名無しさんNGNG
よしのぶもちょっときてるな。
古田もきてるしな。
0245デフォルトの名無しさんNGNG
>>243
C言語の課題のアルゴリズムを書かなくちゃいけないレポートなんですけどそれでもダメですか?
0246デフォルトの名無しさんNGNG
>>245
問題見て判断
0247デフォルトの名無しさんNGNG
この問題が分かりません。どなたかお願いします。
1.要素の数256の文字型配列str1, str2を宣言する。gets 関数を使ってstr1にキーボードから文字列を入力し、
ポインタを使ってその文字列をstr2にコピーするプログラムを作りなさい
2.入力された英文字列を、すべて大文字に変換して出力するプログラムを、
ポインタを使って作りなさい。
0248デフォルトの名無しさんNGNG
>>247
関係者ですが、自分でやりなさい。
0249デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=322

このプログラムを基にポーカーの役判定アルゴリズムを完成させてください。
※トランプ52枚のカードはスペードのエースが0…スペードのキングが12…
そしてクラブのキングが51というように整数で表します。ジョーカーはなしです。
0250デフォルトの名無しさんNGNG
>249

もちとまともなのを基に汁!
0251デフォルトの名無しさんNGNG
>>247
1
#include <stdio.h>
int main(void)
{
char str1[256], str2[256], *p1 = str1, *p2 = str2;

printf("str1:");
gets(str1);
while (*p2++ = *p1++) ;
printf("str2:%s\n",str2);
return 0;
}
2
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char str[256], *p = str;
gets(str);
while (*p) *p++ = toupper(*p);
printf("%s\n", str);
return 0;
}

0252デフォルトの名無しさんNGNG
>>249
ポーカーのルールがわからない俺は(ry
■ このスレッドは過去ログ倉庫に格納されています