C/C++の宿題を片付け ..
401:デフォルトの名無しさん
07/11/12 22:22:09
>>394
#include<stdio.h>
#include<math.h>
typedef double (*SingleFun)( double );
double newton(SingleFun fun,SingleFun fprime, double x)
{
double fx;
double fp;
double xprev;
do
{
fx = fun(x);
fp = fprime(x);
if(fp == 0) fp = 1;
xprev = x;
x -= fx / fp;
} while( x != xprev );
return x;
}
double fN(double N) { return 10.0 * N * log( N ) - 2*N*N; }
double dfdN(double N) { return 10.0 * log( N ) - 4.0 * N + 10.0; }
int main(void)
{
double res = newton( fN, dfdN, 1.0 );
printf("result = %1lf\n",res );
printf("10Nlog(N) > 2N^2 is true for N > %lf\n",res);
return 0;
}
402:デフォルトの名無しさん
07/11/12 22:25:38
>>398-399
ありがとうございます。やっと理解できました
>>401
ありがとうございます。
403:デフォルトの名無しさん
07/11/12 22:27:58
>>402
結果を実数で返してしまった。整数に直してくれ。
だから答えとしてはN > 1だな。
404:デフォルトの名無しさん
07/11/13 00:36:44
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
ライブラリ関数atofと同じ動作を行う関数
double strtof(const char *nptr) {/*・・・*/}
を作成しなさい。
[3] 環境
[3.1] OS: Windows
[3.2] gcc3.4
[3.3] C言語
[4] 11/15まで
お願いします
405:デフォルトの名無しさん
07/11/13 00:43:07
#include<stdio.h>
#include<stdlib.h>
double strtof_ (const char *nptr)
{
return strtod_ (nptr, (char **) NULL);
}
406:デフォルトの名無しさん
07/11/13 00:44:11
間違えた。
ていうか衝突するからstrtofって名前使わないほうがいいと思う。
#include<stdio.h>
#include<stdlib.h>
double strtof_ (const char *nptr)
{
return strtod (nptr, (char **) NULL);
}
407:デフォルトの名無しさん
07/11/13 00:52:40
>>406
すいません、条件を書き忘れました
申し訳ありません
標準ライブラリ関数を使わないでお願いします
408:デフォルトの名無しさん
07/11/13 01:52:52
>>404
double strtof(const char *nptr)
{
double ret = 0, div = 10, f = 1;
if(*nptr=='-') {
f = -1;
nptr++;
}
else if(*nptr=='+') nptr++;
while('0' <= *nptr && *nptr <= '9') ret = ret * 10 + *nptr++ - '0';
if(*nptr++!='.') return f * ret;
while('0' <= *nptr && *nptr <= '9') {
ret += (*nptr++ - '0') / div;
div *= 10;
}
return ret * f;
}
409:デフォルトの名無しさん
07/11/13 03:35:54
double strtof(const char *nptr)
{
const char *p;
int s, n, d;
s = 1;
n = 0;
d = 0;
for (p = nptr; *p != '\0'; p++)
if (*p == '+' || *p == '-') {
if (p != nptr)
break;
if (*p == '-')
s = -1;
} else
if (*p == '.')
d = 1;
else
if (*p >= '0' && *p <= '9') {
n = n * 10 + *p - '0';
d = d * 10;
} else
break;
if (d == 0)
d = 1;
return (double)s * (double)n / (double)d;
}
410:デフォルトの名無しさん
07/11/13 03:44:32
>>408>>409
つ[EBCDIC]
411:デフォルトの名無しさん
07/11/13 03:48:22
EBCDICは0〜9の並びについては保証されてるよ
アルファベットがいけない
412:デフォルトの名無しさん
07/11/13 07:06:07
>>397
これ厳密解じゃないよ
しかもnodeを30とかにすると解くのに時間かかりすぎ
やり直してきたほうがいいのでは?
413:デフォルトの名無しさん
07/11/13 07:54:05
再帰じゃそんなもんざます
414:デフォルトの名無しさん
07/11/13 08:19:37
>>409
いろいろとひどいな
415:デフォルトの名無しさん
07/11/13 16:14:07
[1] 授業単元: プログラム演習
[2] 問題文:
ここに書きました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: LINUX
[3.2] 言語: C
[4] 期限: 11月13日24時まで
[5] その他の制限: 特にありません
お願いします。
416:デフォルトの名無しさん
07/11/13 16:25:41
学校からのカキコミです。
わからないので教えてください。
課題25 1からキーボードで入力した値までの合計を求めるプログラムを作りなさい
>kadai25
いくつまで合計しますか> 10 /*10と入力
合計は55
↑こうしたいのですが、よろしくお願いします。
ちなみにscanfとforを使うみたいです
417:デフォルトの名無しさん
07/11/13 16:29:14
351さん、そうです。 そのやり方がよくわからないのです。
418:デフォルトの名無しさん
07/11/13 16:44:09
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞
は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新
聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ
の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C/C++
[4] 期限: 11月18日
[5] その他の制限:なし
よろしくお願いします。
419:デフォルトの名無しさん
07/11/13 16:44:33
>>415
勝手にテンプレ省略すんなハゲ
420:こまった
07/11/13 17:08:34
初歩の初歩の質問で本当にごめんなさい。
まったくわからなくって本当にこまってます。
問題:四則演算する電卓を作りなさい。また、あまりも出しなさい。
例:%a.out 5+8
5+8=13
式を入れれば自動計算するようにしたいのですが///さっぱりわからないのです。
すみません。
421:デフォルトの名無しさん
07/11/13 17:13:54
お前の質問も全くわからん
422:こまった
07/11/13 17:22:26
式を打ち込めば四則演算をしてくれて、かつ、あまりがあれば、それも表示してくれるプログラミング
なんですけど(;△;)
どうしたらよいのでしょう。
423:デフォルトの名無しさん
07/11/13 17:56:16
>>422
とりあえずがんばってみたら?
だめなら、ダメなりに、どこがどういうことで行き詰ったかかかなあかんよ
424:デフォルトの名無しさん
07/11/13 18:02:44
mapのデータ部分にクラスを利用する?ことができるらしいんですがイマイチどうすればいいか
わかりません・・・
425:デフォルトの名無しさん
07/11/13 18:05:28
>>424
普通の型と同じでおk
426:デフォルトの名無しさん
07/11/13 18:09:39
>>425
例えばDATAっていうクラスがあったとしたら
map<key,DATA>でいいってことですか?
427:デフォルトの名無しさん
07/11/13 19:40:02
[1] 基礎プログラミング
[2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を
求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも
のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか
ったときは「なし」と印字せよ。
なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、
奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。
[3.1]Linux
[3.3]C言語
[4]できれば今日中
[5] 配列
428:デフォルトの名無しさん
07/11/13 20:45:57
【質問テンプレ】
[1] 授業単元:プログラミング演習1
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11月20日
[5] その他の制限:if文、if-else文、switch文まで習いました
429:デフォルトの名無しさん
07/11/13 21:00:14
>>426
その通り
ついでにスレ違い
430:デフォルトの名無しさん
07/11/13 21:33:40
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 第1項・第2項の値を1とし、
直前の2つの項の和を項の値とする数列を「フィボナッチ数列」と言う。
この数列のi番目の項を計算する関数は、
以下のように再帰的に記述することができる。
f(i) = f(i-1) + f(i-2) (i > 1のとき)
f(i) = 1 (i = 1のとき)
f(i) = 0 (i = 0のとき)
キーボードから数字を入力して変数aに格納し、
フィボナッチ数列・第a項の値を計算するプログラムを作成せよ。
項の計算は上の定義を使い、
再帰的な呼び出しを実行する関数
int F(int n)
を作成して呼び出すこと。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで
431:デフォルトの名無しさん
07/11/13 21:35:17
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): キーボードから入力した数値(10進数)を
2進数に変換して画面に出力するコードを作成しなさい。
また,キーボードから入力した2進数の数値を
10進数に変換して画面に出力するコードを作成しなさい。
また、必要に応じて再帰を使っても使わなくてもよい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで
432:380
07/11/13 21:35:40
>>380です。単位かかってるレポなんでどなたかお願いします。
433:デフォルトの名無しさん
07/11/13 21:35:40
>>428
if(a==0) {
if(b==0) {
if(c==0) printf("It is trivial!\n");
else printf("Boo-boo!\n");
}
else {
x1 = -c / b;
printf("x=%.2f\n", x1);
}
}
else {
D = b * b - 4 * a * c;
if(D >0) {
x1 = (-b+sqrt(D)) / (2 * a);
x2 = (-b-sqrt(D)) / (2 * a);
printf("x=%.2f,%.2f\n", x1, x2);
}
else if(D==0) {
x1 = -b / (2 * a);
printf("x=%.2f\n", x1);
}
else printf("There exist no real-valued solutions.\n");
}
return 0;
}
434:デフォルトの名無しさん
07/11/13 21:36:01
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ハノイの塔を解くプログラムを作成する。
キーボードから円盤の枚数を入力し、
円盤を移動する手順を画面に表示すること。
・円盤は小さい物から順に1から番号で示す
・柱はL・C・Rで示し、円盤全体をLからRへ移すとする
・可能ならば手順の回数も表示すること
【実行結果(枚数を3と入力した場合)】
円盤枚数を入力 3
円盤1をL→Rへ移す
円盤2をL→Cへ移す
円盤1をR→Cへ移す
円盤3をL→Rへ移す
円盤1をC→Lへ移す
円盤2をC→Rへ移す
円盤1をL→Rへ移す
(終了)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C
[4] 期限: 11/15まで
[5] その他の制限: #defineはなしで
435:デフォルトの名無しさん
07/11/13 21:42:19
>>433
ありがとうございました。
436:デフォルトの名無しさん
07/11/13 21:49:56
>>434
Hanoiだし再帰使っていいよね?
#include<stdio.h>
void hanoi(int L,int C,int R,int n){
if(n==0)return;
hanoi(L,R,C,n-1);
printf("円盤%dを%c→%cへ移す\n",n,L,R);
hanoi(C,L,R,n-1);
}
main(){
int n;
printf("円盤枚数を入力");
scanf("%d",&n);
hanoi('L','C','R',n);
printf("手順の回数 %d\n",~(~0<<n));
}
437:shin
07/11/13 21:54:59
[1]授業単元: 関数入門
[2]問題文:
100点満点の試験を入力して、5段階評価を返す関数 hyouka を作成せよ。
5段階評価は、100〜90までは5、89〜80は4、79〜70は3、69〜60は2、60未満は1とする。
この関数を利用して、学生10人の試験の点数を入力して、
それぞれの5段階評価を求め一覧表を表示するプログラム quality.cpp を作成せよ。
[3]環境
[3.1] OS: Windows Vista
[3.2] コンパイラ名とバージョン:
[3.3] 言語: C++
[4]期限: 2007年11月14日 17:00 まで
[5]その他の制限: 関数の作り方、使い方が分からないので、そこを教えていただけるだけでも結構です(´`;)
よろしくおねがいします!
438:デフォルトの名無しさん
07/11/13 22:03:46
ウィルスつくってください
anonm4@yahoo.co.jp
439:デフォルトの名無しさん
07/11/13 22:18:09
[1] 授業単元:プログラミング、関数基礎
[2] 問題文(含コード&リンク):
メイン関数において、2つの放物線
y=ax2+bx+c
y=px2+qx+r
の係数a、b、c、p、q、rをキーボードから入力し、その数値を関数に引数として渡す。
関数はその数値を用いて2曲線の交点の有無を調べ、その交点の個数を戻り値とし
てメイン関数に渡す(交点が無い場合は0、交点が1つの場合は1、交点が2つの場
合は2、交点が無限に存在する場合はー1を戻り値にする)。また関数は、もし交点が
有限個存在するならばそれらの交点の座標値をメイン関数に渡す。メイン関数は関数
から得たこれらの情報を得て、交点の個数を画面に表示し、さらにもし交点が有限個
存在するならばそれらの座標値を画面に表示する。そのようなプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限: 2007年11月19日
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
C言語の基礎しか習っていません。
どなたかよろしくお願いします。
440:デフォルトの名無しさん
07/11/13 22:23:38
>>430
#include <stdio.h>
int F(int n)
{
if(n==0)
return 0;
else if(n==1)
return 1;
else
return F(n-1) + F(n-2);
}
main()
{
int a,x;
printf("数字を入力:");
scanf("%d",&a);
x = F(a);
printf("フィボナッチ数列第%d項 = %d\n",a,x);
return;
}
441:デフォルトの名無しさん
07/11/13 22:35:55
>>440
それだと末尾最適化されないはず
こっちで
#include<stdio.h>
#include<stdlib.h>
typedef unsigned int uint;
uint iter(uint a, uint b, uint n) { return n == 0 ? 1 : n == 1 ? a : iter(a+b,a,n-1); }
uint fibonacci(uint n) { return iter(1,1,n); }
int main(void)
{
size_t idx = 0;
for( ; idx != 10; ++idx)
printf("%d: %d\n",idx,fibonacci(idx));
return EXIT_SUCCESS;
}
442:デフォルトの名無しさん
07/11/13 22:37:18
すまん。大元の問題読んでなかった。
>>440でいいね。
443:46
07/11/13 22:46:48
どなたか>>46をお願いします
444:デフォルトの名無しさん
07/11/13 22:53:23
>>443
使っているライブラリは何?よくわからないけど興味あるから勉強してみたい。
で、もしできたら答える。
445:デフォルトの名無しさん
07/11/13 22:59:41
>>444
意味わからん。
446:デフォルトの名無しさん
07/11/13 23:10:15
>>444
とりあえずforkをぐぐるところから始めるといいと思うよ
447:デフォルトの名無しさん
07/11/13 23:16:14
>>443, >>444
そんなおまいらに、
URLリンク(www.ipa.go.jp)
448:デフォルトの名無しさん
07/11/13 23:28:57
当方の環境は、WindowsXP / 処理系は gcc 3.4.4 です。
プログラムを起動すると、名前と点数を聞いてきます。
10人分入力すると、名前と評価(level)を表示します。
入力した名前が 1024 文字以上だと、バグります。ごめんなさい。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
449:デフォルトの名無しさん
07/11/13 23:30:46
>>448 → >>437
450:デフォルトの名無しさん
07/11/13 23:32:18
>>448
何も考えずに string を勧める
451:shin
07/11/13 23:47:58
>>448
ありがとうございます!!!
452:shin
07/11/13 23:54:22
>>437です
自力でやったのですが、
エラーを消すためにいろいろとしていたらよくわからなくなりました..
誰かなおしてください…
お願いします!
453:shin
07/11/13 23:59:48
#include <iostream.h>
#include <iomanip.h>
int hyouka( int ) ; // 5段階評価する関数
main()
{
const int x = 10 ; // 入力できる人数
int a[x] ; // テストの点数
int b[x] ; // 1〜5の成績
int i, result ;
for( i=0 ; i<x ; i++){
cout << i+1 << "人目の成績 >>> " ;
cin >> a[i] ;
result = hyouka( a[x] ) ;
}
return 0 ;
}
454:shin
07/11/14 00:00:28
// 関数hyouka
int x ;
int hyouka(int a[x])
{
int x ;
int b[x] ; //1〜5の成績
if(90<=a[i]){
b = 5 ;
}else if (80<=a[i]){
b = 4 ;
}else if (70<=a[i]){
b = 3 ;
}else if (60<=a[i]){
b = 2 ;
}else{
b = 1 ;
}
}
455:デフォルトの名無しさん
07/11/14 00:21:12
面白い
456:デフォルトの名無しさん
07/11/14 00:21:42
エラー直して欲しいだけならエラーメッセージ見たら大体分かるだろ。
457:デフォルトの名無しさん
07/11/14 00:30:00
>>437 (>>452)
#include <iostream>
#include <iomanip>
int hyouka( int ) ; // 5段階評価する関数
int main(void)
{
const int x = 10 ; // 入力できる人数
int a[x] ; // テストの点数
int b[x] ; // 1〜5の成績
int i ;
for( i=0 ; i<x ; i++){
std::cout << i+1 << "人目の成績 >>> " ;
std::cin >> a[i] ;
b[i] = hyouka( a[i] ) ;
}
std::cout << "番号:点数:評価" << std::endl;
for( i=0 ; i<x ; i++)
std::cout << std::setw(4) << i + 1 << ':'
<< std::setw(4) << a[i] << ':'
<< std::setw(4) << b[i] << std::endl;
return 0 ;
}
458:デフォルトの名無しさん
07/11/14 00:31:25
承前
int hyouka(int a)
{
if(90<=a){
return 5 ;
}else if (80<=a){
return 4 ;
}else if (70<=a){
return 3 ;
}else if (60<=a){
return 2 ;
}
return 1 ;
}
459:デフォルトの名無しさん
07/11/14 00:42:21
>>458
横からスマンがこういうほうが個人的に好き
int hyouka(int a)
{
return 90 <= a ? 5 :
80 <= a ? 4 :
70 <= a ? 3 :
60 <= a ? 2 :
1;
}
460:デフォルトの名無しさん
07/11/14 00:56:02
>>439
当方の環境は、WindowsXP / 処理系は cygwin(gcc 3.4.4) です。
表示は小数点3桁まで、重根の判定は幾分甘くしています。
係数が整数ならば、問題ないと思います。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
461:デフォルトの名無しさん
07/11/14 00:59:46
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
ここに書きました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: LINUX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限: ([2007年11月14日24:00まで)
[5] その他の制限:
書き直しました
462:デフォルトの名無しさん
07/11/14 01:05:27
>>461
自分のレス流れたから書いてるだけじゃねーかタコが
書き直すんならもっと早くやっとけよ低脳
463:aho
07/11/14 01:06:43
>>461
作るの面倒だから、アルゴリズムを・・・
"s"が並ぶことはないから単純に"b"かどうかを判定すればよい。
従って、
for(省略)
if(!strcmp(sdata[i].word[j], "b"))
sdata[i].num++;
end of for
これじゃあかんのかな?
464:458
07/11/14 01:18:30
>>459
458 のは、ちょっとずぼら過ぎたね
int hyouka(int a)
{
if (90<=a) return 5 ;
if (80<=a) return 4 ;
if (70<=a) return 3 ;
if (60<=a) return 2 ;
return 1 ;
}
に訂正
465:デフォルトの名無しさん
07/11/14 01:27:22
>>461
#include<stdio.h>
struct tfield{
char word[5];
int num;
};
int width_get(int value){
char tmp[16];
return sprintf(tmp, "%d", value);
}
int main(void){
struct tfield sdata[20];
const char *initial_data="bsbsbbsbsbsbsbbsbbsb";
int i, prev='b', count;
for(i=0,count=0;i<20;i++){
if(prev=='b') count++;
sprintf(sdata[i].word, "%*c", width_get(count), initial_data[i]);
sdata[i].num=count;
prev=initial_data[i];
}
for(i=0;i<20;i++) printf("%s", sdata[i].word);
printf("\n");
for(i=0;i<20;i++) printf("%d", sdata[i].num);
printf("\n");
return 0;
}
466:461
07/11/14 01:47:05
>>463
>>465
ありがとうございました。
467:デフォルトの名無しさん
07/11/14 02:09:09
【質問テンプレ】
[1] 授業単元:
[2] 数独を解くプログラムを作れ(なるべく詳しく説明もいれて)
[3] 環境
[3.1] 特に指定なし
[3.2] 特に指定なし
[3.3] 言語:C
[4] 期限: 11月17日
[5] 特に制限はなく 単にCを使って数独をとくプログラムをかけばよいらしいのですが
難易度があがってもなるべく解けるように・・・といわれました。
どうしてもうまくいきません。
よろしくお願いします
468:デフォルトの名無しさん
07/11/14 02:48:15
各ブロックに、ある数字が入る可能性が1マスしかない場合
各ブロックに、ある2個の数字が入る可能性が2マスしかない場合
→それらのマスには他の数字は入らない、他のマスにはその数字は入らない
各行ごとに、ある数字が入る可能性が1つのブロックにしか残っていない場合
→そのブロックの他の行にはその数字は入らない
469:デフォルトの名無しさん
07/11/14 03:45:09
数独程度だと、なまじアルゴリズムを凝るよりも安直に作った方がいい。
何故ならば、どんなに安直に作っても1秒と掛からずに解けてしまうから。
つまり、凝ったアルゴリズムを考える手間やデバッグの暇に何千問も処理できるってこった。
470:デフォルトの名無しさん
07/11/14 05:51:45
[1] 基礎プログラミング
[2] キーボードから与えられる試験の得点(100点満点)を次々と読み込み、その中央値を
求めるプログラムを作成せよ。得点は1行にひとつずつ入力され、負の値は入力の終了を表すも
のとする。また、データの個数の上限は適当に決めてよい。ただし、得点が一つも与えられなか
ったときは「なし」と印字せよ。
なお、一般に、数値データの中央値は、それらを昇順に並び換えたものに(n個としたとき)、
奇数なら先頭から{(n+1)÷2}番目、偶数なら[{n÷2+(n+1)÷2}÷2]番目である。
[3.1]Linux
[3.3]C言語
[4]11月14日朝10時
[5] 配列
おねがいします
471:デフォルトの名無しさん
07/11/14 07:12:34
>>467
数独のソースはネットで探せば確実にあります
まずは探しましょう
472:cvop
07/11/14 07:41:40
プログラミング初心者ですが、
画像処理のプログラミングで、PGM画像中にある、
それぞれのオプティカルフローの角度[度]と大きさ[pixel]の
頻度の分布(縦軸:フローの頻度、横軸:フローの角度or大きさ)を
検出し、グラフにしたい(ヒストグラムみたいに)のですが、
どのようなプログラムを作れば良いのでしょうか?
分かる方がいらっしゃれば教えて頂けないでしょうか。
言語はC言語です。
473:デフォルトの名無しさん
07/11/14 07:58:56
スレ違い
474:デフォルトの名無しさん
07/11/14 09:16:19
[1] 授業単元:データ構造
[2] 問題文(含コード&リンク):URLリンク(edu.net.c.dendai.ac.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:mingw-jp.bat
[3.3] 言語:C++
[4] 期限:2007年12月5日20:00まで
[5] その他の制限:Windows の API は使用しない,基本的な文法はわかります(For文等)
丸投げですがよろしくお願いします。
475:デフォルトの名無しさん
07/11/14 10:06:42
>>474
「なお、写したと思われるほど酷似したレポートが複数提出された場合、
原著がどれかの調査を行わず、抽選で一通のレポートのみを評価の対象とし」
こ れ は お も し ろ い
476:デフォルトの名無しさん
07/11/14 10:28:45
>>474
レポートも書けってこと?Wordでいいのか?
477:デフォルトの名無しさん
07/11/14 10:46:21
[1] 授業単元: 情報処理
[2] 問題文(含コード&リンク):ある新聞販売店では新聞を1部40円で仕入れ、100円で売っている。売れ残った新聞
は1部15円で新聞社に引き取ってもらう。過去1年間の統計によれば、1日に売れる新
聞の数(客数)は、平均800、標準偏差120 の正規分布に大体従っている。このとき、こ
の店では1 日に何部の新聞を仕入れれば最も利益(粗利)が多くなるか? これをプログラムに記述せよ。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C/C++
[4] 期限: 11月18日
[5] その他の制限:なし
よろしくお願いします。
478:デフォルトの名無しさん
07/11/14 11:52:10
>>429
ありがとうございました
スレ違いすみませんでした・・・
479:デフォルトの名無しさん
07/11/14 13:10:41
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
整数型変数nの値を1から25まで1ずつ変化させて、nの2乗、1/n
nの平方根、およびnの立方根を求めて、以下のような数表を作成する
プログラムを完成せよ。
n n*n 1/n sqrt(n) n∧(3/1)
1 1 1.00000 1.00000 1.00000
2 2 0.50000 1.41421 1.25992
== == ======= ======= =======
25 625 0.04000 5.00000 2.92402
(課題分では===のところはくっついていて、
2乗、1/nなどのところはくっついてしまっていますが
それぞれ離れています。やりかたがわかりませんでした。
大変見にくくてすみません)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: C++
[4] 期限: 2007年11月14日(15日提出)
[5] その他の制限: 習い始めたばかりなのでよくわかりませんが
ないと思います。
宜しくお願いします。
480:デフォルトの名無しさん
07/11/14 13:10:48
>>475
ひねくれた教授なのでw
>>476
プログラムだけで大丈夫です。
なるべく初歩的な文法でお願いしたいのですが…
481:デフォルトの名無しさん
07/11/14 14:06:17
>>480
教授にメールしとくわ
482:デフォルトの名無しさん
07/11/14 14:31:30
>>467 数独はアルゴリズムは簡単で良いけど、ハッシュ表は導入した方が良いよ ちょっとやってみた
#include <iostream>
using namespace std;
main(){
int z,w,l=0,n,i,j,bf[8][81];
int tmp[4][3]={0,1,9, 0,9,1, 8,-1,9, 8,9,-1};
for(n=0;n<4;n++){
for(i=0;i<9;i++)for(j=0;j<9;j++){
z=tmp[n][0]+tmp[n][1]*i+tmp[n][2]*j;
bf[l][z]=bf[l+1][80-z]=i+9*j;}l+=2;}
int x[81],p[81],q[81];for(z=0;z<81;z++)x[z]=rand()%10;
for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<x[z]<<" ";}
cout<<endl<<"のハッシュ値を求める。"<<endl;
int num[10];
for(i=0;i<81;i++)p[i]=9;
for(l=0;l<8;l++){
for(i=0;i<10;i++)num[i]=0;i=1;
for(z=0;z<81;z++){ n=x[ bf[l][z] ];
if(n>0)if(num[n]==0){num[n]=i;i++;}
q[z]=num[n];}
for(i=0;i<81;i++)if(p[i]<q[i])goto end; else if(p[i]>q[i])break;
if(i<81)for(i=0;i<81;i++)p[i]=q[i];end:}
unsigned int rh[81][9],hash=0;
for(z=0;z<81;z++)for(i=0;i<9;i++)rh[z][i]=(rand()<<16)+rand();
for(z=0;z<81;z++)hash^=rh[z][p[z]];
for(z=0;z<81;z++){if(z%9==0)cout<<endl;cout<<p[z]<<" ";}
cout<<"\nと変形され\nハッシュ値は"<<hash<<endl;}
483:デフォルトの名無しさん
07/11/14 14:35:23
URLリンク(www10.atwiki.jp)
URLリンク(www.nurs.or.jp)
URLリンク(www.nurs.or.jp)
URLリンク(www29.atwiki.jp)
URLリンク(www.geocities.jp)
484:デフォルトの名無しさん
07/11/14 14:37:14
ハッシュ表があれば調べる局面が、1/8以下に出来るよ
すぐ解答が出る場面では逆に鈍くなると思うけど、0.5秒以上かかるならハッシュ表使ったら速いと思うよ
485:デフォルトの名無しさん
07/11/14 14:52:57
>>481
教授公認だから問題無しw
486:デフォルトの名無しさん
07/11/14 14:58:32
>>485
「ひねくれた教授」が公認なの?
487:デフォルトの名無しさん
07/11/14 15:09:02
474「宿題を2chに丸投げしておk?」
教授「おk。公認するよん」
こんな感じか
488:デフォルトの名無しさん
07/11/14 15:11:47
底辺大学の教授ってそんなもんなのか
489:デフォルトの名無しさん
07/11/14 15:24:06
[1] 授業単元:情報技術
[2] 問題文:
「キーボードから以下の整数値を入力し,最大値を表示するプログラムを作成せよ
キーボードから入力する値
25 , 6 , 45, 18 , 57, 5
ヒント
for文を用いてキーボードから数値を読み込みながら,
if文を使って読み込んだ数値がそれまでに読み込んだ
数値の最大値maxよりも大きければその値を更新する
・・・・・・
for(i=?;i<=?;??){
scanf(?????);
if( ? > max) ???????;
}
printf(?????);
・・・・・・」
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:すみません、よく分かりません
[3.3] 言語:C
[4] 期限:2007年11月16日12:00
[5] その他の制限:if文、for文あたりの簡単なレベルでお願いします
大学の授業の課題です。
低レベルかもしれませんが、さっぱり分からないので、よろしくお願いします。
490:デフォルトの名無しさん
07/11/14 15:46:17
>>489
これが大学の授業か……
491:デフォルトの名無しさん
07/11/14 15:49:14
>>486
>>487
いや、教授自身が2ちゃんねらーw
だからここに問題が漏れてる事も知ってる。というより本人が自分で回答とかしてるしw
492: ◆30lFlSJfAI
07/11/14 15:54:27
[1] 授業単元: 情報基礎
[2] 問題文:下記の問題のプログラミングを作成してください。
関数y=1/xをシンプソン法により、区間[1,2] で積分せよ。
このとき、区切りの数を変えることによって精度が変化することを確認せよ。
ただし、解析的な解はloge2=0.69314718である
[3] 環境
OS: Windows
言語: C言語のみ
[4] 期限: ([2007年11月21日まで]
[5] 制限は特にありません。
プログラミング初心者にもかかわらず大学でこのような課題を出されました。
来週までで申し訳ないのですが、よろしくお願いします。
493:デフォルトの名無しさん
07/11/14 15:54:42
_,,..r'''""~~`''ー-.、
,,.r,:-‐'''"""~~`ヽ、:;:;:\
r"r ゝ、:;:ヽ
r‐-、 ,...,, |;;;;| ,,.-‐-:、 ヾ;:;ゝ
:i! i! |: : i! ヾ| r'"~~` :;: ::;",,-‐‐- `r'^!
! i!. | ;| l| ''"~~ 、 i' |
i! ヽ | | | ,.:'" 、ヽ、 !,ノ
ゝ `-! :| i! .:;: '~~ー~~'" ゙ヾ : : ::|
r'"~`ヾ、 i! i! ,,-ェェI二エフフ : : :::ノ~|`T <イエーイ、坂本直志君見てるー?
,.ゝ、 r'""`ヽ、i! `:、 ー - '" :: : :/ ,/
!、 `ヽ、ー、 ヽ‐''"`ヾ、.....,,,,_,,,,.-‐'",..-'"
| \ i:" ) | ~`'''ー---―''"~
ヽ `'" ノ
494:デフォルトの名無しさん
07/11/14 16:01:02
>>491
学籍番号は何番?
495:デフォルトの名無しさん
07/11/14 16:09:34
教授職って何気に終身雇用なんだよね
同じ空気吸ってても一山いくらで売られていく子羊たちとの間には明らかな次元断層がある
496:デフォルトの名無しさん
07/11/14 16:12:35
日本語でおk
497:shin
07/11/14 16:15:56
>>457 >>458 >>459
ありがとうございました!!!
498:デフォルトの名無しさん
07/11/14 16:18:09
>>474 課題1-1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define STUDENT_NUM_MAX 99999
int get_rand_score(void){
int i, score=0;
for(i=0;i<20;i++) score+=rand()%6;
return score;
}
int main(int argc, char *argv[]){
int i, index, student_num;
if(argc!=2){
fprintf(stderr, "\nUsage : %s <number>\n", argv[0]);
fprintf(stderr, "%5s : number (1-%d)\n", "", STUDENT_NUM_MAX);
return 1;
}
if(sscanf(argv[1], "%d%n", &student_num, &index)<1 || argv[1][index]!='\0'){
fprintf(stderr, "\nERROR : Invalid parameter. %s\n", argv[1]);
return 2;
}
if(student_num<1 || student_num>STUDENT_NUM_MAX){
fprintf(stderr, "\nERROR : Out of range (1-%d). %d\n", STUDENT_NUM_MAX, student_num);
return 3;
}
srand(time(NULL));
for(i=1;i<=student_num;i++) printf("C%05d %d\n", i, get_rand_score());
return 0;
}
499:デフォルトの名無しさん
07/11/14 16:49:44
>>492
シンプソン公式がわかってれば単純なforループの問題でしかないから。
500:デフォルトの名無し
07/11/14 17:13:23
[1] 授業単元: プログラミング1
[2] 問題文(含コード&リンク): アスキーコードの値を対応する文字を組み合わせた
一覧表を出力するプログラムを作成せよ。
アスキーコードの範囲は「32」〜「126」、スペースには△を出力。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 今週中にお願いします。
[5] その他の制限: なし
501:デフォルトの名無しさん
07/11/14 17:24:27
#include<stdio.h>
int main(void){
int i;
printf(" 32 △\n");
for(i=33;i<127;i++)
printf("%3d %c\n",i,i);
return 0;
}
502:デフォルトの名無しさん
07/11/14 17:30:15
>>474
課題 1-3 1-4 1-5
URLリンク(kansai2channeler.hp.infoseek.co.jp)
503:デフォルトの名無しさん
07/11/14 19:03:55
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):stackプログラムを配列ではなく、連結リストを用いて、作成せよ。
配列で実現する時に比べて、その利点及び欠点をのべよ。
stackプログラム:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio .NET 2005
[3.3] 言語:c++
[4] 期限:2007年11月16日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで
よろしくおねがいします。
504:デフォルトの名無しさん
07/11/14 19:14:44
>>492
#include <stdio.h>
#include <math.h>
double func1(double x)
{
return 1.0/x;
}
double simpson(double a, double b, int n, double (*func)(double))
{
double odd = 0, even = 0, h = (b - a)/n;
int i;
for(i = 1; i < n; i += 2)
odd += func(a + i*h);
for(i = 2; i < n; i += 2)
even += func(a + i*h);
return h/3.0*(func(a) + func(b) + 4*odd + 2*even);
}
int main(void)
{
int n;
for(n = 2; n <= 1024; n *= 2)
printf("%4d : %.8f\n", n, simpson(1.0, 2.0, n, (double (*)(double))func1));
return 0;
}
505:デフォルトの名無しさん
07/11/14 20:17:36
>>503
URLリンク(kansai2channeler.hp.infoseek.co.jp)
506:デフォルトの名無しさん
07/11/14 20:58:35
>>460
本当にありがとうございます。
助かりました。
507:デフォルトの名無しさん
07/11/14 21:26:19
どなたか>>479を宜しくお願いします。
周りと比べてかなりレベルの低い問題だとは思いますが
まったくわからないのでお願いします。
508:デフォルトの名無しさん
07/11/14 21:45:15
>>507
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <cmath>
using namespace std;
struct succ{ int operator()(){ return _n++; } succ():_n(1){};int _n; };
struct print{
double qube( const int & n ) {
double x = 0, xn = 1;
while ( fabs( x-xn ) > 1.0e-8 ) { x = xn; xn = x-(x*x*x-n)/(3.0*x*x ); }
return xn;
}
void operator()( const int & n ){
cout<<setw(4)<<n<<" "<<setw(4)<<n*n<<" "<<setw(9)<<1.0/n<<" "<<setw(9)<<sqrt(n)<<" "<<setw(9)<<qube(n)<<endl; }
};
int main( int argc, char ** args ){
const int N = 25;
int v[N]={};
cout << setw(4) << "n"<<setw(4)<<"n^2"<<setw(9)<<"1/n"<<setw(9)<<"n^1/2"<<setw(9)<<"n^1/3"<<endl;
generate( v, v+N, succ());
for_each( v, v+N, print());
return 0;
}
509:デフォルトの名無しさん
07/11/14 21:59:04
>>474 課題1-5
合格最低点を引数に取り、受験番号順に合格者リストを表示するプログラムを作りなさい。
void pass(int border)
{
char number[7];
int score;
while (scanf("%s %d", number, &score) == 2)
if (score >= border)
printf("%s\n", number);
}
510:デフォルトの名無しさん
07/11/14 21:59:29
[1]プログラミング2
[2]
以下は、下記フォーマットにしたがってデータが収められている配列を表現するためのプログラムです。また、そのフォーマットを持つ配列を引数として、有効なレコード数(つまり配列の0番目の値)を返り値として返す関数
int list_len(const int * list)
を作成し、プログラムを完成させなさい。
フォーマット(score table)
配列の要素 内容(ただしi≧0)
0番目 有効なレコード数(K)
5*(i-1)+1番目 i番目の学生の英語の得点
5*(i-1)+2番目 i番目の学生の国語の得点
5*(i-1)+3番目 i番目の学生の数学の得点
5*(i-1)+4番目 i番目の学生の理科の得点
5*(i-1)+5番目 i番目の学生の社会の得点
511:デフォルトの名無しさん
07/11/14 22:00:20
サンプルコード
#define MAX 101 /* 得点を入れる配列の最大値 */
#define REC 5 /* 1レコードの要素数 */
#define SUB 6 /* 科目名の文字数 */
char sub[REC][SUB]={"英語","国語","数学","理科","社会"};
/* 関数作成 */
int main() {
/* 変数は適切に宣言する */
int score[MAX]={3, /* レコード数 */
45, 60, 36, 72, 53, /* 1レコード目 */
87, 48, 77, 69, 91, /* 2レコード目 */
23, 54, 49, 58, 62}; /* 3レコード目 */
p=score+1;
size=list_len(score);
/* ここに書く */
}
実行例
+----++----++----++----++----+
|英語||国語||数学||理科||社会|
+----++----++----++----++----+
| 45|| 60|| 36|| 72|| 53|
+----++----++----++----++----+
| 87|| 48|| 77|| 69|| 91|
+----++----++----++----++----+
| 23|| 54|| 49|| 58|| 62|
+----++----++----++----++----+
512:デフォルトの名無しさん
07/11/14 22:02:19
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio 2005
[3.3] 言語:C言語
[4] 期限:2007年11月17日まで
[5] その他の制限ポインタのあたりまで
513:デフォルトの名無しさん
07/11/14 22:10:43
>>508
ありがとうございます。
本当に助かりました。
514:デフォルトの名無しさん
07/11/14 22:28:24
>>431
どなたかお願いします。
515:デフォルトの名無しさん
07/11/14 22:39:28
>>505
ありがとうございました。
516:デフォルトの名無しさん
07/11/14 22:43:31
>>510
#include <stdio.h>
#define MAX 101 /* 得点を入れる配列の最大値 */
#define REC 5 /* 1レコードの要素数 */
#define SUB 6 /* 科目名の文字数 */
char sub[REC][SUB]={"英語","国語","数学","理科","社会"};
/* 関数作成 */
int list_len(const int * list);
int list_len(const int * list)
{
return list[0];
}
int main()
{
/* 変数は適切に宣言する */
int size, x, y;
int *p;
int score[MAX]={3, /* レコード数 */
45, 60, 36, 72, 53, /* 1レコード目 */
87, 48, 77, 69, 91, /* 2レコード目 */
23, 54, 49, 58, 62}; /* 3レコード目 */
517:デフォルトの名無しさん
07/11/14 22:44:10
>>516
p=score+1;
size=list_len(score);
/* ここに書く */
for (x=0 ; x<REC ; x++)
{
printf("+----+");
}
printf("\n");
for (x=0 ; x<REC ; x++)
{
printf("|%s|", sub[x]);
}
printf("\n");
for (x=0 ; x<REC ; x++)
{
printf("+----+");
}
printf("\n");
for (y=0 ; y<size ; y++)
{
for (x=0 ; x<REC ; x++)
{
printf("|%4d|", *p);
518:デフォルトの名無しさん
07/11/14 22:44:41
>>517
p++;
}
printf("\n");
for (x=0 ; x<REC ; x++)
{
printf("+----+");
}
printf("\n");
}
}
519:デフォルトの名無しさん
07/11/14 22:52:25
>>431
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void ten2two(int num)
{
if (num==0)
return;
ten2two(num/2);
if(num&1)
{
printf("1");
}
else
{
printf("0");
}
}
int main()
{
int num;
scanf("%d", &num);
ten2two(num);
printf("\n");
return 0;
}
520:デフォルトの名無しさん
07/11/14 23:03:19
ただ .exe 立ち上げさせるだけのプログラム作りたいんだけど、何かいい方法ある?
521:デフォルトの名無しさん
07/11/14 23:07:05
>>431
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int two2ten(char *buf)
{
unsigned int num=0, i;
for (i=0 ; i<strlen(buf) ; i++)
{
num*=2;
if (buf[i]=='1')
{
num++;
}
}
return num;
}
int main()
{
char buf[100];
scanf("%s", buf);
printf("%d\n", two2ten(buf));
return 0;
}
522:デフォルトの名無しさん
07/11/14 23:07:31
>>520
ダブルクリックでおk
523:デフォルトの名無しさん
07/11/14 23:08:50
>>522
いや、ごもっともなんだけどね。。。
どういう命令をすればやってくれるのかなって思って。
524:デフォルトの名無しさん
07/11/14 23:12:27
>>520
#include <stdlib.h>
int main()
{
system("%systemroot%\\NOTEPAD.EXE");
return 0;
}
525:デフォルトの名無しさん
07/11/14 23:12:47
>>523
system
526:デフォルトの名無しさん
07/11/14 23:16:57
>>524, 525
ありがとお。こんなの知らなかったお。
527:デフォルトの名無しさん
07/11/14 23:21:59
>>477
当方の環境は WindowsXP / 処理系は cygwin(gcc 3.4.4) です。
乱数は M系列乱数、ガウス分布化は局座標法を使用しています。
仕入れ部数を600部から1000部まで1ずつ変化させ、それぞれに
大して 6 万回の試行を行い、平均を算出しています。
さらに、ピークをわかりやすくするために隣接3区間の平均をもって
平準化しています。(が、はっきりしませんでした。)
結果だけのべると、800 より少し多いところ(830〜850) に極大があるようです。
実行すると仕入れ部数と利益が対になって出力されます。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
(参考文献)C言語による最新アルゴリズム事典/奥村晴彦/技術評論社 1991 ISBN4874084141
528:デフォルトの名無しさん
07/11/14 23:32:29
>>474 課題1-4
合格最低人数を引数にして合格最低点を求めるプログラムを作成しなさい。
但し、引数のとりかたは付録を参照すること。
void border(int count)
{
char number[7];
int score;
score = 101;
while (count > 0 && scanf("%s %d", number, &score) == 2)
count--;
printf("%d\n", score);
}
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4710日前に更新/222 KB
担当:undef