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

C/C++の宿題を片付けます 107代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG?2BP(417)
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう.
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】 http://www.linux.or.jp/JM/index.html
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 106代目
http://pc11.2ch.net/test/read.cgi/tech/1209810861/
0232デフォルトの名無しさん2008/05/20(火) 13:19:11
// >>231
// 「キーボードから入力」と「画面に出力」が標準入出力のことじゃないならしらね。
#include <iostream>
int main()
{
int height;
int weight;
std::cin >> height >> weight;
std::cout << weight / (height / 100.0 * height / 100.0);
return 0;
}
02331612008/05/20(火) 14:45:22
すいません、寝落ちしていました。
えっと、ここにc++版があります。
http://www.cs.umd.edu/~mount/ANN/
力不足なことに、私はc++を全く理解することができません。理解は時間があればできそうですが、時間が足りません(汗

>今、最近傍探索を調べているのですが、意味がよくわからないところがありますので、教えていただけますでしょうか。
>1) k次元(ユークリッド)空間R^k 内にデータが n個散らばっている。
>2) ここに、点P がある。
>3) 点P にもっとも「近い」データを探し出したい。
>というのが最近傍探索で、問題のアルゴリズムは、
>4) , 3) でもっとも近いデータを探すのに「n 個のデータすべてについて距離を求め、一番距離が小さいものを求める」のは計算量が多くて大変!
>5) そこで、とりあえず適当なデータQ と P との距離dを求め、
>6) 辺の長さが 2d, 中心がP, 辺は座標軸に平行である k次元立方体 S を考え、
>7) 領域探索アルゴリズムにて S 内にあるデータをすべて列挙し、
>8) S 内のデータすべてと P との距離をそれぞれ求めて、一番距離小さいものを求める
>ということでしょうか。
最近傍探索の考えはあっています。
ですが
5)まずkd木を探索して、点Pがどの立方体に所属するかどうかをさがし、その立方体の中に入っている点Q と P との距離dを求め超球を書く
6)超球に接している立方体、超球の中にある立方体をすべてリストアップする
7) 領域探索アルゴリズムにて 立方体群内にあるデータをすべて列挙し、
8) 立方体群内のデータすべてと P との距離をそれぞれ求めて、一番距離小さいものを求める
のうち領域探索アルゴリズムがわかりません。
どのようなアルゴリズムを組めば計算量が少なくて済むのか知恵を御借りしたいと考えて質問させていただきました。

0234デフォルトの名無しさん2008/05/20(火) 14:47:52
[1] C++
[2] 以下の処理を順に行うプログラムを作成しなさい。

>232 ありがとうございました!
まだ問題があったのでまたよろしくお願いします!
1. キーボードから整数を入力する。
2. 入力された整数が3の倍数のとき,
画面に「3の倍数です」と表示する。
[3] 環境
 [3.1]Windows
 [3.2]VC
 [3.3]C++
[4]5月27日 17時まで
[5]なし。
0235デフォルトの名無しさん2008/05/20(火) 14:55:48
>>234
if ( 入力 % 3 == 0 )
{
出力 3の倍数です
}

>>232 の内容と組み合わせて作りな
0236c言語素人 ◆K0sCe6ES.U 2008/05/20(火) 16:05:08


[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):
各自で、カラー自然画像(出来れば画像中のオブジェクトが豊かな物)をみつけ、
kmeansによって画像中の要素を分類せよ。さらに、分類の数を変えながら、変化を観察せよ。(原文のまま)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限: 2008年5月23日 13:00まで
[5] その他の制限: 制限は特にありません。

ppmフォーマットの画像を読み込んで分類する(クラスター分析?)プログラムと言われたのですが、さっぱりわからないです・・・orz
どうかみなさんご協力おねがいしますm(_ _)m
02371612008/05/20(火) 16:05:14
>173
ちなみに、233で書いたやつがANNという手法です。

ちなみに
>4) , 3) でもっとも近いデータを探すのに「n 個のデータすべてについて距離を求め、一番距離が小さいものを求める」のは計算量が多くて大変!
>5) そこで、とりあえず適当なデータQ と P との距離dを求め、
>6) 辺の長さが 2d, 中心がP, 辺は座標軸に平行である k次元立方体 S を考え、
>7) 領域探索アルゴリズムにて S 内にあるデータをすべて列挙し、
>8) S 内のデータすべてと P との距離をそれぞれ求めて、一番距離小さいものを求める
にあるように、超球の中にある点すべてについて探索するというのでは、結局全点について距離を比較しないといけなくなるので、
結局n^2の話になってしまいます。
kd木のnlognをスポイルしたくないというのはここに絡んできます。
ANNのこの手法が理解できればいいのですが…
ちなみに期限が延びましてあと2日になりました。
最悪223に書いたサイトからソース引っ張ってきてcで書いた私のソースとc++で書かれているソースをドッキングして性能を確かめることを考えていますが…
0238デフォルトの名無しさん2008/05/20(火) 17:45:01
c++でお願いします。
このtxtに追加して提出するように言われました。
助けてくれる方お願いします。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6619.txt
0239デフォルトの名無しさん2008/05/20(火) 17:54:20
>>238
何その頭の悪そうな日本語もまともに書けていない問題。
おまけに、C++でお願いされる内容がC言語理解度確認って何さ。
挙句の果てに、「文字列変数」ってstd::stringじゃないのかよ。
0240デフォルトの名無しさん2008/05/20(火) 17:55:25
Cには文字列変数はありません
0241デフォルトの名無しさん2008/05/20(火) 17:59:18
正の値である間ループし、負になったらループを抜けるって0になったらどうすんだよw
0242デフォルトの名無しさん2008/05/20(火) 18:23:06
正の0ならループして負の0ならループを抜けるんだろう。
0243デフォルトの名無しさん2008/05/20(火) 19:16:37
>>238
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6621.c
これで間違いなく優だぜb
0244デフォルトの名無しさん2008/05/20(火) 19:21:41
>>243
you 要修正
0245デフォルトの名無しさん2008/05/20(火) 19:36:23
>>243
問10の回答って再起呼び出し? LISP?
0246デフォルトの名無しさん2008/05/20(火) 19:37:08
[1] 授業単元:C言語2
[2] 問題文int型変数x,yをキーボードから値を入力し、その大小を判定する関数funcを作成せよ
[3] 環境
 [3.1] OS: xp
 [3.2] コンパイラ名とバージョン: VC 6.0だと思います
 [3.3] 言語: C
[4] 期限:今週中
[5] その他の制限: ポインタを使用する
お願いしますm(_ _)m
0247デフォルトの名無しさん2008/05/20(火) 19:40:36
その辺ってさすがに自分でやったほうがよくね?

包丁でたまねぎを半分に切るのはどうすれば?っていう、そんなかんじ。
0248デフォルトの名無しさん2008/05/20(火) 19:52:50
>>245
再帰
0249デフォルトの名無しさん2008/05/20(火) 19:53:55
>>246
int func(int* x, int* y){
if (*x > *y) {
return 1;
} else if (*x < *y) {
return -1;
}
return 0;
}

一応こんな感じで作ってみた。
まぁ>>247の言う通りこの位自分でやるべきだとは思ったけどもね
0250デフォルトの名無しさん2008/05/20(火) 19:55:11
ってかもうマクロの世界だよな

#define MAX_VAL(x,y) return(x>y?x:y)

初めて引数付きマクロ書いた
動くか分からん
0251デフォルトの名無しさん2008/05/20(火) 19:55:44
int func(int* x, int* y){
if (*x > *y) {
return 1;
} else if (*x < *y) {
return -1;
}
return 0;
}
0252デフォルトの名無しさん2008/05/20(火) 21:13:49
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):
入力された数値を\とカンマ区切りに編集する関数YenConvertを作成せよ。

int YenConvert(int kingaku,int mode,char *buffer,int result);

引数1:編集用の数値(4桁以上でかつint型の範囲内の入力のみと仮定)
引数2:編集モード
 1:引数1の先頭に\を付ける(1000→\1000)
 2:引数1の先頭に\を付け、カンマを挿入(1000→\1,000)
引数3:数値編集の格納領域アドレス
引数4:引数3のアドレス先の領域サイズ

戻り値は正常:0 モード誤り:-1 編集用領域不足:-2

[3] 環境
 [3.1] OS:XP(自宅) / Vista(実習室)
 [3.2] コンパイラ名とバージョン:VC6.0
 [3.3] 言語: C言語
[4] 期限:(0時を挟むので)明日 午前2時頃
[5] その他の制限:特にありません。

春季基本情報合格祝いという名目で、ポインタなんて名前しか知らないのに課題が出ました…。
無茶と失礼は承知の上で、寝るまでの期限でお願い致します。
0253デフォルトの名無しさん2008/05/20(火) 21:16:49
度々すいません、>>252です。
記述漏れとミスがあったので訂正します。

int YenConvert(int kingaku,int mode,char *buffer,int bufferlen)

[5] その他の制限:YenConvertでは編集のみ。mainで値から編集した文字列の出力も行なうこと。
0254デフォルトの名無しさん2008/05/20(火) 22:23:17
[1] 授業単元:C言語実習
[2] 問題文(含コード&リンク):for文を使ってひし形の作成せよ。
[3] 環境
 [3.1] OS:Windows vista
 [3.2] コンパイラ名とバージョン: 通常使用のPCがないのでわからないです。
 [3.3] 言語:C
[4] 期限: 金曜日まで
[5] その他の制限:配列使用不可

少し考えてみたソースです。
下半分がどうもできません。
#include <stdio.h>
void main(void) {
int dan,j,k;
for (dan=1; dan<=9; dan=dan+2){
for(j=1; j<=9-dan; j=j+2){
printf(" ");
}
for(k=1; k<=dan*2-1; k=k+2){
printf("*");
}
printf("\n");
}
}
0255デフォルトの名無しさん2008/05/20(火) 22:25:29
>>254
#include <stdio.h>
#include <stdlib.h>
#define min(x, y) (x<y)? x : y
int tmp;
#define list(n, s) for( tmp=n; tmp-- >0; ){ printf("%s",s); };

int main(void) {
const int dan=9;
int i;
for( i=0; i<9; i++ ){
list((abs(dan/2-i))," ");
list((min(i,dan-i-1))*2+1,"*");
puts("");
}
return 0;
}
0256デフォルトの名無しさん2008/05/20(火) 22:27:01
>>239みたいなのが日本語も頭も悪そうに見えるんだが・・・
言動には注意した方が良いぞ。
0257デフォルトの名無しさん2008/05/20(火) 22:49:38
>>255
ありがとうございました。
自分の説明不足なのですが、254のレスに書いた感じのソースで下半分作りたいのでそれと同じようなソースでお願いしたいのですが…。
0258側近中の側近 ◆0351148456 2008/05/20(火) 22:54:35
>>196
(っ´▽`)っ サンクス☆(抱

>>198
(っ´▽`)っ
partMatrix:部分行列
minorDeterminate:小行列式
getDeterminantの第1引数に行列のポインタ、第2引数にその行列の行数、第3引数に列数を設定する。
行列式を求めるわけだから、第2引数と第3引数は同じでなければならない。

4x+6y+2z=4000,2x+8y+6z=5000,6x+4y+4Z=4200の解は、クラメルの公式より、
x=({{4000, 6, 2}, {5000, 8, 6}, {4200, 4, 4}}の行列式)/({{4, 6, 2}, {2, 8, 6}, {6, 4, 4}}の行列式)
y=({{4, 4000, 2}, {2, 5000, 6}, {6, 4200, 4}}の行列式)/({{4, 6, 2}, {2, 8, 6}, {6, 4, 4}}の行列式)
z=({{4, 6, 4000}, {2, 8, 5000}, {6, 4, 4200}}の行列式)/({{4, 6, 2}, {2, 8, 6}, {6, 4, 4}}の行列式)

2w+1x+4y+3z=5,3w+2x+5y+0z=0,4w+3x+2y+1z=3,5w+0x+3y+2z=0の解は、クラメルの公式より、
w=({{5, 1, 4, 3}, {0, 2, 5, 0}, {3, 3, 2, 1}, {0, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
x=({{2, 5, 4, 3}, {3, 0, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
y=({{2, 1, 5, 3}, {3, 2, 0, 0}, {4, 3, 3, 1}, {5, 0, 0, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
z=({{2, 1, 4, 5}, {3, 2, 5, 0}, {4, 3, 2, 3}, {5, 0, 3, 0}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
0259側近中の側近 ◆0351148456 2008/05/20(火) 22:55:19
>>207
(っ´▽`)っ
ほうほう・・・もっと勉強しよっと☆ありがと♥(抱
0260デフォルトの名無しさん2008/05/20(火) 22:56:02
菱形ってことだから、斜めに配置しないでこんなんでいいじゃん。
*********
*********
*********
*********
*********
*********
*********
*********
*********
02611392008/05/20(火) 23:08:26
>>258
自分の説明不足みたいでごめんなさい。

  一般の連立1次方程式の解法プログラムを作成しなさい

って問題なので、最終的に
2w+1x+4y+3z=5,3w+2x+5y+0z=0,4w+3x+2y+1z=3,5w+0x+3y+2z=0の解は、クラメルの公式より、
w=({{5, 1, 4, 3}, {0, 2, 5, 0}, {3, 3, 2, 1}, {0, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
x=({{2, 5, 4, 3}, {3, 0, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
y=({{2, 1, 5, 3}, {3, 2, 0, 0}, {4, 3, 3, 1}, {5, 0, 0, 2}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)
z=({{2, 1, 4, 5}, {3, 2, 5, 0}, {4, 3, 2, 3}, {5, 0, 3, 0}}の行列式)/({{2, 1, 4, 3}, {3, 2, 5, 0}, {4, 3, 2, 1}, {5, 0, 3, 2}}の行列式)

のような行列式を出力を期待しているのではんく、w=1,x=100,y=1000,z=10000などのように出力するのではないでしょうか?
せっかく作ってもらったのに文句言ってすいません。
0262デフォルトの名無しさん2008/05/20(火) 23:16:37
>>252
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6625.txt
0263デフォルトの名無しさん2008/05/20(火) 23:43:36
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
"end"が入力されるまでキーボードから入力を受付け、入力されたらそれを入力の逆順に表示する。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2008年5月22日22:00まで
[5] その他の制限:charのポインタを対象としたスタックを使う

よろしくおねがいします。
0264デフォルトの名無しさん2008/05/21(水) 00:04:45
[1] 授業単元:プログラミング�T

[2] 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6626.txt
[3] 環境
 [3.1] OS:(WindowsXP)
 [3.2] コンパイラ名とバージョン:VC++2005
 [3.3] 言語:C++
[4] 期限:5月23日
[5] その他の制限:問題文中に記載してあります。


   よろしくお願いしますm(__)m 。
0265デフォルトの名無しさん2008/05/21(水) 00:11:21
>>263
問題がわからん
0266デフォルトの名無しさん2008/05/21(水) 00:16:49
>>264
#include<stdio.h>
#include<math.h>

#define PI 3.14159

int main(void){
int alpha, degree;
double theta;

printf("終了する角度を入力してください ");
scanf("%d", &alpha);

for(degree=0;degree<=alpha;degree+=5){
theta=PI*degree/180;
printf(" 角度θ= %d°sinθ= %.5f cosθ= %.5f\n", degree, sin(theta), cos(theta));
}
return 0;
}
02672662008/05/21(水) 00:17:29
間違えた。言語指定C++じゃん
0268デフォルトの名無しさん2008/05/21(水) 00:39:00
>>265
入力されたものをプッシュして、
endが入力されたらポップした順番に表示すればいいみたいです。
0269デフォルトの名無しさん2008/05/21(水) 00:42:32
>>268
文字単位、行単位?
0270デフォルトの名無しさん2008/05/21(水) 00:43:31
>>268
行単位です。何度もすみません。
0271デフォルトの名無しさん2008/05/21(水) 00:49:40
>>257
これで良いかな?

#include <stdio.h>
void main(void) {
int dan,j,k;
for (dan=1; dan<=9; dan=dan+2){
for(j=1; j<=9-dan; j=j+2){
printf(" ");
}
for(k=1; k<=dan*2-1; k=k+2){
printf("*");
}
printf("\n");
}

for (dan=7; dan>0; dan=dan-2){
for(j=1; j<=9-dan; j=j+2){
printf(" ");
}
for(k=1; k<=dan*2-1; k=k+2){
printf("*");
}
printf("\n");
}
}
0272デフォルトの名無しさん2008/05/21(水) 00:52:16
>>264
#include <iostream>
#include <iomanip>
#include <cmath>
#define PI 3.14159
using namespace std;
int main(){
double alpha, r=5.0;
cout << "終了する角度を入力してください " ; cin >> alpha;
cout << showpoint << setprecision(5);
for(double i=0; i <= alpha ; i += r)
cout << "角度θ= "<< (int)i << " sinθ= " << sin(i*PI/180) << " cosθ= " << cos(i*PI/180) <<endl;
}
02732642008/05/21(水) 01:09:19
>>272
>>266

結果確認しました。
ありがとうございましたm(__)m
0274デフォルトの名無しさん2008/05/21(水) 01:14:35
>>252
とりあえずカンマ入れるモードだけ作った。

int YenConvert(int kingaku, int mode, char *buffer, int result)
{
int min_buf_size, tmp, sign, digit;
char *p;

/* */
if (!buffer) return -3;

/* mode check */
if (mode != 1 && mode != 2) return -1;

/** calc required buf size by kingaku **/
/* get sign */
sign = kingaku < 0 ? -1: 1;
/* abs */
kingaku = kingaku < 0 ? -kingaku : kingaku;
/* digit */
tmp = kingaku / 10;
digit = 1;
while(tmp > 0) {
digit++;
tmp /= 10;
}
/* buf size */
min_buf_size = 1; /* nul terminator */
if (sign == -1) min_buf_size++;
min_buf_size += digit + (digit-1)/3;
0275デフォルトの名無しさん2008/05/21(水) 01:15:18
>>274 つづき

/* check buf size */
if (result < min_buf_size) return -1;

p = buffer + min_buf_size;
*(p--) = '\0';
tmp = 0;
while (1) {
*(p--) = (kingaku % 10) + '0';
kingaku /= 10;
digit--;
tmp++;
if (digit <= 0) break;
if ((tmp) % 3 == 0) (*p--) = ',';
};

*(p--) = '\\';
if (sign == -1) *(p--) = '-';
}
0276デフォルトの名無しさん2008/05/21(水) 01:20:46
>>263
#include <stdio.h>
#include <string.h>

#define TRUE 1
int main(void);

int main(){
char s[100][100];
int i=0;
while(TRUE){
fgets(s[i],100,stdin);
if(strcmp(s[i],"end\n")==0){break;}
i++;
}
for(;i>=0;i--){
printf("%s",s[i]);
}
return 0;
}
0277デフォルトの名無しさん2008/05/21(水) 01:26:48
>>263
スタックにつむならこうだろ常識的に考えて

#include <stdio.h>

int func()
{
char s[100];
fgets(s, 100, stdin);
if (strcmp(s, "end\n") == 0) return;
func();
printf("%s", s);
}

int main(void)
{
func();
}
0278デフォルトの名無しさん2008/05/21(水) 01:35:03
>>252
int YenConvert(int kingaku,int mode,char *buffer,int result)
{
char work[20], *p=work;
char *fmt[][2]={{NULL, NULL}, {"%d", "%03d"}, {"%d", ",%03d"}};
int div, kingaku_abs;

if(mode!=1 && mode!=2) return -1;
kingaku_abs=abs(kingaku);
*p++='\\';
for(div=1;kingaku_abs/div>=1000;div*=1000);
p+=sprintf(p, fmt_set[mode][0], kingaku/div);
for(div/=1000;div>0;div/=1000) p+=sprintf(p, fmt[mode][1], (kingaku_abs/div)%1000);

if(strlen(work)+1>result) return -2;
strcpy(buffer, work);

return 0;
}
0279デフォルトの名無しさん2008/05/21(水) 01:39:40
>>263
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6627.txt
0280デフォルトの名無しさん2008/05/21(水) 01:45:57
>>277
その発想はなかったwww
0281デフォルトの名無しさん2008/05/21(水) 01:51:29
>>252です。
この時間まで足掻いても先頭に\付けるだけで精一杯…。
お答え頂いた>>262 >>274-275 >>278の方々に感謝します。
講師に何を言おうか考えつつ寝ます。遅くまでありがとうございました。
0282デフォルトの名無しさん2008/05/21(水) 01:57:14
>>277
うはwたしかにそうだわww
0283デフォルトの名無しさん2008/05/21(水) 02:07:22
>>252
おっと、時間切れか?
int YenConvert(int kingaku, int mode, char *buffer, int result)
{
char work[30], *p0 = work, *p;
if(mode != 1 && mode != 2 ) return -1;
*p0++ = '\\';
if(kingaku < 0) {
*p0++ = '-';
kingaku = -kingaku;
}
sprintf(p0, "%d", kingaku);
if(mode == 2) {
for(p=p0+strlen(p0); p>p0+3; p-=3) {
memmove(p-2, p-3, strlen(p-3)+1);
p[-3] = ',';
}
}
if(strlen(work)+1 >= result) return -2;
strcpy(buffer, work);
return 0;
}
0284デフォルトの名無しさん2008/05/21(水) 02:16:02
CやC++、PASCALやDelphiとかの構造化プログラミング言語流の
スタックアーキテクチャーにあんまし慣れすぎないほうがいいと思うぞ
特に10代からCとかやってた奴は。5年はプログラムから離れて
適当に忘れたほうがいい。

(本来は30・40代から始めても遅くないというか、むしろ相応しい
ものなんだけどね==>C言語)
0285デフォルトの名無しさん2008/05/21(水) 02:38:48
>>284
なぜそう思うのか教えていただきたいです。
0286デフォルトの名無しさん2008/05/21(水) 02:50:09
宿題に関係ないから出てけ
0287デフォルトの名無しさん2008/05/21(水) 02:55:52
オブジェクト指向でコードが書けなくなっちゃうから、とか言い出しそうな
雰囲気だな。
0288デフォルトの名無しさん2008/05/21(水) 02:57:08
>>284
頭大丈夫?
0289デフォルトの名無しさん2008/05/21(水) 05:23:10
>>288みたいな人を>>284は心配しているのだと思う
0290デフォルトの名無しさん2008/05/21(水) 05:28:43
あぁ、まぁ人それぞれだ。主観でモノを言っても話にならないんで
具体的にどういうことなのか?そんなのは扱ってみりゃ分かる
0291デフォルトの名無しさん2008/05/21(水) 06:31:18
使えてれば何の問題もないと思うんだが。

それよりも他に気にすることはあるだろ。
0292デフォルトの名無しさん2008/05/21(水) 06:35:44
     i:::::::::::::i:::::::;:::::::::::::::::::::::::/i:::::/ i::::::::::::::::::::::|
     |::::::::::::|:::::/::::::::::;:::::::::/ /:::/  i::::::i:::::::::::::i たとえば『地球温暖化』だ。
     |:::::::::::|:::::i:::::::/::::/  /:::/   |::::|:::::::::::/ CO2排出量増加による地球温暖化は常識だね?
     ∨:::::::|::::|:::::イ:::/   /:::/    |::::|:::::::::/ そう、常識だ。いや、常識だと多くの人々が思っている。
      ∨:::::|:::| ̄ナナ=、  /::Zz=='"T:T|:::::::/  だが、実はCO2が地球温暖化の原因だという証拠は無いんだよ。  
      ∨:::|::|::ャ代戌ナ= // 弋戌テT:ァi::::::/   そもそも地球温暖化という現象は仮説に過ぎない。 
       ∨:::i:i/ i/     /      i/./:::::/,_,, そう主張する人も少なくない。
       rヤ::::|i. !    /       /i::::::ハ Y  ふっ、どうも私は口下手で困るよ。
      ,,イrヤ::::|ゝ.      i     / ,イ::::< .〉 .ト、 つまり常識を疑えということだ。
    rイ! レヤ:::|i .ゝ.   _ _     .イ.|:::/ ソ  ! ト‐、
>ー''フ/''|  | ヤi::| i .|\      // |::/ /    ト、 `ー、
   / i   i ャヤi j  > 、  //./  |:i /    | Y
0293デフォルトの名無しさん2008/05/21(水) 06:43:23
そーゆー問題じゃなくて、Webアプリケーション化の流れは
速度は遅いが着実にそちらの方向に流れてるということだ。
0294デフォルトの名無しさん2008/05/21(水) 06:53:18
ナイナイ
0295デフォルトの名無しさん2008/05/21(水) 07:19:50
[1] 授業単元:プログラミング
[2] 問題文ライフゲームを作成せよ
[3] 環境
 [3.1] OS: XP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: (
[4] 期限: 今週中(できるだけ早めでお願いします)
[5] その他の制限:特になし
0296デフォルトの名無しさん2008/05/21(水) 07:20:51
↑言語はCでお願いします
0297デフォルトの名無しさん2008/05/21(水) 07:23:47
地球おんかんばは天文学的な話にもなるかもしれん。まぁ、何が原因かはともかく
過去の気象データと比較して、平均気温が上がった場所、局地的に熱くなった
あるいは寒くなった場所、今まで冬を越さなかった生き物が長々と生息して
生態系が変わるとか、色々とありますからね・・・何が自然か?まぁ俺の戯言はこの辺でw
0298デフォルトの名無しさん2008/05/21(水) 07:24:28
>>295
ライフゲームって、人生ゲームみたいなテーブルゲームを文字ばかりで作れと?
0299デフォルトの名無しさん2008/05/21(水) 07:26:42
Conway'sLifeGameだろ。JK
0300デフォルトの名無しさん2008/05/21(水) 07:30:15
訂正。Conway's Game of Life だった。
0301デフォルトの名無しさん2008/05/21(水) 08:30:53
>>295
仕様があいまいすぎwww
もっと担当者と要求仕様詰めてから出直せwwww
0302デフォルトの名無しさん2008/05/21(水) 09:16:47
#include<stdio.h>
#define JUMYOU 82
int main(void){
int age=0;
char ch='\0';
printf("年齢%d歳:出生",age);
age++;
getchar(&ch);
while(age<JUMYOU){
printf("現在の年齢%d歳",age);
getchar(&ch);
age++;
}
printf("年齢%d歳:ご臨終",age);
puts("あなたは寿命を全うしました。");
return(0);
}
0303デフォルトの名無しさん2008/05/21(水) 12:09:04
[1] 授業単元: C言語 for文
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6629.txt
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: CygnusVer.2.02.1
 [3.3] 言語: C
[4] 期限: ([2008年5月22日17:00まで]
[5] その他の制限:for文使用。

よろしくお願いします!
0304デフォルトの名無しさん2008/05/21(水) 12:13:59
>>303
#include <stdio.h>

int main(void){
int i, j, n;

printf("段数を入力してください:");
scanf("%d", &n);

for(i=0;i<n;i++){
for(j=0;j<n-1-i;j++) printf(" ");
for(j=0;j<i*2+1;j++) printf("*");
printf("\n");
}
return 0;
}
0305デフォルトの名無しさん2008/05/21(水) 12:24:06
>>304
ありがとうございます!!
0306デフォルトの名無しさん2008/05/21(水) 12:26:26
>>303
左右が対象には見えないw
0307デフォルトの名無しさん2008/05/21(水) 12:50:50
お願いしますm(._.)m
携帯からなので後ほど途中まで自分でやったものアップします。

[1] 授業単元:ファイルの入出力
[2] 問題文:
in.txtに入力された文をout.txtに番号をつけて出力する

〜例〜
(in.txtの内容)
気になっていることがあるとなかなか眠れない
小さなことでイライラする

根に持つタイプだ

(out.txt)
0001:気になっていることがあるとなかなか眠れない
0002:小さなことでイライラする
0003:
0004:根に持つタイプだ


[3] 環境
 [3.1] OS:WindowsVista
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2008年5月21日23:00まで
[5] その他の制限:
0308デフォルトの名無しさん2008/05/21(水) 12:58:01
>>295 Enter 押しっぱなし推奨
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6630.c
0309デフォルトの名無しさん2008/05/21(水) 13:08:30
1〜N(入力した任意の数)まで数を数えるとき、3の倍数のときに気持ちよく
5の倍数で激しくなる(ry
0310デフォルトの名無しさん2008/05/21(水) 13:13:32
>>307
#include <stdio.h>

int main(void)
{
FILE *in, *out;
char buff[256];
int i;

if((in=fopen("in.txt", "r"))==NULL) return 0;
if((out=fopen("out.txt", "w"))==NULL) return 0;

for(i=0; fgets(buff, sizeof buff, in); i++) fprintf(out, "%04d:%s", i, buff);

fclose(in);
fclose(out);

return 0;
}
0311デフォルトの名無しさん2008/05/21(水) 14:04:28
[1] 授業単元:コンピュータ言語
[2] 問題文:
  ある文章を入力して、その中に含まれる「数字の個数」を求め、
  戻り値で返す関数と、その関数を呼び出して下記のように表示する
  プログラムを作成せよ。
  例えば、
  aiueo12kakikukeko34
と打ち込むと、「数字の数:4」と表示する。
  関数は、 int count(char*s) とする。

[3] 環境
 [3.1] OS:WindowsXP
 [3.3] 言語:C++
[4] 期限:5月22日の午後4時まで

よろしくお願いします
03123112008/05/21(水) 14:06:01
追記として、

#include<cctype>
#include<iostream>
using namespace std;
int strch_cnt(const char* s,char c)
{
int i=0;
while (*s)
{
if(*s == c) i++;
s++;
}
return i;
}
int main()
{
char s[40];
char c;
cout << "文字列:";
cin >> s;
cout << "\n";
cout << "カウントする文字:";
cin >> c;
cout <<"\n";
cout << "文字数は:"<< strch_cnt(s,c) << "\n";
return 0;
}

↑のプログラムを参考に作ればいいとのことですが、
どうやって数字の個数のみを求め、表示させればいいのかが分かりません
0313デフォルトの名無しさん2008/05/21(水) 14:07:05
世の中のたいていのテクニック本には
charよりもstringを使え
ポインタ渡しではなく参照渡しできないかどうかもう一度考えろ
って書いてあるのに
どうして学校の授業はchar*とか普通に使いたがるのだ。
0314デフォルトの名無しさん2008/05/21(水) 14:36:27
世に出ているテクニック本の怪しさときたら....
プログラミングの経験を積めば積む程そう感じるものなのだが....
0315デフォルトの名無しさん2008/05/21(水) 14:41:37
>>311
#include <cctype>
#include <iostream>
using namespace std;

int count(char *s)
{
int i = 0;
while(*s)
{
if(isdigit(*s)) i++;
s++;
}
return i;
}
int main()
{
char s[40];
cout << "文字列:";
cin >> s;
cout << "\n";
cout << "数字の数:" << count(s) << "\n";
return 0;
}
0316デフォルトの名無しさん2008/05/21(水) 14:56:03
>>314
・3・) エェー セックスとデートのハウツー本は役にたつよな?
0317デフォルトの名無しさん2008/05/21(水) 14:56:42
cin >> s;

のところで1000文字くらい打ち込んでみようかな。
0318デフォルトの名無しさん2008/05/21(水) 15:10:44
>>312を参考にしろって言った出題者に文句言ってくれ
0319デフォルトの名無しさん2008/05/21(水) 15:24:24
[1] 授業単元:プログラミング演習�U
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6631.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限:2008/05/23
[5] その他の制限:適切な制御構造を用い,読み直した時に理解しやすいプログラムにする.
よろしくお願いします.
0320デフォルトの名無しさん2008/05/21(水) 15:26:30
こうか?
std::cin.getline(s, sizeof(s));
0321デフォルトの名無しさん2008/05/21(水) 15:35:02
>>135で依頼した者です。

>>149のかた迅速な解答ありがとうございます。
実際に学校のPCで動作を確認したところ
セグメンテーション違反というエラーがでてしまいました。

どのようにすればよいでしょうか?
0322デフォルトの名無しさん2008/05/21(水) 16:06:52
>>319
a,b,cをint型変数としてscanfでコンソール等から取得
( (a>0)&&(b>0)&&(c>0) )をチェック 満たされてない場合は
再取得するか、プログラムを終了しろ
( (a+b>c)&&(a+c>b)&&(c+b>a) )
これを満たしてないと三角形にはならないので、その旨表示して終了
((a==b)&&(b==c))
これが真の場合は正三角形だから正三角形と表示
((a==b)||(c==b)||(a==c))
これが真の場合は二等辺三角形だから二等辺三角形と表示
(正三角形と判定された場合、この条件の判定はしない)
( (a*a+b*b==c*c)||(a*a+c*c=b*b)||(c*c+b*b==a*a) )
これが真の場合は直角三角形だから直角三角形と表示
(直角二等辺三角形と表示したい場合はあと一工夫いる)
( ( a*a+b*b>c*c ) && (a*a+c*c>b*b) &&(b*b+c*c>a*a) )
これが真の場合は、鋭角のみで構成された三角形だから鋭角三角形と表示
これが真でない場合は、鈍角を持った三角形と表示する。

これをヒントに後は自分で書け
0323デフォルトの名無しさん2008/05/21(水) 16:16:23
>>319
#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main(void){
int a[3], chk;
string s1, s2;

cin >> a[0] >> a[1] >> a[2];
sort(&a[0], &a[2+1]);

if(a[0]<=0 || a[2]>=a[0]+a[1]){
cout << "三角形として不可能な3辺の長さです" << endl;
return 0;
}

chk=a[2]*a[2]-(a[0]*a[0]+a[1]*a[1]);
if(chk==0) s1="直角";
else if(chk<0) s1="鋭角";
else s1="鈍角";

if(a[0]==a[2]) s2="正", s1="";
else if(a[0]==a[1] || a[1]==a[2]) s2="二等辺";
else s2="不等辺";

cout << s1 << s2 << "三角形" << endl;

return 0;
}
03243072008/05/21(水) 16:43:06
>>310
ありがとうございます!!

ヒントで配られたプリントを参考にして作ってみましたのですが
ファイルを入力するところまでこれで合ってますか?
(10は行数で256は文字数です)

#include<fstream.h>

main()
{
char line[10][256];

ifstream fin("in.txt", ios::in);

if(!fin){
cerr << "error" << endl;
exit(1);
}
for(int i=0;i<10 ; i++){
while(!fin.eof()){
fin.getline(line[i], 256);
}
}
fin.close();
0325デフォルトの名無しさん2008/05/21(水) 16:46:37
>>324
ふざけすぎだろ?
0326デフォルトの名無しさん2008/05/21(水) 16:53:43
>>322
ヒントと回答をありがとうございました.
ヒントのおかげでだいたいの形は完成しました.
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6632.txt
しかし,直角二等辺三角形と表示するための一工夫だけがどうしてもわからないので,教えてはいただけないでしょうか?
お願いします!
>>323
また,回答ありがとうございました.
しかし,かなり難しくて理解ができません・・・・わざわざしてもらったのにすみません.
0327デフォルトの名無しさん2008/05/21(水) 16:54:33
3PB2GBX エクスプレス \94,224 Inspiron Desktop 530s インテル(R) Core(TM) 2 Duo プロセッサー E6750(4MB L2 キャッシュ 2.66GHz 1333MHz FSB)
Windows XP Pro Service Pack 2/OfficeProfessional 2007 4GB(1GBx4) 500GB DVD+/-RW ATI(R) RADEON(R) X1300 Pro 256MB DDR(DVI/TV-Out付) On Board Dell マウス(USB,オプティカル,2ボタン,ホイール付,ブラック)/19メディア対応カードリーダー/ライター

3YS2GBX エクスプレス \74,839 XPS Desktop 420 スタンダードシャーシ インテル(R) Core(TM) 2 Quad プロセッサー Q6600(8MB L2 キャッシュ 2.40GHz 1066MHz FSB)
Windows Vista Home Premium 2GB(1GBx2) 500GB DVD+/-RW NVIDIA(R) GeForce(R) 8600 GTS 256MB DDR(DVIx2/TV-out付) On Board Dell プレミアムマウス(USB,オプティカル,4ボタン,ホイール付)

5YS2GBX エクスプレス \122,995 XPS Desktop 420 スタンダードシャーシ インテル(R) Core(TM) 2 Quad プロセッサー Q6600(8MB L2 キャッシュ 2.40GHz 1066MHz FSB)
Windows Vista Home Premium/Office(Personal & PowerPoint) 2007 4GB(1GBx4) 500GB DVD+/-RW NVIDIA(R) GeForce(R) 8800 GT 512MB DDR(DVIx2/TV-out付) Sound Blaster(R) X-Fi Xtreme Music(D) PCIサウンドカード Dell プレミアムマウス(USB,オプティカル,4ボタン,ホイール付)

6VR2GBX エクスプレス \63,053 Vostro Desktop 200 スリムタワー インテル(R) Core(TM) 2 Duo プロセッサー E4500(2MB L2 キャッシュ 2.20GHz 800MHz FSB)
Windows Vista Business 32ビット/OfficePersonal 2007 2GB(1GBx2) 250GB DVD/CD-RWコンボドライブ ATI(R) RADEON(R) HD 2400 Pro 256MB HyperMemory(TM)(DVI/TV-out付) On Board Dell マウス(USB,オプティカル,2ボタン,ホイール付,ブラック)/19メディア対応カードリーダー/ライター

9NG4GBX エクスプレス \134,611 XPS Desktop 420 スタンダードシャーシ インテル(R) Core(TM) 2 Quad プロセッサー Q6600(8MB L2 キャッシュ 2.40GHz 1066MHz FSB)
Windows Vista Home Premium/OfficePersonal 2007 4GB(1GBx4) 500GB ブルーレイディスクドライブ NVIDIA(R) GeForce(R) 8800 GT 512MB DDR(DVIx2/TV-out付) On Board Dell プレミアムマウス(USB,オプティカル,4ボタン,ホイール付)

CD85GBX エクスプレス \83,532 Vostro Desktop 200 スリムタワー インテル(R) Core(TM) 2 Duo プロセッサー E6550(4MB L2 キャッシュ 2.33GHz 1333MHz FSB)
Windows Vista Ultimate 32ビット/OfficePersonal 2007 4GB(1GBx4) 160GB DVD+/-RW ATI(R) RADEON(R) XT 2400 256MB HyperMemory(TM)(DVI/TV-out付) On Board Dell マウス(USB,オプティカル,2ボタン,ホイール付,ブラック)
03283072008/05/21(水) 16:54:54
>>325
やはり間違ってますか?
僕もこれで実行してみたけど出来ませんでした…。
プリントの変数など変えただけなんですが
0329デフォルトの名無しさん2008/05/21(水) 17:13:52
>>327
うぉぉぉ Q6600 が安いぜぇぇぇぇ!
って、すでにQ6600を持ってるけどさ・・・。

DELLエクスプレスは安いけど
めったにディスコティップのいいのはでないのと
あらかじめ現金用意しとかないといけないのが難点だな。
0330デフォルトの名無しさん2008/05/21(水) 17:38:05
>>307
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;

int main(void){
ifstream in("in.txt");
ofstream out("out.txt");
string s;
int i;

for(i=1;;i++){
getline(in, s);
if(in.fail()) break;
out << setw(4) << setfill('0') << i << ":";
out << s << endl;
}

return 0;
}
0331デフォルトの名無しさん2008/05/21(水) 17:58:02
>>326
直角でかつ二等辺三角形が直角二等辺三角形だよね。
がんばれー
■ このスレッドは過去ログ倉庫に格納されています