952 :
951:2007/05/25(金) 06:48:54
あー
returnがなにも返してない
一応修正しといて
>>930 # include <stdio.h>
#define N 7
void swap(int *a, int *b){
int c;
c=*a;*a=*b;*b=c;
}
int main(void){
int value[N][N]={{0}}, width[N], i, j;
char tmp[20];
// パスカルの三角形を計算する(左詰)
for(i=0;i<N;i++){
value[i][0]=1;
for(j=1;j<=i;j++) value[i][j]=value[i-1][j-1]+value[i-1][j];
}
// パスカルの三角形を右詰にする
for(i=0;i<N;i++)
for(j=0;j<N/2;j++) swap(&value[i][j], &value[i][N-1-j]);
// それぞれの項の表示に必要な幅を計算する
for(i=0;i<N;i++) width[i]=sprintf(tmp, "%d", value[N-1][i]);
// 表示
for(i=0;i<N;i++){
for(j=0;j<N;j++){
if(value[i][j]!=0) printf(" %*d", width[j], value[i][j]);
else printf(" %*s", width[j], "");
}
printf("\n");
}
return 0;
}
そろそろ誰か、ありきたりなパターンな課題をまとめてくれYO!
言いだしっぺの法則はなしな。
以前誰かがwiki作ったんじゃなかったっけか?
959 :
デフォルトの名無しさん:2007/05/25(金) 08:38:40
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
以下のような括弧付き中記記法の数式を入力とし,次のようなプログラムを作成し,実行例を
示せ.
(((3 ∗ 2) − (4 ∗ (5 − 1))) ∗ (6 ∗ 8))
1. 後置記法(逆ポーランド記法,例は以下) を出力するプログラム.ただし,入力となる数字は一桁としてよい.
32 ∗ 451−∗−68 ∗ ∗
2. 計算結果を出力するプログラム.ただし,入力となる数字は一桁としてよい.
3. 2 の計算結果を出力するプログラムを拡張せよ.例えば入力の数字の桁数を増やす,前置記法も出力する,冗長なかっこがなくても計算できるようにするetc...
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2007/05/26
[5] その他の制限: ポーランドまで
>>958 性帝トーマス氏がウィッキーさんだったか忘れたがサイトを持っていたかと。
そこはやめとけ
>>957 >>958 すまん、一応ごく稀に更新はしているが、
あまり真剣にまとめてない・・・もっと努力する
ファイルのダンプ松本追加しといて
wikiなんだからできれば自分で追加して欲しい
ウィッキーさんの編集はちと俺みたいな日本語の不自由な奴には向いていない orz
かといって英語が得意なわけでもない。けど、ソースをそのまま載せるのは簡単でそ?
簡単だから自分で追加しろって話じゃないの?
>>931 getline()は例題と同じもので。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char line[0x2000];
int i, len, state;
enum { NONE = 0, IN_TAG = 1, IN_BLANK = 2 };
while ((len = getline(line, sizeof line)) > 0) {
for (i = 0; i < len; ++i) {
unsigned char c = (unsigned char)line[i];
if (state == IN_TAG) {
if (c == '>') state = NONE;
} else if (c == '<') {
state = IN_TAG;
} else if (isspace(c)) {
if (state != IN_BLANK) putchar(c);
state = IN_BLANK;
} else {
state = NONE;
putchar(c);
}
}
}
return 0;
}
>>967 wikiはsandboxとか適当な凍結されてないページを「編集」して、
その結果とレイアウト後のページを見比べれば、
大体何やれば表示できるか解る
あと大抵は文法説明のページが存在する
日本語不自由でもこの板に居る以上なんか言語使えるんだろ?
だったら問題ねーよw
ちゅんごくごで朝鮮してにdか?
972 :
908:2007/05/25(金) 12:23:38
>>909 お速い解答ありがとうございますm(_ _)m
>>953 大変ありがたいんですが、swapを使わないで右詰にする方法はありますでしょうか?
あります。自分で左側に空けるべき空白の個数を計算すればよろし。
次スレ立てるよ。
977 :
デフォルトの名無しさん:2007/05/25(金) 17:13:01
>>974 理解できました。ありがとうございました
[1] 授業単元:コンピュータ基礎
[2] 問題文(含コード&リンク):
<条件>
・ビリヤード台がおいてある
・台の左下端の座標は(0,0)、右上端の座標は(2,1)とする
・位置(x0、y0)に手玉
・手玉の初速度(v0x,v0y)
・手玉の位置、初速度はscanfをつかって入力する
<問題>
・手玉はどこに衝突するか?
・衝突位置の座標を表示する
・ポケットにおちることは考えなくてもよい
・手玉の大きさ、摩擦等は考えない
・20回のバンクを考慮して21カ所解答
[3] 環境
C言語で
[4] 期限: [2007年6月1日まで]
[5] その他の制限: if,while,for構文まで
おねがいします。。
マルチ死ねカス
はわわ、死ねなんていくないです
由真が一番だから、黙ってろ、この古典!
>>984 >そこでdata1〜6までのファイルを一度に読み込んで一括で結果を表示するものにしたいのです。
微妙に方向が間違ってる
今のmainを単なる「一つのファイルを読み込んで結果を得る関数」にして、
それを呼びだす上位の関数を作成し、これをmainにすればよい
全てのファイルについて、呼出と結果取得を行い、
この結果を表示すれば、「全ファイルを一度に読む」なんてしなくても、
現状の流用で解決可能だ
>>985 無事に解決しました。ありがとうございました。
988 :
デフォルトの名無しさん:2007/05/26(土) 10:56:56
>>947はまだ提出してないのか?またつき返されたのか?
まだ解答貰ってない奴居るか?ただし期限過ぎたものは除く。
スレが終る前に、未解決問題さがしてやろうと思ったけど
探すのマンドクセ〜
844は直後に解決してるじゃねーか
>>711 #include<stdio.h>
double f_internal(int a, int b, int c, double x, int is_init){
static int sa, sb, sc; // a, b, c を外部変数にするべきかな?
if(is_init){sa=a;sb=b;sc=c;}
return sa*x*x+sb*x+sc;
}
void f_init(int a, int b, int c){f_internal(a, b, c, 0, 1);}
double f(double x){return f_internal(0, 0, 0, x, 0);}
int main(void){
int a, b, c;
double x1, x2, xx, xmin, xmax, ymin, ymax;
printf("\nInput value of a, b, c : ");
scanf("%d %d %d", &a, &b, &c);
printf("\nInput value of x1, x2 : ");
scanf("%lf %lf", &x1, &x2);
if(x1>x2){xx=x1;x1=x2;x2=xx;}
f_init(a, b, c);
xx=(a!=0)?(double)-b/(2*a):x1; // y'=2*a*x+b -> x=-b/(2*a) の時,極値をとる
if(xx<x1) xx=x1;
if(xx>x2) xx=x2;
xmax=xmin=x1;
ymax=ymin=f(x1);
if(ymax<f(xx)){ymax=f(xx);xmax=xx;}
if(ymin>f(xx)){ymin=f(xx);xmin=xx;}
if(ymax<f(x2)){ymax=f(x2);xmax=x2;}
if(ymin>f(x2)){ymin=f(x2);xmin=x2;}
printf("maximum : x=%g y=%g\n", xmax, ymax);
printf("minimum : x=%g y=%g\n", xmin, ymin);
return 0;
}
995 :
tomcat:2007/05/26(土) 17:00:47
下記の関数は、ある条件下において不明瞭な値を返す場合がある。
*それはどの様な条件なのか????????
int func_A(int x, int a[], unsigned int c, unsigned int d)
{
unsigned int m;
while (c < d) {
m = (c + d) >> 1;
if (a[m] >= x) d = m;
else c = m + 1;
}
if (a[c] == x) return c;
return 0;
}
>>995 何を不明瞭な値というのかが分からないんだが…
「二分探索がうまくいかないよー」というのであれば
検索元のデータがソート済みで無いか
引数のcまたはdが配列の範囲を超えてるとか
そういうこと?
>>995 c==0 で x が見つからなかった時
0 を返すから見つかったのかどうか分からないってこと?
千!
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。