C/C++の宿題片付けます 137代目at TECH
C/C++の宿題片付けます 137代目 - 暇つぶし2ch148:デフォルトの名無しさん
10/06/22 20:30:24
[1] 応用プログラミング
[2] 問題文(含コード&リンク):構造体の基礎
  URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visualstadio 2008
 [3.3] 言語:C
[4] 期限:24日まで
[5] その他の制限:プログラミングやってまだ半年しか経ってません。
         構造体の授業の宿題です。
         どうか宜しくお願いします。


149: ◆QZaw55cn4c
10/06/22 20:43:07
>>148
URLリンク(codepad.org)

150:デフォルトの名無しさん
10/06/22 22:25:31
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):三目並べを作成せよ。ポインタとクラスを使用。
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C++
[4] 期限:6/23(水)8時半まで
[5] その他の制限:C++触り始めた所です。どうかお願いします。

151:デフォルトの名無しさん
10/06/22 22:27:42
>>150
GUIでいいのか

152:デフォルトの名無しさん
10/06/22 22:30:13
>>151
言い忘れてた。CUIでお願いします。

こんな感じにしてほしいです。
  1 2 3






○の横座標を入力してください:
○の縦座標を入力してください:

153:デフォルトの名無しさん
10/06/22 23:04:32
>>152
URLリンク(kansai2channeler.hp.infoseek.co.jp)

154:デフォルトの名無しさん
10/06/22 23:16:46
>>153
出来ればクラスとメソッドをしっかりと分けてほしいです。

クラスの中にメソッドが入ってる感じなのでこう分けてくれると助かります。

class game{
public:
void init();
bool Player(int x, int y);
};

void Game::init()
{
・・・
}

他のメソッドもこんな感じに処理毎に分けてくれると助かります。あと○に座標だけでなく
×の座標も入力できるようにしてほしいです。

155:デフォルトの名無しさん
10/06/22 23:18:02
www

156:デフォルトの名無しさん
10/06/22 23:18:30
>>154
ミス。「○に座標」じゃなくて「○の座標」でした。

入力した座標をポインタで受け取る感じにしてほしいです。

申し訳ありません。

157:デフォルトの名無しさん
10/06/22 23:31:38
座標をポインタで受け取りたいってのがよくわからんが。。

ってかドローゲーム忘れてたw

158:デフォルトの名無しさん
10/06/22 23:39:19
>>157
自分の中のイメージとしてg.player(&width, &height)って感じでメソッド呼び出して
座標データを取得したいのですが。。。。。

すいません。なかなか上手く説明できないです。初心者なので。。。。。。



159:デフォルトの名無しさん
10/06/22 23:42:24
クラスとメソッドを分けてほしいって表現がすごいけど、その例を書けるんならそんぐらい直せw

160:デフォルトの名無しさん
10/06/22 23:45:28
>>159
クラスとメソッド分けるのちょっとやってみます。

挫折したらすみません。あと途中で解説欲しくなるかもしれないです。

161:デフォルトの名無しさん
10/06/22 23:48:40
>>158
こんなんでどう?
get_posってヤツで座標を取るんで、これなら意味分かるわ。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

162:デフォルトの名無しさん
10/06/22 23:52:37
>>161
おおおおおおおおおおお。けっこうスマートになってるwwww

助かります。ちょっとソースコード読んでみます。解説欲しくなったら言うので。

163:デフォルトの名無しさん
10/06/22 23:54:19
どんだけ上から言ってんだよw

ってかもうねる。

164:デフォルトの名無しさん
10/06/23 00:01:03
>>163
乙。

釣りなのかと思っちゃうよね。

165:デフォルトの名無しさん
10/06/23 00:15:45
インライン関数は使わない流儀

166:デフォルトの名無しさん
10/06/23 03:27:12
[1] 授業単元:プログラミング応用  ;構造体
[2] 問題文(含コード&リンク):
以下コピペ
表示例のように,名前,性別,身長,体重,腹囲(ウエスト)を3人分入力した後, 3名全員について入力データに加えてBMI値とメタボリック症候群の疑いの判定を 表示するプログラムを作成しなさい.
プログラムでは,名前,性別,身長,体重,腹囲をまとめて 個人データとして表すための構造体を定義して利用すること.
注意
" 体重はkg, 身長,腹囲はcmで入力する.
" 性別は 1 で男性,2で女性を表す.
" BMI値 = 体重(kg) / 身長(m)2
" 男性は腹囲85cm以上,女性は腹囲90cm以上でメタボリック症候群の疑い がある

表示例
データ1を入力してください
名前: Hanako
性別: 2
身長: 156.4
体重: 65.3
腹囲: 93.4
名前: Hanako, 性別: 女, 身長: 156.4, 体重: 65.3, 腹囲: 93.4, BMI: 26.7, メタボリック症候群の疑いがあります
コピペ終わり
本当はデータ3つです。改行制限で割愛
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (cc 3.4)
 [3.3] 言語: (どちらでも可)
[4] 期限: (6月23日15時まで)
[5] その他の制限: (構造体でデータを個々で格納してお願いします。)

よろしくお願いします。

167:デフォルトの名無しさん
10/06/23 10:51:24
>>>166
URLリンク(codepad.org)

168:デフォルトの名無しさん
10/06/23 11:20:14
>>166
URLリンク(kansai2channeler.hp.infoseek.co.jp)

169:デフォルトの名無しさん
10/06/23 12:33:36
>>167
>>168
ありがとうございました。参考にさせていただきます。

170:デフォルトの名無しさん
10/06/23 15:18:36
【質問テンプレ】
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):
1.関数sqrtを使って1~10までの二乗根の和を求めなさい。
2.16進数ABC.DEを10進数にしなさい。
[3] 環境
 [3.1] OS: Windows XP
 [ [3.3] 言語: C言語
[4] 期限: 6月24日15時まで
よろしくお願いします。

171:デフォルトの名無しさん
10/06/23 15:33:07
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:6月28日まで
[5] その他の制限:なし
よろしくお願いします

172:デフォルトの名無しさん
10/06/23 15:55:30
【質問テンプレ】
[1] 授業単元: プログラミングB
[2] 問題文(含コード&リンク):実行したい処理を選ぶことが可能なプログラムを作りなさい。このとき、実
行できる処理は以下の三つとする。

処理1:複数の2択問題への回答に応じた結果を表示する。(例:職種選択、旅行先選び

処理2:文字コード一覧表を出力する。(文字コード32~126を一行に8文字ずつ)

処理3:本のページ数を入力し、その本を読み切るために必要な日数を表示
    する。このとき、初日は10ページ、2日目は20ページ,,,と読むページ
    数は増加するものとする。

以下の仕様で作成すること

キーボードから入力された数に応じて、switch文で各処理に移動する。
処理1:if文を使って
処理2:for文を使って
処理3:while文またはdo・while文を使って。

[3] 環境
 [3.1] OS: WindowsXP
 [3.3] 言語: C言語
[4] 期限: 6月25日まで
よろしくお願いします。

173:デフォルトの名無しさん
10/06/23 16:03:04
>>171
(1)j-1
(2)printf("   ");

174:デフォルトの名無しさん
10/06/23 16:07:11
>>170
1.
#include <stdio.h>
#include <math.h>

int main(void)
{
int i;
double sum = 0;

for(i = 1; i <= 10; i++) sum += sqrt(i);

printf("%f\n", sum);

return 0;
}

175:デフォルトの名無しさん
10/06/23 16:45:32
>>170
2.
URLリンク(kansai2channeler.hp.infoseek.co.jp)

176:デフォルトの名無しさん
10/06/23 17:34:30
>>172
自己解決しました。

177:デフォルトの名無しさん
10/06/23 21:05:54
>>149
ありがとうございました、参考にさせていただきました。
それにしてもわずか10分でするとは…

178:デフォルトの名無しさん
10/06/23 21:17:16
質問させてください
当方、エントロピー値の計算するプログラムをperlで作成したのですが
わけあってC++に書き直すことになりました
しかし、C++にはハッシュ(連想配列)などは自分で作らなければならなく
どうしてもうまく行きませんでした・・・
perlで作ったプログラムをここに張るのは良くない思うのですが
どうかC++動くようにご教授お願いします


179:デフォルトの名無しさん
10/06/23 21:20:11
こちらがperlのプログラムです
#! c:/perl/bin/perl

open(FILE,"IPsource.txt"); #ファイル読み込み
use strict;
use warnings;
use utf8;
print "Content-type: text/html\n\n";
my $count;
my $t;
my $key;
my $ref_freq;
my %ref_freq;
my @x;
my $v;

$count = 0; #全体IPカウント
while ($t = <FILE>){ #IPファイル展開

#IP集計
if($t) {
$count += 1; #全体IPカウント
++$ref_freq{$t};
}
}






180:デフォルトの名無しさん
10/06/23 21:21:17

@x = values %ref_freq;

print"@x \n";

close(IN);


#my @x= map $_ ,$key;
#エントロピー計算
my $y=$count;
my $num;
my @pi = map $_ / $y, @x;
my $i;
print"@pi \n"; #テスト用プリント
#print"@x \n";
for($i=0;$i<=$#pi;$i++){
$num += -($pi[$i]*log($pi[$i]) / log(2));
}


#print"@pi\n\n";
print "-Σpi*log2(pi) = $num \n";

181:デフォルトの名無しさん
10/06/23 21:27:16
std::hash_map, std::mapはC++にもある

182:178
10/06/23 21:32:30
プログラムの動きですが
>>179でtxtに入れられたIPアドレスの種類と数をカウントします
ここでハッシュ(連想配列)を用いています
ここを出力するとこのようになります

IP    数
202.・・・ 20

そして>>180でエントロピー計算を行います
エントロピーの計算方法はlog(対数)とΣ(for文)で
my $y=$count;
my $num;
my @pi = map $_ / $y, @x;
この部分に先ほどカウントしたIPが入り
for($i=0;$i<=$#pi;$i++){  ←カウントしたIP分だけループさせ
$num += -($pi[$i]*log($pi[$i]) / log(2));  ←エントロピーの計算をします
}



183:デフォルトの名無しさん
10/06/23 21:36:16
文字列をキーとした連想配列はmapで代用できる。
もちろん、>>181の言うようにhash_mapでもいい。(あれば)

184:デフォルトの名無しさん
10/06/23 21:39:16
std::tr1::unordered_map も忘れないでください。


185:デフォルトの名無しさん
10/06/23 21:55:08
>>178
元のコードにできるだけ合わせたつもり
URLリンク(kansai2channeler.hp.infoseek.co.jp)

186:デフォルトの名無しさん
10/06/23 22:17:25
CでなくC++でよかったな

187:デフォルトの名無しさん
10/06/23 22:18:45
余計な言い訳せずにC++のコードくださいって言えばいいのにね。

188:185
10/06/23 22:54:11
>>185 の訂正
途中で @x 相当の変数使うの忘れてたw
URLリンク(kansai2channeler.hp.infoseek.co.jp)

189:178
10/06/23 23:11:42
>>181、183、184
ご指摘ありがとうございます
その範囲を調べてみます。

>>185
わざわざコードを作っていただき
本当にありがとうございます
このコードを参考に勉強させていただきます。

190:デフォルトの名無しさん
10/06/24 00:22:32
モンテカルロ法で√2の近似値を求めたいのですが、
ネット調べてみるとモンテカルロ法と言えばπの近似に関するばかりで・・・
どなたか教えてくださいませ

191:デフォルトの名無しさん
10/06/24 00:33:17
[sin θ]0~PI に近い

192:デフォルトの名無しさん
10/06/24 00:37:45
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
問題1:char name[20], int english, int mathematicsをメンバとする構造体 score を定義せよ
問題2:以下の5人の情報をもつ配列 seito[5] を、問題1で作成した構造体 score 型を使って宣言せよ。なお、5人の情報は初期値として宣言することにする。
name  english mathematics
"yamada" 50 70
"tanaka" 70 60
"suzuki" 80 70
"yamamoto" 40 60
"sakata" 90 80
問題3:問題2で初期値を代入した構造体 score 型の構造体配列 seito[5] を宣言し、各メンバ変数をソートする関数を作成せよ。
[3] 環境
 [3.1] OS:Win Vista
 [3.2] コンパイラ名とバージョン:VB 2008
 [3.3] 言語:C
[4] 期限:2010年6月25日まで
[5] その他の制限:無し

よろしくお願いします

193:デフォルトの名無しさん
10/06/24 01:36:43
>>173ありがとうございます。助かりました!

194:デフォルトの名無しさん
10/06/24 01:42:16
>>190
#include <stdio.h>
#include <stdlib.h>
#define NN 10000

int
main(void)
{
int i, w, cnt = 0, n;

printf("input sample no(cf.1000)=");
scanf("%d", &n);

for (i = 0; i < n; i++) {
w = rand() % NN;
w *= w;
if (w < NN * NN / 2)
cnt++;
}
printf("PI neary equal = %f", (double) cnt * 2 / n);

return 0;
}


195:デフォルトの名無しさん
10/06/24 11:48:13
[1] 授業単元:情報処理
[2] 問題文:ガウスの消去法のプログラムをピボット対応と
      ピボット非対応の2つ作成し、連立方程式の解を求めよ。
     (ただし解くべき連立方程式は5元1次方程式で、ピボットの
      発生するものと発生しないものの2種類とする)
       
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C++
お願いします。

196:デフォルトの名無しさん
10/06/24 13:44:31
演習6-1

複数の文字列を読み込み,それらの文字列を空白を入れて繋ぎ合わせるプログラムを作成せよ.

【実行例】

何個の文字列を入力しますか?:3
入力文字列[1]:A
入力文字列[2]:B
入力文字列[3]:C

結果:A B C

演習6-3

入力したDNA塩基配列中にある塩基 t, c, a, gそれぞれの個数をカウントするプログラムを作成せよ.
【実行例】

% ./a.out
tataatccg ← 入力し,リターンを押して ^D
Thymine (t) : 3
Cytosine (c) : 2
Adenine (a) : 3
Guanine (g) : 1
%

よろしくお願いします!

197:デフォルトの名無しさん
10/06/24 15:07:11
>>196
演習6-1

#include <stdio.h>

int main(void)
{
char buff[32], str[1024], *p, *q;

int i, n;

printf("何個の文字列を入力しますか?:");
scanf("%d", &n);

for(i = 1, p = str; i <= n; i++) {
printf("入力文字列[%d]:", i);
scanf("%s", buff);
for(q = buff; *q; q++, *p++) *p = *q;
*p++ = ' ';
}
*(p - 1) = '\0';

printf("\n結果:%s\n", str);

return 0;
}

198:デフォルトの名無しさん
10/06/24 17:15:46
ファイルkadai.txt に記述された数行の数値を表す文字列を読み込み、整数に変更して数値として表示
するプログラムを作成せよ。関数としてstrtol()を使用すれば問題ないが、同じ機能の関数を作成すること。
基数の設定に関する引数は必要なくデフォルト(先頭が0 なら8 進、それ以外は10 進、16 進は使用しな
い)とする
お願いします!

199:デフォルトの名無しさん
10/06/24 19:22:26
>>197
助かりました!本当にありがとうございます!
>>196の演習6-3は無事、自己解決致しました。
ありがとうございました~


200:デフォルトの名無しさん
10/06/24 20:10:46
>>198
URLリンク(kansai2channeler.hp.infoseek.co.jp)

201:デフォルトの名無しさん
10/06/24 21:08:03
バブルソートでは, 配列のデータがすでに適正な順序, あるいはそれに近い順序で並んでいても
n-1回の走査をしなければならない. すなわち, n(n-1)/2回の比較が行われなければならない. そこで, 各回の走査の終わりに,
交換が行われたか否かをチェックするようにし, 交換が行われていなければそれ以上走査の必要はないのでソートを完了するようなプログラムを作成しなさい.
sizeofは使わない。
↓のような出力結果になるようにする。
初期状態: 10, 3, 1, 15, 2, 7
[1回目の走査]
1回目の交換: 3, 10, 1, 15, 2, 72回目の交換: 3, 1, 10, 15, 2, 73回目の交換: 3, 1, 10, 2, 15, 74回目の交換: 3, 1, 10, 2, 7, 15
[2回目の走査]
1回目の交換: 1, 3, 10, 2, 7, 15 2回目の交換: 1, 3, 2, 10, 7, 15 3回目の交換: 1, 3, 2, 7, 10, 15
[3回目の走査]
1回目の交換: 1, 2, 3, 7, 10, 15
[4回目の走査]

最終状態: 1, 2, 3, 7, 10, 15

202:デフォルトの名無しさん
10/06/24 21:09:51
#include <stdio.h>
int main(void) {

int str[100]={0};
int i,j, temp,x;
x=0;

printf("値の上限を設定してください:");
scanf("%d",&x);

for(i=0;i<x;i++){
printf("%d番目の値を入力してください:",i+1);
scanf("%d", &str[i]);
}
printf("初期状態:");
for(i=0;i<x;i++){
if(i==x-1){
printf("%d\n ",str[i]);
}else{
printf("%d, ",str[i]);
}
}


203:デフォルトの名無しさん
10/06/24 21:11:02
for (i = 1; i<x; i++) {
for(j=x-1; j>=i; j--){
if (str[i-1] > str[i]){
temp = str[i-1];
str[i-1] = str[i];
str[i] = temp;

}
}
}
for (i = 0; i < x; i++){
if(i==x-1){
printf("%d\n", str[i]);
}else{
printf("%d, ", str[i]);
}
}
return 0;
}

ここまで作りましたが出力結果が上のようになりません。
誰か助けてください!お願いします。

204:デフォルトの名無しさん
10/06/24 21:50:07
#include <stdio.h>
int main(void) {
  int i, j, temp, x=0, f;

  printf("初期状態: %d", str[0]);
  for(i=1;i<x;i++)
    printf(", %d", str[i]);
  printf("\n");

  for (i = 1; i<x; i++) {
    f = 1;
    for(j=x-1; j>=i; j--){
      if (str[j-1] > str[j]){
        temp = str[j-1];
        str[j-1] = str[j];
        str[j] = temp;
        f = 0;
      }
    }
    if(f != 0) break;
    printf("%d回目の走査: %d", i, str[0]);
    for(j=1;j<x;j++)
      printf(", %d", str[j]);
    printf("\n");
  }
  printf("最終状態: %d", str[0]);
  for(i=1;i<x;i++)
    printf(", %d", str[i]);
  printf("\n");
  return 0;
}

205: ◆QZaw55cn4c
10/06/24 22:05:02
>>201
URLリンク(codepad.org)

206:デフォルトの名無しさん
10/06/24 22:05:49
&nbsp;使うとインデント表現できるんだね

207:デフォルトの名無しさん
10/06/24 22:08:25
>>206
s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g

208:270
10/06/24 22:09:47
すみません、間違えました。
s/\&/\&/g
s/ /\ /g
s/"/\"/g
s/</\</g
s/>/\>/g

209:208
10/06/24 22:11:50
んー、うまくいかない。
s/\&/\&amp;/g
s/ /\&nbsp;/g
s/"/\&quot;/g
s/</\&lt;/g
s/>/\&gt;/g
こうか?

210:sage
10/06/24 22:51:25
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
再帰呼び出しを使い、入力した値の階乗を求めるプログラムを書きなさい。
なお、出来る限り大きな値の計算を出来るように工夫しなさい。
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:Borland C++ 5.5.1
 [3.3] 言語: C言語
[4] 期限: 6月中
[5] その他の制限:指定なし


211: ◆QZaw55cn4c
10/06/24 23:12:33
>>210
なんの工夫もしていません。
URLリンク(codepad.org)

212:デフォルトの名無しさん
10/06/25 00:18:02
[1] 授業単元: 数値解析
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
ニュートン・ラフソン法についての問題です。教科書に例題として載っていたプログラミングに今回問題となっている方程式の当てはめ方がわかりません(おそらく初歩的な事だと思われます)
[3] 環境
 [3.1] OS: Windows Vista
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C
[4] 期限:2010年6月25日16:00まで
[5] その他の制限: 半年前に教養の授業として数時間C言語の授業があった程度の知識しかありません
周囲もそのような人ばかりなので深いC言語の知識が必要な問題ではないと思われます
どうかよろしくお願い致します

213:デフォルトの名無しさん
10/06/25 02:14:39

[1] 授業単元:数値計算
[2] 問題文(含コード&リンク):

以下に示す2階の定係数線形同次微分方程式につ
いて,初期値y(0)=a, y’(0)=bをキーボードから入力し,
t=4における値を出力するプログラムを作成する.

y''(t)+2y'(t)+2y(t)=0
条件 y(0)=2 , y'(0)=-2

答え y(4)=-0.02394

[3] 環境
 [3.1] OS: (Windows/Linux/等々) vista
[4] 期限:6月30日まで

214:デフォルトの名無しさん
10/06/25 10:25:17
>>213
精度を考慮してルンゲ・クッタ法で解いた

URLリンク(kansai2channeler.hp.infoseek.co.jp)

215:デフォルトの名無しさん
10/06/25 11:43:42
[1] 授業単元: 画像処理

[2] 問題文(含コード&リンク):
入力した2値白黒画像をハフ変換して直線および円を検出し、結果を表示するプログラムを作成せよ。
直線の式はρ= xcosθ + ysinθを、円の式はr2= (x-a)2 + (y-b)2をそれぞれ使用する。

なお、直線について処理後のρθ平面を濃淡画像として出力せよ。
円については処理後のabrパラメータ空間をGnuplotを用いて、
1点のエッジに対する軌跡(円錐)と2点以上のエッジに対する軌跡(円錐)を出力せよ。

また、円と直線両方について、3種類以上に閾値を変化させた実験結果を逆変換し、
その結果を原画像に投影した画像も出力せよ。
 
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

[4] 期限: [2010年06月25日23:50まで]

[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
画像として出力というくだりについては、RGBそれぞれの値を
変数名[画像サイズ].r/.g/.bという要素を持つ構造体を使って格納してください。

216:デフォルトの名無しさん
10/06/25 14:26:22
>>147
亀ですがありがとうございました!

217:デフォルトの名無しさん
10/06/25 14:32:43
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
午前四時から正午までは Good Morning! と、
正午から午後八時までは Good Afternoon! と、
午後八時から午前四時までは Good Evening! と、表示するプログラムを書け。ただし、境界の時刻は前の時間帯に含まれるものとする

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:C
[4] 期限:2010年6月30日23:55
[5] その他の制限: 特になし

お願いします

218:デフォルトの名無しさん
10/06/25 16:58:06
[1] 授業単元: プログラム
[2] 問題文(含コード&リンク): 番号 国語 数学 英語のメンバを持っている構造体を作って各教科の平均値と、全平均値を求めてください。(人数は4人とか5人で行ってください。あと番号っていうのは、番号は、4人なら1~4までで5人なら1~5までです)
[3] 環境
 [3.1] OS: linux
 [3.3] 言語: C++
[4] 期限: ([2010年6月26日まで]
[5] その他の制限:
#include <iostream>
using namespace std;
struct score {
で始めて、
return文で終わってください


219:デフォルトの名無しさん
10/06/25 17:13:52
>>214
ありがとうございました^^

220:デフォルトの名無しさん
10/06/25 17:59:13
>>218
URLリンク(kansai2channeler.hp.infoseek.co.jp)

221:218
10/06/25 21:51:05
>>218ですが忘れてました。なるべく簡単にしてください。
あと配列を使います。

222:デフォルトの名無しさん
10/06/26 01:08:39
>>217
#include <stdio.h>
#include <time.h>

int main()
{
time_t now = time(NULL);
struct tm* local_now = localtime( &now );
const int hour = local_now->tm_hour;

if ( hour>4 && hour<=12 )
printf( "Good Morning!" );
else if ( hour>12 && hour<=20 )
printf( "Good Afternoon!" );
else // ( hour>20 && hour<=4 )
printf( "Good Evening!" );

return 0;
}


223:デフォルトの名無しさん
10/06/26 02:27:00
【質問テンプレ】
[1] 授業単元:画像処理
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (指定なし)
 [3.2] コンパイラ名とバージョン: (gcc)
 [3.3] 言語: (C)
[4] 期限: ([2010年06月28日14:50まで] )
[5] その他の制限:ヘッダファイル"bmp.h"はこちらです
URLリンク(kansai2channeler.hp.infoseek.co.jp)

よろしくお願いします。

224: ◆C/HmxiIl0o
10/06/26 02:42:14
[1] 授業単元: 解析

[2] 問題文(含コード&リンク):
x=1.0, 1.1,...,3.9, 4.0が与えられた時のlogxの値をラグランジュ補間で求め、
その近似値とlogxの真値をそれぞれ出力せよ。
また、求めた値と真値との誤差(絶対値)も求め、一次多項式の誤差と2次多項式の誤差を
それぞれ出力せよ。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C

[4] 期限: 本日(26日)中にお願いします

宜しくお願いいたします。

225:デフォルトの名無しさん
10/06/26 02:59:03
>>223
URLリンク(codepad.org)
簡単に試したけど多分こんなん。

226:デフォルトの名無しさん
10/06/26 03:40:45
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
構造体Triangleを下のように定義する。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
この構造体により一つの三角形を表現する。
Triangle構造体の構成要素は、三つの頂点のx座標、y座標をメンバとして持つ構造体Pointである。
このTriangle構造体を用いて、以下の使用に従う関数を作成し、任意の三角形の面積、その三角形を適切な2×2行列で線形変換した結果の三角形の座標とその面積、および任意の二つの三角形が合同であるかどうかを表示するプログラムを実装しなさい。
・一つのTriangle構造体の変数を引数とし、その構造体が表す三角形の面積を返す関数。
・一つのTriangle構造体の変数と、double型の二次元配列(2×2行列Aとする)を引数とし、引数で与えた三角形を行列Aによって線形変換した後の三角形を返す関数。
・二つのTriangle構造体の変数を引数とし、その構造体が合同であれば1を、合同でなければ0を返す関数。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月28日まで
[5] その他の制限:特にありません。よろしくお願いします。



227:デフォルトの名無しさん
10/06/26 07:07:19
double area(Triangle t) {
return fabs((t.p2.x - t.p1.x) * (t.p3.y - t.p1.x) - (t.p2.y - t.p1.x) * (t.p3.x - t.p1.x));
}

Triangle linear(Triangle t, double a[2][2]) {
Triangle ret;
ret.p1.x = a[0][0] * t.p1.x + a[0][1] * t.p1.y;
ret.p1.y = a[1][0] * t.p1.x + a[1][1] * t.p1.y;
ret.p2.x = a[0][0] * t.p2.x + a[0][1] * t.p2.y;
ret.p2.y = a[1][0] * t.p2.x + a[1][1] * t.p2.y;
ret.p3.x = a[0][0] * t.p3.x + a[0][1] * t.p3.y;
ret.p3.y = a[1][0] * t.p3.x + a[1][1] * t.p3.y;
return ret;
}

int isCongruence(Triangle t1, Triangle t2) {
double l1[3], l2[3];
int i, j;
l1[0] = (t1.p1.x - t1.p2.x) * (t1.p1.x - t1.p2.x) - (t1.p1.y - t1.p2.y) * (t1.p1.y - t1.p2.y);
l1[1] = (t1.p2.x - t1.p3.x) * (t1.p2.x - t1.p3.x) - (t1.p2.y - t1.p3.y) * (t1.p2.y - t1.p3.y);
l1[2] = (t1.p3.x - t1.p1.x) * (t1.p3.x - t1.p1.x) - (t1.p3.y - t1.p1.y) * (t1.p3.y - t1.p1.y);
l2[0] = (t2.p1.x - t2.p2.x) * (t2.p1.x - t2.p2.x) - (t2.p1.y - t2.p2.y) * (t2.p1.y - t2.p2.y);
l2[1] = (t2.p2.x - t2.p3.x) * (t2.p2.x - t2.p3.x) - (t2.p2.y - t2.p3.y) * (t2.p2.y - t2.p3.y);
l2[2] = (t2.p3.x - t2.p1.x) * (t2.p3.x - t2.p1.x) - (t2.p3.y - t2.p1.y) * (t2.p3.y - t2.p1.y);
for(i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) if(l1[i] == l2[j]) { l2[j] = 0; break;}
if(j == 3) return 0;}
return 1;
}

228:デフォルトの名無しさん
10/06/26 11:36:43
ラグランジュ補間で log(x) を求める。?

229: ◆C/HmxiIl0o
10/06/26 12:07:55
>>228
問題にはそう書いてありました。
log2=0.6931,log3=1.0986 1次多項式で近似
log2=0.6931,log3=1.0986,log4=1.3863 2次多項式で近似

2点(2,0.6931)(3,1.0986)を用いてlog2.5を推定する
logxの1次多項式による補間では、x0=2,x1=3より、
L-zero(x)=(x-3)/(2-3)
L-one(x)=(x-2)/(3-2)
であるから、p1(x)=1.0986(x-2)-0.6931(x-3)
p1(2.5)=1.0986(2.5-2)-0.6931(2.5-3)=0.89585

3点(2,0.6931)(3,1.0986)(4,1.3863)を用いてlog2.5を推定する
logxの1次多項式による補間では、x0=2,x1=3より、
L-zero(x)=(x-3)(x-4) / (2-3)(2-4)
L-one(x)=(x-2)(x-4) / (3-2)(3-4)
L-two(x)=(x-2)(x-3) / (4-2)(4-3)
であるから、p2(x)=0.34655(x-3)(x-4)-1.0986(x-2)(x-4)-0.6931(x-2)(x-3)
p1(2.5)=0.919575

真値=0.91629

誤差を求める式は
e-k(x)=f(x) - p-k(x) = (f^(k+1)(クサイ) / (k+1)!)*(x-x0)・・・(x-xk)
だそうです。

宜しくお願いします。


230:デフォルトの名無しさん
10/06/26 12:17:47
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):三目並べのプログラムにCPとの対戦をつけろ。
URLリンク(codepad.org)
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C++
[4] 期限:6/27(水)8時半まで
[5] その他の制限:C++初心者です。インライン関数は使わない方向でお願いします。

実行結果としてはこんな感じにしてほしいです。
1Pと2Pとの交互に対戦しますか?
1Pとコンピュータとの対戦にしますか?
プレイヤ同士の対戦なら1を、コンピュータとの対戦なら2を入力してください:

こんな感じで選らばせて対戦できるようにしてほしいです。

※1Pのマスは○でコンピュータのマスは×でお願いします。

231:デフォルトの名無しさん
10/06/26 12:19:15
>>230
ミス。

6/27(月)でした

232:デフォルトの名無しさん
10/06/26 12:20:03
>>231

日曜でした。すいませんでした。

233:デフォルトの名無しさん
10/06/26 14:54:26
> であるから、p2(x)=0.34655(x-3)(x-4) - 1.0986(x-2)(x-4) - 0.6931(x-2)(x-3)
> p1(2.5)=0.919575
であるから、p2(x)=0.34655(x-3)(x-4) - 1.0986(x-2)(x-4) + 0.6931(x-2)(x-3)
p1(2.5)=0.9105875
物理のかぎしっぽ:計算物理学:補間法:ラグランジュ補完
URLリンク(moondial0.net)

234:デフォルトの名無しさん
10/06/26 15:11:16
[1]授業単元:システムプログラミング
[2]課題:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] OS:Windows Vista コンパイラ:CygWin上のgcc 言語 C
[4] 7/1迄
[5] 授業は殆ど出ておらず単位を落としそうですんでよろしくお願いしまつ

235:デフォルトの名無しさん
10/06/26 21:49:42
>>229
ラグランジュ補間は手持ちの本「科学技術計算ハンドブック」に
掲載されているので、一次補間も二次補間も意味はわかるけど、
logxの近似をしたかったら、x=1.0から4.0まで近似したいなら、
もっと数表x[], y[]の標本が必要だよ

というのは、ラグランジュ補間は極めて振動しやすいという欠点を
持っていて、その欠点を埋め合わせるには数表の取り方を工夫
しなければならない

少なくとも、[x,y]の組み合わせが多数欲しい

今1.0~4.0の範囲で近似しようとしているのだから、xが0.0から5.0
の範囲で5点ほどは欲しい

236:デフォルトの名無しさん
10/06/26 21:58:22
> 今1.0~4.0の範囲で近似しようとしているのだから、
x=2.5 のだけで。

237:デフォルトの名無しさん
10/06/26 22:13:54
>>218を誰か簡単にお願いします

238:デフォルトの名無しさん
10/06/26 22:31:31
>>224
URLリンク(ideone.com)

239:デフォルトの名無しさん
10/06/26 22:39:35
>>229
URLリンク(kansai2channeler.hp.infoseek.co.jp)

数表が与えられていないので勝手に作ったよ。
logxはx=1.0未満になるとぐっとマイナスの方へ振れてしまい
標本としてはあまり好ましくないので、x=1.0以下の部分は
標本間隔を詰めた。

240:デフォルトの名無しさん
10/06/26 22:40:49
あ、ごめん>>236が見えてなかった。
>>239の取り扱いは好きなようにしてください。

241:デフォルトの名無しさん
10/06/26 22:48:41
>>237
>>218

URLリンク(codepad.org)
簡単というのがSTLを使いまくることだったらすまない。

242: ◆C/HmxiIl0o
10/06/26 23:51:34
>>239
ありがとうございます。>>236は偽者です。

問題文には数表は全く書かれていなかったのですが、授業で使うスライドを見ていったところ、
1枚だけ、端っこの方に小さくy=f(x)= 1/(1+25*x^2)と書かれていました。
宜しくお願いします。

243:デフォルトの名無しさん
10/06/26 23:55:23
よろしく

244:デフォルトの名無しさん
10/06/27 00:37:41
>>242
URLリンク(kansai2channeler.hp.infoseek.co.jp)

うーん標本の取り方がいまいちかな・・・
一次補間が振動しちゃってます
適当に数表をいじって誤差が少なくなるようにトライしてみてください

245:デフォルトの名無しさん
10/06/27 00:47:15
数値計算理論の問題でC/C++のコーディング技術の問題じゃなさそう

246:デフォルトの名無しさん
10/06/27 03:08:48
[1] 授業単元:計算機とアルゴリズム
[2] 問題文(含コード&リンク):数列と漸化式を表示できるように9行目からお願いします。URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 2010年6月28日
[5] その他の制限:whileを使うと思います。

お願いします。

247:デフォルトの名無しさん
10/06/27 08:46:12
>>246
#include <stdio.h>

main()
{
int n, m, an, sum;

m = 5;
printf("数列 an = n*n とその和を %d 項目まで表示します\n", m);

n = 1;
sum = 0;
while (n <= m)
{
an = n * n;
sum += an;
printf("a[%d] = %d, sum = %d\n", n, an, sum);
n++;
}
}

248:デフォルトの名無しさん
10/06/27 08:50:58
>>246
#include <stdio.h>

main()
{
int n, m, an;

m = 5;
printf("漸化式 a(n) = 2*a(n-1), a1 = 2 で生成される数列を %d 項目まで表示します\n", m);

n = 1;
an = 2;

while (n <= m)
{
if (n == 1)
{
printf("a[%d] = %d\n", n, an);
n++;
continue;
}
an = 2 * an;
printf("a[%d] = %d\n", n, an);
n++;
}
}

249:デフォルトの名無しさん
10/06/27 10:35:20
>>224
URLリンク(ideone.com)
期限すぎてるけど、いいどらえもんがかけた。

250: ◆QZaw55cn4c
10/06/27 16:20:11
>>210
URLリンク(codepad.org)
100! まで確認しています。#define で指定している定数を増加させれば、もっと大きな数値にも対応できるかもしれません。

251:デフォルトの名無しさん
10/06/27 16:39:40
【質問テンプレ】
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク): 入力した2つの整数の間 (入力した数も範囲に含める) にある
 「2の倍数でない」かつ「3の倍数でない」かつ「5の倍数でない」
の条件を満たす整数を順に表示し,最後にその個数を表示するプログラムを作成せよ
[3] 環境
 [3.1] OS:VineLinux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年7月4日
[5] その他の制限:なお,整数の入力には get_int() を用いること。
# define BUFFER_SIZE (256)//get_int()です

int get_int(void)
{
char buf[BUFFER_SIZE];

fgets(buf, BUFFER_SIZE, stdin);

return atoi(buf);
}

よろしくおねがいします


252: ◆QZaw55cn4c
10/06/27 16:46:14
>>251
URLリンク(codepad.org)

253:251
10/06/27 17:12:01
>>252

迅速な回答本当にありがとうございます

254:デフォルトの名無しさん
10/06/27 20:04:24
[1] 授業単元:情報処理学
[2] 問題文(含コード&リンク):
do-while文を用いて、キーボードから入力された値が素数であるかどうかを
判別するプログラムを作成せよ。入力された値が素数の場合は"素数"と出力し、
素数でない場合は最小の因数を出力せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:すいませんがわからないです。
 [3.3] 言語:C
[4] 期限:2010年6月30日まで

255:デフォルトの名無しさん
10/06/27 20:17:03
1] 授業単元:情報処理学
[2] 問題文(含コード&リンク):
1次元配列に34 57 45 21 89 63 39 48 78 68 76 84 92 53 62 のデータをセットして、
これらの平均値を求めよ。さらにint eval[3]という1次元配列を用意して
eval[0]には0~60の数の個数
eval[1]には61~80の数の個数
eval[2]には81~100の数の個数
を格納するようにし、それらを出力するプログラムを作成せよ。(配列、for文、if文を使って)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月30日まで


256:デフォルトの名無しさん
10/06/27 20:30:25
>>254

#include <stdio.h>
int main(){
int i,n,f;
printf("> ");
scanf("%d",&n);

f=1; i=1;
do{
++i;
if(n%i==0){
f=0;
break;
}
}while(i*i<=n);
if(f)printf("素数\n");
if(!f)printf("%d\n",i);
}


257:デフォルトの名無しさん
10/06/27 20:33:36
>>255
#include <stdio.h>

int main(void)
{
int array[] = {34, 57, 45, 21, 89, 63, 39, 48, 78, 68, 76, 84, 92, 53, 62}, eval[3] = {0}, i;
double ave;

for(i = 0, ave = 0.0; i <sizeof array / sizeof *array; i++) {
ave += array[i];
if(array[i] < 0) continue;
else if(array[i] <= 60) eval[0]++;
else if(array[i] <= 80) eval[1]++;
else if(array[i] <= 100) eval[2]++;
}

printf("平均値:%f\n", ave / (sizeof array/ sizeof *array));
printf("0~60の数の個数:%d\n", eval[0]);
printf("61~80の数の個数:%d\n", eval[1]);
printf("81~100の数の個数:%d\n", eval[2]);

return 0;
}

258:デフォルトの名無しさん
10/06/27 21:44:01
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
次のように表示するプログラムを作りなさい。

私の学籍番号は0000000Aです。
氏名は aaaaa aaaaaaaaです。
       ↑半角スペース
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:C++
 [3.3] 言語: C言語
[4] 期限: 6月28日午前0時
[5] その他の制限:
char型の配列no name を使う。
noに学籍番号、nameに氏名を格納し表示に使う。
自分の学籍番号、氏名はchar型の配列、no nameを初期化して配列に格納する。


259:デフォルトの名無しさん
10/06/27 21:52:25
#include <stdio.h>

int main(void)
{
char no[] = "0000000A", name[] = "aaaaa aaaaaaaa";

printf("私の学籍番号は%sです。\n", no);
printf("氏名は %sです。\n", name);

return 0;
}

260:デフォルトの名無しさん
10/06/27 22:23:44
>>256
ありがとうございます。

261:デフォルトの名無しさん
10/06/27 22:35:45
>>257
ありがとうございます。

262:デフォルトの名無しさん
10/06/27 22:45:00
>>241
>>241で書いてもらったみたいな感じです。ありがとうございました

263:デフォルトの名無しさん
10/06/27 23:22:42
a

264:デフォルトの名無しさん
10/06/27 23:25:25
>>259
本当に助かります(涙)ありがとうございます!!!!

265:デフォルトの名無しさん
10/06/27 23:45:11
>>264
いえいえ

266:デフォルトの名無しさん
10/06/28 00:33:27
お礼を言われると返って心苦しくなるなw

267:デフォルトの名無しさん
10/06/28 00:41:58
>>241
忘れてました
全部の平均ってどういう意味なんですかね?これがいまいちわからないです

268:デフォルトの名無しさん
10/06/28 00:47:00
>>267
例えば、
英数国合計の平均=(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点)/3

269:268
10/06/28 00:56:58
これのほうがまだわかるかな
(Eavg)
+(Mavg)
+(Javg)

=(Aさんの英語の点+Bさんの英語の点+Cさんの英語の点+Dさんの英語の点)
+(Aさんの数学の点+Bさんの数学の点+Cさんの数学の+Dさんの数学の点点)
+(Aさんの国語の点+Bさんの国語の点+Cさんの国語の点+Dさんの国語の点)

=(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点)/4


=英数国合計の平均

270:みすった
10/06/28 00:58:13
(Eavg)
+(Mavg)
+(Javg)

=(Aさんの英語の点+Bさんの英語の点+Cさんの英語の点+Dさんの英語の点)
+(Aさんの数学の点+Bさんの数学の点+Cさんの数学の+Dさんの数学の点点)
+(Aさんの国語の点+Bさんの国語の点+Cさんの国語の点+Dさんの国語の点)

=(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点)


これを人数分で割ると
(Aさんの英数国合計点+Bさんの英数国合計点+Cさんの英数国合計点+Dさんの英数国合計点)/4
=英数国合計の平均

271:デフォルトの名無しさん
10/06/28 01:15:43
すみっこつつきで申し訳ないけど、変数名がavgなのがちょっと変かもね。
質問者がそれで理解できてるようだからいいけれど。

272:デフォルトの名無しさん
10/06/28 06:33:29
>>271
うざいです(>_<)

273:デフォルトの名無しさん
10/06/28 07:26:32
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
社員の情報を管理するプログラムを作りたい。
そこで、以下の例のような構造体Employeeを考える。
以下の構造体Employeeの例は、社員の名前を保存するchar型の配列変数name、年齢を保存するint型の変数age、年譜を保存するint型の変数salaryを有している。
名前は、アルファベットで記述することとし、この構造体では名字だけを管理することとする。(ただし、この構造体のメンバは変更してもかまわない。)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
このような構造体を用いて、下の実行例のような社員データベースを処理するプログラムを実装しなさい。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月29日まで
[5] その他の制限:特にありません。よろしくお願いいたします。



274:デフォルトの名無しさん
10/06/28 10:31:05
1] 授業単元: プログラム入門
[2] 問題文(含コード&リンク): 2つの自然数 n と m を入力し、その積 n×m を
たし算のみで計算するプログラムを作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] borland c++ compiler 5.5
 [3.3] 言語: C
[4] 期限: 2010年06月28日14:30まで
[5] その他の制限: 特になし

よろしくお願いします

275:デフォルトの名無しさん
10/06/28 10:36:05
#include <stdio.h>

int main(void)
{
int n, m, ans;

scanf("%d%d", &n, &m);

printf("%d * %d = ", n, m);

for(ans = 0; m; m--) ans += n;

printf("%d\n", ans);

return 0;
}

276:246
10/06/28 11:02:07
>>247
>>248
ありがとうございます。
助かりました。

277:274
10/06/28 12:02:00
>>275
ループ変数使用して、printf 文をまとめた方がよくないですか?

278:デフォルトの名無しさん
10/06/28 14:05:40
[1] 授業単元: C言語プログラミング入門
[2] 問題文:関数の再帰的呼び出しによりAckermann(アッカーマン)関数を計算するプログラムを作れ。同じプログラムを繰り返し処理(ループ計算)により実現できるか考えよ。Ackermann関数は次式で定義される。
[3] 環境 
 [3.1] OS: Mac OS
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年6月30日
[5] その他の制限: 特にはないです。

よろしくお願いします。

279:278
10/06/28 14:07:58
Ackermann関数は次式で定義される。の次式を書き忘れてましたすいません。
n+1 m=0 and n>_0
ack(m,n)= ack(m-1,1) m>0 and n=0
ack(m-1,ack(m,n-1)) m>0 and n>0


280:デフォルトの名無しさん
10/06/28 14:19:21
>>277 足し算で
#include <stdio.h>
int main(void)
{
int a,b,c;
scanf("%d %d",&a,&b);
if (a<b){c=a;a=b;b=c;}c=0;b=-(b);
while (b++)printf(b?"%d + ":"%d = %d\n",a,c+=a);
return 0;
}

281:デフォルトの名無しさん
10/06/28 14:20:10
>>274
#include <stdio.h>
int main(void) {
  int i, n, m, ans;

  printf("input:"); scanf("%d", &n);
  printf("input:"); scanf("%d", &m);
  if(n<0 || m<0) { printf("error"); return 1; }
  ans = 0;
  if(n < m){
    for(i=n; i > 0; --i)
      ans += m;
  }else{
    for(i=m; i > 0; --i)
      ans += n;
  }
  printf("\nans:%d * %d = %d", n, m, ans);
  return 0;
}

282:224 ◆C/HmxiIl0o
10/06/28 16:02:40
>>224について、教えていただいたプログラムで提出したのですが、
logxの真値と補間で求めた値の誤差を比較していないとのことで受理されませんでした。

>>249さんのような結果を出さないといけないようなのですが、c++だったので、
Cに作り直そうとしたのですが、うまくできませんでした。

大変申し訳ないのですが、Cで作り直していただけないでしょうか?
宜しくお願い致します。

283: ◆/91kCCQXBo
10/06/28 16:05:01
いいよCで作り直して。
>>280 文章よめ

284:デフォルトの名無しさん
10/06/28 16:16:58
>>282
URLリンク(ideone.com)

285:224 ◆C/HmxiIl0o
10/06/28 16:26:08
>>284
ありがとうございました。

286:デフォルトの名無しさん
10/06/28 17:36:30
[1] プログラミング1
[2] 現在のインターネットを実現しているTCP/IP通信プロトコルでは主にIPv4
  を用いており、コンピュータを一意に識別するために32ビットのIPアドレスを
  用いている。これを踏まえ、IPアドレスの4つの数字を入力させ、これらを32ビットの
  データ型であるunsigned int型の変数にIPアドレスを示す2進数の数値として保存せよ。
  保存したIPアドレスがunsigned intの整数値として解釈するといくつとなるか表示する
  プログラムを作成せよ。
[3] 環境
 [3.1] OS Linux
 [3.2] gcc
 [3.3] 言語 C言語
[4] 期限:2010年6月30日19:00まで
[5] 特に制限はありませんが、while文は習っていません。
  if文、for文、配列など基本的なものを習いました。

どうぞよろしくお願いします。

287:デフォルトの名無しさん
10/06/28 18:07:05
>>286
int main(int argc, char* argv[])
{
int i;
unsigned int val;
unsigned int addr = 0;

for (i = 0; i < 4; i++)
{
printf("%d:", i + 1);
addr <<= 8;
scanf("%d", &val);
addr |= val;
}

printf("addr=%u\n", addr);

return 0;
}


288:デフォルトの名無しさん
10/06/28 18:24:56
[1] 応用プログラミング
[2] 問題文(含コード&リンク):  
  URLリンク(kansai2channeler.hp.infoseek.co.jp) 
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visualstadio 2008
 [3.3] 言語:C
[4] 期限:30日まで
[5] その他の制限:プログラミング経験はほとんどないです。
         構造体の授業での宿題です。
         構造体はまだわかるのですがそれに苦手なポインタが加わるとどうにもわかりません。
         宜しくお願いします。

289: ◆QZaw55cn4c
10/06/28 18:35:59
>>278
URLリンク(codepad.org)

290:デフォルトの名無しさん
10/06/28 18:40:17
>>287
ありがとうございました!

291: ◆QZaw55cn4c
10/06/28 18:46:34
>>288
URLリンク(codepad.org)

292:デフォルトの名無しさん
10/06/28 18:49:03
>>288
URLリンク(codepad.org)

293:デフォルトの名無しさん
10/06/28 18:59:13
>>292
> scanf("%s",p[i].name);
buffer overrun...

294:デフォルトの名無しさん
10/06/28 19:07:57
元がそうなってんだからそっちに文句つけろよw

295:デフォルトの名無しさん
10/06/28 19:15:50
>>294
氏ねといわれたら氏ぬんですね、よくわかります。

296:デフォルトの名無しさん
10/06/28 19:19:18
長すぎる文字列入れたら正しく動作しないのは>>291もかわらないしw

297:デフォルトの名無しさん
10/06/28 19:36:54
>>295
原要求を無視したらテンプレの意味が(ry

298:デフォルトの名無しさん
10/06/28 19:50:14
>>291 = >>293か?

299: ◆QZaw55cn4c
10/06/28 20:05:36
>>296
たしかにうまく処理できませんね。標準で入力バッファをクリアする方法はなんでしょうかね。

>>298
違います。

300:デフォルトの名無しさん
10/06/28 20:46:00
[1] 授業単元:情報処理学
[2] 問題文(含コード&リンク):
例1は、3教科5人の生徒の合計得点を求めるプログラムである。
これを実行し、動作を説明せよ。さらに、教科毎の平均点、
生徒毎の平均点を計算して表示できるようにプログラムを修正し、
結果とともに示せ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年6月30日

よろしくお願いします。

301:デフォルトの名無しさん
10/06/28 20:47:24
>>300の例1
例1
#include<stdio.h>
#define KAMOKU 3
#define SEITO 5
int main()
{
int ten[][KAMOKU]={{ 80, 65, 70},
{ 70, 55, 75},
{ 75, 80, 70},
{ 80, 60, 60},
{ 90, 80, 75}};
int j,k,s;
printf(“ kokugo sugaku eigo gokei\n”);
printf(“------------------------------------------------\n”);
for (j=0;j<SEITO;j++) {
s=0;
for (k=0;k<KAMOKU;k++) {
printf(“%8d”,ten[j][k]);
s=s+ten[j][k];
}
printf(“%8d\n”,s);
}
return 0;
}


302:デフォルトの名無しさん
10/06/28 21:18:08
>>300

> これを実行し、動作を説明せよ。
URLリンク(codepad.org)

> 教科毎の平均点、生徒毎の平均点を計算して表示できるようにプログラムを修正し、
結果とともに示せ。
URLリンク(codepad.org)

303:デフォルトの名無しさん
10/06/28 21:29:23
[1] 授業単元:プログラミング演習
[2]問題文:長いので次のレスに書かせていただきます
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:2010年6月29日17:00まで
[5] その他の制限:特に制限はありませんが、なるべく簡単な文法で書いていただけるとありがたいです


304:303
10/06/28 21:31:23
次レスにまとめても規制されてしまったので・・・・
[2] 問題文:[1],[2]のプログラムを作成せよ。
      [1]多項式の次数nと係数a,(i=0,1・・・・,n)を入力し、
その多項式f(x)=a_nx^2+a_n-1x^n-1+・・・+a_2x^2+a_1x+a_0と
       その微分の多項式f'(x)を出力するプログラムを作成せよ。
       ただし、nはint型,a_iはdouble型の配列とせよ。n<100と仮定してよい。
       以下に入力例を示す
n=5
a5=1
a4=0
a3=2
a2=0
a1=3
a0=0
f(x)=x^5+2x^3+3x
f'(x)=5x^4+6x^2+3

305:303
10/06/28 21:32:41
続きです
[2]以下の要領で、平均点、分散、標準偏差、最小値、最大値を求めるプログラム
        を作成せよ。
        (1)100人分の点数(int型)を記憶するための配列変数aを定義する
        (2)人数(int型)を記憶するための変数nを定義する。
        (3)人数nの初期値を0とする
        (4)点数をa[n]に入力する
        (5)点数が負の数ならば終了する
        (6)人数nを1つ増やす
        (7)全員の点数を空白で区切って表示する。例:83 52 64
        (8)平均点を出力する
        (9)分散を出力する
        (10)標準偏差を出力する
        (11)最小値を出力する
        (12)最大値を出力する
        (13)(4)へ戻る
        ※標準ライブラリのsqrt関数を使わずニュートン法によって平方根を
         求める自作の関数を使え。
        ※平均点、分散、標準偏差を求めるとき、キャスト演算子を用いてdouble型へ
         型変換せよ。
多いですがどうぞよろしくお願いします

306:デフォルトの名無しさん
10/06/28 21:38:30
>>210
やっと規制が解けた。
3000!の桁数=9131なので、#define文を変えればもう少しいけるはず。
URLリンク(codepad.org)

307:デフォルトの名無しさん
10/06/28 21:56:52
>>273もどなたかお願いいたしますm(_ _)m

308:デフォルトの名無しさん
10/06/28 22:29:23
>>304
#include <stdio.h>

int main(void)
{
    int n, i;
    double a_i[100], a;
    printf("n=");
    scanf("%d", &n);
    for (i = n; i >= 0; i--) {
printf("a%d=", i);
scanf("%lf", &a);
a_i[i] = a;
    }
    printf("f(x)=");
    for (i = n; i >= 0; i--)
if (a_i[i])
    printf(a_i[i] > 0 ? " +%lgx^%d" : " %lgx^%d", a_i[i], i);
    printf("\n");

    for (i = 0; i < n; i++)
a_i[i] = a_i[i + 1] * (i + 1);
    a_i[n] = 0;

    printf("f'(x)=");
    for (i = n; i >= 0; i--)
if (a_i[i])
    printf(a_i[i] > 0 ? " +%lgx^%d" : " %lgx^%d", a_i[i], i);
    printf("\n");

    return 0;
}

309:デフォルトの名無しさん
10/06/28 22:44:17
[1] 授業単元:C++プログラミング
[2] 問題文(含コード&リンク):○×ゲームのプログラムにコンピュータとの対戦をつける。
コンピュータと対戦するかしないかは選べれるようにする事。
URLリンク(codepad.org)
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:Visual C++ 2008 Express Edition
 [3.3] 言語:C++
[4] 期限:6/29(火)AM9時まで
[5] その他の制限:C++触り始めたばかりです。インライン関数は使わない方向でお願いします。

実行結果としてはこんな感じにしてほしいです。
1Pと2Pとの交互に対戦しますか?
1Pとコンピュータとの対戦にしますか?
プレイヤ同士の対戦なら1を、コンピュータとの対戦なら2を入力してください:
こんな感じで選らばせて対戦できるようにしてほしいです。

※1Pのマスは○でコンピュータのマスは×でお願いします。

大変だと思いますがどうかお願いします。

310:デフォルトの名無しさん
10/06/28 22:46:03
礼も言わないヤツか

311:デフォルトの名無しさん
10/06/28 22:57:23
>>310
あの時は本当にありがとうございました。

本当に申し訳ありません。

312:デフォルトの名無しさん
10/06/28 23:57:38
>>258
おい!同じ大学だw

>>259
助かりました ありがとうございます。

313:303
10/06/29 00:11:24
>>308 ありがとうございます。
   どなたか>>305に書いてある[2]の方もよろしくお願いします

314:デフォルトの名無しさん
10/06/29 00:15:38
>>273
URLリンク(codepad.org)

とりあえずここまで。
昇級については仕様を推測できなかった。
他の機能については適当に推測した。
リファクタリングし甲斐があると思うから,がんがれ。


315:デフォルトの名無しさん
10/06/29 01:09:05
>>312
char型ならまとめ方一緒だったの?
俺的には全然違ったw

316:デフォルトの名無しさん
10/06/29 02:14:34
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月1日

よろしくお願い致します。

317:デフォルトの名無しさん
10/06/29 04:05:10
[1] 授業単元:プログラミング言語
[2] # リストに格納したデータを,データファイルとは
別のファイル(出力先ファイルとよぶ)に書き出す.
データファイルと出力先ファイルのファイル名は
コマンドライン引数として指定する
下記テンプレートを使用すること
URLリンク(codepad.org)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月2日
お願います

318:デフォルトの名無しさん
10/06/29 04:13:02
言い忘れてました
>>310以外の方にお願いします

319:デフォルトの名無しさん
10/06/29 04:59:18
windows+gccな人って具体的にどういう環境なんだろ。

320:デフォルトの名無しさん
10/06/29 05:05:35
CygwinかMinGWだろ

321:デフォルトの名無しさん
10/06/29 05:22:04
そういう予想じゃなくてさ。
出題者がちゃんと理解してるのかどうかを知りたいという意味合いも含んでた。
実はteratermでredhatにつないでました、とかありえない話じゃないと思うのよ。

322:デフォルトの名無しさん
10/06/29 09:22:02
>>316
#include <stdio.h>
#define NN 3
#define loop(i,NN) for (i = 0; i < NN; i++)

int
main(void)
{
    int i, j, seq[3], n;
    char s[NN][100];

    loop(i, NN) {
        printf("入力文字列[%d]=", i);
        scanf("%s", s[i]);
    }
    printf("繋ぎ合わせる順番を入力してください\n");
    loop(i, NN) {
        scanf("%d", &n);
        seq[i] = n;
    }
    printf("結果 -> ");
    loop(i, NN) {
        loop(j, NN) {
            if (seq[j] == i + 1)
                printf("%s", s[j]);
        }
    }

    return 0;
}

323:デフォルトの名無しさん
10/06/29 10:06:01
>>316の2番目
#include <stdio.h>
#include <string.h>
#define NN 100
#define loop(i,NN) for (i = 0; i < NN; i++)

int
main(void)
{
    int i = 0, linemax = 0, cnt = 0;
    char s[NN][100], *p, str[] = "abc";

    while (fgets(s[i++], 100, stdin) != NULL)
        linemax++;
    loop(i, linemax) {
        for (p = s[i]; *p; p++) {
            if (!strncmp(p, str, 3))
                cnt++;
        }
    }
    printf("#%s is %d\n", str, cnt);

    return 0;
}

324:デフォルトの名無しさん
10/06/29 11:49:06
>>322-323さん

助かりました。ありがとうございました。

325:デフォルトの名無しさん
10/06/29 12:48:44
画像上のある点からy=ax^2の2次曲線を赤線で描画しなさい(画像 320×240)


(x,y)=(160,120)
a=1/3のとき
a=1/2のとき
a=1のとき
a=2のとき

描画範囲
yの範囲は40
xの範囲は60

326:224 ◆C/HmxiIl0o
10/06/29 14:19:04
>>283
すみません。折角作っていただいたのですが、データが>>242の通り、
x=1.0~4.0,y=1/(1*25*x*x)でそれぞれ31個づつあります。
何度もお願いするのも申し訳ないと思い自分で拡張を試みたのですが、
Interpolationの部分が出来ませんでした。

startが最大で31まで増えるため、そのまま入れてもオーバーフローしてしまい、
かといって、iやjを消してdata[0][start]のような記述をするとnanになってしまいます。

何度も申し訳ないのですが、forの部分だけで構いませんので、作っていただけないでしょうか?

327:デフォルトの名無しさん
10/06/29 14:30:53
>>325
こっちにも投げたか

328:278
10/06/29 15:09:56
>>289 ありがとうございます。

329:デフォルトの名無しさん
10/06/29 15:11:29
>>305
URLリンク(codepad.org)

330:デフォルトの名無しさん
10/06/29 15:17:38
>>324>>328
はい

331:デフォルトの名無しさん
10/06/29 17:26:05
[1] 授業単元:一般情報処理
[2] 問題文(含コード&リンク):次のような動作をするプログラムを作成せよ。
               配列内のデータの最小値を返す。int min() 配列内のデータの最大値を返す。int max()
配列内のデータの平均値を返す。double mean() 配列内のデータの標準偏差を返す。double stdev()
ただしmain関数は次のものを使うこと。
               int main(void){
int a[15]={81,36,45,67,73,98,62,56,77,61,65,70,25,51,18};
printf("min=%d\n",min(15,a));
printf("max=%d\n",max(15,a));
printf("average=%lf\n",mean(15,a));
printf("standard deviation=%lf\n",stdev(15,a));
return 0; }
さらに、配列a[]の各要素の偏差値を表示するプログラムを作成せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名:gcc
 [3.3] 言語:C
[4] 期限:[2010年06月30日18:30まで]
[5] 文章中の示された関数・main関数を使ってください
よろしくお願いしますm(_ _)m

332:デフォルトの名無しさん
10/06/29 18:18:32
>>226です。
>>227を作って頂いたのですが、main関数の部分も含め、プログラム全体を作って頂きたいです。

333:デフォルトの名無しさん
10/06/29 18:34:36
>>331
URLリンク(codepad.org)

334:デフォルトの名無しさん
10/06/29 18:53:33
[1] 授業単元:画像処理
[2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
                 上下反転させた画像をビットマップで保存するプログラムを作成。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: [無期限]
[5] その他の制限: ビットマップのファイル構造は少し勉強しました。
           画像のデータを取り込むところと処理を行う部分がよくわかりません。
           RGB値、malloc、Loadbmp等わかりやすく載ってるHPや本があれば教えてください。
           よろしくお願いします。

試しに書いてみた上下反転プログラム → URLリンク(codepad.org)
反転させたい画像を作ったプログラム → URLリンク(codepad.org)

335:デフォルトの名無しさん
10/06/29 21:00:18
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):ファイルに保存された会員情報を指定された項目をキーとしてソートするプログラムを作成する.
出力形式は,入力データと同じ,つまり1行に1人分のデータを格納し,各項目間はカンマで区切るものとする.
また,ソート済みのデータはファイルではなく標準出力に出力するものとする.
整数型のデータについては数値として,文字列型のデータについては大文字/小文字を区別せずにソートをすること.
ソートアルゴリズムはこれまでの演習で使用したもの,していないものに関わらず,何を用いてもよい.

また,会員数は最大で20,000人と仮定してもよい.

会員情報の入ったファイルのファイル名,キーとなる項目,正順か逆順かの指定はプログラム実行時の引数として与える.第一引数が会員情報の入ったファイル名,第二引数が項目番号(表1参照),第三引数がソート方法(0なら昇順,1なら降順)とする.

表1: データ型 項目名 項目番号 型
会員ID 1 整数(int)
姓 2 文字列(最大で50文字)
名 3 文字列(最大で50文字)
年齢 4 整数(int)
州 5 文字列(最大で50文字)
郡 6 文字列(最大で50文字)


[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2010年6月30日20:00まで
[5] その他の制限: 特になし


よろしくお願いします。

336:デフォルトの名無しさん
10/06/29 21:25:33
>>291
>>292
ありがとうございました。
返事送れて申し訳ありません。
書き込んでから20分とはおどろきました

337:デフォルトの名無しさん
10/06/29 21:44:13
>>302
ありがとうございます!

338:デフォルトの名無しさん
10/06/29 21:46:47
>>317
URLリンク(kansai2channeler.hp.infoseek.co.jp)

339:デフォルトの名無しさん
10/06/29 22:55:19
>>335
URLリンク(kansai2channeler.hp.infoseek.co.jp)

340:デフォルトの名無しさん
10/06/29 23:39:54
[1] 授業単元: プログラミング開発基礎
[2] 問題文 複数ありますのでこちらで
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:(Windows 
[3.2] VC 6.0
[3.3] 言語:C
[4] 期限:なし
[5] 制限:なし
問題数が多くて恐縮なのですがなにとぞよろしくお願いします

341:デフォルトの名無しさん
10/06/29 23:56:51
>>339
ありがとうございます!

342:デフォルトの名無しさん
10/06/30 00:18:49
>>340
URLリンク(kansai2channeler.hp.infoseek.co.jp)

343:デフォルトの名無しさん
10/06/30 00:29:31
>>326
テンプレ嫁

344:デフォルトの名無しさん
10/06/30 01:09:50
>>335
ピキーーーン・・・麻呂のク(ry

345:デフォルトの名無しさん
10/06/30 02:44:25
>>342ありがとうございますこれでどうどうと学校にいけます

346:331
10/06/30 08:20:03
>>333
ありがとうございます。
ただ、コンパイルしてみたところ

/tmp/ccSDhYV6.o: In function `stdev':
test.c:(.text+0x18a): undefined reference to `sqrt'
collect2: ld returned 1 exit status

このようにエラーがでてしまうのですがどうすればコンパイルできるでしょうか?

347:デフォルトの名無しさん
10/06/30 09:03:08
-lm

348:デフォルトの名無しさん
10/06/30 10:48:45
>>346
次回からは、undefined reference to `sqrt'  でGoogle検索するとかして、自分で調べてくれ。
対策は、コンパイル時に -lm オプションを付ける。
例:gcc -lm test.c

349:デフォルトの名無しさん
10/06/30 11:11:24
>>346
もう一度言うぞ。
対策は、コンパイル時に -lm オプションを付ける。
わかったな。

350:デフォルトの名無しさん
10/06/30 12:19:22
こういうときどういう反応したらいいのだろうか
とりあえず、笑えばいいのかな

351:デフォルトの名無しさん
10/06/30 14:36:15
>>350
最近、IDなしのスレに粘着してるなりすましのかまってちゃんが居るから、本人とは限らない。
「俺が348だ、349は偽物だ」と言っても確認出来ないからね。
という訳で、不快に思ったらスルーが一番。

352:デフォルトの名無しさん
10/06/30 16:17:43
そうすることにするよ

353:335
10/06/30 16:32:15
何度もすみません。
せっかく解いていただいたのですが、「昇順か降順でしかソートできない」として、もう一度お願い致します。


354:デフォルトの名無しさん
10/06/30 18:16:33
>>325
>>1
環境によってはとけるかもしれません。(最近apiを勉強しているところでして)
テンプレートを書くときには条件をもっと詳しく書いてください。
・描画範囲の意味がよくわかりません。±40, ±60 ということですか?
・y = ax^2 を平行移動したものを描画すればいいのでしょうか?
・(x, y) = (160, 120) というのは頂点なんですか?
以上よろしくお願いいたします。

355:デフォルトの名無しさん
10/06/30 18:33:45
>>354
mixiに似たような質問あったけど(既に削除済み)
背景が真黒のbmpに白で線を書き込みたいようだよ。

356:346
10/06/30 18:48:06
本当にすみませんでした;
回答してくださった方、ありがとうございます
無事にコンパイルできました


357:デフォルトの名無しさん
10/06/30 19:55:42
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visua lstadio
 [3.3] 言語:C
[4] 期限:2010年7月1日

よろしくお願いします

358:デフォルトの名無しさん
10/06/30 20:27:38
>>357
URLリンク(kansai2channeler.hp.infoseek.co.jp)

359:デフォルトの名無しさん
10/06/30 20:56:55
>>358
すいません、こちらの環境(Microsoft Visual Studio 2008)ではエラーが2つ出て動きませんでした。

360:デフォルトの名無しさん
10/06/30 21:12:49
>>353
もともと昇順か降順かしかないんじゃ?
コードもascとdescしかないように見えるし。
どこが気に入らないのか具体的に

361:デフォルトの名無しさん
10/06/30 21:13:19
>358, 359
確保したら開放ぐらいきちんと書けとも思ったがまぁいいや
C言語としてコンパイルすればエラーはでない
VS2008のclは使ったことないので、どんなスイッチ指定すればいいか知らないが、原因はC++ではvoid *から他のポインタへの暗黙の型変換がされないから
C++のソースコードとしてコンパイルしたければ、malloc()の戻り値を適当にキャストすれば良い

362:デフォルトの名無しさん
10/06/30 21:13:32
>>359
URLリンク(kansai2channeler.hp.infoseek.co.jp)

これでどうですか?
VisualStudio使ったことないもので、すいません。

363:デフォルトの名無しさん
10/06/30 21:13:53
>>359
エラーの内容はなんとなく予想できるけど、コンパイルの仕方が悪い。
具体的には/Tcスイッチをつけるといいと思う

364:デフォルトの名無しさん
10/06/30 21:21:01
>>358
>>361
URLリンク(kansai2channeler.hp.infoseek.co.jp)

365:デフォルトの名無しさん
10/06/30 21:36:58
>>364
49行目、と思わんでもないけど別にいいや、としたいところだけど
学生はしっかりやっておいた方がいいのかもな、とも。。。

366:デフォルトの名無しさん
10/06/30 22:05:33
[1] 授業単元:Cプログラミング演習
[2] 問題文(含コード&リンク):
登録番号 (int no) と名前 (char *name) と年齢 (int age) を含む構造体 person 型のポインタ変数を宣言し、登録人数分だけの動的メモリ確保をせよ。そして、データをファイルから入力せよ。
ファイルの形式は、先頭に登録する人物とし、そのあとに人数分のデータを登録番号、名前、年齢の順に書いていく(下の例を参照。登録番号は入力順に1,2,3,4,5,・・・とする。そして、入力した全員データを表示せよ。)

(ファイルの例)
3
1 田中 20
2 大田 40
3 井上 35
[3] 環境
 [3.1] OS:Windows Vista
 [3.2] コンパイラ名とバージョン:Visual Studio 2008
 [3.3] 言語:C
[4] 期限:2010年7月2日まで
[5] その他の制限:無し

よろしくお願いします

367:デフォルトの名無しさん
10/06/30 22:42:19
>>366
>>357といっしょ

368: ◆QZaw55cn4c
10/06/30 23:23:11
>>344
fgetc() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?

369:デフォルトの名無しさん
10/07/01 01:48:52
>>338
ありがとうございます

370:デフォルトの名無しさん
10/07/01 06:24:44
>>368
麻呂じゃないが、勘違いしたのはお前だろ?しつこいぞw
麻呂の偽者との区別もつかず、いつまでも相手が勘違いしたと思い込んでろ。
自分が勘違いしてた癖にw 資料をきちっと読めよ、青二才。
あと、お前の言っている事は本当に意味不明。

371:デフォルトの名無しさん
10/07/01 06:25:39
>>368
そ・れ・か・ら、getchar() と EOF について理解できましたか?
どうですか?成長しましたか?

372:デフォルトの名無しさん
10/07/01 06:28:28
>>368
URLリンク(www.bohyoh.com)
> int getchar(void);
getchar() の戻り値は int 型であることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?

373:デフォルトの名無しさん
10/07/01 06:32:27
>>368
EOF がマクロで定義されているであることを、そろそろ理解していただきたいのですが。
どうですか?成長しましたか?

374:デフォルトの名無しさん
10/07/01 06:39:34
>>368
あぁ、あなた、結局ここで質問された課題に答えられず麻呂に負けたヘタレですか?w
いつまでも根に持つ陰険。お前の人生はクソだなw
一生こんなスレでネット弁慶をやってろ。お前が見ず知らずの人間に偉そうな態度で
上から目線で優越感を感じられるのは、せいぜいこのスレだけなんだろ?実に寂しい人生だ。

【話題】2ちゃんねる・ネット弁慶には困ったものだ 自らが叩きやすそうな対象を見つけたとたん、ムキになっ
スレリンク(newsplus板)
↑まさにお前のことだなw それも自分の勘違いだと気づかずに、揚げ足取りをしたつもりのバカ

375:デフォルトの名無しさん
10/07/01 06:41:27
>>368
戻り値がどうしたって?リストの課題で麻呂のクソースは付き物。
しかし、今回は提示される事はなかった。それが何を意味しているか分かるか?
麻呂はもう居ないってことだ。俺は何となく麻呂のクソースが出るか扇動してみたが
出なかったしw

376:デフォルトの名無しさん
10/07/01 06:42:01
>>368
お前のおつむは成長していないようだなw 精神レベルもw

377:デフォルトの名無しさん
10/07/01 06:45:23
>>368
そろそろお前が痛いって気づけよ

378:デフォルトの名無しさん
10/07/01 06:46:19
>>368
悔しかったらお前オリジナルのリストのソースを書いて公表しろよ
他人のパクリしか出来ないコピーキャット

379:デフォルトの名無しさん
10/07/01 06:48:06
>>368
ん~~、みっともない。このスレに何しに来てんの?分かりきった答えの問題を
解き続けるだけがお前の人生?このスレから離れて自分の人生を見つめ直したら?
どうせいつかは死ぬ限り有る時間を生きている人生だぞ?
こんな場所で揉めるのに使った時間も、過去のものとなるがそれが未来に役に立つ
有意義な時間になるとは思えないね。

380:デフォルトの名無しさん
10/07/01 06:50:01
>>368
戻り値が重要ではないとは言わないが、いきなりそんなことを書くお前は何者だ?
麻呂がいつそんなことを言ったか、ログを参照してくれ。それが麻呂だという証拠も付けてな。
こんなIDも出ない、本人がトリップを使ってない騙りが可能な場所で、見えない敵と
戦い続ける恥ずかしい戦士めw

381:デフォルトの名無しさん
10/07/01 06:56:00
>>368
> そろそろ理解していただきたいのですが。
相手を茶化すにしても痛すぎ。そんな態度だから周りから干されて孤立したんだろ。
言動が陰険過ぎ。いつまでも理解していないみたいな勘違いとか、粘着していることも含めて
人間として終わってる。

382:デフォルトの名無しさん
10/07/01 06:59:49
368は人気者?

383:デフォルトの名無しさん
10/07/01 07:02:14
>>382
この間隔で書き込まれているのを見ていると、
一人で騒いでいるだけのようにしか見えない

384:デフォルトの名無しさん
10/07/01 07:25:34
あいかわらずですね。

385:デフォルトの名無しさん
10/07/01 07:37:16
見えない敵と戦っているんだろう
プログラマなら魔法で戦えよ

386:デフォルトの名無しさん
10/07/01 07:47:46
>>383
一度に多数の人間が同時に書き込んだ、というのを演出したいらしい。

387:デフォルトの名無しさん
10/07/01 12:11:13
vectorをリファレンス引数で扱う意味を教えてください

388:デフォルトの名無しさん
10/07/01 12:53:33
>>387
コピーするコストがもったいないから
コピーだと中身に変更を加えても呼び出し元に影響を与えられないから

389:デフォルトの名無しさん
10/07/01 12:59:28
>>388
つまり、コピーだとその後代入などの手間がかかるため
リファレンス引数で扱い、その手間を省くということですね
ありがとうございます。

390:デフォルトの名無しさん
10/07/01 14:36:20
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Vc
 [3.3] 言語: C++
[4] 期限:2010年07月10日まで
[5] その他の制限:なし

391:デフォルトの名無しさん
10/07/01 14:50:54
>>383
その感覚じゃ連続投稿に引っかかることくらい、ここの住人なら知っているだろう。
バイバイさるさんにも引っかかる可能性はある。

392:デフォルトの名無しさん
10/07/01 18:39:51
>>391
抜け道はいくらでもある。

393:デフォルトの名無しさん
10/07/01 21:27:49
>>390
void main (笑)

394:デフォルトの名無しさん
10/07/01 21:29:53
>>389
コンストラクタ・デストラクタのコストを避けるのが主目的。

395:デフォルトの名無しさん
10/07/01 21:32:19
>>379
なに、ほんの手遊びですよ。ちょろちょろっと書いてみるのもまた楽しいものです。

396:デフォルトの名無しさん
10/07/01 21:35:24
>>378
>>250
オリジナルの多桁演算ライブラリです。いつのまにか乗算・除算もできてしまいました。
効率は悪いのですが、それでもわりに重宝しています。

397:デフォルトの名無しさん
10/07/01 21:44:08
トリップ付けずに代弁するとか、大人しくトイレで大便しといれw

398:デフォルトの名無しさん
10/07/01 21:53:17
>>396
横レスで失礼。除算をどうやったのか興味があります。

399:デフォルトの名無しさん
10/07/01 21:59:57
>>398
2進法での除算そのものです。ちょっとググってみたところでは URLリンク(homepage2.nifty.com) など。
多桁数を1bit ずつシフトさせながら引き算できるときは引き算をする、という感じです、言葉にすれば。
>>250 も、折をみて、剰余を出力させるように改良しなくては。

400:デフォルトの名無しさん
10/07/01 22:25:54
>>399
なるほど。繰り返しで処理出来るからハードウェア化も可能、というのが理解出来ました。
有難う御座います。

401:デフォルトの名無しさん
10/07/01 22:39:01
>>400
手近な環境でマシン語を習得し、割り算を実装することができれば、そのマシン語は卒業したといってもいいと思います。
x86 がいいでしょうが、casl でもできます。

402:デフォルトの名無しさん
10/07/01 22:54:25
>>401
CASLには虎馬が...ww

403:デフォルトの名無しさん
10/07/01 23:05:13
>>390の前半
// ◎ソースコード
#include <stdio.h>
#define N 10
#define ID   "/0000/"
#define NAME "/やまだ/"

static int fib(int n)
{
    int r;
    if (n <= 2)
r = 1;
    else
r = fib(n - 1) + fib(n - 2);
    return r;
}

//-----------------------------------------------------
int main(void)
{
    int i;
    printf("%s %s\n\n", ID, NAME);
    for (i = 1; i <= N; i++) {
printf("F%2d = %7d\n", i, fib(i));
    }
    return 0;
}


404:デフォルトの名無しさん
10/07/01 23:09:06
>>403
ついでに改造版。
#include <stdio.h>
#define N 40
#define ID   "/0000/"
#define NAME "/やまだ/"
#define fib(n) fib2(n,1,1)
static int fib2(int n, int a, int b)
{
    return (n <= 2) ? b : fib2(n - 1, b, a + b);
}

//-----------------------------------------------------
int main(void)
{
    int i;
    printf("%s %s\n\n", ID, NAME);
    for (i = 1; i <= N; i++) {
printf("F%2d = %7d\n", i, fib(i));
    }
    return 0;
}


405:デフォルトの名無しさん
10/07/01 23:15:15
摂氏から華氏,及び華氏から摂氏に換算する関数を作成して、
main関数でキーボードから温度とその値が摂氏であるか華氏であるかを
入力し,摂氏ならば華氏に,華氏ならば摂氏に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
なお出力は main関数で行うこと。

406:デフォルトの名無しさん
10/07/01 23:29:03
#include <stdio.h>
float power(float x,float y)
{
float ans;
char i;

ans=0;

if((char)y='C'){
ans=9/5 * x + 32;
y='摂氏';
i='華氏';
}else{
ans=5/9 * (x - 32) ;
y='華氏';
i='摂氏';
}
return ans;
}


407:デフォルトの名無しさん
10/07/01 23:29:54
int main(void)
{
float a;
char b,i;

a=0;

printf("温度を入力してください: ");
scanf("%f", &a);

printf("%d度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ",(int)a);
scanf("%s", &b);
printf("\n");

printf("%c %8.3f = %c %8.3f\n",b, a, i, CelsiusFahrenheit(a, b));
return 0;
}

ここまでできたんですが、出力がうまくいきません。
誰か教えてください。

408:デフォルトの名無しさん
10/07/02 00:20:43
>>405
#include <stdio.h>

float CelsiusFahrenheit(float a, char *b)
{    return (*b == 'C') ? (a - 32) * 5 / 9 : a * 9 / 5 + 32;}

int main(void){
    float a = 0;
    char b[2];

    printf("温度を入力してください: ");
    scanf("%f", &a);
    printf("%g度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ", a);
    scanf("%s", b);
    b[1] = (*b == 'C') ? 'F' : 'C';
    printf("%5.1f °%c = %5.1f °%c\n",
            a, b[0], CelsiusFahrenheit(a, b), b[1]);

    return 0;
}

409:デフォルトの名無しさん
10/07/02 02:19:37
[1] 授業単元:プログラミングC
[2] 問題文(含コード&リンク):
極座標(r,θ)の値を入力すると、直交座標(x,y)に変換するプログラムを作成せよ。
但し,θの値はdegree(度)で入力すること。また、πの値は逆三角関数(arctan(x))を使って計算をすること。
[3] 環境
 [3.1] OS:WinodwsVista
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:7/5(月)迄
[5] その他の制限:特になし

よろしくお願いします

410:デフォルトの名無しさん
10/07/02 02:42:39
[1] 授業単元:アルゴリズム論
[2] 問題文(含コード&リンク):分離連作法と外部ハッシュ法の性能比較
[3] 環境
 [3.1] OS:windows XP
 [3.2] gcc
 [3.3] 言語:C++
[4] 期限:2010年7月10日00:00
[5] その他の制限: 特になし

411: ◆QZaw55cn4c
10/07/02 05:55:41
>>409
URLリンク(codepad.org)

412:デフォルトの名無しさん
10/07/02 07:22:59
>>403
ありがとうございます
よろしければ演習2のほうもお願いします・・・

413:デフォルトの名無しさん
10/07/02 12:17:45
>>411
ありがとうございます!

414:デフォルトの名無しさん
10/07/02 12:56:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):switch 文を使用して
1. データファイルの新規作成
2. データファイルの追加作成
3. データファイルの読み込みと表示
4. 終了
をメニュー形式で処理するプログラムを作成せよ。
・ ファイル名はキーボードから入力する。
・ 1~4の処理はユーザ関数として定義すること。
void data_write(void)
void data_append(void)
void data_read(void)
void the_end(void)
・1~4以外の数値が入力されたら再入力させること。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:cc
 [3.3] 言語:C言語
[4] 期限:7月5日

415:デフォルトの名無しさん
10/07/02 17:27:31
もう麻呂のク(ryで十分じゃんw

416:デフォルトの名無しさん
10/07/02 18:26:04
>>415
コードを出したり引っ込めたりしなければね。

417:デフォルトの名無しさん
10/07/02 19:01:48
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数
factを作成して動作を確認せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日

よろしくお願いします。

418:デフォルトの名無しさん
10/07/02 19:04:56
>>417
>>211, >>250, >>306 あたりを参考にしてはいかが?

419:デフォルトの名無しさん
10/07/02 19:43:49
>>417
URLリンク(codepad.org)

420:デフォルトの名無しさん
10/07/02 20:35:07
[1] 授業単元:C言語入門
[2] 問題文(含コード&リンク):
実数値(xとする)と正の実数値(yとする)を引数としてx^yを戻り値とする
関数mypowを作成し、プログラムリストと実行結果を示せ。
ただし、xとyについてはmain関数でキーボードから入力するようにし、
出力結果としては、mypow関数の計算結果と数学関数pow関数の結果を
両方表示するようにせよ。また、mypow関数のプロトタイプ宣言も行うこと。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2010年7月5日

よろしくお願いします。


421:デフォルトの名無しさん
10/07/02 20:35:15
[1] 授業単元: プログラム言語
[2] 問題文(含コード&リンク):
10 人の成績を入力し,その順位を成績と共に表示したい。以下の考え方に基づいた
プログラムを作成せよ。
1 ?
2次元配列s[10][2] を用意する。
2 ?
i=0~9 のfor 文を用いてs[i][0] に成績を入力する。
3 ?
s[0][0] とs[j][0],j=0~9 を比較し,s[0][0] より大きい数値の個数n を数え
 る。その個数+1 が成績順位になるので,s[0][1] にn+1 を代入する。
4 ?
同様の操作をs[i][0],i=0~9 に対して行なえば,その成績順位がs[i][1] とし
 て求められるので,あとは成績と共に表示すればよい。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C++
[4] 期限: 2010年7月6日まで
[5] その他の制限: main関数
よろしくお願いします

422:デフォルトの名無しさん
10/07/02 20:39:26
>>419
ありがとうございます!

423:デフォルトの名無しさん
10/07/02 21:27:52
>>408
遅れてすいません。ありがとうございます!

424:デフォルトの名無しさん
10/07/02 21:44:46
>>416
しつけぇw

425:デフォルトの名無しさん
10/07/02 22:02:53
>>423ですが、何度もすいません。

>>408

80度が「摂氏」なら "C" を「華氏」なら "F" を入力してください: F

日本基準 80.0 度 = 欧米基準 176.0 度

と出力できるようにはできませんか?

426: ◆QZaw55cn4c
10/07/02 22:47:29
>>420
URLリンク(codepad.org)
もっとまじめにmypow()を定義しなければならないのでしたら、その旨ご返事ください。考え直します。

427: ◆QZaw55cn4c
10/07/02 23:06:15
>>421
URLリンク(codepad.org)
VC6 でコンパイルできなかったらごめんなさい。

428:デフォルトの名無しさん
10/07/02 23:47:19
>>424
質問でも宿題でもないのにあげている、という点で同一人間っぽいですね。
いわゆる自意識過剰ってやつですか。もっと大人になりましょうね。

429: ◆QZaw55cn4c
10/07/03 00:49:16
>>390
URLリンク(codepad.org)

430:デフォルトの名無しさん
10/07/03 00:56:52
>>425
計算違いがありましたので修正しました。

#include <stdio.h>
#define c1(c) (c=='C')?"日本基準":"欧米基準"

float CelsiusFahrenheit(float a, char *b)
{    return (*b == 'F') ? (a - 32) * 5 / 9 : a * 9 / 5 + 32;}

int main(void)
{
    float a = 0;
    char b[1];

    printf("温度を入力してください: ");
    scanf("%f", &a);

    printf("%g度が「摂氏」なら 'C' を「華氏」なら'F' を入力してください: ", a);
    scanf("%s", b);
    printf("%s %5.1f 度 = %s %5.1f 度\n",
   c1(*b), a, c1('C' + 'F' - *b), CelsiusFahrenheit(a, b));

    return 0;
}


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch