C/C++の宿題を片付け ..
331:修正版
07/10/27 04:06:02
>>330
#include <stdio.h>
#include <math.h>
double f(double x){return exp(-x*x);}
double g(double x){return 1/sqrt(1+x*x*x*x);}
#define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3
#define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3
int main(){
double x,sum,h=0.1;
sum=0;
for(x=0;x<1;x+=2*h)sum+=F(x,h);
printf("%f\n",sum);
sum=0;
for(x=0;x<1;x+=2*h)sum+=G(x,h);
printf("%f\n",sum);}
332:デフォルトの名無しさん
07/10/27 04:12:10
何か邪魔臭くなっていましたね さんくすこ
333:デフォルトの名無しさん
07/10/27 08:27:42
まだやってたのか。俺は寝てしまって今起きた
#define F(x,h) (f(x) + 4*f(x+h) + f(x+2*h)) * h/3
#define G(x,h) (g(x) + 4*g(x+h) + g(x+2*h)) * h/3
じゃなくて
#define F(x,h) (f(x) + 4*f(x+h/2) + f(x+h)) * h/6
#define G(x,h) (g(x) + 4*g(x+h/2) + g(x+h)) * h/6
にするかもしくはh=0.05にしないといけない。
334:デフォルトの名無しさん
07/10/27 08:35:59
すまん。寝ぼけて間違えた。
>>331でOK。
335:デフォルトの名無しさん
07/10/27 08:37:39
やっと数値のずれが直ったので貼る
#include<stdio.h>
#include<math.h>
double quadInterpol( double (*fun)( double ), double begin, double h )
{
return ((*fun)( begin ) + 4.0*(*fun)( begin + h ) + (*fun)( begin + 2.0*h )) * h/3.0;
}
double integral( double (*fun)( double ), double begin, double end, double h )
{
double result = 0.0;
double pos = begin;
do
{
result += quadInterpol( (*fun), pos, h );
pos += 2.0*h;
} while( pos < end );
return result;
}
double f(double x) { return exp(-x*x); }
double g(double x) { return 1.0/sqrt(1 + x*x*x*x); }
int main(void)
{
const double diff = 0.1;
printf("result=%f\n",integral(f,0.0,1.0,diff));
printf("result=%f\n",integral(g,0.0,1.0,diff));
return 0;
}
336:デフォルトの名無しさん
07/10/27 08:55:22
ひゃっほう。
337:デフォルトの名無しさん
07/10/27 10:08:16
なんでシンプソン公式だけでこんなにスレ進むんだよw
338:デフォルトの名無しさん
07/10/27 10:59:46
[1] 授業単元: プログラミング
[2] 問題文:整数nをscanfで入力後"factorial"という関数を呼び出して、n!を
求めるプログラム(結果はmainにて表示)
(定義例:int factorial(int num))
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月28日まで]
[5] その他の制限:定義例を使ってください
if,while,switch,forは習いました
お願いします
339:デフォルトの名無しさん
07/10/27 11:06:51
#include <stdio.h>
int factorial(int num)
{
int i, ret = 1;
for(i=2; i<=num; i++) ret *= i;
return ret;
}
int main(void)
{
int n;
printf("nを入力:");
scanf("%d", &n);
printf("%dの階乗は%d\n", n, factorial(n));
return 0;
}
340:デフォルトの名無しさん
07/10/27 11:17:19
>>339
全くわかんなかったのに数分で解いてるよ(>_<)
ありがとうございました。
341:デフォルトの名無しさん
07/10/27 11:27:20
て言うか既出ネタだろ
>>235-237で
342:デフォルトの名無しさん
07/10/27 11:29:23
階乗は頻出の基本問題だし、このスレで答えてる人なら数分とかじゃなくて、問題見た瞬間に即答だろ。
343:デフォルトの名無しさん
07/10/27 11:49:08
テンプレレベルだよな・・・と思ったらwikiにも書いてないな
今から編集してくる
344:デフォルトの名無しさん
07/10/27 11:51:23
>>342さすがですね
勉強不足ですいません
345:デフォルトの名無しさん
07/10/27 12:09:39
×勉強不足
○勉強する気がない
346:デフォルトの名無しさん
07/10/27 12:13:00
LU分解とか死ねwwwwww
京大電電でつけど、プログラムの課題がイミフwwwwwwww
347:デフォルトの名無しさん
07/10/27 12:15:15
それ、プログラム以前の問題だろ
Fランの大学ですらやる基本的な問題だし
348:デフォルトの名無しさん
07/10/27 13:38:28
【質問テンプレ】
[1] 授業単元: 画像工学
[2] 問題文(含コード&リンク):ある特定の画像を自動的に判別する
フォルダ内の画像を自動的に判別し,緑の画像があればhighlightのフォルダに
なければotherのフォルダに分別する
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) よくわかりません
[3.3] 言語: (C/C++/どちらでも可 のいずれか) Visual C++ 2005
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 来週水曜日まで
[5] その他の制限: 特にありません
URLリンク(kansai2channeler.hp.infoseek.co.jp)
349:デフォルトの名無しさん
07/10/27 13:47:53
>>347
池沼でサーセンwwwww
350:デフォルトの名無しさん
07/10/27 14:08:07
348
こんなの面倒 授業でていたやつのほうが関数にくわしいだろ
351:デフォルトの名無しさん
07/10/27 15:52:58
[1] 授業単元: C言語
[2] 問題文:2×2の行列A,Bの積(cのij成分=Σaのij成分bのij成分)を表示する
a[i][j]=[0 4] b[i][j]=[5 0]
[-5 -1] [0 -5]
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月28日まで]
[5] その他の制限:for文を用いてください
352:デフォルトの名無しさん
07/10/27 16:02:13
#include <stdio.h>
main(){
int i,j,x=0,a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5};
for(i=0;i<2;i++)for(j=0;j<2;j++)x+=a[i][j]*b[j][i];
printf("%d\n",x);
}
353:デフォルトの名無しさん
07/10/27 16:12:53
2次元配列のサイズを調べる方法ありますか?
354:デフォルトの名無しさん
07/10/27 16:16:09
#include <stdio.h>
main(){
int x[70][6],m,n;
m=sizeof(x)/sizeof(x[0]);
n=sizeof(x[0])/sizeof(x[0][0]);
printf("%d %d",m,n);
}
355:デフォルトの名無しさん
07/10/27 16:27:45
#include <stdio.h>
main(){
int i,j,k;
int a[2][2]={0,4,-5,-1},b[2][2]={5,0,0,-5},c[2][2];
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<2;k++)
c[i][j]=a[i][k]*b[k][j];
for(i=0;i<2;i++){
for(j=0;j<2;j++)printf("%d ",c[i][j]);
printf("\n");}
}
356:デフォルトの名無しさん
07/10/27 16:34:11
[1] 授業単元: C言語
[2] 問題文:キーボードから5点の座標を二次元配列に入力し、
原点から最も離れた点の座標を出力するプログラムを作成せよ
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月28日まで]
[5] その他の制限:多次元配列まで習ってます
357:147
07/10/27 16:35:47
機械に仕事を割り当てるところまでやった
すなわち、問題文の
>5種類の性能の異なる加工機械が各1台ある工場で、100種類の製品を作っている。
>各製品がその日に受注した場合、LT(完成までにかかる日数)を表示するスケジューリングプログラムを作成せよ。
>また、ランダムに発注があり、発注があった場合にのみ実際に機械は使用される。
>すなわち、発注が一度もなければ100日間ずっと同じLTが表示され、発注があれば、
>その日以降は機械が使用されているので、LTが長くなる可能性があるということ。
ところまで。
// 生産計画・生産管理
// 97th-res: >>168 (>>111, >>211, >>229)
// 2007/10/27
URLリンク(kansai2channeler.hp.infoseek.co.jp)
358:デフォルトの名無しさん
07/10/27 16:46:34
>>356
#include<stdio.h>
#include<math.h>
int main(void)
{
double maximum_distance=0.0, distance;
double x, y, point[5][2], (*maximum_point)[2];
int i;
for(i=0;i<5;i++)
{
printf("Input x :");
scanf("%lf", &x);
printf("Input y :");
scanf("%lf", &y);
point[i][0]=x;
point[i][1]=y;
distance=sqrt(x*x+y*y);
if(distance>maximum_distance || !i)
{
maximum_distance=distance;
maximum_point=&point[i];
}
}
printf("\n( %lf , %lf )\n", (*maximum_point)[0], (*maximum_point)[1]);
return 0;
}
359:入力うまくいかない
07/10/27 16:48:36
#include <stdio.h>
main(){
int x[6],y[6],i,ban;
double max=0,d;
for(i=1;i<6;i++){
printf("\n%d 番目のx座標を入力して下さい ",i);
x[i]=getchar();
printf("\n%d 番目のy座標を入力して下さい ",i);
y[i]=getchar();}
for(i=1;i<6;i++){
d=x[i]*x[i]+y[i]*y[i];
if(d>max){max=d;ban=i;}}
printf("原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]);
}
360:scanfにしたら良くなったよ
07/10/27 16:54:18
#include <stdio.h>
main(){
int x[6],y[6],i,ban;
double max=0,d;
for(i=1;i<6;i++){
printf("\n%d 番目のx座標を入力して下さい ",i);
scanf("%d",&x[i]);
printf("\n%d 番目のy座標を入力して下さい ",i);
scanf("%d",&y[i]);}
for(i=1;i<6;i++){
d=x[i]*x[i]+y[i]*y[i];
if(d>max){max=d;ban=i;}}
printf("\n原点からもっとも遠い座標は(%d,%d)です ",x[ban],y[ban]);}
361:356
07/10/27 16:54:35
>>358さん
>>359さん
早い回答ありがとうございました!
362:デフォルトの名無しさん
07/10/27 17:00:45
// >>356 ソート付き
#include <iostream>
#include <math.h>
#define NUM 5
using namespace std;
int main (void){
double p[NUM][2], absolute[NUM];
for (int i=0; i<NUM; i++){
cout << i+1 << "番目の点の" << endl;
cout << "\tx座標を入力してください : "; cin >> p[i][0];
cout << "\ty座標を入力してください : "; cin >> p[i][1];
}
for (int i=0; i<NUM; i++) absolute[i] = sqrt(p[i][0] * p[i][0] + p[i][1] * p[i][1]);
double tempabs, tempx, tempy;
for (int i=0; i<NUM-1; i++) {
for (int j=NUM-1; j>i; j--) {
if (absolute[j-1] > absolute[j]) {
tempabs = absolute[j]; tempx = p[j][0]; tempy = p[j][1];
absolute[j] = absolute[j-1]; p[j][0] = p[j-1][0]; p[j][1] = p[j-1][1];
absolute[j-1] = tempabs; p[j-1][0] = tempx;
p[j-1][1] = tempy;
}}}
cout << "(" << p[NUM-1][0] << ", " << p[NUM-1][1] << ")" << endl;
return (0);
}
363:デフォルトの名無しさん
07/10/27 17:05:37
>>356
既に何人も回答してるけど参考までに
#include <stdio.h>
int main(int argc, char* argv[])
{
int i, p[5][2], r2[5], r2max = 0;
printf("input points\n");
for(i=0;i<5;i++) {
printf("point[%d] : ", i);
scanf("%d %d", p[i], p[i]+1);
r2[i] = p[i][0] * p[i][0] + p[i][1] * p[i][1];
if(r2max < r2[i]) {
r2max = r2[i];
}
}
printf("maximum range points\n");
for(i=0;i<5;i++)
if(r2[i] == r2max)
printf("point[%d] : %d %d\n", i, p[i][0], p[i][1]);
return 0;
}
364:デフォルトの名無しさん
07/10/27 17:29:58
すいません!このJAVAコードをCに直せって言われました!
直してください!!!!
public static int[] invoke(int[] input){
//WARNING: This will destroy the contents of the input array
//This function assumes input.length=2^n, n>1
int[] output = new int[input.length];
for(int length = input.length >> 1; ; length >>= 1){
//length=2^n, WITH DECREASING n
for(int i = 0; i < length; i++) {
int sum = input[i*2]+input[i*2+1];
int difference = input[i*2]-input[i*2+1];
output[i] = sum;
output[length+i] = difference;
}
if (length == 1)
return output;
//Swap arrays to do next iteration
System.arraycopy(output, 0, input, 0, length<<1);
}
}
365:デフォルトの名無しさん
07/10/27 18:03:32
>>364
>>1読んでから書き直し
366:デフォルトの名無しさん
07/10/27 18:07:30
>>365
つまりテンプレ通りに書けってこった
とりあえずこのコードが何をするかぐらいは書いたほうがいい
367:デフォルトの名無しさん
07/10/27 18:20:27
>>357
根本的に考え方が間違ってるよ。
これは生産計画立案の問題。
368:デフォルトの名無しさん
07/10/27 18:20:53
(int[] input)これをcで引数一個で実現するのは無理では?
最後尾にNULL入れた配列が欲しくなったり、
サイズを持った構造体へのポインタにしたくなったり、
int *input, int sizeみたいに素直になりたかったり。
369:デフォルトの名無しさん
07/10/27 18:37:29
突っ込むところはinput.lengthこっちだろ
370:aho
07/10/27 19:02:35
>>364
今書いてて思ったけど何がしたいのかいまいち分からない。
sumとdifferenceを計算した後何でoutputを上書きするの?
どんどん足し込む仕様じゃないの?
とりあえず、今ので書いてみるよーん
371:aho
07/10/27 19:08:59
どうもごめんちゃーい。
最後の行のarrayCopyみてませんでした。
372:デフォルトの名無しさん
07/10/27 19:09:34
>>370
ものすごい助かります(;;
離散ウェーブレット変換
Wikipedia項目リンク
のHaarWavletというものです。
373:aho
07/10/27 19:24:07
/*
メモリの確保は呼び出し元で行う。
この関数内でメモリを確保して配列を返すと、メモリの解放ができない。
\param input 入力配列
\param output 出力配列
\param size 入力配列の大きさ
*/
void invoke(int* input, int* output, int size){
// 1/2
for(int length = size >> 1; ; length >>= 1){
for(int i=0; i<length; i++){
int sum = input[i*2] + input[i*2 + 1];
int difference = input[i*2] - input[i*2+1];
output[i] = sum;
output[length+i] = difference;
}
if(length == 1)
return;
//array copy
for(int i=0; i<length<<1; i++){
output[i] = input[i];
}
}
}
一応作ってみた。
確認お願い!
374:デフォルトの名無しさん
07/10/27 21:27:54
>>373
ああ…ありがたい
今確認します!!!どうもありがとう!!!!涙出てきた
375:デフォルトの名無しさん
07/10/27 22:51:52
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C言語
[4] 期限: 10月28日午前12時30分まで
よろしくおねがいします
376:aho
07/10/27 23:01:10
課題1
int sqr(int x){
return x * x;
}
int pow4(int x){
return sqr(x) * sqr(x);
}
377:デフォルトの名無しさん
07/10/27 23:01:24
>>375 最後のだけやってもいいよ 任意サイズでやってやるぜ
378:デフォルトの名無しさん
07/10/27 23:01:32
関数sqrってなんだ?sqrtの間違い?
でもなんで四乗値求めるのに平方根必要?
379:aho
07/10/27 23:02:37
課題2
void hello(void){
printf("こんにちは。\n");
return;
}
380:デフォルトの名無しさん
07/10/27 23:02:42
squareって事ね。
381:デフォルトの名無しさん
07/10/27 23:12:34
任意サイズの2次配列を引数にするにはどうすればいい?
382:aho
07/10/27 23:14:56
課題3
void rev_intary(int vc[], int no){
int i;
int* tmp = (int*)malloc(sizeof(int) * no);
/* noをコピーしておく */
for(i=0; i<no; i++)
tmp[i] = vc[i];
for(i=0; i<no; i++)
vc[i] = tmp[no-1-i];
free(tmp);
return;
}
stdlib.hをインクルードするように!
383:デフォルトの名無しさん
07/10/27 23:15:02
配列のポインタかポインタのポインタを使う
384:デフォルトの名無しさん
07/10/27 23:20:08
>>383
サイズをどうやって保存するの?
385:デフォルトの名無しさん
07/10/27 23:22:02
パンチで
386:デフォルトの名無しさん
07/10/27 23:22:17
保存はできない。引数でサイズ指定するしかない。
387:168
07/10/28 00:20:59
>>357
ありがとうございます。
続きはやっていただけませんか?
388:デフォルトの名無しさん
07/10/28 00:21:53
これうまくいかないけどなぜでしょうか?サイズがちゃんと求まりません
#include <iostream>
#include <vector>
using namespace std;
void sizehyoji(vector< vector<int> > x){
int m,n;
m=sizeof(x)/sizeof(x[0]);
n=sizeof(x[0])/sizeof(x[0][0]);
printf("%d %d",m,n);}
main(){
int i,j,M=200,N=100;
vector< vector<int> > x;
x.resize(M);
for(i=0;i<M;i++)x[i].resize(N);
for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0;
sizehyoji(x);}
389:デフォルトの名無しさん
07/10/28 00:24:21
>>388
vectorはsize()を使え
390:デフォルトの名無しさん
07/10/28 00:26:59
>>375
課題3
void rev_intary(int vc[], int no)
{
int temp, i, n = no / 2;
for(i=0; i<n; i++) {
temp = vc[i];
vc[i] = vc[no-1-i];
vc[no-1-i] = temp;
}
}
391:デフォルトの名無しさん
07/10/28 00:27:20
>>389
できました vectorでやればサイズ渡せますね
#include <iostream>
#include <vector>
using namespace std;
void sizehyoji(vector< vector<int> > x){
printf("%d %d",x.size(),x[0].size());}
main(){
int i,j,M=200,N=100;
vector< vector<int> > x;
x.resize(M);
for(i=0;i<M;i++)x[i].resize(N);
sizehyoji(x);}
392:デフォルトの名無しさん
07/10/28 00:32:19
>>375
課題4
void mul(const int ma[2][3], const int mb[3][2], int mc[2][2])
{
int i, j, k;
for(i=0; i<2; i++) {
for(j=0; j<2; j++) {
for(k=0; k<3; k++) mc[i][j] += ma[i][k] * mb[k][j];
}
}
}
393:デフォルトの名無しさん
07/10/28 01:01:51
任意サイズのやつやろうとしたけど面倒になった あとでやるかもしれない 書き込んでおく
#include <iostream>
#include <vector>
using namespace std;
class Gyouretu {
vector< vector<int> > x;
public:
Gyouretu(){Gyouretu(1,1);}
Gyouretu(int M,int N){int i,j;x.resize(M);for(i=0;i<M;i++)x[i].resize(N);
for(i=0;i<M;i++)for(j=0;j<N;j++)x[i][j]=0;}
resize(int M,int N){Gyouretu(M,N);}
Gyouretu& Gyouretu::operator=(Gyouretu& y){
if(&x!=this){} return *this;}
};
main(){
Gyouretu x;
x.resize(6,5);}
394:デフォルトの名無しさん
07/10/28 04:31:04
全ディレクトリのファイルでサイズが一致するものをプルパスで出力せよ
395:デフォルトの名無しさん
07/10/28 04:38:32
プルパスについてkwsk
396:デフォルトの名無しさん
07/10/28 04:42:58
植田佳奈 さんってこんな人だったの・・・?
相手の人、可哀想;;
URLリンク(www.nicovideo.jp)
25分14秒付近より
●植田佳奈、最近人生を丸投げしたくなることは?というフリに、「こないだー、悪口を絶賛喋ってた
ら、後ろに本人いて(笑)あんなことほんとにあるんだ!って思って、超びっくりしちゃった(笑)
実名って言うかその人しかあり得ないような悪口をバンバン言ってたの。そしたら、”そんな風に思っ
てたんだ、ごめんね”って逆に謝られちゃって…(笑)」
397:デフォルトの名無しさん
07/10/28 10:19:24
[2] 問題文(含コード&リンク):携帯の文字入力をコマンドプロンプトから行うプログラムをつくれ
[3] 環境
[3.1] OS: WindowsXP
[3.2] VisualStudio 2008
[3.3] 言語: C
[4] 期限: はやめに
途中までは作っているのですが、シンボルが重複しているみたいなエラーがでてしまいます
デバッグと、濁点等の変換処理を手伝ってもらえませんか?
Shift-jisでやろうと思うのですがこれでいいのかよくわかりません・・・
テンプレのうpろだに何故かうpできなかったので、別のうpろだを使いました
URLリンク(www.uploda.org)
よろしくお願いします
398:デフォルトの名無しさん
07/10/28 11:59:19
>>397
[1]が抜けてる
期限が曖昧
その上マルチ
そしてVisualStudio2008ってまだβ版だろ、そんなもん宿題に使うな
399:397
07/10/28 12:41:20
すいません。あせってて・・・
[1] 授業単元: C言語
期限:今日中になりました
VisualStudio2005でも同じエラーでした
400:デフォルトの名無しさん
07/10/28 14:14:11
>>352さん
>>355さん
お礼の返事送るのが遅れて申し訳ありませんでした
>>351の問題に答えていただきありがとうございました
401:デフォルトの名無しさん
07/10/28 15:58:29
1] 授業単元: c言語
[2] 問題文:1.文字列の先頭のアドレスを引数とし、
その文字列の中にある文字’A’を探してそれが何番目かを計算し、
‘A’があればその値を、なければ0を返値とする関数を作成せよ。
2.1.で作成した関数を用いて、自分の学籍番号をポインタに代入し、
その中で文字'A'を探してそれを先頭に持ってくるプログラムを作成せよ。
[3] 環境
[3.1] OS:windows
[3.2] VisualStudio2005
[3.3] 言語:c
[4] 期限:10月31日まで
[5] その他の制限:特になし
問題が2個ありますが、よろしくお願いします
402:デフォルトの名無しさん
07/10/28 16:08:15
#include<stdio.h>
fnc(char *c){
int n;
for(n=0;c[n]!='\0';n++)if(c[n]=='A')break;
if(c[n]=='A')return n+1; else return 0;
}
main(){
char c[]="btfguhnexthgd,gj.lhgjkgh,nfgnvhg";
printf("%d\n",fnc(c));
}
403:デフォルトの名無しさん
07/10/28 16:11:30
#include<stdio.h>
fnc(char *c){
int n;
for(n=0;c[n]!='\0';n++)if(c[n]=='A')break;
if(c[n]=='A')return n+1; else return 0;
}
main(){
int i,n;
char c[]="Gakusekibango ha AGS000123";
printf("%s\n",c);
n=fnc(c);
for(i=n-1;i>=0;i--)c[i]=c[i-1];c[0]='A';
printf("%s\n",c);
}
404:デフォルトの名無しさん
07/10/28 16:30:14
[1] 授業単元: C言語
[2] 問題文:整数nをscanfで入力後"prime"という関数を呼び出して、
nが素数ならば1(それ以外は0)を繰り返し、mainにて「○は素数です(ではありません)」
を表示させよ
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio 2005
[3.3] 言語: C
[4] 期限: ([2007年10月28日まで]
[5] その他の制限:if文を用いる
405:デフォルトの名無しさん
07/10/28 16:37:23
nが素数ならば1(それ以外は0)を返し、
だよな?
406:デフォルトの名無しさん
07/10/28 16:42:35
#include<stdio.h>
prime(int p){
int n,N=p/2;
for(n=2;n<N;n++)if(p%n==0)break;
if(n<N)return 0; else return 1;}
main(){
int p;
scanf("%d",&p);
if(prime(p))printf("%dは素数です",p); else printf("%dは素数ではありません",p);
}
407:デフォルトの名無しさん
07/10/28 16:46:57
>>406
N=p/2
でpが奇数だったらNに入るのはintじゃなさそうな気がする
408:デフォルトの名無しさん
07/10/28 16:47:22
#include<stdio.h>
prime(int p){ for(int n=2;n<p/2;n++)if(p%n==0)return 0;return 1;}
main(){
int p;scanf("%d",&p);
if(prime(p))printf("%dは素数です",p); else printf("%dは素数ではありません",p);}
409:デフォルトの名無しさん
07/10/28 16:48:53
>>407
#include<stdio.h>
main(){
int p=5;
int N=p/2;
printf("Nは%dです",N);
}
410:デフォルトの名無しさん
07/10/28 16:59:01
#include<stdio.h>
int prime(int p)
{
int n;
for(n=2; n<=p/2; n++) if(!(p%n)) return 0;
return 1;
}
int main(void)
{
int p;
scanf("%d",&p);
printf(prime(p) ? "%dは素数です" : "%dは素数ではありません", p);
return 0;
}
411:デフォルトの名無しさん
07/10/28 17:00:09
0 1
412:デフォルトの名無しさん
07/10/28 17:06:42
>>405
その通りでした。すいません
413:デフォルトの名無しさん
07/10/28 17:06:55
>>404
#include <stdio.h>
int prime(int n)
{
int i;
if(n<2) return 0;
for(i=2; i*i<=n; i++) if(n%i==0) return 0;
return 1;
}
int main(void)
{
int n;
scanf("%d", &n);
if(prime(n)==0) printf("%dは素数ではありません\n", n);
else printf("%dは素数です\n", n);
return 0;
}
414:デフォルトの名無しさん
07/10/28 17:43:11
cディレクトリのファイルでサイズが一致するものを出力せよ
415:デフォルトの名無しさん
07/10/28 18:10:14
はい。
416:デフォルトの名無しさん
07/10/28 18:10:35
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
8行10列の二次元配列においてです。
1行目の配列と2行目の配列を足します。(できた配列を配列Aとよぶ)
次に配列Aと3行目の配列を足します。(できた配列を配列Bとよぶ)
次に配列Bと4行目の配列を足します。(できた配列を配列Cとよぶ。)
次に
5行目の配列と6行目の配列を足します。(できた配列を配列aとよぶ)
次に配列aと7行目の配列を足します。(できた配列を配列bとよぶ)
次に配列bと8行目の配列を足します。(できた配列を配列cとよぶ。)
そして配列Cを1行目、配列cを2行目とする
2行10列の二次元配列を表示しろ。(つまり4行の配列をたせということです)
配列のそれぞれの足し算は別関数にて行いなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007年10月29日まで
[5] その他の制限: なし
よろしくお願いします。
417:デフォルトの名無しさん
07/10/28 18:15:39
>>416
これはなにか物理的演算なのかな?
418:デフォルトの名無しさん
07/10/28 18:18:12
>>416
1行目から4行目の各成分をそれぞれ足してCとする。
5行目から8行目の各成分をそれぞれ足してcとする。
Cとcを横に並べて2x10にする。
という意味?
419:デフォルトの名無しさん
07/10/28 18:19:05
関数内はlogの加算にあとでかえますから。
logの加算じゃなかったらこんなめんどいことはしません。
420:デフォルトの名無しさん
07/10/28 18:21:16
8X10の配列を
4X10と4X10とみて、4行ずつ配列を足します。そしたら1X10と1X10になるでしょう?
でこの1X10と1X10をいっしょにして2X10というわけです。
対数の加算なので一辺には計算できないわけです
421:デフォルトの名無しさん
07/10/28 18:25:02
なんでこんな簡単なこともできないのに、そんなに偉そうなんだ?
422:デフォルトの名無しさん
07/10/28 18:27:08
>>420
言いたいことは分かるが4行ずつ配列を足してないだろ
423:デフォルトの名無しさん
07/10/28 18:28:55
#include <stdio.h>
void add(const int *a, int *b, int n)
{
while(n--) b[n] += a[n];
}
int main(void)
{
int a[8][10], b[2][10] = {0};
int i;
for(i=0; i<8; i++) add(a[i], b[i/4], 10);
return 0;
}
424:デフォルトの名無しさん
07/10/28 19:44:51
>>416
配列A, B, a, b は配列として必要なのか?
425:デフォルトの名無しさん
07/10/28 20:42:09
わかる人いますか?
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
以下のような内容のテキストファイルを読み込んで
それぞれ配列に格納した後、同じように出力せよ。
文章,文章,数字,数字,・・・,数字\n
文章,文章,数字,数字,・・・,数字\n
文章,文章,数字,数字,・・・,数字\n
ただし行数および数字の列数は常に不定とする。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C/C++どちらでも可
[4] 期限: 2007年10月28日24:00まで
[5] その他の制限: 特になし
426:425
07/10/28 20:46:49
すみません。
読み込むのはtxtファイルじゃなくてcsvファイルでした。
よろしくおねがいします。
427:デフォルトの名無しさん
07/10/28 20:49:03
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): e^x = 1 + x^1/1! + x^2/2! + x^3/3! + x^4/4! + … を利用して e^x を計算する関数 double myexp(double x) を作成せよ.
k=0, 1, 2, 3, … について x^k/k! を加算してゆき, x^k/k!<10-6 となった時点で計算を打ち切るようにせよ
(無限ループと break 文を用いるのが一解法). main から myexp を呼び出し, x=1.0, 2.0, …, 10.0 に対して
myexp(x) の値を全体で 13 桁, 小数点以下 5 桁で表示せよ.
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C言語
[4] 期限: 2007年10月29日まで
[5] その他の制限:特になし
次レスがプログラムです。実行はされますが値がおかしいです…
よろしくお願いします。
428:デフォルトの名無しさん
07/10/28 20:50:56
#include <stdio.h>
#include <math.h>
double myexp(double);
double x;
int main( void )
{
printf("\t x\t myexp(x)\n");
for(x=1.0;x<=10.0;x++)
{
printf("\t%.1f\t%13.5f\n",x,myexp(x));
}
return 0;
}
double myexp(double x)
{
double r=1.0,f=1.0,y=1.0;
int z,k;
for(k=1;;k++)
{
for(z=1;z<=k;z++)
{
r=r*z;
}
if(pow(x,k)/r<1.0e-6)
{
return f;
break;
}
f=f+pow(x,k)/r;
}
}
429:とくめい
07/10/28 21:06:55
すみませんがプログラミングの宿題を教えてください。
「言語」= c++
「問題」= 速度のfileを読み込みそれを微分して加速度を求めろ。速度を積分して距離を求めろ
なおプログラムは1通です。
「os] = xp micro studio 2005
430:とくめい
07/10/28 21:09:09
上の追加です。
去年の参考にfile名は何でもいいので
#include<stdio.h>
FILE * fp1,* fp2,* fp3; //ファイルポインタの宣言
int main()
{
double k1=0,k;//k1=一つ前の距離、k=距離
double s1=0,s;//s1=一つ前の速度、s=速度
double T=0.4;//刻み値(台形の高さ)
fp1 = fopen( "C:\\suzuki2\\car06spd.txt", "r" );//ファイルを読み込みで開く
fp2 = fopen( "C:\\suzuki2\\sekibun.txt", "w" );//ファイルを書き込みで開く
if( fp1 == NULL ){//fp1にデータがあるか確かる
printf("ファイルが開けません。\n");
fclose( fp1 );
}
431:とくめい
07/10/28 21:10:28
書き込めなかったので2分割しました
while( 1 ) {//無限ループ(微分)
if( fscanf( fp2,"%lf",&k) == EOF ) break;//ファイルを読み終えたらループから抜ける
s=(k-k1)*2/T*3600-s1;//速度(s)の式 、単位変換を行う
fprintf(fp3,"%.0lf\n",s);//ファイルに速度sを出力する
k1=k;//k1にkの値を入れる
s1=s;//s1にsの値を入れる
}
fclose( fp2 );//ファイルを閉じる
fclose( fp3 );//ファイルを閉じる
return 0;
}
432:デフォルトの名無しさん
07/10/28 21:13:10
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限: 10月29日午前1時まで
よろしくお願いします
433:デフォルトの名無しさん
07/10/28 21:14:25
>>425#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
main(){
string str="",buf;
fstream fp("text.csv",ios::in);
do {getline(fp, buf);str+=buf+"\n";}while(!fp.eof());
int m,n;vector<string> x;
do{
m=str.find(",");n=str.find("\n");
if(m>n){x.push_back(str.substr(0,n));x.push_back("\n");m=n;}
else x.push_back(str.substr(0,m));
str=str.substr(m+1);}while(m>=0);
for(n=0;n<x.size();n++)cout<<x[n];
}
434:デフォルトの名無しさん
07/10/28 21:24:59
// >>427 eのマクローリン展開
#include <stdio.h>
#include <math.h>
double myexp(double);
double x;
int main( void )
{
double x;
printf("\t x\t myexp(x)\t exp(x)\n");
for(x=1.0;x<=10.0;x++)
{
printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x));
}
return 0;
}
double myexp(double x)
{
double s = 0.0;
double a = 1.0;
s += 1.0;
for (int n = 1; n < 20; n++) {
a = a * x / n;
s = s + a;
}
return s;
}
435:デフォルトの名無しさん
07/10/28 21:26:58
/*
e^x を計算する関数 double myexp(double x) を作成せよ.
k=0, 1, 2, 3, … について x^k/k! を加算してゆき,
x^k/k!<10-6 となった時点で計算を打ち切る
main から myexp を呼び出し,
x=1.0, 2.0, …, 10.0 に対して
myexp(x) の値を全体で
13 桁, 小数点以下 5 桁で表示せよ.
*/
#include <stdio.h>
#include <math.h>
double myexp(double x){
double r=1,sum=0;
for(int k=1;;k++){
sum+=r;
r*=x/k;
if(r < 1.0e-6)return sum;}}
int main( void ){
double x;
printf("\t x\t myexp(x)\n");
for(x=1.0;x<=10.0;x++){
printf("\t%.1f\t%13.5f\n",x,myexp(x));
}
return 0;
}
436:デフォルトの名無しさん
07/10/28 21:28:11
// >>427 e(x)の計算 さっきのはforのなかで宣言があったんでC++
#include <stdio.h>
#include <math.h>
double myexp(double);
int main( void )
{
double x;
printf("\t x\t myexp(x)\t exp(x)\n");
for(x=1.0;x<=10.0;x++)
{
printf("\t%2.1f\t%13.5f\t%13.5f\n", x, myexp(x), exp(x));
}
return 0;
}
double myexp(double x)
{
double s = 0.0;
double a = 1.0;
int n;
s += 1.0;
for (n = 1; n < 20; n++) {
a = a * x / n;
s = s + a;
}
return s;
}
437:デフォルトの名無しさん
07/10/28 21:28:25
[1] 授業単元: データ1
[2] 問題文(含コード&リンク): 長いのでうpしました。
簡易電卓を作成する問題です。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:bcc
[3.3] 言語:C
[4] 期限:11/7まで
[5] その他の制限:GUIで作ってはいけないそうです。
よろしくお願いします。
438:デフォルトの名無しさん
07/10/28 21:29:20
#include <stdio.h>
double myexp(double x){
double r=1,sum=0;
for(int k=1;;k++){
sum+=r;r*=x/k;
if(r<1.0e-6)return sum;}}
main(){
printf("\t x\t myexp(x)\n");
for(double x=1.0;x<=10.0;x++)printf("\t%.1f\t%13.5f\n",x,myexp(x));}
439:デフォルトの名無しさん
07/10/28 21:31:11
>>437
厳しい制限だな。GUIで作っちゃだめなのか
440:デフォルトの名無しさん
07/10/28 21:34:38
>>432
#include <stdio.h>
#include <math.h>
int solve(double a, double b, double c);
double answer1;
double answer2;
int solve(double a,double b, double c)
{
double check;
check = b * b - 4 * a * c;
if(check > 0){
answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a);
answer2 = (b - sqrt(b * b - 4 * a * c)) / (2 * a);
return 2;
}else if(check == 1){
answer1 = (b + sqrt(b * b - 4 * a * c)) / (2 * a);
answer2 = answer1;
return 1;
}
return 0;
}
main()は省略
汚いコードだけどこんな感じ
441:デフォルトの名無しさん
07/10/28 21:35:29
>>432
int solve(double a, double b, double c)
{
double d = b * b - 4 * a * c;
if(d<0) return 0;
answer1 = (-b + sqrt(d)) / 2 / a;
answer2 = (-b - sqrt(d)) / 2 / a;
return d == 0 ? 1 : 2;
}
442:デフォルトの名無しさん
07/10/28 21:36:31
>>440
それまちがってるよ
443:デフォルトの名無しさん
07/10/28 21:38:53
>>440
せっかくcheck計算してんのに、sqrtの引数に利用しないなんてムダすぎる
444:440
07/10/28 21:39:29
>>442
/(^o^)\bの前に”-”が抜けてた
>>441のほうが圧倒的に見やすくていいね
445:425
07/10/28 22:03:25
>>433
ありがとうございます!!
あと数字は数字として格納して次の問題での計算に使いたいのですが
文字列として取得した数字を別の配列に整数型の数として取得するには
どうすればいいでしょうか?
446:デフォルトの名無しさん
07/10/28 22:08:48
st=str.substr(0,n)に対して
st[i]が'0'から'9'にあればいい
コードはちょっと待ってくれ
447:デフォルトの名無しさん
07/10/28 22:08:55
>>445
std::string str = "1.234";
double d;
std::istringstream istr(str);
istr >> d;
448:デフォルトの名無しさん
07/10/28 22:30:14
stringが数値なら変換して違うならエラーを返す関数ってある?
449:デフォルトの名無しさん
07/10/28 22:33:09
atofで良いんだな
450:デフォルトの名無しさん
07/10/28 22:36:21
atofだと初めが数値だと計算してしまう
451:デフォルトの名無しさん
07/10/28 22:38:30
.8222とか、100,000とかは数値にするのか?
452:425
07/10/28 22:42:07
>>446
その方法基本情報試験の勉強でやった覚えが!!!
でもどうにも思い出せないです・・・
>>447
stringがvector<string>なためかうまくいきません。
atoiなどもvectorは拒否されてしまうみたいですね。
うーん、難しい・・・
453:デフォルトの名無しさん
07/10/28 22:44:19
#include<stdio.h>
int main(int argc, char *argv[]){
int i, index;
double value;
for(i=1;i<argc;i++){
if(sscanf(argv[i], "%lg%n", &value, &index)>=1 && argv[i][index]=='\0')
printf("%s は数値だ\n", argv[i]);
else
printf("%s は数値ではない\n", argv[i]);
}
return 0;
}
454:デフォルトの名無しさん
07/10/28 22:50:47
[1] 授業単元:データ構造とアルゴリズム1
[2] 問題文(含コード&リンク):待ち行列シミュレーションするプログラムを作成せよ
完成する関数:
void enqueue(char *x)
void dequeue()
void queue_print()
作成するプログラムについて:URLリンク(kansai2channeler.hp.infoseek.co.jp)
実行例:URLリンク(kansai2channeler.hp.infoseek.co.jp)
ヒント:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:win xp
[3.2] Microsoft Visual Studio .NET 2003
[3.3] 言語:c++
[4] 期限:2007年10月29日9:30まで
[5] その他の制限:(どこまで習っているか)構造体、ファイル処理あたりまで
455:デフォルトの名無しさん
07/10/28 22:56:52
>>437
符号反転キーと演算キーがかぶる気がするんだけどどうするの?
456:デフォルトの名無しさん
07/10/28 22:58:12
class mojisu {
string str;
double su;
}
mojisu x;
x.input("777");
という関数を作る 数値なら数字として保存 このとき文字は空にする 違うなら文字として保存
457: ◆nzw4qNGj6U
07/10/28 22:58:19
[1] 授業単元:プログラミング2 文字列処理
[2] 問題文(含コード&リンク):
英文(英単語)を入力し、入力した文字列を、逆から表示するプログラムを作成すること。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限:2007年10月29日0:00迄
[5] その他の制限:NULL文字を使用して下さい。
よろしくお願いします。
458:デフォルトの名無しさん
07/10/28 23:41:00
>>457
NULL文字をどこで使用するんだ・・・
#include <stdio.h>
int main()
{
int i=-1;
char buf[256];
while((buf[++i]=getchar())!=EOF);
while(i>0&&putchar(buf[--i])!=EOF);
return 0;
}
459:デフォルトの名無しさん
07/10/28 23:48:49
>>458
きっとこういう風にするんだよ
#include <stdio.h>
int main()
{
int i=-1;
char buf[256];
while((buf[++i]=getchar())!=EOF);
while(i>0&&putchar(buf[--i])!=NULL); // ここ
return 0;
}
460:デフォルトの名無しさん
07/10/29 00:19:06
NUL文字?
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5008日前に更新/157 KB
担当:undef