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

C/C++の宿題は私におまかせくださいませ 23代目

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
みなさま、ごきげんよう。
わからない宿題は私におまかせくださいませね。

【注意点】 -------------------------------------------------
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、エラーなどは適切に書きましょう
 全文を書いてしまうか、分かりやすくまとめましょう。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
------------------------------------------------------------

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>2-10】
0002デフォルトの名無しさんNGNG
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html
0003デフォルトの名無しさんNGNG
3 get's!
0004デフォルトの名無しさんNGNG
ぼるじょあじゃないのが気に入らないが、まあ前よりはましだろう。
0005デフォルトの名無しさんNGNG
5ゲット
口で言うのは簡単だ
0006デフォルトの名無しさんNGNG
>>1
乙
0007デフォルトの名無しさんNGNG
前のスレタイは過去最低だったからな。
下ネタいれんなくそ。
0008デフォルトの名無しさんNGNG
下ネタねぇ...
0009デフォルトの名無しさんNGNG
>>8
なんだお前異論があるのか?
前スレからは明らかに近親相姦の臭いが漂っていただろうが?
0010デフォルトの名無しさんNGNG
そんなどうでもいいことでムキになるなよ。
では気を取り直して宿題どうぞ↓
0011デフォルトの名無しさんNGNG
次スレ案

C/C++の宿題はウリに任せるニダ 24スミダ
0012デフォルトの名無しさんNGNG
線形リストをソートしてみろ。
0013デフォルトの名無しさんNGNG
またかよ。
0014デフォルトの名無しさんNGNG
sort(q.begin(), q.end());
0015デフォルトの名無しさんNGNG
>12
配列にデータコピーしてqsortに渡してして元に戻す
0016デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=224
Cでお願いします
0017デフォルトの名無しさんNGNG
>16
単にtailの位置を毎回headとcountを使って計算すればいいのでは
tail= ( head + count ) % QUEUE_SIZE
てなかんじで
0018デフォルトの名無しさんNGNG
>>16
int enqueue(queue_t *que, data_t newdata){ 
  if (que->count < QUEUE_SIZE - 1) { 
    que->data[que->count++] = newdata;
    return SUCCESS;
  } else {
    return FAILURE;
  }
}

data_t dequeue(queue_t *que){    
  data_t d;    
  if (que->count > 0) { 
    d = que->data[que->head]; 
    que->head = que->head + 1
    que->count --;
    return d;    
  }
  

動作確認して無い。
0019デフォルトの名無しさんNGNG
>>17 ありがとうございます

>>18 以後気をつけます
0020デフォルトの名無しさんNGNG
>>18 すいません自分が動作確認して無いのかと勘違いしてしまいますた。
0021デフォルトの名無しさんNGNG
n*nの行列の二つの行列をかけあわせるプログラムを作り、これを用いてA^2^mを計算
するプログラムはどうすればできるのでしょう??
0022デフォルトの名無しさんNGNG
でも、以後気をつけますなんて言ったら動作確認してないのバレるよ?
0023デフォルトの名無しさんNGNG
C初心者です。
(1)1!+3!+5!+7!+・・・+(2n+1)!
(2)1+1/1!+1/3!+1/5!+・・・+1/(2n+1)!
をCで求めよ。という課題が出ましたが全然わかりません。
助けてください。
0024デフォルトの名無しさんNGNG
>>21
@(o・ェ・)@ 
おさるもわからん問題  
0025デフォルトの名無しさんNGNG
かわいいおさる@(・ω・)@
0026デフォルトの名無しさんNGNG
@(o'ェ`o)@耳のでっかいさるやなぁw
0027デフォルトの名無しさんNGNG
それはどっちやあ☆
0028デフォルトの名無しさんNGNG
>>23
(1)
#include <stdio.h>
#include <stdlib.h>

int kaijo(int n);

int main(int argc, char *argv[])
{
int n;
int i;
int s = 0;

printf("奇数を入力してください\n");
scanf("%d", &n);
for(i = 1; i <= n; i+=2){
s += kaijo(i);
}
printf("%d\n", s);
return 0;
}

int kaijo(int n)
{
int k = 1;
while(n > 0){
k *= n;
n--;
}
return k;
}
0029デフォルトの名無しさんNGNG
ふつう n を入力させるんじゃないか?
0030デフォルトの名無しさんNGNG
<<耳の大きさ>>
@(o・ェ・)@ > @(・ω・)@
0031仕様書無しさんNGNG
なんか変だ
cin.unsetf( ios_base::skipws );
stringstr( (istream_iterator<char>(cin)), istream_iterator<char>() );
0032デフォルトの名無しさんNGNG
printf("奇数を入力してください\n");
って、プゲラ
0033デフォルトの名無しさんNGNG
>>31
stringstr((istreambuf_iterator<char>(cin)), istreambuf_iterator<char>());
ではだめなん?て言うか宿題じゃないよね?
0034デフォルトの名無しさんNGNG
>>32
悪かったよ。
プログラミングなんてほとんどやったことないんで赦してくれ。
0035チキン野郎 ◆/73ORiYgDY NGNG
>>23 (1)
#include <stdio.h>

int factorial(int i)
{
int j,k=1;
for(j=1;j<=i;j++)
k*=j;
return k;
}
int main()
{
int n,i,ans=0;
printf("1!+3!+・・・+(2n-1)!を求める。\nnを入力 : ");
scanf("%d",&n);
for(i=1;i<=2*n-1;i+=2)
ans+=factorial(i);
printf("Ans = %d",ans);
return;
}
0036デフォルトの名無しさんNGNG
#include <stdio.h>
int factorial(int n){
if (n <= 1) return 1;
else return n * factorial(n - 1);
}
int f(int n){
if (n < 0) return 0;
else return factorial(2 * n + 1) + f(n - 1);
}
int main(void){
int n;
printf("n >> "); scanf("%d", &n);
printf("(1) = %d\n", f(n));
return 0;
}
0037デフォルトの名無しさんNGNG
typedef void (*write8_handler)( int offset , int data ) ;
こなんですけどね、offsetとdataはどういう扱いになるかサッパリです。
0038デフォルトの名無しさんNGNG
単なる引数。
0039デフォルトの名無しさんNGNG
C言語でバイオリズムのグラフを描くことになりました。
見本になりそうなソースをぐぐって探したのですが、JAVAのソースはあってもCのソースは見つけられませんでした。
参考になるソースをご存知の方いませんか?
0040デフォルトの名無しさんNGNG
>>39
グラフィカルなものは環境依存です。
こちらへどうぞ。

【初心者歓迎】C/C++室 Ver.6【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1082182233/l50

ちゃんと環境を書きましょう。
0041デフォルトの名無しさんNGNG
C++で

 % command abcd
と入力すると
 a b c d
 a b cd
 a bc d
 a bcd
 ab c d
 ab cd
 abc d
 abcd

 % command abc
ならば
 a b c
 a bc
 ab c
 abc

のように文字をグループ化して全てのパターンを表示するというものなのですが、
文字数が分かっている場合には沢山ループをまわせばできるのですが、
文字数が分からない場合はどうするかということで再帰を考えてみたのですが
実装できず、上手い方法をご存知の方がいらっしゃいましたらどうかよろしくお願いいたします
0042デフォルトの名無しさんNGNG
>>41
普通に文字数はわかりますが。
ひょっとして、配列で処理してる?
0043デフォルトの名無しさんNGNG
計算しなさい。
1+1/1!+1/3!+1/5!+・・・+1/(2n+1)!
さっぱりわかりません。
どうかよろしくお願いします
0044デフォルトの名無しさんNGNG
>>41
(文字数-1)個ある、「隙間」ごとにスペースが入るか否かだから、
(文字数-1)桁の2進数と対応付ける。ただし文字数が多いとオーバーフローする。
# include <iostream>
# include <cstring>

int main(int, char **argv)
{
    const char *const str = argv[1];
    if(!str)
        return 1;
    const std::size_t len = std::strlen(str);
    for(unsigned long c = 0; c < (1ul << len-1); c++)
    {
        for(std::size_t i = 0; i < len; i++)
        {
            std::cout << str[i];
            if(c & (1ul << i)) std::cout << ' ';
        }
        std::cout << '\n';
    }
}

>>42
コンパイル時に文字数がわかるかどうかって事じゃないか?
0045デフォルトの名無しさんNGNG
>>43
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=67
こんなんでどうでしょ
0046デフォルトの名無しさんNGNG
漏れも
#include <stdio.h>
int factorial(int n){
if (n <= 1) return 1;
else return n * factorial(n - 1);
}
int main(void){
int i, n;
double y = 0.0;
printf("n >> "); scanf("%d", &n);
for (i = -1; i <= n; i++) /*気持ち悪いが*/
y += 1 / (double)factorial(2 * i + 1);


printf("(2) = %f", y);
return 0;
}
0047デフォルトの名無しさんNGNG
あーやっぱ初期値1.0で
for (i = 0; i <= n; i++)のほうが良かったな・・・ 
0048デフォルトの名無しさんNGNG
初歩的ですみません。
小さい順にソートなのですが、うまくいきません。
どこが間違っているのでしょう?
int main(void)
{
  int num[20];
  int i, j, n, tmp;
  printf("いくつの整数データを入力しますか?(~20)\n");
  scanf("%d", &n);
  printf("%d個の整数を入力してください\n", n);
  for(i = 0; i < n; i++){
    scanf("%d", &num[i]);
  }
  printf("\n");
  for(i = 0; i < n - 1; i++){
    for(j = 1; j < n; j++){
      if(num[i] > num[j]){
        tmp = num[j];
        num[j] = num[i];
        num[i] = tmp;
      }
    }
  }
  for(i = 0; i < n; i++){
    printf("%d", num[i]);
  }
  printf("\n");
  return 0;
}
0049デフォルトの名無しさんNGNG
テストすんのめんどくせーから
具体的にどうおかしいのか書いてくれ
入力と出力てなかんじで
0050デフォルトの名無しさんNGNG
>>48
隣の要素と比較しないといけない。
0051デフォルトの名無しさんNGNG
 for(j = 1; j < n; j++){
を
 for(j=i+1;j<n;j++){
としたらどうだすか
0052デフォルトの名無しさんNGNG
>>49
nに3と入れて、3 2 1と入れると正常に
1 2 3 と出るのですが
nに4と入れて4 3 2 1 と入れると
1 4 2 3 と誤って出ます。

nに4以上の数を入れると全て誤って出てくるようです。
0053デフォルトの名無しさんNGNG
>>51
あ、あれ?うまくいきました。
(j = 1)と(j = i + 1)って違うんですかね?
0054デフォルトの名無しさんNGNG
>>53
そりゃ違う。

0055デフォルトの名無しさんNGNG
iとjをトレースしたらわかってきました。
有難うございました。
お騒がせしました。
0056デフォルトの名無しさんNGNG
Cが全然わかんないあほちんに愛の手を…….
19の平方根を小数点以下第4位の精度で求め、これを表示するプログラムを作成せよ。なお4の2乗は16で、5の2乗は25なので、19の平方根は4と5の間であることはわかっているものとする。(sqrt関数は用いずに。)
よろしくお願いします。
0057デフォルトの名無しさんNGNG
>>56
頭悪い解法

double a=4;
double d;
for(d=0.5; d > 0.00005; d/=2){
a=(a+d)*(a+d)>19?a:(a+d);
}
printf("%1.4f\n",d);
0058デフォルトの名無しさんNGNG
>56
sqrt関数が禁止されてるのか・・・

pow(19.0,0.5)
0059デフォルトの名無しさんNGNG
ランダムに0〜9の数を入れることはできるんでしょうか?
あほな質問ですいません。
お願いします
0060デフォルトの名無しさんNGNG
ラ0123ン4567ダ89ム
入れてみました。
0061デフォルトの名無しさんNGNG
ライフゲームの課題がでたんですけど
どう手をつけたらいいのかわかりません。
教えていただけないでしょうか?
0062デフォルトの名無しさんNGNG
>>59
数字はだぶらないようにしたいの?
0063デフォルトの名無しさんNGNG
>59
int rand()={0,1,2,3,4,5,6,7,8,9};

古い処理系ではエラーになる。
0064デフォルトの名無しさんNGNG
>>62
筆算の三桁の数同士を掛け合わる問題で、

    ○○○
  ×○○○
   ̄ ̄ ̄ ̄
    ○○○
○○○
○○○
 ̄ ̄ ̄ ̄ ̄ ̄
○○○○○

この中に0〜9を各2回づつ入れろというものです。
図がきたなくてすいません・・・
0065デフォルトの名無しさんNGNG
始めからそう書けよ。
0066デフォルトの名無しさんNGNG
>>56
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=69
こんなんでどうでしょ
0067デフォルトの名無しさんNGNG
100行以上のBASICのプログラムをCに移植しろという課題が出たのですが、
100行以上のBASICのソースが見つかりません。
どこか、ソースを公開している場所を知っていれば教えてください。
006841NGNG
>>42
文字列が4文字なら4個のループを入れこにするとか
すごいアホな事を考えていました_| ̄|○

>>44
全くこんな方法は思いつきませんでした
原理は分かったのですが、十分に理解できていないので
これから考えてみたいと思います
ありがとうございました
0069デフォルトの名無しさんNGNG
おえ、せっかくかいたのに全然違うもんだったか
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 9
int r(int n){
return (double)rand() / (RAND_MAX + 1) * (n + 1);
}
void f_1(int *s, int n){
int i;
for (i = 0; i < n; i++) s[i] = r(N);
}
void f_2(int *s, int n){
int i, index, temp;
for (i = 0; i < n; i++) s[i] = i;
for (i = 0; i <10; i++){
index = r(N);
temp = s[i]; s[i] = s[index]; s[index] = temp;
}
}
void print(int *s, int n){
int i;
for (i = 0;i < n; i++) printf("s[%d] = %d\n", i, s[i]);
}
int main(void){
int s[10];
srand((unsigned)time(NULL));
puts("かぶりあり"); f_1(s, 10); print(s, 10);
puts("かぶりなし"); f_2(s, 10); print(s, 10);
return 0;
}
0070デフォルトの名無しさんNGNG
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
007169NGNG
どうでもいいんだろうけど
index = r(N);→index = r(n)
だった。
007269NGNG
いや違うr(n-1)だ、必要もないのにぐだぐだだ藁。
もとのほうがたまたまあってた藁。
007356NGNG
>>66さんありがとうございますた。早速コンパイルしてみます。^_^
0074デフォルトの名無しさんNGNG
迷路の作成and探索プログラムを作成する
奇数×奇数の迷路を作成 できるだけ難しい迷路を作成する。
探索のときは その迷路の最短ルートをできるだけ早く見つけ出す。
対戦形式で行い 迷路マップを交換し相手の作った迷路の最短ルートを制限時間5分でみつけた方が勝ち
どちらも最短ルートを求められた場合 早く解いたほうが勝ち
どちらも最短ルートが求められなかった場合 早く解いたほうが勝ち

 また作成時は (偶数,偶数)の場所には壁は置かないものとする
 1 2 3 4 5
1壁壁壁壁壁
2S     壁
3壁  壁壁壁
4壁     G
5壁壁壁壁壁
こんな感じ
マスの数はこちらで指定する。
 このプログラムのアルゴリズム教えてください
特に探索側の最速のアルゴリズムは何でしょう? 色々調べましたが
どのアルゴリズムが最速か分からなくて・・・
0075デフォルトの名無しさんNGNG
>>74
速く解くってだけが目的ならHand-on-wall(右手法、左手法などの別名も?)が
いいんじゃない?とにかく迷路はゴールまで行ける。

最短経路を求めるには

・各マスで上下左右の全てに行くよう再帰
・既に通ったマスには何らかのマークを付ける
・行き止まりなどの場合はマークを外しながら、他の道が見つかるまで戻る

みたいなアルゴリズムが使えるみたいだけど。手元に持ってる
河西朝雄「C言語による初めてのアルゴリズム入門」(技術評論社)
には、まんまのプログラムが載ってる。
0076デフォルトの名無しさんNGNG
>>63
>int rand()={0,1,2,3,4,5,6,7,8,9};

こんなの初めて見るが新しい規格?
0077デフォルトの名無しさんNGNG
>>74
迷路の作成は今月のCマガに載ってたよ
最難のものを作るってのはよくわからんけど。
0078デフォルトの名無しさんNGNG
datファイルの10X2のテーブルを
プログラミングに読み込みたいんですけど
どうしたらいいですか?
007978NGNG
宿題タイマンで手伝ってください、、。
お願いします。
0080デフォルトの名無しさんNGNG
>>78
かかってこいやー
008180NGNG
>>78
もちょっと具体的にかいてくれないかなー
怠慢の仕様がない
0082デフォルトの名無しさんNGNG
メンバとしてdouble型の変数x y を持つクラスPointのメンバ関数として

Point move(double a,double b){
  x += a;
  y += b;
  return *this;
}

void print(void){
  cout << "Point [ " << x << " . " << y << " "<< endl;
}

のようなものを作成しました。コンストラクタは定義されているとします。
ここで、main関数内で

Point o(0.0,0.0);
( o.move(1.0,2.0) ).print();

のように書いたところ、g++では[ 1 . 2 ]
のような感じで表示されたのですが、Toolkit2003のcl.exeと、bcc32.exeでは
表示されません。何故なのか教えてください。
008378NGNG
>>80
まじでいいんですか?
http://49uper.com/up-s/index.php?mode=list
最初にここにあるうpローダーの一番上のzipファイルに目を通して
頂くとありがたいのですが、、、、、。
でもちょっと問題が、、、。
英語何ですよ、、、、。
お願いします。
008478NGNG
assignment とかいうやつです。
pdfファイルが入っているはずです。
ごめんなさい、偉そうに、、、。
008578NGNG
vt
0-0.545
50.462
102.163
154.446
207.304
2510.782
3014.962
3519.613
4025.034
4530.882
5037.558
5544.505
6052.241
6560.568
7069.435
7578.947
8089.156
8599.876
90111.294
95123.2
100135.618
008678NGNG
x   y  
0 -0.545
5 0.462
10 2.163
15 4.446
20 7.304
25 10.782
30 14.962
35 19.613
40 25.034
45 30.882
50 37.558
55 44.505
60 52.241
65 60.568
70 69.435
75 78.947
80 89.156
85 99.876
90 111.294
95 123.2
100 135.618

上のは失敗しました。
008780NGNG
okok
今よんどります
ぱっとみこれから線形最小2情報かな?
とりあえず読み込みだけ書きますわ
008878NGNG
要するにx と y の座標があるんですよ。
で、このyとxの関係を y =  ax^2 + bx + c で表せのことです。
a, b, c を c言語でプログラムをつくって
求めるということです。
008978NGNG
>>80
情報遅くてすいません。
009080NGNG
とりあえず入力の部分だけ
ごめん眠いから返信ちょっと遅れるかも。
心強い味方はいないっすかね〜



#include<stdio.h>
#include<stdlib.h>

int main(void)
{
FILE *f_load;
int i;
int x[20];
double y[20];

if (( f_load = fopen("in.dat" , "r") ) == 0) {
printf("Can't open %s \n", "in.dat" );
exit(1);
}

for( i=0 ; i<20 ; i++ ){
fscanf( f_load , "%d %lf" , x[i],y[i]) ;
}

fclose( f_load );


}
009178NGNG
>>87
こんな時間にほんとすいません。
頼れる人が回りにいなくて、、。
009278NGNG
>>90
ありがとうございます。
ちょっとborlandぶち込んで試してみますね。
009378NGNG
access violation 0x404277:write of address 0x400000
というエラーがまたでてしまいました。
でもここまでやってくれてありがとうございました。
009480NGNG
for( i=0 ; i<20 ; i++ ){
fscanf( f_load , "%d %lf" , x[i],y[i]) ;
}

を

for( i=0 ; i<=20 ; i++ ){
if(i==0){
}
fscanf( f_load , "%d %lf" , x[i-1],y[i-1]) ;
}

にしてみ。in.datの最初の行のx,yを読んでるんじゃないかな?

今コンパイラなくて頭でコンパイルのため動作未確認w
ってかif(i=0){}でコンパイルとうるかギモンだが。
確実なのはin.datの最初の行を修正
009578NGNG
>>80
in.dat の最初の行の修正とは?
x   y  
0 -0.545
5 0.462
10 2.163
15 4.446
20 7.304
25 10.782
30 14.962
35 19.613
40 25.034
45 30.882
50 37.558
55 44.505
60 52.241
65 60.568
70 69.435
75 78.947
80 89.156
85 99.876
90 111.294
95 123.2
100 135.618

また説明不足だったんですが、一行目のx、yはin.datにはふくまれていません。
追加したほうがいいですよね?
0096デフォルトの名無しさんNGNG
>>93,94
for( i=0 ; i<20 ; i++ ){
fscanf( f_load , "%d %lf" , x[i],y[i]) ;
}
を
for( i=0 ; i<20 ; i++ ){
fscanf( f_load , "%d %lf" , x+i,y+i) ;
}
にするべし。fscanfの後ろはアドレスを渡さないと。
009778NGNG
みなさんヘルプありがとうございます。
一応エラーは出なくなりましたが、exeファイルを
オープンしても一瞬でてすぐ閉じてしまうのですけど
どうしてでしょうか?
009878NGNG
>エラーがでなくなった
というのはin.datファイルの先頭にx、yを追加したら
エラーはなくなりました
0099デフォルトの名無しさんNGNG
>>97
プログラムの最後にキーを押すまで終了させないようなコードを書けば大丈夫。
010078NGNG
char check

printf("Press any key followed by Enter\n");
scanf(" %c", &check);

で、できました。
が肝心のテーブルがでてきません。
何がいけないんしょうか?
それとも普通出るものではないのですか?
010178NGNG
>>99
お礼言うの忘れてました。
ありがとうございました。
0102デフォルトの名無しさんNGNG
>>80
もはや流れて,問題探すのメンドイ。
ガンガレ
0103デフォルトの名無しさんNGNG
>>100
データファイルが最初の形に戻っていいなら
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=70

計算の途中までを書いてる。
010478NGNG
>>103
ここまでやってくれてありがとうございます。
でもいまだに何も理解できない自分が悔しいです。
それと
>データファイルが最初の形に戻っていいなら
と言うことはどういうことでしょうか?スイマセン
010578NGNG
あとはa1 a2 a3を求めるだけですね、、。あとデルタを、、。
0106デフォルトの名無しさんNGNG
>>78
最初の行に「x y」が含まれていない形。要するに
----ここから下----
0 -0.545
5 0.462
(中略)
90 111.294
95 123.2
100 135.618
----ここまで----
ということ。ついでにΔ(=a[0])とa1〜a3を求める所まで進んだ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=71
010780NGNG
>103様
僕も間違ってたのですが
#define N 20ではなく
#define N 21ですね.
もうすこしで完成ですね
みまもりつつねまーす(^^;
010878NGNG
>>106
だんだんついていけなくなってきましたが
がんばってください、、。
010978NGNG
delta=a[0]と、、、。
011078NGNG
x,yをin.datから取り除いたら綺麗にa1〜a3が出ました
そういえばa1,a2,a3等はfloat, int 等はしなくていいんですか?
011178NGNG
書き込めなくなってきた
0112デフォルトの名無しさんNGNG
>>110
floatは色んな意味で無駄なので、浮動小数はdoubleで統一してる。
あと、a1,a2,a3は1未満の値になっているので、intにキャストすると0になってしまいます。

えぇっと、今はコメントをつけて分かりやすくしているつもりです。
0113デフォルトの名無しさんNGNG
>>78
Δと係数の書き込みまで完了。ついでにコメントつけました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=72

次コードを上げるのは多分完成してから。
011478NGNG
>>112
ほんとにありがとうございます。

例えば普段ある数式が一未満になる場合 int じゃなくて float を使えばいいんですよね?
この問題を例外として。

>floatは色んな意味で無駄なので、浮動小数はdoubleで統一してる。
これについて詳しく教えてください。
011578NGNG
>>113
まってください!!
ここからは自分でやらさせてください!!
と思ったんですけど
完成版うpしてください!!

なんか言ってることがわからないですが
お願いします。
ありがとうございました。
0116デフォルトの名無しさんNGNG
>>114
とりあえず質問への返答だけ。

�@floatはCPUの内部演算としては一旦doubleに変換されている、と以前どこかのスレで見た。
�Afloatは有効桁数(つまり精度)がdoubleの半分くらい。

ということで、こういう(浮動小数を使う)計算をする時は大抵精度が大事なので
しかも�@が事実ならキャストする分、floatの方が遅くなるわけで
敢えてfloatを選ぶのは、そこまでしてメモリを確保したい時だけ。

>>115
まあこっちは好きでやってるだけなんで、うpする/しないはどっちでもいいんですよ。
011778NGNG
>>116
返答ありがとうございました。
ではうpお願いします。待ってます。
失礼な態度でスイマセン
0118学生ANGNG
五人の成績を入力して、各学生の平均点を求め、
平均点の高い順にソーティングして
下に示すように結果を出力するようなプログラムを作成してください。

入力データ
 学生番号 国語 算数 英語 平均点
 2001 70 85 60 71.67
2002 100 65 70 78.33
2003 80 85 75 80.00
2004 60 85 90 78.33
2005 70 100 60 76.67

出力の結果
 順位 学生番号 国語 数学 英語 平均点
1 2003 80 85 75 80.00
2 2002 100 65 70 78.33
3 2004 60 85 90 78.33
4 2005 70 100 60 76.67
5 2001 70 85 60 71.67

よろしくお願いします!!
0119デフォルトの名無しさんNGNG
すいません >>64は無理なんでしょうか・・・
0120デフォルトの名無しさんNGNG
>>119
取り敢えず、問題文を正確に書き直してみてくれ。
ランダムに数字を放り込むだけなのか、その筆算を正確に実現しなければならないのか、
それすらよくわからんぞ。
#つーか、後者ならプログラムを作るまでもなく解けるパズルなのだが。
0121デフォルトの名無しさんNGNG
>>78
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=73

一応できました。
最後はデータの入力元を指定されていなかったので、内部に書き込みました。
全部理解できていれば、外部ファイルからの入力だったとしても対応できるでしょう。

あと、解を求めるとこは煩雑になってますが、よく見ると普通のことしかやってないです。
012278NGNG
>>121
キターーーーーーーーーーーほんとにありがとうございます。
こんな朝からほんとにすいません。
決してただこれをコピーするだけでなく
ここからもっと学べればイイと思ってます。
お疲れ様でした。
ちょっとみてみますね。
012378NGNG
>>121
大将、完璧でゴワス。
お礼のしようがないです。
ほんとに長い時間掛けてやって
頂いてありがとうございました。
012478NGNG
それでは失礼させてもらいます。

ありがとうございました。
0125デフォルトの名無しさんNGNG
>>123
喜んで頂けて何よりッス。
んじゃ寝ます。

>>118はもう少し情報があったらやってみようと思ったけど…
入力元はファイル?平均って計算させないの?
んで一応構造体使って

struct Gakusei {
int gaku_num;
int kokugo;
int sansu;
int eigo;
double avg;
};

struct Gakusei* students[5];

みたいにしたら、swapが簡単かな、ということまでは考えた。では。
0126デフォルトの名無しさんNGNG
>>116
>floatはCPUの内部演算としては一旦doubleに変換されている・・
>キャストする分、floatの方が遅くなるわけで敢えてfloatを選ぶのは、そこまでしてメモリを確保したい時だけ。

floatの方が早い処理系も多い。
VCとか。
手持ちの処理系で実際に比較してみることを勧める。
0127kinkyuuNGNG
始めにテキストファイルが与えられていて、

人名○○○○
番号XXXX
希望順位A
希望順位B
   :
   :
希望順位N

という情報が複数並んでいます。
人名はあいうえお順になっていて、番号は000101,000102,・・・000120
まであります。
希望順位は1〜4までの数字が、数字のみランダムで書かれています。
つまり
Asahi Kenji
000101
1
3
2
4
というようになっています。
このファイルを読み込んで、その人の希望順位のみを配列に入れたいのですが、どうしたらいいのでしょうか。
よろしくお願いします。
0128デフォルトの名無しさんNGNG
>>127
よくわかんない。
>>1を読んでから質問しなおした方がいいと思うよ。
0129kinkyuuNGNG
分かりづらいようですみません。もう少し頭の中で練ってから出直してきます。
0130デフォルトの名無しさん NGNG
「1〜100までの任意の整数値をN個1次元配列に読み込み、その総和と平均値を求め、
次に80〜100、70〜79、60〜69、59以下の個数を出力するプログラムを作成せよ。
ただしC言語限定かつデータ個数N、各データはキーボードから入力すること」

教えて偉い人!
0131デフォルトの名無しさんNGNG
>130
scanf("%d",&N);
tbl=(int *)malloc(sizeof(int)*N);
sum=0;
rank_a=rank_b=rank_c=rank_d=0;
for(i=0; i<N; ++i){
scanf("%d", tbl+i);
sum+=tbl[i];
if(tbl[i]>=80) ++rank_a;
else if(tbl[i]>=70) ++rank_b;
else if(tbl[i]>=60) ++rank_c;
else ++rank_d;
}
printf("総和:%d,平均:%.1f\n",sum,(double)sum/N);
prinf("80〜100:%d、70〜79:%d、60〜69:%d、59以下:%d\n",rank_a,rank_b,rank_c,rank_d);
0132デフォルトの名無しさんNGNG
>>131
if(!scanf("%d", tbl+i) || nTmp < 1 || nTmp > 100)
{
printf("入力された値が異常です。\n");
--i;
continue;
}
0133132NGNG
あ・・・。
if(!scanf("%d", tbl+i) || *(tbl+i) < 1 || *(tbl+i) > 100)
0134kinkyuuNGNG
始めに、テキストファイルで与えられているデータ

…01…
Asahi Kenji       氏名
000101      学生番号
2
1          }希望順位。ランダム
3
4

中略

…20…
Tokuda Shin
000120
1
2
4
3

があります。
これらを次の構造体

typedef Jouhou{
char name[80];    氏名
char serial[80];    学生番号
int hope[20];      希望順位
int result;       結果(プログラムの最後に入力)
}JOUHOU;

に格納したいのですが、どうやったらいいのかわかりません。
よろしくお願いします。
0135デフォルトの名無しさんNGNG
>>129
>もう少し頭の中で練ってから出直してきます。
頭の中で練るから分かりづらくなるんだYO!
問題そのまま全文丸写しの方がたぶん分かりやすいYO!
0136135NGNG
>>134
(・3・)エー リロードしてなかったC
     >>135は無視してYO!
0137デフォルトの名無しさんNGNG
計算しなさい。
1!
3!
5!
7!
:
(2n+1)!

全部を足すのではなく各階乗について求めるのですがわかりません。
どうかお願いします
0138デフォルトの名無しさんNGNG
各階乗を求めるの?
0139デフォルトの名無しさんNGNG
>>134
分からないのは次のどれ?
1.ファイルからの読み込み
2.文字列のコピー
3.構造体のメンバへのアクセス

あとtypedef Jouhou じゃなくて typedef struct Jouhou ね。


>>137
/* n!を求める関数 */
int fact(int n)
{
int ret = 1;
int i;
for (i = 1; i <=n; ++i) ret *= i;
return ret;
}
0140kinkyuuNGNG
>>139
わからないのは、文字列をコピーして構造体へ格納する事です。
あと、ご指摘はそのとおりです。すみませんでした。
0141デフォルトの名無しさんNGNG
>>137
#include <stdio.h>
int factorial(int);
int main()
{
int Max = 0, i;
printf("n > ");
scanf("%d", &Max);
for(i = 1; i <= Max * 2; i++)
printf("%d! = %u\n", i, factorial(i));
return 0;
}

int factorial(int Source)
{
int i, Result = 1;
for(i = 1; i <= Source; i++) Result = Result * i;
return Result;
}
0142141NGNG
> for(i = 1; i <= Max * 2; i++)
訂正
for(i = 1; i <= Max * 2 + 1; i++)
0143チキン野郎 ◆/73ORiYgDY NGNG
#include <stdio.h>

int factorial(int i)
{
int j,k=1;
for(j=1;j<=i;j++)
k*=j;
return k;
}

int main()
{
unsigned int n,i;
printf("1!,3!,・・・+(2n-1)!を求める。\nnを入力 : ");
scanf("%d",&n);
for(i=1;i<=2*n-1;i+=2)
printf("%d! = %d\n",i,factorial(i));
return;
}
0144デフォルトの名無しさんNGNG
>>133
> !scanf("%d", tbl+i)
これダメだろ。

戻り値は
 代入された入力項目の数 - 正常終了。
 0 - 失敗。
 EOF - 読み取りエラー。
だ
0145学生ANGNG
問題がわかりにくくてすみませんでした。
それでは問題を丸写しします。

五人の学生の国語、数学、英語の成績を入力して各学生の平均点を求め、
平均点の高い順にソーティングして下に示すように結果を出力するような
プログラムを作成してください。なお、入力したデータを確認するために
出力を最初に行うこと。

入力データ
 学生番号  国語  数学  英語   平均点
 2001  70  85  60  71.67
 2002 100  65  70  78.33
 2003  80  85  75  80.00
 2004  60  85  90  78.33
 2005  70 100  60  76.67

結果の出力
 順位  学生番号  国語  数学  英語   平均点
  1  2003  80  85  75  80.00
  2  2002 100  65  70  78.33
  3  2004  60  85  90  78.33
  4  2005  70 100  60  76.67
  5  2001  70  85  60  76.67

という問題です。入力するのは3科目の点数だけだと思います。
どうかよろしくお願いします!
0146デフォルトの名無しさんNGNG
>>145
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1082632296&res=6
とりあえずファイルの中身を表示するまで書きました
では買い物に行ってきます (^o^)/
0147146NGNG
あっ125さんが構造体書いてた。
こっち使ってほしいな > 続き書く人

struct Gakusei {
int gaku_num;
int kokugo;
int sansu;
int eigo;
double avg;
};

struct Gakusei* students[5];
0148デフォルトの名無しさんNGNG
プログラムっていうかリンクについてなんですけど
テキスト、バナー以外にリンクしちゃいけないんですかね?
0149デフォルトの名無しさんNGNG
>>145
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=74
0150デフォルトの名無しさんNGNG
>>148
死ねば?
0151デフォルトの名無しさんNGNG
スタックやキューは構造体リスト、配列、リングバッファなどの方法で実現可能である。
これら3種類の方式について、利点、欠点をそれぞれ記述せよ。

というような問題が出ました。
この問題の前に構造体、配列、リングバッファの3方式でプログラムを書いてみたのですが、利点や欠点がいまいちわかりません。
教えてもらえないでしょうか?お願いします。

0152デフォルトの名無しさんNGNG
「構造体リスト」というのはなんだ?
struct A {
int data;
struct A* next;
}
とか?
0153151NGNG
そうです。
なにか利点や欠点があるのでしょうか?
0154デフォルトの名無しさんNGNG
>>145
漏れもさっき書いたんだがアク禁になっていて書き込めなかった・・・
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1074774948&res=9
0155デフォルトの名無しさんNGNG
「構造体リス」トって何打?
0156153NGNG
データ構造として、以下の構造体を利用したリスト構造を用いること。
struct cell{
double num;
struct cell *next;
};
このような条件があたえられて作ったスタックやキューのことです。(多分)
0157デフォルトの名無しさんNGNG
>>156
使用される記憶領域の大きさが"いつ"決定されるかとか、リストの要素
の入れ換えや削除のときに"どれだけ時間がかかるか"とかを考えてみ。
0158デフォルトの名無しさんNGNG
フォーム上に textBox1 と button1 があり、
クリックしたら Text プロパティをintに変換したい

private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
  int a;
  a=textBox1->Text->ToInt32;
}

4行目を↓のようにしてもうまくいかず・・・どうやれば上手くいくのでしょうか?
a=atoi((char)textBox1->Text);
0159デフォルトの名無しさんNGNG
C++ってGUIを定義していたっけ?
0160デフォルトの名無しさんNGNG
>159 たぶんヴィジュアルなんとかでしょう→専用すれへgo
0161デフォルトの名無しさんNGNG
これはC#だけどな。
buttonと見ただけでGUIと決め付けたり、
知らない振りしてVCスレへ誘導しようとしたり
MS叩きたいだけのアホが沸いてますな。
0162デフォルトの名無しさんNGNG
>>159-160
すいませんVC++スレに行ってきます
0163デフォルトの名無しさんNGNG
>>161は考えすぎ もしくは2chに居過ぎ
0164デフォルトの名無しさんNGNG
というか、C#ならもっとスレ違い。
0165デフォルトの名無しさんNGNG
>>162
なんでVC++スレなんだよ
C#スレへ行けよ
0166デフォルトの名無しさんNGNG
VC++なんですが
0167デフォルトの名無しさんNGNG
VC++なのにC#と言ってる馬鹿が
0168デフォルトの名無しさんNGNG
161みたいなのを見るたびにID導入してほしくなる
0169デフォルトの名無しさんNGNG
なんか 適切な誘導 = M$叩き っていう人よくみるね。
0170デフォルトの名無しさんNGNG
こんにちわ
ガウス積分のnを色々変えれるプログラムがどうしても欲しいのですが、
どなたか作っていただけないでしょうか?
0171デフォルトの名無しさんNGNG
計算しなさい。
1+(1+2)2乗×2+(1+2+3)2乗×3+・・・+(1+2+・・・+n)2乗×n
見にくくてすみません。
初心者でよくわからないのでお願いします。
0172デフォルトの名無しさんNGNG
>>171
まあ、宿題的には多分、
int result = 0;
for(int m=1; m<=n; ++m)
{
int sum = 0;
for(int l=1; l<m; ++l)
sum += l;
result += sum * sum;
}
として欲しいだろうけど、下式で計算できる。

result = 農{m=1}^{n} {農{l=1}^{m} l}^2
= 農{m=1}^{n} {(1/2)m(m+1)}^2
= (1/4)農{m=1}^{n} {m^4 + 2m^3 + m^2}
= (1/4){(1/30)n(n+1)(3n^2 + 3n - 1) + (1/2)n^2(n+2)^2 + (1/6)n(n+1)(2n+1)}
= (1/120)n(n+1)(18n^2 + 28n + 4)
↑途中、計算間違いしてないかどうかは自信ない。
0173170NGNG
ガウス積分のnを色々変えるには、
以下のプログラムをどう直せばよいのでしょうか?

#include <stdio.h>
#include <math.h>

double f(double x)
{ return 1./(x*x*x); }
double gauss1d(a, b)
double a, b;
{
double r[2]={.652145158, .3478548451}, s[2]={.3399810435, .8611363115};
double x2, x1, y, u=0.0, q;
int k;
for (k=0; k<2; k++){
x1 =(s[k]*(b-a)+a+b)/2.; x2 = (-s[k]*(b-a)+a+b)/2.;
y=f(x1)+f(x2);
u=u+r[k]*y;
}
q=(b-a)*u/2.;
return q;
}

main()
{ printf("f(x)dx = %f\n", gauss1d(1., 2.)); }


0174デフォルトの名無しさんNGNG
>170
こ ん ば ん は だろっ!
0175デフォルトの名無しさんNGNG
C言語なら俺に聞け! より抜粋。
↓
------
620 名前:615[sage] 投稿日:04/05/23(日) 21:06
>>619
俺もぐぐったのですが、
nの数を変えれるプログラムが見つからなくて。
すいません。教えてください。

621 名前:デフォルトの名無しさん[sage] 投稿日:04/05/23(日) 21:55
どれがnなのか。
------

621に激しく同意。
0176デフォルトの名無しさんNGNG
ラグランジュ補間のプログラムを作成する。
1−1  n=10のとき sin(0.25), P(0.25)を比べる。
  2  x=x[i], y[i]=P(x)となっていることを確認せよ。

ニュートン補間のプログラムを作成する。
2−1 n=10のとき  sin(0.25), P(0.25)を比べる。
  2 補間点で0であることを確認せよ。

という問題です。
初心者で本当に分からないので、どうか教えてください。
お願いします。
0177デフォルトの名無しさんNGNG
「希望研究室配属システムの構築」の課題なのですが
指定が多くて全部書くと長くなるのでweb上においときました

http://sora0206.hp.infoseek.co.jp/index_kakimono.html

よろしくおねがいします
0178デフォルトの名無しさんNGNG
>>172
(1/120)n(n+1)(n+2)(5n^3+12n^2+4n-1)の間違い
0179デフォルトの名無しさんNGNG
システムの構築ってプゲラ
どこのボンクラ大学ですか?
0180デフォルトの名無しさんNGNG
>>176
n,P(x),x,x[i],y[i]がそれぞれ何の意味なのかが分からない。
その課題の前に他の説明か、それぞれのプログラムが示されているだろう?

情報を充分に伝えないのに教えてくれなんて無茶を言うな。
0181176NGNG
>>180
無茶苦茶なことを言ってすみませんでした。

double φ[n]
double x[n];
y[n];
for ( k=0 ; k<n ; k++ ){
for ( l=0 ; l<n ; l++ ){
if ( l != k ){
φ[k]=φ[k]×(x-x[l])/(x[k]-x[l]);
}
}
double P=0;
for ( i=0 ; i<n ; i++ ){
P=P+y[i]×φ[i];
}
for ( i=0 ; i<n ; i++ ){
x[i]=-1+2i/n;
}
for ( i=0 ; i<n ; i++ ){
y[i]=sin(x[i]);
}
]

ラグランジュ補間についてなされた説明は上の通りです。
これで伝わりましたでしょうか?
ニュートン補間についてなされた説明をこれから書きます。
0182デフォルトの名無しさんNGNG
>177
>・プログラムのheaderファイルの中で、研究室数、学生数を定義して良い
>・研究室情報、学生情報はそれぞれ構造体でまとめて扱う

/* 研究室設定定義ファイル(研究室情報) */
struct _lab{
char name[256];
int limit;
};
#define NUM_OF_LAB 4
 
/* 研究室設定定義ファイル(学生情報) */
struct _stu{
char label[256];
char name[256];
char id[256];
int wish[NUM_OF_LAB];
};

まずはここらへんから
0183176NGNG
ニュートン補間についての説明です。

n
PN(x)=巴kωk(x)
k=0

b[0]=y[0];
for ( n=0 ; n<=N ; n++ ){
b[n]=y[n];
for ( l=0 ; l<n ; l++ ){
b[n]=(b[n]-b[l])/(x[n]-x[l]);
}
}

P=b[N];
for ( n=N ; n>0 ; n-- ){
P=b[n-1]+(x-x[n-1])×P;
}

どうかお願いします。教えてください。
018474NGNG
レス下さった方ありがとうございました。
>>75
その本ありました。 一応それをもとにも作ったのですが
最速かどうか自信なくて・・・ 
テキストをスキャンしてみました ちょっと目を通して
どなたかアルゴリズムだけでも考えて教えてください
http://49uper.com:8080/img-s/1874.jpg
http://49uper.com:8080/img-s/1875.jpg
0185デフォルトの名無しさんNGNG
n次関数 f(x)=(a0)x^n + (a1)x^(n-1) + (a2)x^(n-2) + …… + a(n-1)x + (an)
において n=5 のとき任意の係数 (a0),(a1),(a2),(a3),(a4),(a5) 
をキーボードより入力し、f(x)=0 となる
 x の値を求めよ。
ただし、a0=0のとき終了、それ以外は繰り返しとする。
実行結果ファイルも作成すること。

お願いします
0186デフォルトの名無しさんNGNG
>>176
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=75
0187185NGNG
一応ここまでなんですが、ここからどうすればいいのやら・・・。
お願いします

#include <stdio.h>
#include <math.h>
#define Eps 0.000000000001 // 収束条件

double a0, a1, a2, a3, a4, a5;
double b0, b1, b2, b3, b4, b5, c0, c1, c2, c3, c4;
double x0, x1, tmp;
double p0, p1, p2, p3, p4;

double f(double x) // サブ関数 f(x)
{
return ((((x + b1) * x + b2) * x + b3) * x + b4) * x + b5;
}

double df(double x) // サブ関数 f'(x)
{
return (((c0 * x + c1) * x + c2) * x + c3) * x + c4;
}

0188185NGNG
int main(void)
{
printf(" f(x) = a0*x^5 + a1*x^4 + a2*x^3 + a3*x^2 + a4*x + a5\n\n");

printf(" InputData a0 : "); scanf("%lf", &a0);
printf(" InputData a1 : "); scanf("%lf", &a1);
printf(" InputData a2 : "); scanf("%lf", &a2);
printf(" InputData a3 : "); scanf("%lf", &a3);
printf(" InputData a4 : "); scanf("%lf", &a4);
printf(" InputData a5 : "); scanf("%lf", &a5);

b0 = 1.0; b1 = a1 / a0; b2 = a2 / a0; b3 = a3 / a0; b4 = a4 / a0; b5 = a5 / a0;
c0 = 5.0 * b0; c1 = 4.0 * b1; c2 = 3.0 * b2; c3 = 2.0 * b3; c4 = b4;

printf("\n");
printf(" f(x) = a0*x^5 + a1*x^4 + a2*x^3 + a3*x^2 + a4*x + a5 元の式\n");
printf(" f(x) = b0*x^5 + b1*x^4 + b2*x^3 + b3*x^2 + b4*x + b5 標準化\n");
printf(" f'(x) = c0*x^4 + c1*x^3 + c2*x^2 + c3*x + c4 微分\n\n");
0189185NGNG
int main(void)
{
printf(" f(x) = a0*x^5 + a1*x^4 + a2*x^3 + a3*x^2 + a4*x + a5\n\n");

printf(" InputData a0 : "); scanf("%lf", &a0);
printf(" InputData a1 : "); scanf("%lf", &a1);
printf(" InputData a2 : "); scanf("%lf", &a2);
printf(" InputData a3 : "); scanf("%lf", &a3);
printf(" InputData a4 : "); scanf("%lf", &a4);
printf(" InputData a5 : "); scanf("%lf", &a5);

b0 = 1.0; b1 = a1 / a0; b2 = a2 / a0; b3 = a3 / a0; b4 = a4 / a0; b5 = a5 / a0;
c0 = 5.0 * b0; c1 = 4.0 * b1; c2 = 3.0 * b2; c3 = 2.0 * b3; c4 = b4;

printf("\n");
printf(" f(x) = a0*x^5 + a1*x^4 + a2*x^3 + a3*x^2 + a4*x + a5 元の式\n");
printf(" f(x) = b0*x^5 + b1*x^4 + b2*x^3 + b3*x^2 + b4*x + b5 標準化\n");
printf(" f'(x) = c0*x^4 + c1*x^3 + c2*x^2 + c3*x + c4 微分\n\n");
0190185NGNG


if(a5 != 0.0) // 5次式の判定
{
x1 = 0.0; x0 = -100.0;

printf(" x1 = x0 - f(x0) / df(x0)\n\n");
while(fabs((x1 - x0) / x0) > Eps)
{
x1 = x0 - f(x0) / df(x0);
printf("%20.14lf %20.14lf %28.16lf %28.16lf\n", x1, x0, f(x0), df(x0));
tmp = x0; x0 = x1; x1 = tmp;
}
}
else
x0 = 0.0;

printf("\n");
printf(" 一実根 : %20.14lf\n", x0);
p0 = 1.0; p1 = b1 + x0; p2 = b2 + x0 * p1; p3 = b3 + x0 * p2; p4 = b4 + x0 * p3;

printf("\n");
printf(" g(x) = p0*x^4 + p1*x^3 + p2*x^2 + p3*x + p4 四次式の係数\n\n");
printf(" p0 :%20.14lf\n p1 :%20.14lf\n p2 :%20.14lf\n p3 :%20.14lf\n p4 :%20.14lf\n",
p0, p1, p2, p3, p4);

return 0;
}

かぶった・・・。
すいません。。。
あと、汚してごめんなさい
0191デフォルトの名無しさんNGNG
>>177
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=76
0192191NGNG
f1() はまともな振り分けアルゴリズム。
f2() はメモリアクセス違反防止のインチキ
0193デフォルトの名無しさんNGNG
_labo _studentのファイル作って
>>191
のソースでコンパイルすればできるんですよね?
エラーがでるんですが・・・・
0194デフォルトの名無しさんNGNG
エラーが出るんですが、だけじゃ超能力者にしか解決できません。
0195デフォルトの名無しさんNGNG
>>193
エラー E2140 103 ここでは宣言できない(関数 f1)
エラー E2141 103 宣言の構文エラー(関数 f1)
エラー E2139 153 宣言に;がない(関数 f1)
エラー E2190 153 不要な}

警告 W8060 175 :おそらく不正な代入(関数 main)
警告 W8060 176 :おそらく不正な代入(関数 main)
警告 W8070 209 :関数は値を返すべき(関数 main)

とこんな感じです
0196デフォルトの名無しさんNGNG
カッコの対応関係がおかしいんじゃねーの?
0197デフォルトの名無しさんNGNG
ttp://www.sist.ac.jp/~suganuma/learn/2-bu/6-sho/6-1/6-1.htm
の(プログラム例6.3) 大文字から小文字への変換 の解答を教えてください。
0198仕様書無しさんNGNG
>>197
ある文字xを大文字にする。
x = toupper(x);

でも、そこのページだとこれは不正解だそうだ。
+32するのが正解なんて、アホかと。
0199デフォルトの名無しさんNGNG
>>197
tolower()
0200仕様書無しさんNGNG
大文字にすると小文字にするを激しく間違えていた。
鬱死
0201デフォルトの名無しさんNGNG
せめてc + 'a' - 'A'とか。どっちにしろ環境依存だが。
0202デフォルトの名無しさんNGNG
C++の先輩方に質問です。
X,Y,Zの3人の国語、数学、英語のそれぞれの平均点を表示するプログラムを構造体を用いて作成せよ
って言う問題なのですが見本回答を教えてください。
データ(数字とか)は自由です。
よろしくお願いしますm( )m
0203デフォルトの名無しさんNGNG
それぞれの平均

各教科についてのXYZ3人の平均
XYZ3人の各教科の平均

どっち?
0204デフォルトの名無しさんNGNG
>>203
XYZ3人の各教科の平均です。
0205超初心者NGNG
#include <stdio.h>

void main(void)
{
float a,b,c;
printf("----addition and subtraction----\n");
a=1e-7;
b=1.0+a;
c=b-1.0;
printf("a=%e=%23.17e\n",a,a);
printf("b=%e=%23.17e\n",b,b);
printf("c=%e=%23.17e\n",c,c);
printf("a=%23.17e\n",a);
printf("b=%23.17e\n",b);
printf("c=%23.17e\n",c);
}
で、c=(1.0+a)-1.0=aにならない理由はなんでですか?
どなたか助けて下さい。お願いします。


0206仕様書無しさんNGNG
>>205
float型はせいぜい6〜7桁しか有効でないから。
0207仕様書無しさんNGNG
VC++6(cl.exe 12.00.8804)で>>205をコンパイルすると、
最適化なし:
----addition and subtraction----
a=1.000000e-007=1.00000001168609740e-007
b=1.000000e+000=1.00000011920928960e+000
c=1.000000e-007=1.00000001168609740e-007
a=1.00000001168609740e-007
b=1.00000011920928960e+000
c=1.00000001168609740e-007

最適化あり(/O2):
----addition and subtraction----
a=1.000000e-007=9.99999999999999950e-008
b=1.000000e+000=1.00000010000000010e+000
c=1.000000e-007=1.00000000058386720e-007
a=9.99999999999999950e-008
b=1.00000010000000010e+000
c=1.00000000058386720e-007

結果が変わるんだね。ちょっと勉強になった。
0208海亀NGNG
>>184
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1055157603&res=32&fi=no

迷路の生成は鷹月ぐみな氏の「棒倒し法」を参考にしました。
http://www.campus.ne.jp/~ishigami/CREATION/GENERAL/MAZE.htm
0209207NGNG
え、でもa=1e-1でも変ですよ?
恥ずかしい質問ですけど1e-1はなんで
1.00000001490116119e-01になるんですか?
0210207NGNG
そもそもeとは10の指数表示という意味ではないんですか?
0211仕様書無しさんNGNG
>>209
207って名前使ってるけど、オマイはオレか?w
2進数の小数表現について習っていないのかい?
1e-1というのは0.1のことだ。0.1を2進数で表現すると無限小数になる。
どっかで丸めないとならないわけで、その分誤差が生じるわけだ。
0212205NGNG
ああすみません。
2進数なんて知りませんでした。
有難うございました。m( )m
0213仕様書無しさんNGNG
>>202
ベタなCプログラムを作ったけど改行が多すぎてカキコできなかった。残念だ。
0214デフォルトの名無しさんNGNG
おにいちゃん、try-catchの問題はさせてくれないの?
0215デフォルトの名無しさんNGNG
void*型で受け取ったポインタを、任意のsizeでキャストしたいんですが、
どうしたらよいでしょうか?

int sample(void* x,size_t size) {
…
}

上記の関数内で、xを sizeの大きさの型のポインタとして扱いたいんです。
ご教授ください。m(_ _)m
0216デフォルトの名無しさんNGNG
とりあえずwinなら

if (size == 1) {
 c = *(char*)x;
} else if (size == 2) {
 s = *(short*)x;
} else if (size == 4) {
 i = *(int*)x;
 l = *(long*)x;
 f = *(float*)x;
}

こんな感じにすれば?
0217仕様書無しさんNGNG
>>215
どういうシチュエーションでそういうキャスト変換が発生するの??
0218215NGNG
>>216
レス、ありがとうございます。
しかし、構造体のポインタでも扱えるようにので、
他にやり方があれば、ご教授お願い致します。
0219デフォルトの名無しさんNGNG
>>218
わかんないかな、ネタだよ。
サイズ->型と一意に決定できるものじゃないから、解決手段はなし。
0220215NGNG
>>217
標準関数の、bsearch() と同じ引数で、
配列が昇順で並んでいなくても検索できるように、
線形探索のアルゴリズムで検索する関数を作成しなさい。
と、いう宿題なんです(T_T)。

bsearch() については、こちらを↓
http://docs.hp.com/ja/B2355-60104-06/rn03re46.html
0221デフォルトの名無しさんNGNG
>>220
検索する人が比較関数で型を決め打ちできるので、
サイズから型を認識する必要はないよ。
0222215NGNG
>>219
解決手段はなしですか…。
ご回答ありがとうございました。
0223デフォルトの名無しさんNGNG
1バイトのcharへのポインタにキャストしろ。
0224デフォルトの名無しさんNGNG
>>222
考え方が間違っているだけだよ。
どうして型を知る必要があると考えたんだ?

一度bsearch()を利用したプログラム書いてごらん。
それとも宿題丸投げしてみる?
0225デフォルトの名無しさんNGNG
http://toshima.cool.ne.jp/kagami/siai7-2b.htm
0226215NGNG
>>220
関数内で、配列のポインタを進める必要があるのですが、
void*型のままだと、エラーになるんです。

>>223
そうですね。その方法でやってみます。

ありがごうとざいました。
0227215NGNG
>>224
関数内で、配列のポインタを進めた値を比較関数に渡す必要があるのですが、
void*型のままだと、ポインタを進めた値が求められずエラーになるんです。
>>223のやり方で行うのがよさそうですね。
ありがとうございました。
0228223NGNG
テストしていないけれどこんな感じか?

void *lsearch(const void *key,const void *base,size_t nmemb,size_t size,int (*compar)(const void *,const void *))
{
size_t i;
const unsigned char *pbase=(const unsigned char *)base;

for(i=0;i<nmemb;i++,pbase+=size)
if(!(*compar)(key,pbase))
return pbase;

return NULL;
}
0229仕様書無しさんNGNG
>>226
まず大前提として、bsearch()を使ったことはあるのか?

charにキャストすればコンパイルは通るが、望み通りの結果は得られないだろうな。
0230215NGNG
>>228
そんな感じでいけそうです。ありがとうございます。

>>229
bsearch()はテキストに載っているサンプルリストで使ったことがあるぐらいです。
一応、意味はわかっているつもりなんですが…。
>>223 のように、
char型にキャストして、進めたい値にsizeを掛けた分進めれば、
できそうですね。
0231202NGNG
>>213
ええそんなーー。。
誰か教えてくだせー。。

X,Y,Zの3人の国語、数学、英語のそれぞれの各教科についてのXYZ3人の平均点を表示するプログラムを構造体を用いて作成せよ
って言う問題なのですが見本回答を教えてください。
データ(数字とか)は自由です。
よろしくお願いしますm( )m
0232仕様書無しさんNGNG
>>231
213だけど、どうがんばっても行数が収まらなかったんで、考え方だけ伝えておくよ。
構造体は、下のようになる。
struct TestScore {
double kokugo, suugaku, eigo;
};
XYZの三人だから、配列を使うのがいいだろ。struct TestScore students[3];
あとは各々配列と構造体要素にscanfでもなんでも使って代入、平均値計算しておわり。
構造体にdoubleをつかってるのは、平均値を管理するのにも使いたいから。
0233デフォルトの名無しさんNGNG
>>232
>>1のうpろだ使えばいいじゃん
0234仕様書無しさんNGNG
>>233
ああ、なるほどね。

>>231
ほれ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=77
0235202NGNG
>>234
サンクス!
0236デフォルトの名無しさんNGNG
☆★☆★ 日本語プログラミング言語『ひまわり』 ☆★☆★

日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!

↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50
0237デフォルトの名無しさんNGNG
初心者でぜんぜんわからないのでお願いします。
計算しなさい。
1!
3!
7!
:
(2n+1)!
どうかお願いします。
0238デフォルトの名無しさんNGNG
>>237
それちょっとまえに答え出なかったか?
#include <stdio.h>
int factorial(int n)
{
/*このスレのどっかにあるから探せ。*/
}
int main(void)
{
int i, n;
scanf("%d", &n);
for (i = 0; i <= n; i++)
printf("%d! = %d\n", 2 * i + 1, factorial(2 * i + 1));

return 0;
}
0239デフォルトの名無しさんNGNG
int factorial(int i)
まあ引数がiになってるやつのほうが再帰使ってなくていいかな。
0240デフォルトの名無しさんNGNG
総て異なる自然数a,b,c,dについて
x=a^4+b^4=c^4+d^4を満たす組み合わせのうち
xが最小となるa,b,c,dを求めよ。

わかりません、教えてください。
0241デフォルトの名無しさんNGNG
>>195
コンパイラの互換性を良くした。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=78
0242デフォルトの名無しさんNGNG
Cのint型で
unsigned int で0〜4294967296
まで入るのはありますけど
0〜-4294967296まで入るのは無いんですか?
0243242NGNG
age
0244デフォルトの名無しさんNGNG
>>184
今号のCマガ見たら?
乱数使うけど迷路について載ってるよ
0245デフォルトの名無しさんNGNG
>>242
ー(マイナス)は自分で管理シロ!
0246デフォルトの名無しさんNGNG
うるう年は考えないで、月と曜日を入力すれば1ヶ月分のカレンダーが表示
されるプログラムがわかりません。for文を使ったりいろいろやってみましたが
ド初心者なものでやっぱりわかりません…。どなたかC言語の簡単でわかり易い
プログラムを教えてください!お願いします!

表示月を入力してください。 >5
1:日 2:月 3:火 4:水 5:木 6:金 7:土 >6
*** 5月 ***
日 月 火 水 木 金 土

↑一応ここまでできています…。
0247デフォルトの名無しさんNGNG
ここまで出来ています、ってネタを書き込んでいるのはいつも同じ人間か?
0248デフォルトの名無しさんNGNG
>>246
どうでもいいけど、問題の意味が分からない。
問題文は、全部書いて。
0249デフォルトの名無しさんNGNG
>>240
数学板へGO
0250246NGNG
抜けてました…。ごめんなさい! 問題文は
「表示する月とその月の1日の曜日を入力すると、1ヶ月分のカレンダーを表示する
プログラムを作りなさい。ただし、うるう年は考えないこととする。」 です。
0251名無しさん@お腹いっぱい。NGNG
>>240
とりあえず総当たりするしかないだろ。
0252デフォルトの名無しさんNGNG
http://www.asahi-net.or.jp/~uc3k-ymd/Sketch/Life/life01.html
上のリンク先の内容のことをCで書きたいんですけどよくわかりません。
教えていただけないでしょうか?
0253デフォルトの名無しさんNGNG
>>246
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 256
main(){
  int days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  int month, start, i;
  char buf[BUFSIZE];
  fputs("表示月を入力してください。  >", stdout);
  if(NULL == fgets(buf, BUFSIZE, stdin)) return 1;
  month = atoi(buf);
  if(month < 1 || month > 12) return 1;
  fputs("1:日 2:月 3:火 4:水 5:木 6:金 7:土 >", stdout);
  if(NULL == fgets(buf, BUFSIZE, stdin)) return 1;
  start = atoi(buf);
  printf("*** %d月 ***\n日  月  火  水  木  金  土\n", month);
  for(i = 0; i < 4 * (start - 1); i++) putchar(' ');
  for(i = 0; i < days[month - 1]; i++){
    printf("%2d  ", i + 1);
    if((start + i) % 7 == 0) putchar('\n');
  }
}
0254デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
int i, m, d;
int cal[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("表示月を入力してください。>"); scanf("%d", &m);
printf("1:日 2:月 3:火 4:水 5:木 6:金 7:土 >"); scanf("%d", &d);
printf("\n日 月 火 水 木 金 土\n%*s", (d - 1)*3, "");
for (i = 0; i < cal[m]; i++){
printf("%2d ",i + 1);
if ((d++) % 7 == 0) puts("");
}
return 0;
}
0255253NGNG
ごめん、ちと訂正+α
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 256
int main(){
  int days[] = {31,28,31,30,31,30,31,31,30,31,30,31};
  int month, start, i;
  char buf[BUFSIZE];
  fputs("表示月を入力してください。  >", stdout);
  if(NULL == fgets(buf, BUFSIZE, stdin)) return 1;
  month = atoi(buf);
  if(month < 1 || month > 12) return 1;
  fputs("1:日 2:月 3:火 4:水 5:木 6:金 7:土 >", stdout);
  if(NULL == fgets(buf, BUFSIZE, stdin)) return 1;
  start = atoi(buf);
  if(start < 1 || start > 7) return 1;
  printf("*** %d月 ***\n日  月  火  水  木  金  土\n", month);
  for(i = 0; i < 4 * (start - 1); i++) putchar(' ');
  for(i = 0; i < days[month - 1]; i++){
    printf("%2d  ", i + 1);
    if((start + i) % 7 == 0) putchar('\n');
  }
  return 0;
}
0256246NGNG
>>253,254様
助かりました…。本当にありがとうございます!
0257超超初心者NGNG
超初心者の大学生ですが、配列a,bの和を出そうとすると変な値が出て
しまうんですが、手詰まり状態です。誰か助けてくれませんか?
「単精度実数型の配列aを四行三列で宣言します。各要素の値は、行と
列の和とします。たとえば2行3列は2+3=5とします。もう一つ、
別の配列bを宣言します。こちらの要素は、m行n列の場合、nーmと
します。まず、二つの配列を表示し、その後、二つの配列の和を表示します。表示するときは、小数点以下2桁まで表示します」
0258デフォルトの名無しさんNGNG
変な値って?
0259デフォルトの名無しさんNGNG
>>257
コードだせ!
0260デフォルトの名無しさんNGNG
行列の計算がわかっていない悪寒。
0261超超初心者NGNG
行列自体はもち、わかるんですけど
sumがどうのこうのがわからんのです
0262デフォルトの名無しさんNGNG
お前の言ってることが分からん。
0263デフォルトの名無しさんNGNG
>>261
超能力者が現れるのを待つか、わかりやすく説明してください。
0264超超初心者NGNG
申し訳ございません
0265デフォルトの名無しさんNGNG
標準入力からカンマ区切りの整数値を入力として受け取るコードをscanf
で作りたいのですが下のプログラムではどのように書いたらよろしいのですか?
超初心者なので教えて下さる方おねがいします
int main()
{
int a[50];
int n;
int i;

scanf("%d")

for(i = 0;i < n; ++i){
printf("a[%d] = %d\n",i,a[i]);
}
0266デフォルトの名無しさんNGNG
scanf("%d"); て、あんた・・。
Cの教科書とか無いのか?
0267名無しさん@お腹いっぱい。NGNG
>>257
おおかた、配列どうしの和を計算するのに、
配列名どうしを加算してんだろ。
double aa[4][3], bb[4][3];
aa + bb;
みたいに。
0268デフォルトの名無しさんNGNG
scanf使いたくねーな。。。
#include <stdio.h>
int main(void)
{
int a[50], n = 5, i;
for(i = 0;i < n; ++i) scanf("%d,", a + i);
for(i = 0;i < n; ++i) printf("a[%d] = %d\n", i, a[i]);
return 0;
}
0269デフォルトの名無しさんNGNG
最後に指定された回数分、それまでの文字列を繰り返し表示し、"quit"が
入力されるまで継続するプログラム作りたいのですが、初心者でわかりません。
(例)
% a.out
prom> xxxx 3
xxxx
xxxx
xxxx
prom>xxx yyy zzz 5
xxx yyy zzz
xxx yyy zzz
xxx yyy zzz
xxx yyy zzz
xxx yyy zzz
prom> quit
%

prom>は自分で表示させます。
教えてくださる方お願いします。
0270超超初心者NGNG
>>267
a[4][3]+b[4][3];みたいなことしていました
どうもすみません

0271デフォルトの名無しさんNGNG
>>267 はよく分かったな。すげーよ。
0272デフォルトの名無しさんNGNG
#include <stdio.h>

int factorial(int i)
{
int j,k=1;
for(j=1;j<=i;j++)
k*=j;
return k;
}

int main()
{
unsigned int n,i;
printf("1!,3!,・・・+(2n+1)!を求める。\nnを入力 : ");
scanf("%d",&n);
for(i=1;i<=2*n+1;i+=2)
printf("%d! = %d\n",i,factorial(i));
return;
}

これでnに8をいれるとマイナスの値が出るのは何ででしょうか?
違うところの指摘をお願いします。
0273デフォルトの名無しさんNGNG
>>270
ソース全部書いてよ。長かったら>>1のところにでも。
0274名無しさん@お腹いっぱい。NGNG
>>272
n=8ってことは、17!でしょ?
桁あふれ。
0275デフォルトの名無しさんNGNG
>>272
オーバーフロー。int型で計算できる範囲を超えている。
0276デフォルトの名無しさんNGNG
ありがとうございます!!
あと、それを使って、標準入力からカンマ区切りの整数値を入力として受け取り(入力終了はEOF),
大きい方から順にカンマ区切りで標準出力に出力するプログラムを作成せよという問題
なのですが、ただ、配列に入るだけになってしまいます。どうすれば改善されるのでしょうか?
#include <stdio.h>
void shellsort(int[],int );
int main()
{
int a[50];
int n=10;
int i;

for(i = 0;i < n; ++i) scanf("%d,", a + i);
for(i = 0;i < n; ++i) printf("a[%d] = %d\n", i, a[i]);
shellsort(a,n);
return 0;
}
void shellsort(int v[], int n)
{
int gap, i, j, temp;
for(gap = n/2; gap > 0; gap /= 2)
for(i = gap; i<n; i++)
for(j=i+gap; j >= 0 && v[j]<v[j+gap]; j+=gap) {
temp = v[j];
v[j] = v[j+gap];
v[j+gap] = temp;
return ;
}
}
0277IEEE規格のによる実数表現NGNG
長さが32の0と1の列  se7e6e5・・・e1e0d1d2d3・・・d23 を入力して、このビット列を表す実数値(実数表現の
仕方はIEEE規格754に従うものと仮定する)
          (−1)のs乗×(1+M)×2のE乗  if −127<E<128
      {   (−1)のs乗×M×2の(E+1)乗  if E=−127
          Inf(無限大)              if E=128、M=0
          NaN(非数、Not a Number)        if E=128、M≠0   

ここで、M=煤ii=1から23)di×2の−i乗、E=煤ii=0から7)ei×2のi乗−127

を出力するCプログラムを作成せよ。なおその際pow関数は使わず作れ。


という問題です。見にくいですがどうかお願いします。
0278デフォルトの名無しさんNGNG
cに_tempnamってのがあるけど、
c++に対応するものってないのかな?
_tempnamはmallocで確保した領域を返すから
freeで開放しなくちゃだめ。
c++のコードに突然freeが出てきてちょっとやだ。
0279デフォルトの名無しさんNGNG
>>269
#include <stdio.h>
#include <string.h>
int main(void){
int i, num;
char buf[128], str[100];
for(;;){
printf("prom>");
fgets(buf, sizeof buf, stdin);
if (sscanf(buf, "%s %d", str, &num) != 2){
if (!strcmp(str, "quit")) break;
else continue;
}
for (i = 0;i < num; i++) puts(str);
}
return 0;
}
0280279NGNG
あ、すまんこれじゃだめだ。
0281名無しさん@お腹いっぱい。NGNG
>>279
それだと、%sは空白をデリミタにするからまずくない?
0282デフォルトの名無しさんNGNG
>>269
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define BUFSIZE 256
main(){
  char buf[BUFSIZE], *p;
  int i, n;
  for(;;){
    printf("prom> ");
    fgets(buf, BUFSIZE, stdin);
    if(!strcmp(buf, "quit\n")) break;
    for(p = buf + strlen(buf) - 1; ;p--){
      if(p == buf){break;}
      else if(!isdigit(*p) && !isspace(*p)){p++;break;}
    }
    n = atoi(p);
    *p = '\0';
    for(i = 0; i < n; i++) printf("%s\n", buf);
  }
}
0283デフォルトの名無しさんNGNG
>>278
それは,CじゃなくPOSIX(UNIX規格)。
あきらめろ。
0284282NGNG
バグってた。文字列が1文字のときに何も表示されない。
0285282NGNG
こうかな。センスねーなー。美しくない。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define BUFSIZE 256
main(){
  char buf[BUFSIZE], *p;
  int i, n;
  for(;;){
    printf("prom> ");
    fgets(buf, BUFSIZE, stdin);
    if(!strcmp(buf, "quit\n")) break;
    for(p = buf + strlen(buf) - 1; ; p--){
      if(!isdigit(*p) && !isspace(*p)){
        p++;
        break;
      }
      else if(p == buf){
        break;
      }
    }
    n = atoi(p);
    *p = '\0';
    for(i = 0; i < n; i++) printf("%s\n", buf);
  }
}
0286282NGNG
ああ、重大なバグを見つけちゃった・・。もう止めときます。スレ汚し失礼しました・・・
0287184NGNG
質問してる本人が亀レスですみません。
>>208
棒倒し法ですか 自分もこれで作成したのですが
伸ばしていこうとした所に すでに壁があった場合 残りの場所に
置く方法がいまいち分かりません ソース見たのですが 結構知らない文とかもあって難しいです・・・
自分はこんな風にしたんですが・・・ これで一応正解は一通りになるんですが なんかいまいちな気がして

ransu=rand()%3;
switch(ransu)
{
case 0:
   if(map[i-1][j]!=1){
      map[i-1][j]=1;
      break;
   }
case 1:
   if(map[i+1][j]!=1){
      map[i+1][j]=1;
      break;
   }
case 2:
   map[i][j+1]=1;
   break;
}

また、ルールの関係上 正解ルートは1本じゃないほうがいい気もしますし
どう思われますか?

また 探索の方もいまいちわかりません どんなアルゴリズムなのですか?
今 再起でやってるんですが 再起だと処理時間遅いですかね?

どうかお時間ある方はちょっと考えてみてもらえませんか?
0288デフォルトの名無しさんNGNG
>>276
入力終了EOFでカンマ区切りってのがよくわからんな。
1,
3,
こういうふうに入力するってことか?
あとそのシェルソートはおかしくないか?
0289デフォルトの名無しさんNGNG
>>277
どなたかどうかお願いします!!
0290デフォルトの名無しさんNGNG
計算しなさい。
1+(1+2)2乗×2+(1+2+3)2乗×3+・・・+(1+2+・・・+n)2乗×n
見にくくてすみません。
初心者でよくわからないのでお願いします。
0291279NGNG
>>269
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void){
int i, num;
char buf[128], *p = buf, *q = buf;
for(;; p = buf, q = buf){
printf("prom>");
fgets(buf, sizeof buf, stdin);
while(*++p != '\n') if(isspace(*p)) q = p;
if (sscanf(q, "%d", &num) != 1){
if (!strcmp(buf, "quit\n")) break;
else continue;
}
*q = '\0';
for (i = 0;i < num; i++) puts(buf);
}
return 0;
}
0292名無しさん@お腹いっぱい。NGNG
>>289
もう寝るから、明日のお昼前でいいならうpするよ。
0293デフォルトの名無しさんNGNG
>>292
お願いします!!
0294デフォルトの名無しさんNGNG
>>290
#include <stdio.h>
int siguma(int n){
int i, sum = 0;
for (i = 1; i <= n; i++) sum += i;
return sum;
}
int main(void){
int sum = 0, n, i;
scanf("%d", &n);
for (i = 1; i <= n; i++) sum += siguma(i) * siguma(i) * i;
printf("%d", sum);
return 0;
}
0295デフォルトの名無しさんNGNG
>>289
そういう捨て台詞はもっとマンドクサーな奴に残せよ(藁

>>293
#include <stdio.h>
int main() {
int n;
enum { S=24, E=8 };
double s=0;
int e=0;
char buf[S+2];
fgets(buf,sizeof(buf),stdin);
for(n=0;n<E;++n){ e += (buf[n]=='1')*(1<<(E-1-n)); }
for(n=0; n<S; ++n){ s += (buf[n+E]=='1')*1.0/(1<<n); }
for(n=0; n<((1<<(E-1)-1); ++n) s /= 2;
for(n=e; n>0; --n) s *= 2;
printf("%e\n", s);
}
0296295NGNG
あ,マズー。訂正。レス番も間違えてるし。
鬱だ…

#include <stdio.h>
int main() {
int n;
enum { S=24, E=8 };
double s=0;
int e=0;
char buf[E+S+2]; //←訂正
fgets(buf,sizeof(buf),stdin);
for(n=0;n<E;++n){ e += (buf[n]=='1')*(1<<(E-1-n)); }
for(n=0; n<S; ++n){ s += (buf[n+E]=='1')*1.0/(1<<n); }
for(n=0; n<((1<<(E-1)-1); ++n) s /= 2;
for(n=e; n>0; --n) s *= 2;
printf("%e\n", s);
}
0297デフォルトの名無しさんNGNG
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=66
↑のソースなのですがちゃんと動かすにはどこを修正すればよいでしょうか・・・
0298デフォルトの名無しさんNGNG
>297
素直に作り直した方がよさげ
ストライク、スペアは"次の"フレームが必要だが、それを考慮してないし
0299デフォルトの名無しさんNGNG
>>298
一応考慮してあるようだよ。

>>297
とは言うものの、ストライク取ったフレームの点数は確定するまでは表示しない方がいい。
それに、ストライクのときに10/0を入力させるのも今一つ使い勝手が悪い。
先に全部入力させて、計算は後からにすればストライク/スペア周りの処理がすっきるするのでは?
途中経過を表示するのはそれができてから改めて作ればいい。
0300184NGNG
ファイルに記録してある迷路を解くプログラムを以下のようにつくりました
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=79
今 ゴールできるすべての経路を表示するようにしてあります
今 このなかで最短経路の道順にだけ配列の値を0→4にしたいのです
配列に正解経路にだけ4を格納したら もう すべての経路を表示させる必要はなく
マップの横 縦の幅と 正解ルートに4を格納したマップを出力するだけでいいです
5 5
1 1 1 1 1
2 4 4 4 1
1 0 1 4 1
1 0 1 4 3
1 1 1 1 1
この方法を考えていただけませんか?

ちなみにマップを作るプログラムはこれです
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=80

両方とも実行時にコマンドプロンプトでファイルに入出力します。
0301デフォルトの名無しさんNGNG
>>300
問題のソースは、これでいいかな?
http://www.isse.kuis.kyoto-u.ac.jp/acm-japan/icpc99/problems/ant/ant.html
0302184NGNG
連投 すみません
さきほどの解くほうのプログラム
if(sucs==1)
    map[tate][yoko]=4;
if(map[tate][yoko]==5)
    map[tate][yoko]=0;

は要らないですね 消してください。
また現在のプログラムだと 迷路が大きくなりすぎると
pathの値が大きくなりすぎためか 実行できなくなります
どうすればいいのでしょうか お願いします 助けてください。
0303184NGNG
>>301
すみません 英語読めません
問題の元のテキストはこれです
http://49uper.com:8080/img-s/1874.jpg
http://49uper.com:8080/img-s/1875.jpg
0304184NGNG
まず迷路のすべての経路をこのプログラムで計算すると
多くなりすぎる気がするんですよね 迷路を 39×39
なんかにするだけでも pathすごい数いくし・・・
実際にはもと大きい迷路も扱うんです それこそ100超えるようなものも・・・
あ ちなみに迷路は正方形とはかぎりません 奇数×奇数なら長方形もありえます
あと もう学校行かないと行けないんです また昼ごろ顔出します
実はこれ今日提出なんで結構やばいのですが
0305デフォルトの名無しさんNGNG
ファイル入力でt[]を読み込み、その変数の値をプリント文で表示させると言った
プログラムなんですが、
#include<stdio.h>
void main(){double t[N];int nt=4;nt=4;
FILE *in;
in=fopen("ファイル場所","r");
if(in=NULL) printf("ファイルが見つかりません。パスを確認して下さい。\n");
else{for(i=1;i<=nt;i++) fscanf(in,"%lf",&t[i]);}
fclose(in);}
といった風にプログラム打ったんですけど、
未定義のシンボル N、おそらく不正な代入、未定義のシンボル i、'nt' に代入した値は使われていない
とエラーが出て、もうどうすればよくわからないんです。
どどうすればいいのか教えてほしいです、お願いします。
0306デフォルトの名無しさんNGNG
#include<stdio.h>
#define N 5
void main(){double t[N];int i,nt=4;;
FILE *in;
in=fopen("ファイル場所","r");
if(in=NULL) printf("ファイルが見つかりません。パスを確認して下さい。\n");
else{for(i=1;i<=nt;i++) fscanf(in,"%lf",&t[i]);}
fclose(in);}
0307デフォルトの名無しさんNGNG
> if(in=NULL)
これも直せ
0308仕様書無しさんNGNG
>>277
はい。結果が合ってるかどうか知らん&結果の出し方がこれでいいのかもわからんけど。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=81
0309デフォルトの名無しさんNGNG
宿題を丸投げする奴は氏ね。
はっきりいって、生きている価値なし。
いや、肉体労働やって、税金や年金は納めてもらおうかな。
俺のために働けや、虫けらども。
0310デフォルトの名無しさんNGNG
>>309
宿題丸投げスレで(ry
0311仕様書無しさんNGNG
>>309
そういうスレだしな。
ここでもらった回答を参考に、自分でカスタマイズしたり作り直したりすればいいと思う。
0312デフォルトの名無しさんNGNG
>>311
おまえ、いい奴だな。
0313デフォルトの名無しさんNGNG
>79 (迷路)
passの値は全く問題ない。
時間がかかるのは組み合わせ爆発と、同じルートの繰り返しによる。
試しに、壁の全く無い大部屋を通らせてみ。小さいものでもハマると思う。

ソースの美しさに欠けるが一応書いてみた。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=82
迷路に印をつけながら進んで、最後に逆から辿る、いわゆるパンくず法。
cleanupの前にオリジナルのoutputを実行すると何をやってるか分かると思う。
0314313NGNG
79…ソース貼り付け掲示板のレス番書いてどうするorz
>313 は >184宛て。
0315デフォルトの名無しさんNGNG
#include <stdio.h>

int main(){
struct game{
int win[6],lose[6],draw[6];
};
struct game gm={
68,52,75,78,60,63,
65,77,59,54,73,70,
2,4,1,3,2,2
};

int i,avr[7];

for(i=0;i<=6;i++)
avr[i]=(gm.win[i]/((gm.lose[i]+gm.draw[i])-gm.draw[i]));

for(i=0;i<=6;i++)
printf("%c : %f\n",'a'+i,(float)avr[i]);

return 0;
}

構造体に関しての質問なのですが、
7つのチーム(a〜f)の勝数、負数、引き分け数を

勝率=勝数/全試合-引き分け数

の式で計算し、各チームの勝率を求めるプログラムなのですが、
↑のプログラムだと上手くいきません、、、
何方かどこが悪いのか教えていただけないでしょうか?
0316デフォルトの名無しさんNGNG
構造体の意味がないんだけど。。。
0317デフォルトの名無しさんNGNG
>>315
なんか釣りっぽいけど。
・int / int は int だ
・(float)8 が 7.7 になるようなことはない
0318デフォルトの名無しさんNGNG
>>315
>struct game{
>int win[6],lose[6],draw[6];
>};

どう見ても6つしかない訳だが…
0319仕様書無しさんNGNG
>>318
まあ、初心者にありがちなわけだよ。
「Cでは0から数えはじめる」と習うので、7つ必要なら6と宣言してしまう。
変数の型というのも理解できない。整数→実数への自動変換があると考えている。
「プログラムに書いたことがすべて」ということを理解していなくて、「そのへんはうまいこと勝手にやってくれるんじゃないかな。Windowsなんだし」とか意味不明な期待をする。
0320デフォルトの名無しさんNGNG
#include < iostream.h>
struct siken{
char simei[20];
int sugaku, buturi, eigo, gokei;
};
siken input_data( void);
void output_data( siken);
void main( void)
{
siken data[100];
int n, i;
cout << "何人入力しますか"; cin >> n;
if ( n <= 100){
i=0;
while( i < n){
data[i] = input_data();
i++;
}
i=0;
while( i< n){
output_data( data[i]);
i++;
}
}
}
0321320NGNG
siken input_data( void){
siken data;
cout << "名前"; cin >> data.simei;
cout << "数学の点数"; cin >> data.sugaku;
cout << "物理の点数"; cin >> data.buturi;
cout << "英語の点数"; cin >> data.eigo;
data.gokei = data.sugaku + data.buturi + data.eigo;
return ( data);
}
void output_data( siken data){
cout << "名前:" << data.simei << endl;
cout << "数学の点数" << data.sugaku << endl;
cout << "物理の点数" << data.buturi << endl;
cout << "英語の点数" << data.eigo << endl;
cout << "合計" << data.gokei << endl;
}
0322320NGNG
(1) 上記のプログラム、構造体siken に学籍番号を追加しよう.メンバ名は,gakuseki とし,大きさ8 の文字配列とす
ること.上記 で作成したプログラムを,学籍番号が入った新しい構造体で動くように修正する
こと.
(2) (1)で作成した構造体を使用して,入力したすべてのデータを学籍番号の昇順に出力する次の仕様
の関数を作成し,プログラムを実行せよ.
(注意)学籍番号には数字だけでなく文字も含まれる場合がある.
(3) 各科目の平均点を計算する次の仕様の関数を作成し,プログラムを実行せよ.
double average_data(int sw, siken data[], int n);
第1 引数:sw が1 ならば数学,2 ならば物理,3 ならば英語,
4 ならば合計 の平均点を求める.
第2 引数:siken 型の配列
第3 引数:配列の全要素数
戻り値:各教科の平均点(倍精度実数型)
(4) 各人の合計点の偏差値を求めて,全員の偏差値を出力する次の仕様の関数を作成し実行せよ
void deviation_data( siken data[], int n);
第1 引数:siken 型の配列
第2 引数:配列の全要素数
戻り値:なし
0323320NGNG
という問題なのですが、
よろしくお願いします。

長々としている上に見づらくて申し訳ないです。
0324デフォルトの名無しさんNGNG
#include <stdio.h>

int main(){
  struct game{
  int win,lose,draw;
 } gm[] = {
  {68,52,75}, {78,60,63},
  {65,77,59}, {54,73,70},
  {2,4,1}, {3,2,2}
 };

 int i;
 for (i=0;i<6;i++) 
  printf("%c : %f\n",'a'+i,(double)gm[i].win/(gm[i].lose+gm[i].win));
 return 0;
}
struct game {...} とstruct game gmの2つはこういう風にまとめられる。
int win[6], lose[6],draw[6]だと>>316の言う通り構造体の意味がない。
チームのデータを1つの変数として扱うための構造体がある。それをA〜Fでまとめて扱うんでgmを配列にするってイメージで。
さらに定義と同時に初期化すればこのように最外周の配列に限り要素数を省ける。(これは文章の7つ、A〜Fの6つ、どっちでもいいようにw)
avrは直接printfの引数に勝率計算の式を書いたんで消滅。
ところで全試合-引き分け数==勝ち数+負け数だろ。ここ間違ってどうする。
それとprintfとかの可変個引数ではfloatも呼び出すときにdoubleにされるんで一応doubleにしておいた。
0325デフォルトの名無しさんNGNG
>>319
フ━━━( ´_ゝ`)━━━ン!!
0326デフォルトの名無しさんNGNG
キーボードから数値を入力して、その数値に10を加えた値までを表示するプログラム
おねがいします。
for使った奴で
0327仕様書無しさんNGNG
>>320
ほらよ。(4)は偏差値計算の仕方わすれたから、パスな。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=83
0328デフォルトの名無しさんNGNG
>>252
おめー次のページ見てみたのかよ
0329仕様書無しさんNGNG
>>326
// http://pc5.2ch.net/test/read.cgi/tech/1085149383/326
#include <stdio.h>

int main() {
double aa;
printf("入力して> "); fflush(stdout);
scanf("%lf", &aa);

for(int nn = 0; nn <= 10; nn++) {
printf("%g + %d = %g\n", aa, nn, aa+nn);
}
return 0;
}
0330320NGNG
>>327
ありがとうございました。
まだ私の知識に無いやり方もありましたが
勉強してみようと思います。
0331デフォルトの名無しさんNGNG
1.関数方程式f(x) = x2 . a = 0 を,Newton 法
で解くアルゴリズムを書きなさい.
2.特に,a = 2 として,√2を実際に求める過程を
書きなさい.求める精度は,5桁とします

お願いします。
0332デフォルトの名無しさんNGNG
>>331
1のアルゴリズムを書きなさい は
C++の表記でお願いします。
0333デフォルトの名無しさんNGNG
/*1カラ10マデ*/
#include <stdio.h>
main()
{
int ia,ib;
scanf("%d",&ia);
printf("%d ",ia);
for(ib=0; ib<=10;ib++){
printf("%d",ia+ib);
}
}
これで解決しましたありがとうございました
0334デフォルトの名無しさんNGNG
C言語なんですが小数点以下の桁数を入力して
その桁数以下を切り捨てて出力する関数を作れってのなんですが
教えてくだいさい、おながいします
0335デフォルトの名無しさんNGNG
>>334
EX)
Initial value=>2.1254525
Input =>3
Output =>2.125
だよな?

0336デフォルトの名無しさんNGNG
void round(double a, int b){
  printf("%d",(int)a);
  printf(".");
  int i;
  for(i=1;i<=b;i++){
    a = 10*a;
    printf("%d",(int)a%10);
  }
  printf("\n");
}
aを小数点以下b桁まで出力。桁落ちとか数値の上限とかそういう事は知らん。
問題文を俺なりに解釈した結果、引数で入力し、出力はstdoutという結論に達した。
0337デフォルトの名無しさんNGNG
>>335
そのとおりです
0338デフォルトの名無しさんNGNG
>>336
ありがとうございます!でけますた!
ほんとに感謝です
0339C ◆b2MFuqSvyQ NGNG
どなたかお教えください。

「マクローリン展開を用いて、sin(x)を計算する関数sineを,
xと計算に用いる項数nとを引数とする関数として作成しなさい」


#include <stdio.h>
#include <math.h>

int sine(int x, int n);
int main() {
int k;
printf("項数nを入れてください n = "); scanf("%d", &n);
k = sine(x, n)
}
int sine(int x, int n) {
int n, j, k;
for(n = 1; n<=k; n++)
j = 1;
j = j * n; /**jはマクローリン展開した際の分母の!の計算です**/
if(n%2==0)
{・・・  /**偶数項はマイナスが付くのでif文を使ってマイナスを付けたいのですが、案が浮かびません。**/

ここまでやったのですが、ここから進みません。どなたかお教えください。よろしくお願い致します。
0340C ◆b2MFuqSvyQ NGNG
追記
x/1!-x^2/2!+x^3/3!-x^4/4!+x^/5!-・・・
を求めて、さらに何項目までを求めるかも指定するという問題です。
ここの方たちは分かってると思われますが、一応追記させていただきました。
0341デフォルトの名無しさんNGNG
>340
2項毎に通分すれ。
0342デフォルトの名無しさんNGNG
>if文を使ってマイナスを付けたい
三項演算子、-1の累乗、偶奇で処理を丸ごと分ける、など。
0343C ◆b2MFuqSvyQ NGNG
>>341
すみません。まだ初心者のためそのようなことができる自信がありません。

>>342
「偶奇で処理を丸ごと分ける」とはどのようにすればよいのでしょうか?
0344デフォルトの名無しさんNGNG
>>339
関数sine
ちょっとワロタ
0345デフォルトの名無しさんNGNG
n番目の項に(-1)^(n-1)を付ければいいんdayo
0346デフォルトの名無しさんNGNG
for(n項全部){
 if(偶数)
  合計 -= x^n/n!
 else
  合計 += x^n/n!
}
と、別々に書けばいい。
美しくないが、そんな事は自力で何とかできるようになってから考えればいい事。
0347デフォルトの名無しさんNGNG
マクローリン展開でsinを求めるのって、
x - x^3/3! + x^5/5! - x^7/7! ・・・
じゃないっけ?
0348デフォルトの名無しさんNGNG
というわけで、x - x^3/3! + x^5/5! - x^7/7! + ・・・ で実装した。
sin()との比較もしたけど、10項目まで計算すると小数点以下10桁くらいの精度になった。
double sine(double x, int n) {
double ret = 0;
double jj = x;
for(int nn = 1; nn <= n; nn++) {
ret += jj;
jj *= - x * x / ((2*nn) * (2*nn+1));
}
return ret;
}
0349C ◆b2MFuqSvyQ NGNG
>>344
( ´・ω・`)ショボーン

>>345
なるほど!thxです^^

>>346
なるほど。その方法でもやってみたいと思います。

>>347
そのとおりです^^;
ついつい1から並べてしまいましたm(_ _)m

>>348
なんとなくおっしゃってることは分かるのですが、まだ初心者のため、完全に理解できません^^;
コピーさせていただき、上達してから熟考したいとおもいます。

皆様、親切にどうもありがとうございましたm(_ _)m m(_ _)m m(_ _)m
0350デフォルトの名無しさんNGNG
>>336
void round(double a, int b)
{
printf("%.*f\n", b, a);
}
0351デフォルトの名無しさんNGNG
>>344
英語でサインはsineと綴りますが何か。
0352デフォルトの名無しさんNGNG
「関数氏ね」と読めますが何か。
0353344NGNG
>>351様
352様は僕じゃないです
関数sine ヒイィィィ!!(´Д`ノ)ノ
でも言いたいことは352様が代弁しくれました。
いっちゃったいっちゃった
ヽ(ヽ´Д`)ヒイィィィ!! ヒイィィィ!!(´Д`ノ)ノ
0354176NGNG
>>186様
説明不足で無茶苦茶なことを言っていたのに、
教えていただいて本当にありがとうございました。
「補間点」の意味していることがわかりましたら、
投稿させていただきます。
よろしければ、また教えてください。
今後丸投げしないよう努力しますので、ご指導お願いします。
0355デフォルトの名無しさんNGNG
n個のデータをキーボードから入力し、合計、平均、最大値、最小値、偏平方和
不偏分数、標準偏差、標準誤差を計算し、更にファイル入力でt[ ]を読み込み
上記変数の値をプリントアウトするプログラムを作れという宿題なのですが、
全くvoid main()以降何も書けなくて困っています。どなたか救いの手をお願いします…
0356デフォルトの名無しさんNGNG
とりあえずそれぞれの計算をする関数でも作ってみては?
0357デフォルトの名無しさんNGNG
>>356
なるほど…やってみます!
0358デフォルトの名無しさんNGNG
>>355
「void」 main()かぁ
0359デフォルトの名無しさんNGNG
>>350
どうもです
0360デフォルトの名無しさんNGNG
>>358
そこからして何か間違ってるんでしょうか…(;´Д`)
0361デフォルトの名無しさんNGNG
>>355
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=85
ちょっとだけ書いてみた。
あとは計算式を追加するだけー
0362デフォルトの名無しさんNGNG
なんかここんとこ、平均とか分散求めよっていう問題多いなあ。
そういう時期なのかね。
0363デフォルトの名無しさんNGNG
>>362
そういう時期なんでしょうなー
時期によってどんな問題が多くなってるのかって。。
調べてみようっと
0364デフォルトの名無しさんNGNG
>>361
わわ!本当にありがとうございます!!
やっぱり自分が書いたのは全然ダメだ(;´Д`)
0365デフォルトの名無しさんNGNG
>「void」 main()かぁ
mainはint(成功で0、失敗でそれ以外)を返すのが標準規格。
主義の問題と言っていいレベルだとは思うけどな。
void mainだとコンパイラによっては文句をいう事があるし、intの方が無難なのは確か。

358はvoid mainを見たこともないレベルの初心者、ってのは穿った見方かなぁ…
0366184NGNG
>>313
ありがとうございました!!
ですが読んでみたのですが・・・ いまいち分かりません
オリジナルのoutputとはmain関数でcleanup呼び出す前にoutput()を
呼び出せって意味ですか? ゴールが0になってることしか分かりません・・・
また 仮想壁とは何のためにしてるのかも分からないです。
0367デフォルトの名無しさんNGNG
>>365
昔はmain()だけだったときもあったんですが、先生が変わってからvoid main()になりました(;´Д`)?
本当はint mainだったんですね…
0368デフォルトの名無しさんNGNG
スレ違いだとは思うけど「void main(void)」について。
ttp://www.kouno.jp/home/c_faq/c11.html#15
0369デフォルトの名無しさんNGNG
>>368
>たぶんその本の著者は自分も対象読者の一人に数えているのだろう。
ワロタ
0370313NGNG
>366
outputとcleanupを分かりやすいものに差し替えて同じ場所にうpってある、と言うのを忘れてた。
元々のソースはイマイチなんで、新しい方見てくれ。うpろだ84番。

仮想壁は迷路の外周(1行目とか1列目)に壁でないマスがある場合の用心。
外周が常に壁である事がルールで保証されてるなら不要。

#define PATH 4
とかはマクロ。プログラム中のPATHという単語が全て4に置換される。
イメージとしては変数のようなもの。プログラム中に数字が出てくるよりは多少見やすいだろ。

アルゴリズムを一応解説。visit。
スタートから一歩ごとに値(step)を1増やしつつ、通ったマスにstepをセットして行ってる。
新しいバージョンのプログラムを見ると、最短ルート上に数字が順に並んでるのが分かると思う。

visitの冒頭の条件式。値がセットしてあるところはもうルートとして探索し終えた場所って事なので探索終了。
ただし、その時点でのstepの方が小さいなら、同じ場所により早くたどり着いたって事なので探索続行。
あと、184では移動直前に壁かどうかの判定を行なっていたのも、移動直後に変更。
こっちはちょっときれいに見える以上の深い意味はない。趣味の域だな。

cleanupはまずゴールから初めて最短ルートを4で塗りつぶしてる。
その後、関係ない道を0で埋めてる(この処理は変更後のプログラムで追加)。
0371デフォルトの名無しさんNGNG
>>367
main() /* 型を省略するとint */
も
void main() /* 論外 */
もお行儀が悪いです。
正しくは
int main(void)
または
int main(int argc, char *argv[])
(あるいはこれと等価な宣言)
です。
0372デフォルトの名無しさんNGNG
void main()
がアレだってことは常識として知ってるけど、何で悪いのかわからんのだけど。
どういうときに困るの?
0373デフォルトの名無しさんNGNG
>372 アレの時
0374デフォルトの名無しさんNGNG
int main と仕様で決まっているからだ。
0375デフォルトの名無しさんNGNG
↓これコンパイルは通るんですが、実行したら強制終了になるのですが、
どこがおかしいのでしょうか?
-------------
#include<stdio.h>

int strchno(const char *str,char *ch){
int i=0,count = 0;

while(*(str+i) !='\0'){
if(*(str+i) == *ch) count++;
i++;
}
return count;
}

int main()
{
char str[200],ch[1];

printf("文字列を入力してください\n");
scanf("%s",str);
printf("検索したい文字を入力してください\n");
scanf("%s",ch);
printf("文字列中に%sは%d個あります\n",ch[0],strchno(str,ch));

return 0;
}
---------
0376デフォルトの名無しさんNGNG
char str[200],ch[10];
にでもしとけ。あと、scanfつかわないように。
0377デフォルトの名無しさんNGNG
ch だ
Cげんごではいわゆる文字列は'\0'で終わっていないとダメだろが
0378デフォルトの名無しさんNGNG
printf("文字列中に%sは%d個あります\n",ch,strchno(str,ch));
0379デフォルトの名無しさんNGNG
3つの整数を入力して小さい順に並べ替える関数を
void sort(int *a.int *b,int *c)を使ってつくりなさい。

この問題をお願いします。
0380デフォルトの名無しさんNGNG
>>379
並べ替えた結果をどうすればよいのかわかりません。:5点
0381313NGNG
>370
>新しいバージョンのプログラムを見ると、最短ルート上に数字が
新しいバージョンのプログラムを実行すると、最短ルート上に数字が
に訂正。

ちなみに、速度について言えばかなり速い部類に入るアルゴリズム。
解のある迷路で解けないものは無い…はず。
少なくとも、ループや大部屋などのありがちなトラップは回避できるし、スタート/ゴールの場所が外壁沿いでなくても問題ない。

改善点を挙げるとすれば、もうちょっと速度上昇が可能なところ。
分かりやすさを優先したので、メモリ消費、計算量ともに改善の余地は大いにある。
あと、解が無い場合の処理を(比較的簡単なのに)サボってたりする。
0382デフォルトの名無しさんNGNG
>>380
実行する。
0383デフォルトの名無しさんNGNG
>>379
sort()の仕様が分かりません。:15点
0384デフォルトの名無しさんNGNG
実行してみますた。
typedef void (*F)(void);
void sort(int *a.int *b,int *c){
int array[3];int *ptr;
array[0]=*a;array[1]=*b;array[2]=*c;
ptr=array;
if(*ptr > *(ptr+1)){*ptr^=*(ptr+1); *(ptr+1)^=*ptr; *ptr^=*(ptr+1);}
ptr=array+1;
if(*ptr > *(ptr+1)){*ptr^=*(ptr+1); *(ptr+1)^=*ptr; *ptr^=*(ptr+1);}
ptr=array;
if(*ptr > *(ptr+1)){*ptr^=*(ptr+1); *(ptr+1)^=*ptr; *ptr^=*(ptr+1);}
for(ptr=array; ptr<sizeof(array); ++ptr){
((F*)*ptr)();
}
return;
}
0385デフォルトの名無しさんNGNG
 forkとpipeを使って
「./a.out filename コマンド 引数1 引数2 … < 標準入力データファイル」
と実行すれば、「 コマンド 引数1 引数2 …」を
(標準入力データを上記のようにリダイレクションによって入力して)
実行し、かつその標準入力データを、ファイル「filename」にバックアップする
プログラムを作れ。
(コマンドにはmoreなどが適当。
 例: 「./a.out filename more -10 < data.txt」 )
 また、この時ファイル「filename」と「data.txt」の中身は一致するか。

という問題が分かりません。
特に、どういう風にパイプを用いればよいか分からないのですが。
0386デフォルトの名無しさんNGNG
>>384
ありがとうございます。参考にします。
>>380>>383
とりあえず、氏ね
0387184NGNG
>>370
ありがとうございます!! もう一度考えてみますね
0388デフォルトの名無しさんNGNG
>>379 似たような問題が柴田望洋の本にあった気がする。
配列を使えないレベルだったはずだから、以下のようなのが答えかな。
swap()が使えるならもっと分かりやすいだろうけれど。

void sort(int *a.int *b,int *c)
{
  int tmp;
  if (*a > *b)
    tmp = *a, *a = *b, *a = tmp;
  if (*b > *c)
    tmp = *b, *b = *c, *c = tmp;
  if (*a > *b)
    tmp = *a, *a = *b, *a = tmp;
}
0389184NGNG
>>381
分かりました。
質問しているのにいつもレス遅くてすみません 基本夜しか顔出せないので…
ちなみにこれは携帯からです
0390デフォルトの名無しさんNGNG
>>386
ふふふ,>>380=>>384だというのに…
青い,青い。
0391デフォルトの名無しさんNGNG
文字列OECUを変数に代入しポインタを用いて、
次のように表示するプログラムを作ってください。

OECU
ECU
CU
U
0392デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void)
{
char *str = "OECU";
while(*str){
printf("%s\n",str++);
}
return 0;
}
0393デフォルトの名無しさんNGNG
2chのプログラマーが低脳とバカにされてるぞ。
http://pc5.2ch.net/test/read.cgi/prog/1085510173/l50
誰か一瞬で解いてやってくれ。
0394デフォルトの名無しさんNGNG
自演乙。
やってもいいが、納期と予算を明記してくれ。
0395仕様書無しさんNGNG
>>384も意地悪だな。。。変数同士の入れ替えをXOR使うなんて。
0396デフォルトの名無しさん NGNG
配列を使って・・・・
以下のように10個の整数を入力して、次に入力した数(1〜10)番目
の配列を表示するプログラムを0が入力されるまで続ける。という問題です。
(例)
>>>1 3 56 43 23 -11 3 5 8 9
>>>5
23
>>>6
-11
>>>10
9
>>>0
0397デフォルトの名無しさんNGNG
配列を用いた多倍長計算によって自然対数の底e(=2.7182818...)をn=1000として求めなさい。
e = 1+1/1!+1/2!+1/3!+.......1/n!+.....
= 2+1/2(1+1/3(1+1/4(1+....1/n(1+...))..))
0398仕様書無しさんNGNG
>>396

#include <stdio.h>
int main() {
int indata[10], ii;
printf(">>> "); fflush(stdout);
for(ii = 0; ii < 10; ii++) scanf("%d", &indata[ii]);
while(1) {
printf(">>> "); fflush(stdout);
scanf("%d", &ii);
if (ii == 0) break;
else printf("%d\n", indata[ii-1]);
}
return 0;
}
0399デフォルトの名無しさんNGNG
>>396
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
int a[10];
int i;
char s[1024];
char *t;
fprintf(stderr, ">>> ");
fgets(s, 1024, stdin);
t = strtok(s, " ");
for (i = 0; i < 10; i++) {
a[i] = atoi(t);
t = strtok(NULL, " ");
}
fprintf(stderr, ">>>");
while (fgets(s, 1024, stdin) != NULL && atoi(s) != 0)
fprintf(stderr, "%d\n>>>", a[atoi(s) - 1]);
return 0;
}
0400デフォルトの名無しさんNGNG
>>397
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=86
L は表示桁数。貼った後に気付いたが、計算には使ってない。あとは見て分かれ。
0401デフォルトの名無しさんNGNG
より適したスレを見つけたのでコチラに書き込みさせていただきます

キー入力でn個の数を入力して
そのn個の数の最大値、最小値、平均値を出力するプログラムは
どういったモノになるのでしょうか???
配列を使ってお願いしたいのですが・・・。
0402391NGNG
>>392
動作確認しました。ありがとうございます
0403デフォルトの名無しさんNGNG
#include <stdio.h>
#define N 5

int main(void)
{
int array[N];
int i, num, max, min, sum;

for(i = 0; i < N; i++){
scanf("%d", &num);
array[i] = num;
}

sum = min = max = array[0];
for(i = 1; i < N; i++){
sum += array[i];
max = array[i] > max ? array[i] : max;
min = array[i] < min ? array[i] : min;
}

printf("最大値:%d\n", max);
printf("最小値:%d\n", min);
printf("平均値:%d\n", sum / N);

return 0;
}
0404デフォルトの名無しさんNGNG
>>403
それじゃだめだろ。
0405401NGNG
こんなに早く・・・
有り難うございました。
(・∀・)スバラスィ
0406403NGNG

printf("平均値:%f\n", (float)sum / N);

こう?
0407デフォルトの名無しさんNGNG
すぐにオーバー/アンダーフローしますな。
0408デフォルトの名無しさんNGNG
3つの自然数l,m,nの値とl×m行列Aとm×n行列Bの
行列要素を読み込んで、行列の積C=A×Bを計算し、
その行列要素を印字するプログラムを作成せよ。た
だし、行列A,Bの要素は配列要素として読み込むこ
とにせよ。
上記の問題をお願いします。
0409デフォルトの名無しさんNGNG
読み込むとはどこから?
0410401NGNG
素早い回答感謝です。
で、早速プロンプトで確認しようとしたのですが
コンパイラでexeファイルを作成してクリックしても
一瞬で消えてしまって確認とか出来ないんですけど
作成したファイルってvisual Cのソフトとか無い人は
どうやって確認するんですか?
コンパイラは ttp://www.vector.co.jp/soft/win95/prog/se122244.html
です。
0411デフォルトの名無しさんNGNG
コマンドプロンプトからEXEうちこめや。
0412デフォルトの名無しさんNGNG
こまんんんんんんどらいいいいんんんんから実行しっしいししゃろ
0413デフォルトの名無しさんNGNG
授業でそれ使えと言われたのなら仕方ないが、Cygwin+gccとかのもっと使用者の多い環境を勧める。
0414デフォルトの名無しさんNGNG
>>410
コマンドプロンプトにexeファイルを"ドラッグ&ドロップ"すると入力が楽。
0415デフォルトの名無しさんNGNG
>>408
入力例ぐらい晒してくれ。
0416401NGNG
実行出来ました。プログラムを少し変更したのがいけなかったみたいです。
下手にいじらない方が良かった・・・_| ̄|○

お陰様できちんと動いているのですが
n個の数を入力なので、いくつの数を入力するのか定かでは無い訳で

(いくつの数を入力しますか?\n); という文を挿入しようとしたら
入力の数が繰り返されないで「いくつの数を入力しますか」が繰り返されてしまって・・・
なんだか悲しくなってきました。
0417デフォルトの名無しさんNGNG
最初からきっちり分かるように書けよ。
"n", "数" あほか
0418デフォルトの名無しさんNGNG
      ☆ チン     マチクタビレタ〜
                        マチクタビレタ〜
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < >>408 まだ〜?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん  |/

typedef double DATATYPE;
typedef struct _matrix MATRIX;
struct _matrix{
int rows;
int cols;
DATATYPE **array;
};
int matrix_init(MATRIX *mat, int rows, int cols){
DATATYPE *data;
size_t data_size = rows*cols*sizeof(DATATYPE);
int i;
mat->rows = rows;
mat->cols = cols;
data = (DATATYPE*)malloc(data_size);
memset(data,0,data_size);
mat->array = (DATATYPE**)malloc(rows*sizeof(DATATYPE*));
for(i=0; i<rows; ++i){
mat->array[i] = data + i*cols;
}
return 1;
}
0419デフォルトの名無しさんNGNG
int matrix_mul(MATRIX *mat, MATRIX a, MATRIX b){
int row, col, tmp;
if( a.cols != b.rows ) {
fprintf(stderr, "matrix_mul: Imcompatible matrix\n");
return 0;
}
matrix_init(mat, a.rows, b.cols);
for(row=0; row < mat->rows; ++row){
for(col=0; col < mat->cols; ++col){
mat->array[row][col]=0;
for(tmp=0; tmp<a.cols; ++tmp){
mat->array[row][col]+=a.array[row][tmp]*b.array[tmp][col];
}
}
}
return 1;
}
0420デフォルトの名無しさんNGNG
計算しなさい。
(2n+1)!
初心者なのでさっぱりわかりません。
お願いします
0421デフォルトの名無しさんNGNG
入力された整数同士の足算・引算の答えを出力するプログラムを作りたいのですが、
初心者でわからないので教えてください。よろしくお願いします。
(例)
% a.out
> 23 + 12
35
> 56 - 26
30
> 23+45
?
("+","-"記号の前後はスペースが入るものとします)
0422デフォルトの名無しさんNGNG
>>420
' ! ' が階乗ってのはわかるかな
(階乗ってのは、たとえば a! だと 1*2*3*.....*n っていうの)
だから、この場合階乗を求める関数でも作っておいてn+1を渡せばいいと思います。

階乗を求める関数で一番よく出てくるのは再帰というのを使うやつですね。
つまり、自分自身を呼び出す関数。
これを踏まえて書いてみて。わからなければヒント出そう。
0423デフォルトの名無しさんNGNG
>>421
+-記号の前後にスペースを入れろと問題にあるのがミソ。
scanf関数で読み取るときに数字、一文字、数字と読んでみよう。
あとは+-記号で足し算引き算を判断すればいい。
それからスペースがなかったりしたら(?を出すとき)、どこでそれを見つけるかも、少し考えてみよう。
0424デフォルトの名無しさんNGNG
>>422
ごめんほんっとごめん!つっこませて!
>(階乗ってのは、たとえば a! だと 1*2*3*.....*n っていうの)
a!なら1*2*3*.....*aね。
3!なら、1*2*3で、6
0425401NGNG
(´ω`)ショボーン
0426デフォルトの名無しさんNGNG
>>401
その手の宿題は、みんな飽きてるからな・・・>>130-131あたりを
参考にしてがんがれ
0427デフォルトの名無しさんNGNG
/* 1+1/1!+1/3!+1/5!+・・・+1/(2n+1)!の計算式 */
#include<stdio.h>

long kaijo(int n);
int main(void)
{
double ans=1;
int i,n;

printf("1+1/1!+1/3!+1/5!+・・・+1/(2n+1)! \n");
printf("n:");
scanf("%d",&n);

printf("1 ");
for(i=0;i<=(2*n+1);i++){
if(i%2!=0){
ans=ans+(double)1/kaijo(i);
printf(" + 1/%d!",i);
}
}
printf(" =%lf\n",ans);
}
long kaijo(int n)
{
if(n==0)
return 1L;
else
return n*kaijo(n-1);
}
このプログラムの下から4行目のreturn 1L;とreturn n*kaijo(n-1);というのはどこに戻っているのでしょうか?
初心者なのでわかりません。教えてください。
0428デフォルトの名無しさんNGNG
チン      ☆  チン       ☆
       チン    マチクタビレタ〜   チン     ♪
           ♪
    ♪          ☆チン    .☆   ジャーン!   マチクタビレタ〜!
        ☆ チン   〃  ∧_∧  ヽ         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ  ___\(`A´ #) /\_/ <  >>408の入力仕様まだー?
        チン    \_/⊂    つ    ‖     \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|     ‖        マチクタビレタ〜!
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|   /|\
        |             |/
0429デフォルトの名無しさんNGNG
>>427
return 1L;
は普通のreturnと一緒で1を返すだけ。Lはlong型にしてるだけだからあんま気にすんな。

return n*kaijo(n - 1);
は、「n*kajio(n-1)の返却値」を返す。最初は分かりづらいけど分かれば簡単。
高校数学の漸化式とか覚えてたら余裕。
0430デフォルトの名無しさんNGNG
>>421
#include <stdio.h>

int main(void)
{
int num1, num2;
char str[BUFSIZ], str2[BUFSIZ], enzan;

while(1)
{
printf("> ");
if(fgets(str, sizeof(str), stdin) == NULL) break;
if(sscanf(str, "%d%s%d", &num1, str2, &num2) != 3) break;
if(sscanf(str2, "%c", &enzan) != 1) break;

if(enzan == '+') printf("%d\n", num1 + num2);
else if(enzan == '-') printf("%d\n", num1 - num2);
else break;
}

return 0;
}
0431デフォルトの名無しさんNGNG
整数nと実数データx1,x2,…xnを読み込んだ後x1,x2,…xnを
小さい順に並び替えるプログラムを作成せよ。
という問題です。
0432デフォルトの名無しさんNGNG
>>431
Googleでバブルソートとかクイックソートとか。
たぶん解説つきで出てくる。
0433デフォルトの名無しさんNGNG
誰か助けてください。補修がたまりにたまってC言語演習の宿題どころじゃなくなってしまいました。

言語はC言語です。

1
配列を使ってプログラムを書いてください。二つのベクトルA,Bを考えます。
二つのベクトルの内積A・B=a1・b1+a2・b2+c1・c2を計算してください。
ようその値は、a1=1、a2=2、a3=3、b1=2、b2=3、b3=4です。for文を使った場合と使わない場合を書いてください。

2
スーパーの売り上げを配列に入力し、今日の売り上げと消費税(5%)を計算してください。入力する情報は、
(1)単価、(2)数量、(3)売り上げ{単価と数量の積}、(4)消費税。計算するだけでなく、
一覧表にように表示してください。最後に、本日の売り上げの合計と消費税の合計も計算して表示すること。
配列はa[8][4]と宣言して下さい。

取引1 サクランボ25キロ、単価4000円/kgを売る
取引2 メロン3個、単価2000円を売る
取引3 スイカ75個、単価1000円を売る
取引4 バナナ1kgを売る。単価200円/100g
取引5 ジュースを15本売る。単価120円
取引6 にんじん2kg、単価500円/kg、ジャガイモ3kg、単価400円/kg、玉ねぎ1kg、単価350円/kgを売る。


☆↓あとこれは先輩に聞いたら先輩もわからなくて、ついでにこれもできる人いないか探せって言われた奴です^^;

問題 f(x)=4x-xe^(2x)+2=0の根をニュートン法とラフソン法でもとめろ。ただし、初期値 x1=1、
収束判定定数ε=0.00001とする。また計算回数の違いを考察せよ。
0434デフォルト名無しさんNGNG
1は少し待て。2はちょっと意味がわからないからもう少し
詳しく説明してくれないか?
0435デフォルト名無しさんNGNG
>>433
#include <stdio.h>
#define TAX 0.05
main()
{
int a[8][4];

printf("取引1 サクランボ\n");
printf("単価 /kg ");
scanf("%d", &a[0][0]);
printf("How many?");
scanf("%d", &a[0][1]);
a[0][2] = a[0][0] * a[0][1];
a[0][3] = a[0][2] + (a[0][2] * TAX);
printf("uriage is %d\n", a[0][2]);
printf("total is %d\n", a[0][3]);

}

とりあえず取引1だけ。取引2も同じように作ればいいでないか?配列を一つずらすだけ。
ループも使おうかと思ったけどこんな問題で迷ってるんならまだループを習ってないと
思うから使わなかった。もしなにか違うようなことがあればまた随時書き換えるので。
こっちも初心者ですまん。Cは最近使ってないからあまり覚えてないがまあ動くでしょ。
0436418=428NGNG
もう,適当に書いちまうか。

void matrix_print(MATRIX mat){
int row, col;
printf("%d x %d matrix\n", mat.rows, mat.cols);
for(row=0; row < mat.rows; ++row){
for(col=0; col < mat.cols; ++col){
printf("%g ", (double)mat.array[row][col]);
}
printf("\n");
}
return;
}

int read_data_matrix(MATRIX *mat, FILE *fp){
int row,col;
char buf[1024];
for(row=0; row < mat->rows; ++row){
char *p;
fgets(buf,sizeof(buf),fp);
for(col=0,p=strtok(buf," "); col < mat->cols; ++col,p=strtok(NULL," ")){
mat->array[row][col] = (DATATYPE)(p?atof(p):0);
}
}
return 1;
}
0437418=428NGNG
int read_data(MATRIX *a, MATRIX *b, FILE *fp){
int l,m,n;
char buf[128];
fgets(buf,sizeof(buf),fp);
sscanf(buf,"%d %d %d", &l, &m, &n);
matrix_init(a, l, m);
matrix_init(b, m, n);
read_data_matrix(a, fp);
read_data_matrix(b, fp);
return 1;
}

int main(){
MATRIX a;
MATRIX b;
MATRIX mat;
FILE *fp;
if( NULL == (fp = fopen("matrix.txt", "r")) ) return EXIT_FAILURE;
read_data(&a,&b, fp);
matrix_mul(&mat,a,b);
matrix_print(mat);
return EXIT_SUCCESS;
}
0438デフォルトの名無しさんNGNG
>>433
>>435
もれの解釈
int a[8][4]={ /* 単価,数量,売り上げ(単価と数量),消費税 */
{4000, 25, 0, 0}, /* 取引1 サクランボ */
{2000, 3, 0, 0}, /* 取引2 メロン */
{1000, 75, 0, 0}, /* 取引3 スイカ */
{200/100, 1000, 0, 0},/* 取引4 バナナ */
{120, 15, 0, 0}, /* 取引5 ジュース */
{500, 2, 0, 0}, /* 取引6 にんじん */
{400, 3, 0, 0}, /* 取引6 ジャガイモ */
{350, 1, 0, 0}, /* 取引6 玉ねぎ */
};
int total,totalTax,i;
total=totalTax=0;
for(i=0; i<8; ++i){
total+=(a[i][2]=a[i][0]*a[i][1]);
totalTax+=(a[i][3]=a[i][2]*TAX);
}

/* 表示 */
for(i=0; i<8; ++i)
printf("取引%d 単価[%4d]×数量[%4d]=[%6d](TAX:%d)\n",
(i<5)?(i+1):6, a[i][0],a[i][1],a[i][2],a[i][3]);
printf("\n本日の売り上げ[%6d](TAX:%d)\n", total, totalTax);
0439名無しさん@お腹いっぱい。NGNG
>>433
ニュートン法とラフソン法ってのは、ニュートン・ラプソン法の間違いでは?
ググればサンプルプログラムがどっちゃり出てくるぞ。
0440305NGNG
>>306
>>307
返信遅れてすいません。
どうもありがとうございました〜。
おかげで理解できました。
0441443NGNG
結局2番は間に合いませんでした_l ̄l○

一週間後の再提出まで自分でまたやってみます、わからかなったらまたきますんでよろしくです。

協力感謝します。

先輩大丈夫かな^^;
先輩のやつは5月いっぱいが期限らしいです。
0442デフォルトの名無しさんNGNG
>>246
http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+14270
>「%*sで…」とか習ってないことでやっぱりわからなかったんです。

#include <stdio.h>
int main(void){
int i, m, d;
int cal[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
printf("表示月を入力してください。>"); scanf("%d", &m);
printf("1:日 2:月 3:火 4:水 5:木 6:金 7:土 >"); scanf("%d", &d);
printf("\n日 月 火 水 木 金 土\n");
for (i = 0;i < d - 1; i++) printf(" ");
for (i = 1; i <= cal[m]; i++){
printf("%2d ", i);
if ((d++) % 7 == 0) putchar('\n');
}
return 0;
}
0443442NGNG
しまった、半角空白の連続は反映されないんだった。
0444デフォルトの名無しさんNGNG
switch方式で
キーボードから二つの数値と演算子を入力して入力された演算子に対応した計算結果
を表示するプログラムを作成してください。演算子は+,-,*,%で、
0445デフォルトの名無しさんNGNG
>444
ほんとにそんな問題なのか?もっと詳しかったりしないか?

#include <stdio.h>
int main(void)
{
  int x, y, result;
  scanf("%d%d", &x, &y);
  switch (getchar()) {
  case '+': result = x + y; break;
  case '-': result = x - y; break;
  case '*': result = x * y; break;
  case '%': result = x % y; break;
  default: puts("error"); return 1;
  }
  printf("%d\n", result);
  return 0;
}
0446デフォルトの名無しさんNGNG
行列の積を求めるプログラムを作成する。
n*nの大きさの実行列A,Bをキーボードより読み込んで、
行列の積C=A*Bを計算し、その結果を画面に出力する
プログラムを作りなさい。
という課題で困っています。
お願いします。
for文を何度か使って、配列でプログラムするみたいなのですが...
0447名無しさん@お腹いっぱい。NGNG
>>446
ちょっとまえのレスに、ほとんど同じ質問と回答が載っているぞ。
参考にされたし。
0448デフォルトの名無しさんNGNG
2つの整数をキーボードから入力し、それらの和、積、差、商、剰余の
それぞれを求め、画面に表示させるプログラムを作成しなさい。

剰余のところで詰まってます。エラーなしになるものを教えてください。
お願いします。
0449デフォルトの名無しさんNGNG
2つの整数をキーボードから入力し、それらの和、積、差、商、剰余の
それぞれを求め、画面に表示させるプログラムを作成しなさい。

剰余のところで詰まってます。エラーなしになるものを教えてください。
お願いします。
0450デフォルトの名無しさんNGNG
2つの整数をキーボードから入力し、それらの和、積、差、商、剰余の
それぞれを求め、画面に表示させるプログラムを作成しなさい。

剰余のところで詰まってます。エラーなしになるものを教えてください。
お願いします。
0451デフォルトの名無しさんNGNG
すみません3個もカキコしてしまいました。
0452デフォルトの名無しさんNGNG
答える気にならないような事をするなよ。釣りか。
ふかわりょうでさえ二回だぞ?
0453デフォルトの名無しさんNGNG
>>447さん、ありがとうございます。
過去ログを調べずに質問してしまって、ごめんなさい。
それなのに、親切にこたえてくださって、感謝しています。
参考にして、少し自力でがんばってみます。
0454デフォルトの名無しさんNGNG
>>447さん、ありがとうございます。
過去ログを調べずに質問してしまって、ごめんなさい。
それなのに、親切にこたえてくださって、感謝しています。
参考にして、少し自力でがんばってみます。
0455デフォルトの名無しさんNGNG
>>447さん、ありがとうございます。
過去ログを調べずに質問してしまって、ごめんなさい。
それなのに、親切にこたえてくださって、感謝しています。
参考にして、少し自力でがんばってみます。
0456デフォルトの名無しさんNGNG
>>448-450
整数だからintかlongを使ってるんだろうし、剰余は%で求められるし、
+,-,*,/でエラーが出ないのに%だけエラーが出るのは何故だ?
そっちの方が気になるぞ。
0457385NGNG
      ☆ チン     
                        
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < >>385 まだ〜?
            \_/⊂ ⊂_ )   \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  愛媛みかん  |/
0458デフォルトの名無しさんNGNG
幸せになれるプログラムを作って下さい
0459デフォルトの名無しさんNGNG
>>457
>コマンドにはmoreなどが適当。
って何よ? 意味わからん。
0460デフォルトの名無しさんNGNG
要はteeの実装?
0461デフォルトの名無しさんNGNG
teeならforkもpipeもいらん
0462デフォルトの名無しさんNGNG
チン      ☆  チン       ☆
       チン    マチクタビレタ〜   チン     ♪
           ♪
    ♪          ☆チン    .☆   ジャーン!   マチクタビレタ〜!
        ☆ チン   〃  ∧_∧  ヽ         / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ  ___\(`A´ #) /\_/ <  >>457説明マダー?
        チン    \_/⊂    つ    ‖     \__________
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|     ‖        マチクタビレタ〜!
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|   /|\
        |             |/
0463たかNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#2

簡単な問題だと思うのですが初心者なのでどう考えていいのか分かりません。。。
誰か助けてください。お願いします
0464デフォルトの名無しさんNGNG
>>463
質問ってこれでいいの?
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1085675635&res=1

6乗を求めるなら2乗したのを3回かける
7乗を求めるなら2乗したのを3回かけてから1回足す
ってかんじでいんじゃないかな。
0465デフォルトの名無しさんNGNG
>>385
要は
>「./a.out filename コマンド 引数1 引数2 … < 標準入力データファイル」
  pipe 作って
  fork() して
  子プロセスなら {
    標準入力を pipe の片方に振って
    execvp(コマンド 引数1 引数2 …)
  }
  while (標準入力が EOF() でない間) {
    標準入力読んで
    ファイル「filename」に書いて
    pipe のもう一方に書いて
  }

ってことか?
0466デフォルトの名無しさんNGNG
>>465
大事なことが抜けている。
pipeの入力側ちゃんと閉じろよ。
0467デフォルトの名無しさんNGNG
キーボードから実数型の変数に1辺の長さを入力して、その辺を持つ
正方形の周りの長さと面積、立方体の体積を求め、画面に表示させるプログラム
を作れ。

1年の最初から説明もなしに正直これはつらいです。
詳しい人お願いします。
0468デフォルトの名無しさんNGNG
1年の最初なら,まだ,やり直しが効くぞ?
素直に担当教授にギブアップを申し出てみろ。
まとも教授なら,それなりの対応してくれるだろう。

皆で行けば,講義予定が変わるかもよ(w
0469デフォルトの名無しさんNGNG
>>467

#include <stdio.h>

int main() {
double n;
scanf("%lf",&n);

printf("%f\n", n * 4 ); /* 正方形の辺 */
printf("%f\n", n * n ); /* 面積 */
...
0470デフォルトの名無しさんNGNG
一応立方体も書いておこうかね。
printf("%g\n", n * n * n);
0471デフォルトの名無しさんNGNG
>470
いちおう
return 0;
もかいておこうかね
0472デフォルトの名無しさんNGNG
じゃ、留めに
}
も書いておくよ。
0473デフォルトの名無しさんNGNG
以下のプログラムがどのように実行されるか説明せよ.という問題なんですが
どういったことが起きているのか詳しく教えてもらえませんか?お願いします。

#include<stdio.h>
int count;
void func1(int val, int *called)
{  int count;
count = 2;
printf("func1: count は %d です.\n", ++count);
printf("func1: called は %d です.\n", *called);
++count;
++(*called);
}

void func2(int val, int *called)
{  printf("func2: count は %d です.\n", ++count);
  printf("func2: called は %d です.\n", *called);
printf("func2: val は %d です.\n", val);
++count;
}

void main(int argc, char *argv[])
{int called = 1;
count = 1;
printf("main: count は %d です.\n", count);
func1(count, &called);
printf("main: count は %d です.\n", count);
func2(count, &called);
printf("main: count は %d です.\n", count);
}

0474デフォルトの名無しさんNGNG
グローバル変数count
ローカル変数count

の振る舞いを説明すればええんでないの?
0475デフォルトの名無しさんNGNG
あとcalledポインタあたりかな?
0476473NGNG
>>474
グローバル変数とローカル変数というものがよくわからないのです。
参考書みても書いてないですし・・・。
0477仕様書無しさんNGNG
いや、もしかしたらcrt0からの話をしないとダメかもしれない。
0478たかNGNG
>>464
すいません。そのプログラムの書き方がわからないんです...
0479デフォルトの名無しさんNGNG
>>476
スコープで探してもない?
0480473NGNG
>>479
スコープについては書いてありますね。
有効範囲という意味みたいです。
グローバル変数とかローカル変数とかは書いてないです。

0481デフォルトの名無しさんNGNG
つまりそういうことです。
0482デフォルトの名無しさんNGNG
>>478
int power( int m, int n )
{
int p,i;

p = 1;
if(n%2==0) {
for( i = 1; i <= n/2; i++ ) {
p = p * m;
}
p *= p;
return p;
}

else {
for( i = 1; i <= n/2; i++ ) {
p = p * m;
}
p *= p;
p *= m;
return p;
}
}

nがintだからこれでいいんじゃなかろうか
0483デフォルトの名無しさんNGNG
>>478
こんなもんかな。
int power(int m, int n)
{
 if (n < 0) {
  return 0;
 }
 switch (n) {
 case 0:
  return 1;
 case 1:
  return m;
 }
 if (n % 2) {
  return power(m, n - 1) * m;
 }
 int r = power(m, n / 2);
 return r * r;
}
条件判断の順序の調整や再帰の廃止でまだ速くなるけど。
0484デフォルトの名無しさんNGNG
>>482
そこまでやるんじゃ
int power( int m, int n )
{
int p,i;

for( i = 1; i <= n/2; i++ ) {
p = p * m;
}
p *= p;
if(n%2) {
p *= m;
}
return p;
}
こうだろう。プログラム自体が正しいかは分からんけど。
0485464NGNG
>7乗を求めるなら2乗したのを3回かけてから1回足す
「足す」じゃなくて「かける」ね。
0486デフォルトの名無しさんNGNG
>>484
にゃるほど
0487デフォルトの名無しさんNGNG
0
0488デフォルトの名無しさんNGNG
>>484
> int p,i;
int p = 1, i;
じゃないとマズいでしょ。。。

> p = p * m;
> p *= m;
使い分ける必要ってあるの・・?
0489デフォルトの名無しさんNGNG
キーボードから入力された 8個の整数値を配列へ格納し、
値の大きい順に表示をするプログラムを作成せよ。


#include <stdio.h>

main()
{
int i, max ;
int a[8],;

for(i = 0; i < 8; i++){
printf("a[%d] = ", i);
scanf("%d",&a[i]);
}

max = a[0];

for(i = 0; i < 8; i++){
if(a[i] > max){
max = a[i];
}
}
printf("値の大きい順に表示\n");
printf("%d\n", max);
}

ここまでできてます
これをいじりたいんですがわかりません
0490デフォルトの名無しさんNGNG
ソートすればいい。
サンプル書く暇が無いので、ソートアルゴリズムの紹介だけ・・・スマソ
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/
0491たかNGNG
皆さん協力してくださってありがとうございます。
以下のプログラムで出力してみると答えが1になってしまいました
#include <stdio.h>

int power( int m, int n );

int main()
{
int i ;

printf( "%d\n", power( 2, i ));
return 0 ;
}

int power( int m, int n )
{
int p = 1,i ;

for( i = 1; i <= n/2; i++ ) {
p = p * m;
}
p *= p ;
if(n%2) {
p *= m;
}
return p ;
}
0492デフォルトの名無しさんNGNG
よかったね^^
0493デフォルトの名無しさんNGNG
上出来じゃないか
0494デフォルトの名無しさんNGNG
>>491
2の何乗を求めたいんでちゅか?
0495デフォルトの名無しさんNGNG
>>489
#include <stdio.h>
#include <stdlib.h>

int intcmp(const int *a, const int *b)
{
    return *a < *b ? 1 : -1;
}

int main()
{
    int i, int a[8];

    for(i = 0; i < 8; i++){
        printf("a[%d] = ", i);
        scanf("%d",&a[i]);
    }

    qsort(a, 8, sizeof(int), (int(*)(const void*, const void*))intcmp);

    printf("値の大きい順に表示\n");
    for(i = 0; i < 8; i++)
        printf("%d\n", a[i]);
    return (0);
}

0496デフォルトの名無しさんNGNG
int power(int a, int b){
if (b == 0) return 1;
if (b % 2 == 0) return power(a * a, b / 2);
else return a * power(a * a, (b - 1) / 2);
}
0497デフォルトの名無しさんNGNG
>>496
(b - 1) は冗長だな。
0498たかNGNG
>>496さんありがとうございます.
2の11乗を求めるプログラムはこれであってますよね。
符合なし整数にしてますが。

#include <stdio.h>

unsigned int uint_power(unsigned int a, unsigned int b );

int main()
{
unsigned int i;
i = 11 ;

printf( "%d\n", uint_power( 2, i ));
return 0 ;
}

unsigned int uint_power(unsigned int a, unsigned int b){

if (b == 0) return 1;

if (b % 2 == 0) return uint_power(a * a, b / 2);

else return a * uint_power(a * a, (b - 1) / 2);

}
0499たかNGNG
>>496さんありがとうございます.
2の11乗を求めるプログラムはこれであってますよね。
符合なし整数にしてますが。

#include <stdio.h>

unsigned int uint_power(unsigned int a, unsigned int b );

int main()
{
unsigned int i;
i = 11 ;

printf( "%d\n", uint_power( 2, i ));
return 0 ;
}

unsigned int uint_power(unsigned int a, unsigned int b){

if (b == 0) return 1;

if (b % 2 == 0) return uint_power(a * a, b / 2);

else return a * uint_power(a * a, (b - 1) / 2);

}
0500デフォルトの名無しさんNGNG
もう一丁↓
0501たかNGNG
>>496さんありがとうございます.
2の11乗を求めるプログラムはこれであってますよね。
符合なし整数にしてますが。

#include <stdio.h>

unsigned int uint_power(unsigned int a, unsigned int b );

int main()
{
unsigned int i;
i = 11 ;

printf( "%d\n", uint_power( 2, i ));
return 0 ;
}

unsigned int uint_power(unsigned int a, unsigned int b){

if (b == 0) return 1;

if (b % 2 == 0) return uint_power(a * a, b / 2);

else return a * uint_power(a * a, (b - 1) / 2);

}
0502たかNGNG
すいません。3回もやってしまいました。。。
しかもうまいこと予測されてました。。
0503デフォルトの名無しさんNGNG
>>502
3回目ネタじゃなかったのw
0504デフォルトの名無しさんNGNG
>>501-502
ワロタ
0505デフォルトの名無しさんNGNG
#include<stdio.h>
#include<fcntl.h>

main()
{
int fd;
fd = open("file",O_WRONLY|O_CREAT,0644) ;
close(1);
dup(fd);
close(fd);
execlp("ls","ls","-lag",NULL);
}

を実行したとき、作られた「file」の中の「file」のサイズは
なぜ0になるのか示せ。
0506デフォルトの名無しさんNGNG
#include<stdio.h>
#include<fcntl.h>

main()
{
int fd;
fd = open("file",O_WRONLY|O_CREAT,0644) ;
close(1);
dup(fd);
close(fd);
execlp("ls","ls","-lag",NULL);
}

を実行したとき、作られた「file」の中の「file」のサイズは
なぜ0になるのか示せ。
0507デフォルトの名無しさんNGNG
え?もう1回?
0508デフォルトの名無しさんNGNG
実数xと正の整数nを受け取りxのn乗を計算して返す(ポインタの引数を使用し返却値0とする)関数を作成せよ
但し、main関数では適当なデータをキー入力して、関数を呼び出した後はxのn乗の値を出力せよ。
0509デフォルトの名無しさんNGNG
「キーボードから入力データの個数n(最大50)を1個読み込み、
その後からn個のデータを配列aに入力し、合計、平均、標準偏差を求めるプログラムを作成しなさい.」

という問題を教科書見ながらやってみたのですが
家のコンピュータでVC++6.0を使うと、学校で教えてもらったとおりの操作をしているはずなのに
エラーや警告はないのにビルドすると「リンク中...」と表示されたまま一切の操作を受け付けなくなります。

なんででしょう?コンピュータのスペック等は特に問題はないはずですけど...
0510デフォルトの名無しさんNGNG
>>508

#include <stdio.h>
#include <math.h>

int main(void)
{
int n;
double x;

scanf("%f%d,\n",&x,&n);
printf("%f\n",pow(x,n));

return 0;
0511デフォルトの名無しさんNGNG
>>505-506
その課題の前提条件となる命題は誤りである。
なぜなら,既にファイル"file"が存在した場合,実行後のそのサイズはゼロとは限らない。
0512デフォルトの名無しさんNGNG
>>501
>483はスルー?
つーか、高速化が目的なら元の版と速度比較するべきじゃないの?

>>508
ほぼ同じ目的のネタがあるから自力でできるところまでやってみたら?

>>506
そういう宿題なの?

>>509
VCスレ行きかな?
0513デフォルトの名無しさんNGNG
#include <stdio.h>
int power(double x, int n, double *y){
double sum = 1.0;
while(n--) sum *= x;
*y = sum;
return 0;
}
int main(void){
int n;
double x, y;
printf("x:"); scanf("%lf", &x);
printf("n:"); scanf("%d", &n);
power(x, n, &y);
printf("y = %f", y);
return 0;
}
0514デフォルトの名無しさんNGNG
10個の要素(配列の大きさが10)をもつ整数型配列a,b,cを宣言して配列aに
適当なデータを初期値代入せよ。その後そのデータを配列bには順方向に配列cには逆方向に
代入し、最後に配列a,b,c,の要素を出力せよ(for文を必ずつかわないといけない)
順方向とは、a[0]をb[0]に、a[1]をb[1]に・・・、a[9]をb[9]に代入すること
逆方向とは、a[0]をc[9]に、a[1]をc[8]に・・・、a[9]をc[0]に代入すること
0515デフォルトの名無しさんNGNG
>>514
#include <stdio.h>

int main() {
int i,a[10] = { 0,1,2,3,4,5,6,7,8,9} ,b[10],c[10];
for(i=0;i<10;i++) {
b[i] = a[i];
c[i] = a[10-i-1];
}
for(i=0;i<10;i++) {
printf("a[%d] = %d b[%d] = %d c[%d] = %d\n",i,a[i],i,b[i],i,c[i]);
}
return 0;
}
0516デフォルトの名無しさんNGNG
for(i=0;i<10;i++) c[10-1-i] = b[i] = a[i];

0517デフォルトの名無しさんNGNG
>>515
ありがとうございます^^
0518デフォルトの名無しさんNGNG
すいません。ちょっと長くなるんですが。
#include<stdio.h>
#include <fstream.h>
bool (*pfunc)(char * str);
bool func(char * str)
{
if(!str) return false;
printf(str);
return true;
}
void main()
{
pfunc = func;
unsigned char * cfunc = (unsigned char *)pfunc;
ofstream out_file("関数.func",ios::binary);
for(unsigned long i = 0;i < 225275;i++)
{
out_file.put(cfunc[i]);
}
}
0519518NGNG
という風に関数.funcというファイルに関数funcを保存したのです。ところが

#include <fstream.h>
#include <sys/types.h>
#include <sys/stat.h>
void main()
{
struct _stat st;
unsigned char* file = NULL;
bool(* func)(char *str) = NULL;
ifstream InFile("関数.func",ios::binary);
_fstat(InFile.fd(),&st);
file = new unsigned char[st.st_size];
for(long i = 0;i < st.st_size;i++)
{
InFile.get(file[i]);
}
InFile.close();
func = (bool (__cdecl *)(char *))file;
func("がちょ〜ん");
}

という様にいざファイルから読み出して関数funcを使用しようとしてもなぜだ
かうまく行きません。どなたか原因がわかる方いらっしゃいませんでしょうか?
0520デフォルトの名無しさんNGNG
>>519
んな器用なことは大抵のOSでできない。できる場合も、工夫が必要になる。
何がやりたいか知らんが、OSの勉強しなされ。
0521デフォルトの名無しさんNGNG
>>519
そういうのは普通DLLという特殊なライブラリをコンパイル/リンクしておき,
後で呼び出す。

とあるUNIX系システムでの例。
dll.c:
#include<stdio.h>
#include <fstream.h>
bool func(char * str)
{
if(!str) return false;
printf(str);
return true;
}
dllの作成:
gcc -fPIC -shared -nostartfiles -o dll.so dll.c

DLLを呼び出すmain関数。
#include <dlfcn.h>
int main(){
void *handle;
bool (*f)(char*);
handle = dlopen("dll.so",RTLD_LAZY);
f = dlsym(handle,"func");
f("がちょ〜ん");
}

>関数funcを保存したのです
奇天烈な君の保存した内容は,プログラムが終了した瞬間,
その意味が失われる。
0522デフォルトの名無しさんNGNG
問題の指示で、”実数型の変数”とあるのですが、
これはどのようなものなのでしょうか?
0523デフォルトの名無しさんNGNG
�@実行ファイル名が a.outのとき"Give me name"を、
how-are youのとき"I'm fine,thank you"
fuck youのとき"son of bitch!"
それ以外のとき"Ouch!"
と出力するプログラムをかけ。

�A引数として与えられた文字列を、辞書的順序で出力するプログラムを書け。
(例) FILENAME January February March
(結果) February January March

�B引数として与えられた数字を全て足し合わせた数を出力するプログラムを書け。
(例) FILENAME 1 2 3 4
(結果) 10


お願いします。
0524デフォルトの名無しさんNGNG
>523
2) http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=88
3) http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=89
0525デフォルトの名無しさんNGNG
あいたたた、2)のやつ文字列まで確保しなくて良かった
0526デフォルトの名無しさんNGNG
3つの正の数値a,b,cを入力して、このデータa,b,cで三角形が成立するかどうかを調べ
三角形が成立するときにはさらに正三角形、直角二等辺三角形、直角三角形、二等辺三角形、そのいずれでもない三角形
に分類し、その結果を表示せよ。
0527526NGNG
#include<stdio.h>

int main()
{
int a,b,c,temp;
char *triangle;

printf("正数a,b,c=");
scanf("%d,%d,%d",&a,&b,&c);

if(b>a){
temp=a;
a=b;
b=temp;
}
if(c>a){
temp=a;
a=c;
c=temp;
}
0528526NGNG
if(a+b>c&&b+c>a&&c+a>b){
if(a==b==c){
printf("正三角形です");
}
else if(b*b+c*c=a*a&&b==c){
printf("直角二等辺三角形です");
}
else if(b*b+c*c=a*a){
printf("直角三角形です");
}
else if(a==b||b==c||c==a){
printf("二等辺三角形です");
}
else{
printf("その他の三角形です");
}
}

return 0;
}

エラー E2277 triangle.c 28: 左辺値が必要(関数 main )
エラー E2277 triangle.c 31: 左辺値が必要(関数 main )
0529526NGNG
char *triangle;ってのはミスです。
お願いします。
0530526NGNG
アホみたいに連カキすいません。
エラーは消えたんですが結果が上手くいきません
0531デフォルトの名無しさんNGNG
(b*b+c*c)=(a*a)&&b==c

(b*b+c*c)=(a*a)

どう思う?
0532524NGNG
>523
一応、2) の修正版
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=90

>527
> if(a==b==c)
a, b, c が全て同じ時、というif文を書いているつもりなんだろうけど、
a == b で算出される真偽値が c と比較されてしまって意味が違うので駄目ぽ。
if(a==b&&a==c) と書く。
0533526NGNG
>531,532さん
ありがとうございます。
こういうミスがないように気をつけます。
0534名無しさん@お腹いっぱい。NGNG
>>523
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[]) {
if (!strcmp(argv[0], "a.out")) {
printf("Give me name¥n");
} else if (!strcmp(argv[0], "how-are-you")) {
printf("I'm fine, thank you¥n");
} else if (!strcmp(argv[0], "fuck-you")) {
printf("son of bitch¥n");
} else {
printf("Ouch!¥n");
}
return 0;
}
0535518NGNG
>>520-521
どうもありがとうございました。勉強が足りませんでした。精進します。
0536デフォルトの名無しさんNGNG
>>535
勉強よりも藍が足りない
0537デフォルトの名無しさんNGNG
>>536
(・∀・)!?
0538デフォルトの名無しさんNGNG
高卒の俺にはとてもではないが難しすぎる > 藍
0539デフォルトの名無しさんNGNG
AIが止まらない
0540523NGNG
皆さん、有難うございました!
0541デフォルトの名無しさんNGNG
Cの課題でテキストファイルを読んでその内容を表示するものを作るものが出たのですが、Cの初歩中の初歩を勉強している身では構成すらもさっぱりわかりません
皆さんの力を貸してください
問題分をそのまま書きます

テキストファイルに、1〜nまでの素数を書き込む関数fileSosu()を作成せよ。
void fileSosu( char *fileName, int n)
・fileName : 素数を書き込むファイル名
・n : 素数を求める最大の数
上記の関数を以下のプログラムで実行し1〜100までの素数がファイルに出力されたか動作を確認せよ。
#include<stdio.h>

//ここにfileSosu()関数を開く。

void main()
{
//ファイル名を格納する文字列
char wFileName[20];

printf("素数を出力するファイル名=");
//ファイル名をキーボードから入力する
scanf("%s", wFileName);
fileSosu( wFileName, 100);
}

よろしくお願いします
0542デフォルトの名無しさんNGNG
>>541
void fileSosu(char *fileName, int n)
{
FILE *fp = fopen(fileName, "w");

int prime;
int i, j;

for(i = 2; i <= n; i++) {
prime = 1;
for(j = 2; j <= i / 2; j++) {
if((i % j) == 0) {
prime = 0;
break;
}
}
if(prime == 1)
fprintf(fp, "%d\n", i);
}
}

あってるかな〜
0543デフォルトの名無しさんNGNG
>>542
fprintf(fp, "OS に close させるのもなかなか乙\n");
0544デフォルトの名無しさんNGNG
j <= i / 2のところを
j*j <= iとしても
10万まできちんと表示されたんだが、j*jのとこでオーバーフローしないの?
0545デフォルトの名無しさんNGNG
>10万まできちんと表示された
j はその平方根くらいまで
0546デフォルトの名無しさんNGNG
>>545
あ・・・・・・、バカな質問ですた。。。
0547デフォルトの名無しさんNGNG
fopen を初めて使った。
fclose しなきゃなのね。
0548デフォルトの名無しさんNGNG
やらないと五月蝿い人がいるからね。
0549デフォルトの名無しさんNGNG
C++でべき乗をする演算子ってないんでしょうか?
問題とかのレベルに達していなくてすいません。。。
0550デフォルトの名無しさんNGNG
math.h の
double pow(double x, double y);
0551デフォルトの名無しさんNGNG
それは演算子ではありません
0552デフォルトの名無しさんNGNG
あっ!ごめんなさい。そうですた。
十文字腹して喉掻っ切って死んできます。
0553デフォルトの名無しさんNGNG
>>549
POD型の演算子の多重定義はできない。
0554デフォルトの名無しさんNGNG
>553
ありがとうございました
0555デフォルトの名無しさんNGNG
Perlにはあるんだけどね。
0556デフォルトの名無しさんNGNG
あるねぇ。
まあ機能が無い訳じゃないんだから、素直にpowっとけ。
0557デフォルトの名無しさんNGNG
C言語で 10進数を 2進数の IEEE32ビット表現に変換するプログラムを作りたいのですが、よかったら作ってもらえないでしょうか
0558デフォルトの名無しさんNGNG
>>557

float f = (float)num;
0559デフォルトの名無しさんNGNG
与えられた文字列よりその文字列の全ての順列を列挙するプログラム

教えてください
0560デフォルトの名無しさんNGNG
.>>556
>powっとけ。
表現(・∀・)イイネ!!
0561デフォルトの名無しさんNGNG
5×5行列の積を標準入力して求めるプログラムを作りたいのですが、
どこがおかしいでしょうか?
つ#include <stdio.h>
void main(void)
{
double a[5][5];
double b[5][5];
double c[5][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}};
int i;
int j;
int k;

for(i=0; i<=4; i++)
{
for(j=0; j<=4; j++)
{
printf("input A %5d\n",a[i][j]);
scanf("%lf",&a[i][j]);
}
}
for(i=0; i<=4; i++)
{
for(j=0; j<=4; j++);

0562デフォルトの名無しさんNGNG
{
for(k=0; k<=4; k++)
{
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
}
printf("matrix A and B \n");
for(i=0; i<=4; i++)
{for(j=0; j<=4; j++)
{
printf("%5f ",a[i][j]);
printf("%5f ",b[i][j]);
}
printf("\n");
}
printf("output C=A*B \n");
for(i=0; i<=4; i++)
{
for(j=0; j<=4; j++)
{
printf("%5f ",c[i][j]);
}
printf("\n");
}
}
printf("output C=A*B \n");
for(i=0; i<=4; i++)
{

0563デフォルトの名無しさんNGNG
printf("%5f ",c[i][j]);
}
printf("\n");
}
return 0;
}
0564デフォルトの名無しさんNGNG
はじめましてよろしくお願いします。
二次元配列を使って九九の表を作成せよって言う問題が出たんですがどうもよく分からなくて
模範解答を誰か教えて下さい。
よろしくお願いしますm( )m
0565デフォルトの名無しさんNGNG
http://www.rak2.jp/town/rak2_pv.cgi?no=eufjd&prof_view=1
0566デフォルトの名無しさんNGNG
>>564
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=91&fi=no
0567566NGNG
>二次元配列
すっかりわすれてた煎ってくる
0568デフォルトの名無しさんNGNG
>>564
#include <stdio.h>

int main() {
int i,j,table[9][9];
for(i=0;i<9;i++) {
for(j=0;j<9;j++) {
table[i][j] = i * j;
}
}
printf(" ");
for(i=0;i<9;i++) printf(" %2d",i+1);
printf("\n");
for(i=0;i<9;i++) {
printf("%d",i+1);
for(j=0;j<9;j++) {
printf(" %2d",table[i][j]);
}
printf("\n");
}
return 0;
}
0569デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void)
{
int i, j , t[10][10];
for (i = 1; i <= 9; i++) for (j = 1; j <= 9; j++) t[i][j] = i * j;
for (i = 1; i <= 9; i++){
for (j = 1; j <= 9; j++) printf("%2d ",t[i][j]);
puts("");
}
return 0;
}
0570デフォルトの名無しさんNGNG
>>561
アプロダが重いので
#include <stdio.h>
#define N 2

int main(void)
{
double a[N + 1][N + 1], b[N + 1][N + 1], c[N + 1][N + 1] ={0,};
int i, j, k;

for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("input A a[%d][%d]\n", i, j);
scanf("%lf", &a[i][j]);
}
}

for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("input B a[%d][%d]\n", i, j);
scanf("%lf", &b[i][j]);
}
}
0571続きNGNG

for (i = 0; i < N; i++)
for (j = 0; j < N; j++)
for (k = 0; k < N; k++)
c[i][j] += a[i][k] * b[k][j];

printf("matrix A and B \n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) printf("%5f ", a[i][j]);
printf("\t");
for (j = 0; j < N; j++) printf("%5f ", b[i][j]);
printf("\n");
}

printf("output C=A*B \n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) printf("%5f ", c[i][j]);
printf("\n");
}
return 0;
}
0572571NGNG
#define N 2
は 5 にしといてね。
0573564NGNG
模範解答ありがとうございます!
0574デフォルトの名無しさんNGNG
>>561
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=92&fi=no

>printf("input A %5d\n",a[i][j]);
この行は
printf("input A[%d][%d]\n",i ,j);
っていう意図かな
それとBを入力させてない
>>561の最後の行の
>for(j=0; j<=4; j++);
はセミコロンが邪魔
あと"{"と"}"の数がおかしい
0575デフォルトの名無しさんNGNG
j <= 4 と書くのは一般的なの?
0576570NGNG
double a[N + 1]

+1必要なかったな。
0577デフォルトの名無しさんNGNG
先生方お願いします!
複素数の問題なんですが、絶対値, 偏角を与えて1つの複素数を返す関数を作りたいんです。
関数tan(タンジェント、角度が与えられたときに傾きを返す)を使います。
お願いします!
0578デフォルトの名無しさんNGNG
>>577
real = absVal * cos(theta);
imag = absVal * sin(theta);
だろうからtan()は使わんと思うが。
0579デフォルトの名無しさんNGNG
>>578
tanからcos,sinを求めるとかw
0580デフォルトの名無しさんNGNG
Cじゃなくて高校の数学の話のような気がする
0581デフォルトの名無しさんNGNG
複素数にはふたつの要素があるんだが
結果を返すとき
構造体があってそれを用いて返り値として渡すのか
引数としてポインタを渡すのかどうなのかわからんのだが
0582デフォルトの名無しさんNGNG
どなたかお願いします。
gmpライブラリを用いて
3+4を出力するプログラムを作ってもらえませんか?
3と4はgmp数でおねがいします。

gmpライブラリを使おうとかれこれ
2週間たちました。
いろいろなとこを巡ってみました。
でも、だめでした
どうかどうかおしえてください。
お願いします。
0583デフォルトの名無しさんNGNG
はじめましてC言語でプログラムに悩んでるので教えてください。

u'' = [ u, v, u' , v']
v'' = [ u, v, u' , v']

'は1回微分です。微分は時間で行っています。
上の式を4次のルンゲクッタでルンゲクッタでu'、v'を
求めたいのですがどうすればいいでしょうか?
0584デフォルトの名無しさんNGNG
>>583
まず日本語を整理しよう。
Runge-Kuttaは4次に限定すれば非常に単純だけど、583みたいに
記号の定義に不備がある場合には解けないよ。
0585デフォルトの名無しさんNGNG
>>584
すみません、いろいろ考えていたらおかしくなっていました^^;
とりあえず2回微分のu、vから一回微分のu、vを求めたいです。
よろしくお願いします。
0586デフォルトの名無しさんNGNG
>>582
http://na-inet.jp/tutorial/
gmp-mpz.c
0587577NGNG
ひいぃぃーーー!恥ずかしい!
tanを使うものとばかり思ってました!
ひいぃぃぃーーー先生方、有難うございました。
ひいいーーーー
0588デフォルトの名無しさんNGNG
>>583
マルチ野郎は質問する資格なんてありませんよ?消えてください。
0589デフォルトの名無しさんNGNG
πの値を小数点以下1000桁まで求めよ。
π/4 = 4*arctan(1/5)-arctan(1/239)
  arctan(1/m) = 1/m - 1/3m^3 +1/5m^5 - 1/7m^7 + ・・・・
stdio.h以外のヘッダファイルを使ってはいけないそうです。
0590デフォルトの名無しさんNGNG
>>586さんありがとうございます。
これを参考にプログラムを作っていきたいと思います。
hellowとあるのが少し不安ではありますが・・・
0591助けてくださいNGNG
#include <stdio.h>
int inc1(int);
int inc2(int *);
void main(void)
{
int a=2;
printf("inc1(a)=%d, ", inc1(a));
printf("a=%d\n",a);
printf("inc2(a)=%d, ", inc2(&a) );
printf("a=%d\n",a);
}
int inc1(int i)
{
return ++i;
}
int inc2(int *i)
{
return ++(*i);
}
<結果>
inc1(a)=3, a=2
inc2(a)=3, a=3
<理由>
関数inc2の方は、借引数をポインタとして宣言していて結果を呼び出し側
に送っている。よって&aには関数inc2でa(=2)に+1された3が割りあれたれている。
一方、関数inc1の方は、先にprintf("a=%d\n",a)のaに2が入り次に関数inc1の処
理によってa(=2)に+1された3がinc1(a)に送られている。

結果が上のようになった理由が間違ってて再提出をくらいました。
理由を教えてください
0592デフォルトの名無しさんNGNG
c++。
実数型の変数に長辺と短辺の長さを入力し、その長さ
の辺を持つ長方形の周りの長さと面積を求め画面に表示させる
プログラムを作れ。

長辺と短辺の入力の違いはあるのですか?
0593デフォルトの名無しさんNGNG
>>591
関数呼び出しというプロセスを理解していないからだと思われ。
0594デフォルトの名無しさんNGNG
>>592
入力の値の大きい方が長辺で、小さい方が短辺だろ。
つか、プログラム以前の問題が君の脳にあるようだ。
0595デフォルトの名無しさんNGNG
>>591
1.日本語がおかしい
2.関数に送られているとか、送っているとかいう意味不明な用語
3.つまり、あんたの理解不足
0596デフォルトの名無しさんNGNG
>>595
ハァ?
お前の頭が一番おかしいと思われー
0597助けてくださいNGNG
>593
私の<理由>のどこがおかしいですか?
指摘してください
0598デフォルトの名無しさんNGNG
>>597
おかしいところを抜き出してみました。
>借引数をポインタとして宣言していて
>結果を呼び出し側に送っている。
>よって&aには関数inc2でa(=2)に+1された3が割りあれたれている。
>先にprintf("a=%d\n",a)のaに2が入り
>次に関数inc1の処理によってa(=2)に+1された3がinc1(a)に送られている。
0599デフォルトの名無しさんNGNG
>>596=591
>&aには関数inc2でa(=2)に+1された3が割りあれたれている。

&aの値は変更されません。
意思を伝える程度の言語能力を保有していないのなら、
自分の言葉でアレンジせずに問題文をそのまま書きましょう
0600デフォルトの名無しさんNGNG
>>589
その問題、演習レベルの課題ではないな。
多数桁演算ルーチンを作らないと計算が大変だ。
0601デフォルトの名無しさんNGNG
>>600
オレは昔まったく同じ問題を演習で解いたが...
0602助けてくださいNGNG
このスレの人は無知でスキルも無いようですね。
こんな人達に頼んだ自分が馬鹿でした。
二度と来ません。さようなら
0603デフォルトの名無しさんNGNG
>>591, >>597
君の<理由>の文章に含まれている単語単語、単語の組み合わせはおかしくなさそうだが、文章としてはおかしい。
だいたいにして、処理の流れの順番に関数を説明していない時点でおかしい。
0604デフォルトの名無しさんNGNG
>>601
え、ホントに? 
収束演算だから上位桁を確定させながら、下位桁だけを演算し続けるのかな。
0605!595NGNG
>>602は煽れば誰かがむきになって正解を書くと
思っているようです。

>>603
いや、単語もおかしいだろ。
>>595を参照。
0606デフォルトの名無しさんNGNG
>>602
煽りが下手くそ。
0607デフォルトの名無しさんNGNG
>>605
処理 とか ポインタ とか 関数 とかの単語は合ってる。
でもよくよくみたら、借引数 とか 割りあれたれている とか間違ってるな。
うん、訂正。

>>591
すべてがダメ。
0608デフォルトの名無しさんNGNG
ちなみに変な暇人がいるみたい…
そんなことして何が楽しいんだろw
0609601NGNG
>>604
>>589はマチンの公式ってやつだよね。
1000桁まで求めるんだったら πx10^1000 の整数部分を
求めればOKでしょう。
0610デフォルトの名無しさんNGNG
>>608
煽りが下手くそ。
0611デフォルトの名無しさんNGNG
スイカップがウルルンでてる
0612デフォルトの名無しさんNGNG
>>607
「送る」も聞いたことない
0613デフォルトの名無しさんNGNG
↓のソースは入力された文字を逆に表示させるプログラムなんですけど、
文字列の長さを判定せずに逆順に表示させる方法ってあるんですか?
----
#include <stdio.h>

/* 入力した文字列を順番どおりに出力する */
void putstring(const char *str){
int i=0;
while(*(str+i) != '\0'){
putchar(*(str+i));
i++;
}
}
void putreverse(const char *str){
int i, length=0;
for(i=0; *(str+i)!='\0'; i++) length++; /* 文字列の長さを求める */
for(i=length-1; i >= 0; i--) putchar(*(str+i)); /* 逆順に出力 */
}
int main(void)
{
char word[200];

printf("文字列を入力してください\n");
gets(word);
printf("実行結果は以下のとおりです。\n");
putstring(word); printf("\n");
putreverse(word); printf("\n");
return 0;
}
---
0614デフォルトの名無しさんNGNG
>>613
文字列の長さがわからない状態で
最初に表示するべき文字(=文字列の最後の文字)がわかるとでも?
0615デフォルトの名無しさんNGNG
>>614
やっぱりこれしか方法がないんですか・・・どもでした。
0616デフォルトの名無しさんNGNG
>>613
こんなのは?
str2[0] = '\0';
for (i = 0; str[i] != '\0'; ++i) {
  for (j = 0; j <= i; ++j) str2[j + 1] = str2[j];
  str2[0] = str[i];
}
0617デフォルトの名無しさんNGNG
>>613
多少問題有るけど、
ケツのナル文字からstrの指す
文字の先頭のアドレスまでポインタ比較しながら
表示させれば?
0618デフォルトの名無しさんNGNG
>>601,609
arctanの項が二つあって収束速度が全然違うので、桁合わせするだけでも面倒ぽいんですけどね。難しく考えすぎてるのかなあ。。。
0619デフォルトの名無しさんNGNG
みんな意地悪だなあ(笑)
>>591
printf("inc1(a)=%d, ", inc1(a));
 関数inc1に変数aを与え、その結果をprintfにより表示する。
printf("a=%d\n",a);
 変数aは関数inc1の影響を受けないので、元の値のままである。
printf("inc2(a)=%d, ", inc2(&a) );
 関数inc2に変数aのアドレスを与え、その結果をprintfにより表示する。
printf("a=%d\n",a);
 変数aは関数inc2の影響により、値が変わる。
したがって、変数をアドレス渡しすることにより、呼び出し側の変数を
呼び出された側の関数で操作することができる。
0620デフォルトの名無しさんNGNG
>617
ケツのナル文字を見つけることと文字数を求めることはほぼ等価だからなぁ。
コードとしては漏れもポインタでループ回すと思う。
0621デフォルトの名無しさんNGNG
>>619
だって、再提出の理由を聞いてるからw
0622デフォルトの名無しさんNGNG
【問題】
次の条件に従ってじゃんけんを行うプログラムをC言語で書け。

【条件】
・ユーザは0,1,2を入力。(getchを使うこと)
・入力は、1:グー、2:チョキ、3:パー、4:プログラムを終了する
・4が入力されるまでは、じゃんけんを繰り返す。
・画面に勝ち、負け、引き分けを表示する。
・if文とswitch文と三項演算子は使用不可。
0623561NGNG
>>570>>571>>574様、素早いご返答、
どうもありがとうございます。
おかげでできました!!
0624デフォルトの名無しさんNGNG
>>622
・ユーザは0,1,2を入力。(getchを使うこと)
・入力は、1:グー、2:チョキ、3:パー、4:プログラムを終了する
0625617 NGNG
>>620

>ケツのナル文字を見つけることと文字数を求めることはほぼ等価だからなぁ。
俺もそう思った。


スタック実装して、やるっていう手もあるけど
メモリ食うのあほだしな。
0626622NGNG
さっきのの問題は解けません!

>>624
thanks.


【問題】
次の条件に従ってじゃんけんを行うプログラムをC言語で書け。

【条件】
・ユーザは0,1,2,3を入力。(getchを使うこと)
・入力は、0:グー、1:チョキ、2:パー、3:プログラムを終了する
・3が入力されるまでは、じゃんけんを繰り返す。
・画面に勝ち、負け、引き分けを表示する。
・if文とswitch文と三項演算子は使用不可。
0627デフォルトの名無しさんNGNG
ポインタの説明をわかりやすく書いてるサイトってないの?
0628デフォルトの名無しさんNGNG
>>626
じゃんけんの対象は?
コンピュータが乱数で対戦するの?
入力履歴からクセを見て対戦するの?
それとも、更に人間に入力させる?
0629デフォルトの名無しさんNGNG
すきなようにしたらええがな
0630デフォルトの名無しさんNGNG
>>626
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void win()
{ printf("勝ち\n"); }
void lose()
{ printf("負け\n"); }
void draw()
{ printf("引き分け\n"); }

void (*table[][3])() = {
    { draw, win, lose },
    { lose, draw, win },
    { win, lose, draw },
};

main()
{
    int ch;
    srand(time(0));
    while (ch = getch(), ch != '3') {
        table[ch - '0'][rand() % 3]();
    }
}
0631601NGNG
>>618
ケタアワセ?
>>600の言うとおり多倍長計算しろってもんだいでしょ。
とりあえず足し算だけ貼っときます。
/*
* a[] <- a[] + b[]
*/
void add(int a[], int b[], int n)
{
int carry = 0;
for (int i = n - 1; i >= 0; --i) {
a[i] += b[i] + carry;
if (a[i] >= 10000) {
a[i] -= 10000;
carry = 1;
}
else
carry = 0;
}
}

/*
* int a[] = { 1234, 5678 };
* int b[] = { 2345, 6789 };
* add(a, b, 2); a <- 12345678 + 23456789
*/
0632デフォルトの名無しさんNGNG
>>630
void (*table[3])() = { draw, win, lose };
table[(rand()%3 + (ch-'0')*2) % 3]();
0633デフォルトの名無しさんNGNG
>>630
英字おされたらこけない?
0634デフォルトの名無しさんNGNG
こけるだろうな
0635デフォルトの名無しさんNGNG
600=618だが、
>>631
なんだ、結局は四則演算の多数桁演算ルーチン作れってことかあ。
わり算ルーチン作るのがめんどいな。

いやね、多数桁演算しないで、arctanをテイラー展開した各項について
適宜10^N倍して収束が終了した整数部を別途保存して削除、小数部のみを生かして
演算の有効桁数を維持しつつ計算するのかと思ったのよ。説明ヘタですまんが。
0636デフォルトの名無しさんNGNG
>>589=618
>>1のラウンジが重い&ソースが長いんで2chあぷろだ借りてきた
http://up.isp.2ch.net/up/53ef3b7b55e6.c
…ら、やっぱり重かったんで、ここに直接載せる。長かったので7行スレみたいに詰めてみた。
#include <stdio.h>
#define L 1000 /* 計算桁数 */
#define N (L/4)+1 /* 配列数 */
#define LIM1 (L/1.39794)+1 /* L/log25…arctan(1/5)の収束範囲 */
#define LIM2 (L/4.7568)+1 /* L/log239^2…同様。logの底は10 */
void add(int*,int*,int*);void sub(int*,int*,int*);void div(int*,int*,int);
void printpi(int*);int main(void){int a[N],b[N],p[N];int i;for(i=0;i<N;i++)
{/* 配列初期化 */a[i]=b[i]=p[i]=0;}/* 16arctan(1/5)を計算する */a[0]=16*5;
for(i=0;i<LIM1;i++){div(a,a,25);div(b,a,2*i+1);if(i%2){/* 奇数項の時 */sub(p,
p,b);}else{add(p,p,b);}}for(i=0;i<N;i++){/* 配列初期化 */a[i]=b[i]=0;}
/* 4arctan(1/239)を計算する */a[0]=4*239;for(i=0;i<LIM2;i++){div(a,a,239);
div(a,a,239);/* div(a, a, 239 * 239); はオーバーフロー */div(b,a,2*i+1);
if(i%2){/* 奇数項の時 */add(p,p,b);}else{sub(p,p,b);}}printpi(p);return 0;}
/* a[] <- b[] + c[]; */
void add(int*a,int*b,int*c){int i,tmp=0;for(i=N-1;i>=0;i--){if((a[i]=b[i]+
c[i]+tmp)>=10000){a[i]-=10000;tmp=1;/* 繰り上げ */}else{tmp=0;}}}
/* a[] <- b[] - c[]; */
void sub(int*a,int*b,int*c){int i,tmp=0;for(i=N-1;i>=0;i--){if((a[i]=b[i]-
c[i]-tmp)<0){a[i]+=10000;tmp=1;/* 繰り下げ */}else{tmp=0;}}}
/* a[] <- b[] / c */
void div(int*a,int*b,int c){int i,mod=0;long tmp;for(i=0;i<N;i++){tmp=mod*
10000L+b[i];a[i]=tmp/c;mod=tmp%c;}}
/* 結果表示 */
void printpi(int *p){int i;printf("%3d.",p[0]);for(i=1;i<N;i++){printf("%04d",
p[i]);}printf("\n");}
インデントし直せば見やすいはずだ。
0637仕様書無しさんNGNG
618だが、
>>636
あ、なるほどね。前の項の演算結果を使ってわり算するのか。
多数桁÷多数桁の実装が面倒だって思っていたよ。霹靂。
0638デフォルトの名無しさんNGNG
皆さんはじめまして、最近Cを始めたばかりの超初心者です。
【西暦何年であるかを読み込んで、それに応じて、対応する世紀、次の世紀、次の世紀までの年数を出力する】
という問題が分かりません。どなたか教えて下さい、お願いします。
0639デフォルトの名無しさんNGNG
>>638
#include <stdio.h>

int main()
{
int nowYear;
int nowCentury, nextCentury = 1;
int cntDownNextCentury;

printf("現在の西暦を入力してください\n");
scanf("%d", &nowYear);
if (nowYear%100 != 0)
{
nowCentury = nowYear/100+1;
}
else
{
nowCentury = nowYear/100;
}
nextCentury += nowCentury;
cntDownNextCentury = 101 - (nowYear % 100);
printf("現在の世紀は: %d 世紀\n次の世紀は: %d 世紀\n次の世紀まであと %d 年", nowCentury, nextCentury, cntDownNextCentury);
return 0;
}
0640639NGNG
ありゃ。1900 とかやるとおかしいな。ちょい修正。

#include <stdio.h>

int main()
{
int nowYear;
int nowCentury, nextCentury = 1;
int cntDownNextCentury;

printf("現在の西暦を入力してください\n");
scanf("%d", &nowYear);
if (nowYear%100 != 0)
{
nowCentury = nowYear/100+1;
cntDownNextCentury = 101 - (nowYear % 100);
}
else
{
nowCentury = nowYear/100;
--nowCentury;
cntDownNextCentury = 1;
}
nextCentury += nowCentury;
printf("現在の世紀は: %d 世紀\n次の世紀は: %d 世紀\n次の世紀まであと %d 年", nowCentury, nextCentury, cntDownNextCentury);
return 0;
}
0641デフォルトの名無しさんNGNG
>>639
早速の対応ありがとうございます。助かりました。
0642デフォルトの名無しさんNGNG
>>640 
わざわざ修正まで、どうもです。
0643デフォルトの名無しさんNGNG
>>640
紀元前は?
0644デフォルトの名無しさんNGNG
負の数を紀元前にでもしてけろ。面倒なのでコードはパス('A`)
0645489NGNG
495さんには悪いんですがプログラムがわかりません。
当方、C言語をならったばっかの大学生なんで。

キーボードから入力された 8個の整数値を配列へ格納し、
値の大きい順に表示をするプログラムを作成せよ。

#include <stdio.h>

main()
{
int i, h,max ;
int a[8],b[8];

for(i = 0; i < 8; i++){
printf("a[%d] = ", i);
scanf("%d",&a[i]);
}

max = a[0];
for(h = 0; h < 8; h++ )
for(i = 0; i < 8; i++ ){
0646489NGNG

if(a[i] > max)
{
max = a[i] && b[h] > a[i];
b[h] >= a[i] max;
b[h] = max;
max <= a[i] && max <= b[h-1];
}
}
printf("値の大きい順に表示\n");
printf("%d\n", max);



課題として配列を用いて作成するレポートです。
for文以下でa[i]、b[h]の配列で表示結果をだしたいのですがif文以下の条件式がよくわからないです。
あとprintfの内容とか。

どうすればいいでしょうか?

0647デフォルトの名無しさんNGNG
意味が分からない。a[] と b[] は何のための配列なのか、それぞれ詳しく説明しろ。
0648デフォルトの名無しさんNGNG
b[8] はいらない。

#include <stdio.h> 
main() { 
  int i, j, tmp; 
  int a[8];
  for(i = 0; i < 8; i++){ 
    printf("a[%d] = ", i); 
    scanf("%d",&a[i]);
    for(j = i; j > 0; j--){
      if(a[j] > a[j - 1]) {
        tmp = a[j];
        a[j] = a[j - 1];
        a[j - 1] = tmp;
      }
    }
  }
  printf("値の大きい順に表示\n"); 
  for(i = 0; i < 8; i++)
    printf("%d\n", a[i]);
  return 0;
}
0649645NGNG
>>647 説明不足ですみません。a,bそれぞれわけようと思いました。
   b[h]がa[i]の最大値がより小さくa[i-1]より大きいとかやってるうちに
   わけわかんなくなって....

>>648 修正ありがとうございます。tmpやj--はどういういまいなんでしょうか?
0650デフォルトの名無しさんNGNG
新しい要素を取得するたびにバブルソートで大きい順に並べ替えている。
tmp はスワップのためのテンポラリ。
j-- はj の値のデクリメント。
0651645NGNG
>>650 バブルソートですか。習ってないですけど教科書にありました。
   スワップはわかりません。どういったものでしょう?
   最後のreturnは繰り返しってことですか?
0652デフォルトの名無しさんNGNG
return 0は正常終了しますよって意味
0653デフォルトの名無しさんNGNG
if 節の後に else break; 入れたい。
0654デフォルトの名無しさんNGNG
定積分の値を台形則を用いて求める

という課題をやっているのですが下記のソースではコンパイルは通るものの
うまく動かないので、何が悪いのか分からず困っています。
使用しているコンパイラはborland c++5.5.1 for win32です。
どうかよろしくお願いします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=68
0655デフォルトの名無しさんNGNG
>>654
コンパイルし直していないが、パッと見てわかる分だけ。
Cで ^ は累乗ではなく XOR を表わす。勘違いはBASICの影響か?
e=10^(-2); → e=10e-2;
(1+4*x-2)^(1/2) → sqrt(1+4*x-2)
ついでなので、一般に累乗を計算する時は pow 関数を使う。
0656デフォルトの名無しさんNGNG
デバッグプリントくらいは覚えろよ。
0657デフォルトの名無しさんNGNG
あげてもた。スマン。
0658デフォルトの名無しさんNGNG
>651
swap
【名】 取り替え、交換(品)
【自動-1】 場所{ばしょ}[もの]を交換{こうかん}する

>tmp はスワップのためのテンポラリ
訳)変数tmpは(a[j]とa[j-1]の)値の入れ替えのために値を一時的に記録しておくためのもの
0659デフォルトの名無しさんNGNG
#include <stdio.h>

int main(){
char *str="language";
char *cpy;
int i=0;
cpy=str;

while(*(str+i)!='\0'){
printf("%c",*(str+i));
i+=2;
}

i--;

while(*(str+i)<=*cpy)
printf("%c",*(str-2));


return 0;
}

languageをlnug(ひとつ飛ばし)と表示させた後、今度は逆から eaga
をポインタを使って表示させるプログラムのはずなのですが、上手にいきません。
どこが悪いのか教えていただけないでしょうか?
0660659NGNG
スイマセン、上げてしまいました。
0661デフォルトの名無しさんNGNG
>>660
while(*(str+i)<=*cpy) 比較してる値はなんだと思う?

printf("%c",*(str-2)); どこをさしてると思う?
0662659NGNG
*(str+i)
はstr[7]番目を指していると思います。
-2でcpyの1番目になるまでstr-2が続くと思ってやってましたが・・・
str[i]の値からどう引いて行くのか分からなかったので、-2を入れました。
0663デフォルトの名無しさんNGNG
デクリメントって知ってる?
0664デフォルトの名無しさんNGNG
while()の終了条件は何なのか、よく考えて書いてみれ。
0665659NGNG
>>660,664
問題が分かりました。
助言どうもありがとうございます。
0666デフォルトの名無しさんNGNG
ファイルの中のそれぞれの図形文字(空白を含む)を数え、
その出現回数の一覧を出力するプログラムを作れ。
という問題が分かりません。
どなたか教えていただけないでしょうか?
0667デフォルトの名無しさんNGNG
またエスパー待ちかよ。
0668デフォルトの名無しさんNGNG
図形文字とは?
0669デフォルトの名無しさんNGNG
>>666
「ヒストグラム」でググってみ
0670デフォルトの名無しさんNGNG
その昔、PC-9801というパソコンで(ry
0671デフォルトの名無しさんNGNG
僕にも、その問題が分かりません。
0672デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void)
{
int month;
printf("何月ですか?:");
scanf("%d",&month);
switch(month){
case 3: printf("春です。\n"); break;
case 4: printf("春です。\n"); break;
case 5: printf("春です。\n"); break;
case 6: printf("夏です。\n"); break;
case 7: printf("夏です。\n"); break;
case 8: printf("夏です。\n"); break;
case 9: printf("秋です。\n"); break;
case 10: printf("秋です。\n"); break;
case 11: printf("秋です。\n"); break;
case 12: printf("冬です。\n"); break;
case 1: printf("冬です。\n"); break;
case 2: printf("冬です。\n"); break;
}
return(0);
}
0673デフォルトの名無しさんNGNG
何月ですか?:神無月
Segmentation Fault
0674デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void)
{
int month;
printf("何月ですか?:");
scanf("%d",&month);
switch(month){
case 3: printf("春です。\n"); break;
case 4: printf("春です。\n"); break;
case 5: printf("春です。\n"); break;
case 6: printf("夏です。\n"); break;
case 7: printf("夏です。\n"); break;
case 8: printf("夏です。\n"); break;
case 9: printf("秋です。\n"); break;
case 10: printf("秋です。\n"); break;
case 11: printf("秋です。\n"); break;
case 12: printf("冬です。\n"); break;
case 1: printf("冬です。\n"); break;
case 2: printf("冬です。\n"); break;
default: printf("そんな月ありませんよ!\n"); break;
}
return(0);
}
0675デフォルトの名無しさんNGNG
【出雲地方限定】
何月ですか?:神有月
Segmentation Fault
0676デフォルトの名無しさんNGNG
以下の文章をC言語で書けと言う問題なんですがうまく出来ないので先輩方の解答を教えてください。

1)N個の要素数をもつ整数型の配列array[N]と数値データの入った変数Xがある。
  配列arrayの中に変数Xと等しいものがあるかを調べる。等しいものがあればその個数を表示する。
2)N子の要素数をもつ整数型の配列array[N]gaある。この配列を逆順に入れ替える。

簡単なプログラムだと思うんですが厨房の私には少し分からない部分があるんでよろしくお願いします。
0677デフォルトの名無しさんNGNG
>>676
型が指定されていないのでとりあえずintにしておくが。

1)
int i,count = 0;
for(i=0;i<N;i++) if(array[N] == X) count++;
if(count > 0) printf("%d個あった\n",count);
else printf("見つからんかった\n");

2)
int i,temp;
for(i=0;i<N/2;i++) {
temp = array[i];
array[i] = array[N-i-1];
array[N-i-1] = temp;
}
0678デフォルトの名無しさんNGNG
>>677
先輩レスサンクスです!!
0679デフォルトの名無しさんNGNG
if(array[i] == X)じゃ?
揚げ足鳥スマソ
0680677NGNG
>>679
いや、揚げ足ではなくて、ちゃんとした指摘。
もうねるぽ
0681デフォルトの名無しさんNGNG
>以下の文章をC言語で書けと

#include<stdio.h>
int main(void){
printf("1)N個の要素数をもつ整数型の配列array[N]と数値データの入った変数Xがある。\n");
printf("  配列arrayの中に変数Xと等しいものがあるかを調べる。等しいものがあればその個数を表示する。\n");
printf("2)N子の要素数をもつ整数型の配列array[N]gaある。この配列を逆順に入れ替える。\n");
return 0;
}

揚げ足取りとはこうやるのだ。
0682デフォルトの名無しさんNGNG
>>681
才能をひしひしと感じるw
0683デフォルトの名無しさんNGNG
あえてprintfつかうなら

#include<stdio.h>
int main(void){
printf("%s\n%s\n%s\n"
,"1)N個の要素数をもつ整数型の配列array[N]と数値データの入った変数Xがある。"
,"  配列arrayの中に変数Xと等しいものがあるかを調べる。等しいものがあればその個数を表示する。"
,"2)N子の要素数をもつ整数型の配列array[N]gaある。この配列を逆順に入れ替える。");
return 0;
}

だよな。
0684デフォルトの名無しさんNGNG
#include<stdio.h>
int main(void){
printf("%s",
"1)N個の要素数をもつ整数型の配列array[N]と数値データの入った変数Xがある。"
"  配列arrayの中に変数Xと等しいものがあるかを調べる。等しいものがあればその個数を表示する。"
"2)N子の要素数をもつ整数型の配列array[N]gaある。この配列を逆順に入れ替える。\n");
return 0;
}
で充分。
0685デフォルトの名無しさんNGNG
俺ならputs()を使う。
0686デフォルトの名無しさんNGNG
そりゃそうだ。
0687654NGNG
>>655さん、 >>656さんありがとうございました。
完成させてからお礼をと一晩頑張ってみましたが未だに思い通りには動いてくれません_| ̄|○

が、大分近づいているように感じるのでもう少し悩んでみようと思います。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=69
0688たすけて!!!NGNG
問題

1. 整数型配列 data 内の, data[0] から data[n-1] までの総和を返す関数 int sum(int data[], int n) を作れ.

2. 整数型配列 data 内の data[0] から data[n-1] までの値の中で,最大の値を返す関数 int max(int data[], int n) を作れ.

3. 整数型配列 data 内の data[0] から data[n-1] までの中で,2番目に大きな値をもつ要素の添字を返す関数 int secondBiggestIndex(int data[], int n) を作れ.

ただし,同じ値の要素が複数個ある場合には,添字の順序で早い方の要素の値がより大きいと見なす.このことにより,2番目の大きい要素,というものが一意的に定まる.次の具体例を参照のこと(2番目に大きいと見なされる要素を赤くしている).
{1, 2, 3, 2, 3, 3}   (三つある3は 3 > 3 > 3 と見なされる)
{1, 3, 2, 1, 2, 1}   (二つある2は 2 > 2 と見なされる)

そして,作った関数を用いて次の計算をして,その結果を求めよ.
0689デフォルトの名無しさんNGNG
すいませんわからないのでお願いします。
C言語でやってください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=225
0690デフォルトの名無しさんNGNG
↑
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=226
0691デフォルトの名無しさんNGNG
int sum(int data[], int n) {
int i, ret = 0;
for (i = 0; i < n; i++) ret += data[i];
return ret;
}
int max(int data[], int n) {
int i = 0, ret = data[i++];
for (; i < n; i++)
if (data[i] > ret) ret = data[i];
return ret;
}
int secondBiggestIndex(int data[], int n) {
int i, top[2];
if (n < 2) {
fprintf(stderr, "ERROR: number of data is less than 2!\n");
exit(1);
}
if (data[0] >= data[1]) {
top[0] = 0; top[1] = 1;
} else {
top[0] = 1; top[1] = 0;
}
for (i = 2; i < N; i++)
if (data[i] > data[top[0]]) {
top[1] = top[0]; top[0] = i;
} else if (data[i] > data[top[1]]) {
top[1] = i;
}
return top[1];
}
最大値の初期化はINT_MIN使ったほうが手続きが統一的にできるんだけど……
0692デフォルトの名無しさんNGNG
>>687
なんか難しく考えすぎてるんじゃないかな。
とりあえず俺が書いたソースを貼っときました(質問ソースを貼るスレに張っちゃった)。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=70
0693692NGNG
あ、分割数固定じゃないのね。失敬。
まあ>>692は参考程度ってことで。
0694デフォルトの名無しさんNGNG
0から4までの数字が書かれた5枚のカードを並び替えてできる
全ての組み合わせを出力するプログラムをつくれ(120通り重複なく)
0695デフォルトの名無しさんNGNG
>>694

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=71
0696お願いしますNGNG
整数 n > 1 に対して、1 / n の小数表示を出力せよ
ただし、1/14 = 0.0'714285' のように循環部分を “'”でくくって表示すること
ヒント
int rr[SIZE], qq[SIZE];
/* 余り 商 */
int n, r; /* 割る数、割られる数(余り)*/
int i; /* 桁位置 */
r= 1; i= 1; /* 小数点以下i桁目に下りてきた余りはr */
--- まだ循環し始めてない
while( !((r==0) || (循環し始めた)) ){
rr[i]= r;
r= r*10;
qq[i]= r/n; r= r%n;
--- 循環し始めたかどうか検査する
i= i+1;
}
0697デフォルトの名無しさんNGNG
文字列を入力してその中から指定した文字列がいくつあるかを表示するプログラムを作りたいんですが頭が弱くてどうにもできません。
文字列から指定した1文字がいくつあるかを表示させるプログラムは自力でできたんですが。。。
#include <iostream>
#include <string>
using namespace std;
int count(char str[], char c[], mojinagasa);
int mojinagasa(char* c);
int main()
{
cout << "文字列を入力してください\n";
char str[100];
cin >> str;
cout << "文字列から探す文字列を入力してください\n";
char ch[100];
cin >> ch;
int nagasa = mojinagasa(ch);
int ans = count(str, ch, nagasa);
cout << str << "の中に" << ch << "は全部で" << ans << "個あります\n";
return 0;
}
int count(char str[], char c[], mojinagasa)
{
この辺からお手上げ。。。(涙
}
int mojinagasa(char* c)
{
int i =0;
while(c[i]!='\0'){
i++;
}
return i;
}
0698デフォルトの名無しさんNGNG
>>697
まず「数え方」をきちんと決めなきゃ。

たとえば、

aaaaa

という文字列の中に aaaa という文字列がいくつ含まれるか。これが明確になるように。
数え方によっては1にも2にもなる。



2chのトップページみてびっくり。
0699デフォルトの名無しさんNGNG
>697
そういえばそうですね。。。
上のだと1か2のどちらでとらえるかによってプログラム変わってきますね、説明不足でスイマセン。
数え方で2になるようなプログラムを作りたいのですがいかがでしょうか。。。
0700デフォルトの名無しさんNGNG
↑ミスりました
>>698です。
0701デフォルトの名無しさんNGNG
なんでstringクラス使わないんだ?
0702デフォルトの名無しさんNGNG
2次元配列に3次正方行列Aの要素(実数)を入力してA×A+3Aを
求めて表示するプログラムを作る。(計算にはfor文を用いること。)
なお、入力は以下のように行うこと。

a11a12a13=1.0 2.0 3.0
a21a22a23=5.0 6.0 3.1
a31a32a33=1.3 2.5 9.0

お願いします。
0703デフォルトの名無しさんNGNG
>>702
メンドクサイので却下。
0704デフォルトの名無しさんNGNG
>>702
入力が限定されているなら答えをコード中に書けば良い。
行列のサイズが限定されているなら数式をコードに書けば良い。
サイズに汎用性を持たせる必要があるならばmalloc()とか。
あと、C.H.の定理を使うのもあり。
0705デフォルトの名無しさんNGNG
こんな感じかな↓(適当、未チェック)。

#include<iostream>
using namespace std;
int main(){
double a[3][3] = { // 行列 A
{1.0, 2.0, 3.0},
{5.0, 6.0, 3.1},
{1.3, 2.5, 9.0}};
double b[3][3]; // 行列 B
// まず、B = A * A
for(int i=0; i<3; ++i)
for(int i=0; i<3; ++i){
b[i][j] = 0;
for(int k=0; k<0; ++k) b[i][j] += a[i][k] * a[k][kj];
}
// B = B + 3A (= A*A + 3A)
for(int i=0; i<3; ++i)
for(int i=0; i<3; ++i){
b[i][j] += 3 * a[i][j];
}
return 0;
}
0706デフォルトの名無しさんNGNG
void* np=0x00000000;
0707デフォルトの名無しさんNGNG
>>697
std::string使うなら

int count_substring(const string& str1, const string& str2) {
int retVal = 0;
for (string::size_type i = 0; i < str1.size(); ++i)
if (str1.find(str2, i) != string::npos)
++retVal;
return retVal;
}
で一応できる。
(比較部分ちゃんと作れば多くの場合でもっと効率的に動くような実装ができるだろうがな)
コンパイル試してないんで動かなかったら悪い。
std::string 使ってよいかわからなかったんでそこまでしなかった。
つーか使わないなら std::cin からの入力は std::getline 使ってバッファ長指定しないと危険だぞ
0708デフォルトの名無しさんNGNG
>701
そういえばそうでした(汗
0709デフォルトの名無しさんNGNG
>>707
どうもありがとうございます。
しかしこのアドバイスに頭がまだついていけていない。。。(汗
もっと勉強して出直してきます。
0710デフォルトの名無しさんNGNG
>709
BM法 KMP法
とかでぐぐると文字列比較のアルゴリズムの解説が見つかると思う。頑張れ。
0711デフォルトの名無しさんNGNG
整数nの値とn個の文字列c0,c1,…cn-1を読み込
んだ後、文字列c0,c1,…cn-1をアルファベット
順に並び替えるプログラムを作成せよ。
この問題をお願いします。
0712デフォルトの名無しさんNGNG
 テキストファイルの各行の最後には、復帰・改行を
示すASCIIコードが付加されている。即ち、ファイル
のもつ行数は復帰・改行の数をカウントすることに
よって計算できる。
上記の性質を利用して、テキストファイルの行数を計
算するプログラムを開発せよ。但し、復帰・改行に対
応するASCIIコードは10である。

上記の問題をお願いします。
0713デフォルトの名無しさんNGNG
>>712
grep -c '\$' file
0714デフォルトの名無しさんNGNG
>712
どぞ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=95
0715714NGNG
int c, lines = 1; に訂正します。一行が最小なので...。
fopen() のエラーチェックはご自分でどうぞ。
0716デフォルトの名無しさんNGNG
あ
0717712NGNG
ありがとうございます。
0718デフォルトの名無しさんNGNG
キーボードからコマンドや必要なパラメータを入力して,
ポインタによるリストデータ構造を操作するプログラムを作成せよ.
ただし,セルに保存するデータを整数(int)型とせよ.

プログラムはLOCATE(x,L) 、FIND(i,L)、LAST(L)、INSERT(x,p,L)、
DELETE(p,L) の関数,およびリストLの要素を順に表示する
関数DISPLAY(L)をすべて含めること.関数の返し値としての
ポインタは,適当な変数 pに保存されるものとせよ.

動作確認は以下のようにして行うこと.

1.キーボードでINSERT関数を選択し,各自の学籍番号の数字部分
 の各文字の値を順にリスト先頭へ追加・登録する.(たとえば,
 学籍番号がH104321なら,「1→2→3→4→0のように入力順と逆順で
 リストに保存される.).
2.キーボードから適切な関数を順次呼出し,リスト内のデータが
 正しい学籍番号順になるように(「0→4→3→2→1」となるように)
 並び替える.つまり,不要なデータの場所を探し(LOCATE関数や
 FIND関数),そのデータを削除し(DELETE関数),追加すべき場所を
 探し(LOCATE 関数やFIND関数),そこにデータを追加(INSERT関数)
 することを繰り返す.このとき,操作を行うたびにDISPLAY関数を
 呼出し,リストの要素がどのように並んでいるか表示させると
 現在の並びが良くわかる.

 上記の問題お願いします。番号は上のでいいです。
0719デフォルトの名無しさんNGNG
>>718
エスパー気分で書いてみる
ただし,使いこなすにもエスパーが必要な諸刃の剣

#include <stdio.h>
typedef struct _l { struct _l *next; int value; } L;
L*LOCATE(int x, L *list){ for(; x!=0&&list; --x,list=list->next); return list; }
L*FIND(int i, L *list){ for( ; list; list=list->next) if( list->value == i ) break; return list; }
L*LAST(L *list){ for( ;list->next; list=list->next); return list; }
L*INSERT(int x, L*p, L*list){ L*prev,*next;
for(prev=NULL,next=list; x!=0&&next; --x,prev=next,next=next->next);
if(prev){ prev->next=p; }else{ list=p; }; p->next=next;
return list;
}
L*DELETE(L*p, L*list){ L*prev,*cur;
for(prev=NULL,cur=list; cur; prev=cur,cur=cur->next){ if(cur==p){ if(prev){ prev->next=cur->next; }else{ list=cur->next; } break; } }
return list;
}
void DISPLAY(L*list){ for( ;list; list=list->next) printf("%d->",list->value); putchar('\n'); }
0720719NGNG
int main(){
char buf[1024]; L*p,*L; int i,x;
while(1){ switch(atoi(getchar())){
case 1://LOCATE(x,L)
fgets(buf, sizeof(buf), stdin); sscanf(buf,"%d %x",&x,&L);
printf("return: %x\n", (int)p=LOCATE(x,L)); break;
case 2://FIND(i,L)
fgets(buf, sizeof(buf), stdin); sscanf(buf,"%d %x",&i,&L);
printf("return :%x\n",(int)p=FIND(i,L)); break;
case 3://LAST(L)
fgets(buf, sizeof(buf), stdin); sscanf(buf,"%x ",&L);
printf("return: %x\n",(int)p=LAST(L)); break;
case 4://INSERT(x,p,L)
fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d %x %x",&x,&p,&L);
printf("return: %x\n",(int)p=INSERT(x,p,L)); break;
case 5://DELETE(p,L)
fgets(buf, sizeof(buf), stdin); sscanf(buf, "%x %x",&p,&L);
printf("return: %x\n", (int)p=DELETE(p,L)); break;
case 6://DISPLAY(L)
fgets(buf, sizeof(buf), stdin); sscanf(buf,"%x",&L);
DISPLAY(L); break;
}}}
0721デフォルトの名無しさんNGNG
>> 704
昔、ケーリーハミルトンの定理か、ハミルトンケーリーの定理かで、もめたことがあったな。
ちなみに私は、ハミルトンケーリー派。
0722デフォルトの名無しさんNGNG
初心者です。
いきなり課題出されて本見ながらやってるんですが明日に間に合いそうにありません。
どうかよろしくお願いします。

1.キーボードから正の整数nを読み込み、最初のn!個の奇数を加算し、ディスプレイ上に書き出す。例えばnが3ならn!=6で、1+3+5+7+9=36。
2.テストの採点をするプログラムを書く。テストは10問で、1問10点の100点満点。1問ごとに、正解ならば1,不正解なら0を入力する。採点結果を点数だけでなく解答状況もわかるようにファイルに出力する。
0723(・∀・)チンポー!!NGNG
(・∀・)チンポー!!
0724デフォルトの名無しさんNGNG
与えられた文字数分だけ文字を1文字ずつ順に表示するprint関数を作成せよ
引数として文字列配列stringと整数nを用いること。ここでstringは
文字列型ポインタ配列の先頭アドレスを、nは表示する文字数を意味する
↑の御願いします
0725デフォルトの名無しさんNGNG
void print(char *string, int n) { printf("%.*s", n, string); }
0726724NGNG
>>725
すみません。全文で御願いします。
とても残りを自分で完成させる力がないのです
0727725NGNG
>>726
print()を作成せよ、との課題では??

#include <stdio.h>
void print(char *string, int n) { printf("%.*s", n, string); }
int main(void) { print("hello, world!\n", 5); return 0; }
0728デフォルトの名無しさんNGNG
課題を解く以前に、ろくに読まずにポストしてるのがバレバレだな。
0729デフォルトの名無しさんNGNG
本気で課題の作成が出来ません
初心者ですがよろしくお願いします!!

1)多項式(1+x)のn乗における、xのi乗の項の係数をP(n,i)としたときに、
キーボードからnを入力して、P(n,0) P(n,1) P(n,2)...P(n,n)
を印刷するプログラムを作成しなさい。
そのプログラムを拡張して、nを入力したら、
0からnまでのP(n,i)を画面に表示するプログラムにしなさい

2)2から100までの素数をすべて印刷するプログラムを作成しなさい。


もうダウンでつ
0730デフォルトの名無しさんNGNG
>>719,>>720 実行できません・・・
0731719NGNG
あなたにはESPが足りないようでつね。
エスパーみたいな質問するから,てっきり使えるものと思ったのになぁ。
常人なら,常人でもわかるように宿題の説明をお願いします。

−ESP入ってる? 「ESP Inside(TM)プログラム」
0732デフォルトの名無しさんNGNG
>>729
まず1)。
#include <stdio.h>

int p(int a, int b)
{
if(b == 0 || b == a) return 1;
return p(a - 1, b) + p(a - 1, b - 1);
}

int main(void)
{
int n, i, j;
printf("n = ?");
scanf("%d", &n);
/* 拡張前 */
printf("拡張前\n");
for(i = 0; i <= n; i++) printf("P(%d,%d) = %d\n", n ,i, p(n, i));
/* 拡張後 */
printf("拡張後\n");
for(j = 1; j <= n; j++) {
printf("P(%d,i)->", j);
for(i = 0; i <= j; i++) printf(" %d", p(j, i));
printf("\n");
}
return 0;
}
0733デフォルトの名無しさんNGNG
>>729
> 2から100までの素数をすべて印刷するプログラムを作成しなさい。

#include <stdio.h>

int is_prime(int n)
{
  int i;
  if (n < 2)
    return 0;
  for (i = 2; i < n; i++) {
    if (n % i == 0)
      return 0;
  }
  return 1;
}

int main(void) {
  int i;
  for (i = 2; i < i++) {
    if (is_prime(i))
      printf("%d\n", i);
}
return 0;
}
0734デフォルトの名無しさんNGNG
>722
とりあえず1。
誤:1+3+5+7+9=36
正:1+3+5+7+9+11=36 だろ。
k個めまでの奇数の総和はk^2になる事は中学生でも分かるが、宿題なんで実直に全部足し算した方がよさげと判断した。

#include <stdio.h>
int main(){
  int i,n=0,fac=0,sum=0;
  printf("input n: ");
  scanf("%d",&n);

  for(i=1;i<=n;i++) fac += i;
  for(i=0;i<fac;i++) sum += 1 + i*2;
  printf("%d\n",sum);
  return 0;
}

2はファイルのフォーマットが分からんとどうしようもないのでパス。
0735デフォルトの名無しさんNGNG
int a[10]
double b[10]
char c[10]

と配列で定義したものの
[0]〜[9]までのメモリ番地を出力するプログラムってどんなですか?
0736デフォルトの名無しさんNGNG
int i;
for (i = 0; i < 10; i++)
  printf("%p\n", &hoge[i]);
0737デフォルトの名無しさんNGNG
>>729
>を印刷するプログラムを作成しなさい。
>そのプログラムを拡張して(中略)を画面に表示するプログラムにしなさい
>をすべて印刷するプログラムを作成しなさい。

これは、「印刷」と「画面への表示」の二つを制御させる問題なのかもよ?
0738デフォルトの名無しさんNGNG
>731 入ってません。
0739デフォルトの名無しさんNGNG
>>731 入ってません。
0740デフォルトの名無しさんNGNG
int num;
scanf("%d",&num);
if( 10 < num)
{
printf("ダメポ");
exit(0);
}


と言う感じで、scanf文で入力したデシマル型の半角数字が、
10以下のみ通る様なプログラムを作りました。
ですが、このscanfの際に「a」等の数字以外の文字を入れると、
オカシナ処理をしてしまいます。
コレを判断するにはどの様な関数を使うべきなのでしょうか?
isdigit等を試したのですが、さっぱり出来ません_| ̄|○
0741デフォルトの名無しさんNGNG
>>740
scanfの戻り値をチェック汁
0742デフォルトの名無しさんNGNG
初心者です。C言語の問題なんですが
西暦を入力して閏年かどうかを求めるプログラムを作りなさい。

という問題なんですがぜんぜんわからないので教えてください。
0743デフォルトの名無しさんNGNG
おお、ナルホド。確かに戻り値が0or1になってました(・∀・)
 
でも、何かまだ出来ません。
半角数字以外を入れるとプログラムが止まってしまいます_| ̄|○
とりあえず詳細はこの様な感じなのですが……

for(;;)
{
         int j = 10;
int test = 0;
test = scanf("%d",&num);
if(num <= j || test != 0)
{
break;
}
printf("\nもう一度入力し直して下さい −> ");
}
0744デフォルトの名無しさんNGNG

コンパイルはできたのですが、実行がされません
以下のようなメッセージが出てきました。

list in: end of file
apparent state: unit 10 named inpdt
last format: list io
lately reading direct formatetd externalIO
Aborted (core dumped)

どうすればいいのか.......
0745デフォルトの名無しさんNGNG
↑Fortranのことです
0746デフォルトの名無しさんNGNG
回答有り難う御座いますた・・・

でも・・・簡潔な返答で・・・プログラム動かないし・・・
分かりません・・・(((゚Д゚;)))) オタスケオタスケ
0747デフォルトの名無しさんNGNG
>>746
誰だよ(w
0748デフォルトの名無しさんNGNG
>>732さん
ほんとありがとうございます!!
でも最初の#include <stdio.h>あたりなんですが、
現講義段階ではファイル名を書いて、次にclass〜って書き方をしてる
状態なので、ちょっと分らないです(すいません…)
0749735=746NGNG
あれ、名前の欄に書いた筈なんだけど・・・忘れたかな・・・
735です。ハイすいませんm
0750デフォルトの名無しさんNGNG
>742
#include<stdio.h>
int year;
printf("年を入れろ。> ");
scanf("%d",&year);
if(year % 4 == 0 && (year%100 != 0 || year%400 == 0) )
printf("%d年はうるう年。",year);
exit(0);
}

キモはif文の条件式。ベン図描いて理解しろ。
4で割り切れる、かつ(100で割り切れない、あるいは400で割り切れる)
年がうるう年。
0751デフォルトの名無しさんNGNG
第一引数の文字列の文字の数だけ1を出力し、その後0をつけ文字列をつなげるプログラムを書け。
例) filename aram tmnet
結果) 11110aramtmnet

与えられたプログラムを変更して書く。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main(int argc,char *argv[]){
int i;
char a[255],n,*l;
n=strlen(argv[1]);

for(i=0; i<n; i++){
a[i] = '1';
}
   a[i+1]= '0';
l=strcat(strcat(a,argv[1]),argv[2]);
printf("%s",&l);
return 0;
}
0752デフォルトの名無しさんNGNG
>750
main(){
はどうしたよw
0753デフォルトの名無しさんNGNG
>>751
int main(int argc, char **argv)
{
char *a;
int l = strlen(argv[1]);
a = malloc(l*2+strlen(argv[2])+2);
memset(a, '1', l);
sprintf(a + l, "0%s%s", argv[1], argv[2]);
printf(a);
return 0;
}
0754デフォルトの名無しさんNGNG
>735
#include<stdio.h>

void main()
{
int c[10]={0} ;
double d[10]={0} ;
char e[10]={0} ;
int i ;

int *pc ;
double *pd ;
char *pe ;


pc=&c[0] ;
pd=&d[0] ;
pe=&e[0] ;

for(i=0 ; i<10 ; i++ )
{
printf("%d " ,pc+i ) ;
printf("%d " ,pd+i ) ;
printf("%d\n" , pe+i) ;
}
自信ねえ……
0755735=746NGNG
誰か、詳しく教えて下さいぃ・・・
一部分抜粋だと意味分からないんです・・・マジです・・・
0756754NGNG
%p使えよ,俺・・・・おrz
0757754NGNG
#include<stdio.h>

void main()
{
int c[10]={0} ;
double d[10]={0} ;
char e[10]={0} ;
int i ;

for(i=0 ; i<10 ; i++ )
{
printf("%p " ,&c[i] ) ;
printf("%p " ,&d[i] ) ;
printf("%p\n" , &e[i]) ;
}
頭悪いぞ俺。

>740
fgets() > 数値判定 > atoi()
か?
0758デフォルトの名無しさんNGNG
>>757
int main(void)ね。
配列初期化する必要ないね。
0759735=746NGNG
745さん 有り難う御座いました。

なんか{}内でファイルが終了しました
とエラーが出ますが、自力でも頑張ります。

ウン(;´Д`)ナントカ・・・ナルカナァ・・・???
0760735=746NGNG
なんとかっつーか
} が1つ足りないだけ?でした。
多分そうだと思います。
動きましたので、それ以外は自分でも分かりません
動いたので良しです。有り難う御座いました。
0761デフォルトの名無しさんNGNG
問題 f(x)=4x-xe^(2x)+2=0の根をニュートン法とラフソン法でもとめろ。ただし、初期値 x1=1、
収束判定定数ε=0.00001とする。また計算回数の違いを考察しろ。


もう明日締め切りなんですけどこれって誰か答えおしえていただけませんかね?
0762デフォルトの名無しさんNGNG
SSEを使う
0763デフォルトの名無しさんNGNG
>>761
ニュートン法とかでぐぐるとモロなのが出てくるんですけど。。
0764デフォルトの名無しさんNGNG
>>761
まだ解決してなかったのか>>433
0765デフォルトの名無しさんNGNG
「フィボナッチ数列の第30項までをCで示させなさい」というのが出ました。
初心者なもので分かりません。お願い致します。
0766デフォルトの名無しさんNGNG
#include <stdio.h>

int main(void)
{
int a = 1, b = 1;
int i;

for(i = 1; i <= 30; i++)
{
printf("第%d項:%d\n", i, a);
b = a + b;
a = b - a;
}
}
0767765NGNG
>766
有難うございます。配列を使うとどうなりますか?
0768デフォルトの名無しさんNGNG
台形の面積を求めたいのですが、コンパイルできません。
10行目でエラーが出てしまいます。
関数は値を返すべき(関数 main )   だそうです。
どなたか申し訳ありませんがお願いします。

#include <stdio.h>
main()
{
float a,b,h,s;
printf("a= \n");scanf("%f",a);
printf("b= \n");scanf("%f",b);
printf("h= \n");scanf("%f",h);
s=(a+b)*h/2;
printf("s=%f\n",s);
}
0769デフォルトの名無しさんNGNG
>>768
}の前に
return 0;
0770デフォルトの名無しさんNGNG
ついでに。scanfの2番目の引数(a,b,h)の前に&をつけること。
0771デフォルトの名無しさんNGNG
>>767
#include <stdio.h>

int main(void)
{
int array[30];
int a = 1, b = 1;
int i;

for(i = 0; i < 30; i++)
{
array[i] = a;
b = a + b;
a = b - a;
}

for(i = 0; i < 30; i++)
{
printf("第%d項:%d\n", i + 1, array[i]);
}
}
0772768NGNG
>769
ありがとうございました。
0773765NGNG
>771
ありがとうございます。
最後の方が負の値になってしまうのは やっぱりしょうがないのですか?
しつこくてごめんなさい
0774デフォルトの名無しさんNGNG
16bitだったノカー
30までだったらlongでいけると思う

#include <stdio.h>

int main(void)
{
long array[30];
long a = 1, b = 1;
long i;

for(i = 0; i < 30; i++)
{
array[i] = a;
b = a + b;
a = b - a;
}

for(i = 0; i < 30; i++)
{
printf("第%d項:%d\n", i + 1, array[i]);
}
}
0775デフォルトの名無しさんNGNG
>>774
printf("第%ld項:%ld\n", i + 1, array[i]);
0776anm7935NGNG
はじめましてanm7935と申します。
SQLのデータ取得について教えて頂けないでしょうか。
宜しくお願いします。


T_NYUKIN(テーブル名)

CRE_YMD(作成日)SEIKYU_NO(請求番号)TOKUI_CD(得意先コード).............

上記のテーブルからCRE_YMD(作成日)を取得してSYSDATEで今日の日付と比較して昨日までの
日付がCRE_YMD(作成日)に入っていれば取得T_NYUKINの行全体を取得してファイルに出力するように
したいのですが、下記の条件式でためしても上手くいきませんでしたどのように改良すれば良いでしょうか。

SQL[0]='\0';
sprintf(SQL,"SELECT CRE_YMD,SEIKYU_NO,TOKUI_CD,NYUKIN_YMD,NYUKIN_KG, KESSAI_YMD"
"FROM T_NYUKIN WHERE CRE_YMD < '%s',SYSDATE");

ORASetPTable(defp,CRE_YMD,SEIKYU_NO,TOKUI_CD,
NYUKIN_YMD,NYUKIN_KG,KESSAI_YMD,NULL);
iFlag = ORASelect(handle,NULL,defp,SQL);
if(iFlag==-1 || iFlag==0){
/* エラー処理2(11) */
writeLogFile(logfp, PAYMENTSELECT,'ファイルの取得に失敗');
/* ログテーブル書き込み */
strcpy(Link_Status,FAILURE);
sprintf(GET_CNT,"%d",iRecCnt);
LinkTable("S",handle,Link_Status,PUT_CNT,GET_CNT);
ORACommit(handle);
return FALSE;
}

0777デフォルトの名無しさんNGNG
C++ですが。関数についてうまくいきません。

時刻x時y分のdy分後の時間を求める関数
void spend (int& x,int& y,int dy) {/*・・・・・・・・・・・・・・*/}
を作成せよ。なお時刻の表現は24時間制であるものとする。したがって
23時59分の2分後の時刻は0時1分とすること。

よろしくお願いします。
0778デフォルトの名無しさんNGNG
>>777
const int allday = 24 * 60;

void spend(int &x, int &y, int dy){
  int m = (x * 60 + y + dy) % allday;
  x = m / 60;
  y = m % 60;
}
0779デフォルトの名無しさんNGNG
>>778
すばやい回答ありがとうございました。
0780デフォルトの名無しさんNGNG
文字列を読み込んだ後、その文字列を反転させて表示するプログラムを作成せよ
0781デフォルトの名無しさんNGNG
void f(char* s)
{
 if (*s) { f(s+1); putchar(*s); }
}

main()
{
 char buf[256];
 fgets(buf, sizeof buf, stdin);
 f(buf);
}
0782デフォルトの名無しさんNGNG
>>776
おいおい,宿題スレでORACLEかよ(w
0783デフォルトの名無しさんNGNG
>>743
test=scanf(...);
↓
char buf[128];
fgets(buf,sizeof(buf),stdin);
test=sscanf(buf,...);
0784デフォルトの名無しさんNGNG
>>718
#include <stdio.h>
typedef struct _l { struct _l *next; int value; } L;
L*LOCATE(int x, L *list){ for(; x!=0&&list; --x,list=list->next); return list; }
L*FIND(int i, L *list){ for( ; list; list=list->next) if( list->value == i ) break; return list; }
L*LAST(L *list){ for( ;list->next; list=list->next); return list; }
L*INSERT(int x, L*p, L*list){ L*prev,*next; for(prev=NULL,next=list; x!=0&&next; --x,prev=next,next=next->next); if(prev){ prev->next=p; }else{ list=p; }; p->next=next; return list; }
L*DELETE(L*p, L*list){ L*prev,*cur; for(prev=NULL,cur=list; cur; prev=cur,cur=cur->next){ if(cur==p){ if(prev){ prev->next=cur->next; }else{ list=cur->next; } break; } } return list; }
void DISPLAY(L*list){ for( ;list; list=list->next) printf("%d->",list->value); putchar('\n'); }
L*CREATE(int i){ L*p=malloc(sizeof(L)); p->value=i; return p; }
int main(){ char buf[1024]; L*p=NULL,*L=NULL; int idx,value,c;
while(1){ printf("1:DISPLAY(), 2:CREATE(value), 3:INSERT(index), 4:LOCATE(index), 5:FIND(value), 6:LAST(), 7:DELETE()\n");
if( (c = getchar()) == EOF ) return 1; fgets(buf, sizeof(buf), stdin);
switch( c - '0' ){
case 1://DISPLAY(L)
printf("DISPLAY\n"); DISPLAY(L); break;
case 2://CREATE(i)
sscanf(buf, "%d",&value); printf("CREATE value:%d\n",value); p = CREATE(value); break;
case 3://INSERT(x,p,L)
sscanf(buf, "%d",&idx); printf("INSERT index:%d\n",idx,value); L=INSERT(idx,p,L); break;
case 4://LOCATE(x,L)
sscanf(buf,"%d",&idx); printf("LOCATE index:%d\n", idx); p=LOCATE(idx,L); break;
case 5://FIND(i,L)
sscanf(buf,"%d",&value); printf("FIND value:%d\n", value); p=FIND(value,L); break;
case 6://LAST(L)
printf("LAST\n"); p=LAST(L); break;
case 7://DELETE(p,L)
printf("DELETE\n"); L=DELETE(p,L); break;
}}}

0785デフォルトの名無しさんNGNG
N元連立一次方程式の解を求めよ。ただし、3≦N≦10で
式の入力はファイルから読み込む。
読込むファイル形式はメモ帳で、以下のような感じ。
例えば、4元方程式で5a+7b+6c+11d=6(以下略)ならば


4.0
5.0 7.0 6.0 11.0 6.0
4.0 6.0 7.0 2.0 15.0
3.0 8.0 5.0 4.0 32.0
7.0 6.0 9.0 13.0 5.0
0786デフォルトの名無しさんNGNG
#include <stdio.h>
#include <gmp.h>
int main(void)
{
mpz_t a, b, c, d, e, f;
mpz_init_set_ui(a, 1000000000000UL);
mpz_init_set_ui(b, 2000000000000UL);
mpz_init(c);
mpz_init_set_ui(d, 3000000000000UL);
mpz_init_set_ui(e, 4000000000000UL);
mpz_init(f);

mpz_add(c, a, b);
mpz_add(f, d, e);
mpz_out_str(stdout, 10, c);
printf("\n");
mpz_out_str(stdout, 10, f);
printf("\n");
mpz_add(f, f, c);
mpz_out_str(stdout, 10, f);
printf("\n");

mpz_clear(a);
mpz_clear(b);
mpz_clear(c);
mpz_clear(d);
mpz_clear(e);
mpz_clear(f);
return 0;
}
0787786続きNGNG
↑とすると
warning: integer constant is too large for "unsigned long"type
warning: large integer implicitly truncated to unsigned type

とでてきて困っています。
どうやったら青天井で数字を扱えるのでしょうか
0788デフォルトの名無しさんNGNG
CやC++で、外部コマンドを実行する方法が分からないんですが
どうやればいいんでしょう?

プログラム中からcmdを実行させたいんですが。。。
0789デフォルトの名無しさんNGNG
>>788
stdlib.h -> system()
0790デフォルトの名無しさんNGNG
system(使いたいコマンド);
なにかインクルードしなきゃいけなかったはずだけどわすれた
コンパイルしたらエラーとしておこってくれると思うから
インクルードせずにコンパイルやってみて
0791デフォルトの名無しさんNGNG
>788,789
以下のようにして、実行できました。
ありがとうございました。
これから、BCBでランチャー作成に挑戦します。

#include<stdlib.h>
int main(void){
system("cmd.exe");
return 0;
}
0792デフォルトの名無しさんNGNG
整数型配列のデータと配列の大きさ(要素の数)を受け取り、配列の中のデータの合計を
計算し合計を返却値(戻り値)で返す関数を作成しなさい。ただしmain関数では適当なデータを初期値代入し、関数を呼び出した後は合計値を出力せよ。
0793デフォルトの名無しさんNGNG
#include<stdio.h>
#define MAX 5

int Sum(int[] , int ) ;

void main(void)
{
int num[MAX]={1,2,4,4,5} ;
printf("合計 %d\n" , Sum(num , MAX));
}
int Sum(int num[] , int max)
{
int i , sum=0 ;
for(i=0 ; i<max ; i++ )
sum+=num[i] ;
return sum ;
}
0794デフォルトの名無しさんNGNG
>>787
釣りか?コンピュータで工夫もせずに好きなだけでかい
桁数の数を扱えるわけがなかろう。自分で多倍長演算の
ルーチンを組みなさい。
0795デフォルトの名無しさんNGNG
Cでアニメーションプログラムを使ってスライダークランク機構のアニメーションプログラムを作成せよという課題が出たのですが、機構学の勉強でいきなりCのプログラムの課題が出て対処できずに困っています。
参考とするプログラムが載せられていたのですが、なぜかこのプログラムが動きませんでした。
参考とするプログラムの間違っている部分共々回答よろしくお願いします。
以下参考プログラムと課題内容です。
参考プログラム
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=72

スライダークランク参考
ttp://o-kan.web.infoseek.co.jp/page_folder/mecpage_folder/cam03.html

課題
*入力クランクの角度Θを2゜きざみで計算して機構を表示する。
*ピストンの速度と加速度を表示する(速度ベクトルを緑色の水平線、加速度を赤色の水平線で描く)部分も付け加えよ。

よろしくお願いします
ちなみにC言語さっぱりです
0796デフォルトの名無しさんNGNG
・問題はしっかりと解いてもらう方にわかりやすいように
 問題文などの省きはやめ、エラーなどは適切に書きましょう
 全文を書いてしまうか、分かりやすくまとめましょう。

・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

入力はどんなデータだ?クランクやピストンの大きさは?その他つっこみ所多すぎ。
0797デフォルトの名無しさんNGNG
C言語にSGLを利用したプログラムで
1次元Random WalkでN人がそれぞれn歩歩いた時の
止まった点xの分布グラフを求めるプログラムを作りなさい。
入力は歩く人数N、歩数n、左に行く確立p(右はq=1−p)、
乱数の種ISEED
出力はxの平均値、xの標準偏差
グラフィックスは歩くひとの歩いた軌跡(N人分)、
xの分布グラフ(平均値の位置と標準偏差の位置も)
と出ました。
どなたか助けてください。
0798デフォルトの名無しさんNGNG
>795
コンパイルが通らないの?プログラム実行時にエラーが出るの?
どこでどういうエラーが出るのかを詳しく。つかエラー文を書き写せ。

なんとなくヘッダファイルかライブラリが足りないに一票。
0799デフォルトの名無しさんNGNG
C言語で複数の文字列を配列に読み込み読み込んだ順に文字列を連結させ新
たな文字列を生成するプログラムを生成せよ。また、得られた文字列の右か
らn文字を取り出す機能もつけよ。その際次の関数を用いるものとする。

strncpy(str,str2,n)
strlen(str1)
この問題をお願いします。
0800デフォルトの名無しさんNGNG
キーボードから入力した数に等しい人数分の年齢、身長、体重を入力してそれを出力するプログラムをつくりなさい。
自分で考えてみたのはこんなんですがエラー10個も出ましたorz。
情けない自分にどうか知恵を。。。

自分で考えたソースです http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_10/test.txt
問題箇所を指摘してもらえるとありがたいです。。
0801デフォルトの名無しさんNGNG
>>800
1)numをhyoujiに渡していないのに使ってる
2)karadaの宣言がない
…とまぁ、これだけの訂正でBCCでは動いてくれたが…
エラー見るだけで充分わかる間違いだぞ?
0802デフォルトの名無しさんNGNG
>>801
1)staticをつかえば渡さなくても扱えるのかとおもったのですが渡さないとだめなんでしょうか?
習ったばっかで使ってみたもので。。。スミマセン。
2)karadaの宣言は person karada;でいいのでしょうか?
後から気づいてやってみたんですがkaradaの宣言がないとでまして。。。

structで宣言した型で配列は作れるのでしょうか?
質問ばかりでスイマセン。。。
0803デフォルトの名無しさんNGNG
>802
1)staticはある枠の中でその変数が静的である事を表す。
 mainの中でstaticな変数があってもmainの外の関数には関係ない。
 喪前の言いたいのはグローバル変数とか、その辺だな。
 望みの動作をするコードは書けるが、そうすべきではない。使う変数は原則として全て渡すべき。
2)yes。つか実際にやってみれ。
3)可能。つか実際に(ry
0804デフォルトの名無しさんNGNG
>803
ありがとうございました。
もうすこし自力で考えて見ます。
0805デフォルトの名無しさんNGNG
>>797
>グラフィックスは歩くひとの歩いた軌跡(N人分)、
>xの分布グラフ(平均値の位置と標準偏差の位置も)
こんな説明で組めるかアホ。
0806デフォルトの名無しさんNGNG
組めるだろ。SGLっつうのをしらんから作る気がしないけど。
0807デフォルトの名無しさんNGNG
>>785

>>418に付け足すこと。
int matrix_sweep(MATRIX mat){
int diagonal;
for(diagonal=0; diagonal<mat.rows; ++diagonal){
int row,col;
DATATYPE coef;
coef = mat.array[diagonal][diagonal];
for(col=0; col<mat.cols; ++col)
mat.array[diagonal][col] /= coef;
for(row=0; row<mat.rows; ++row)
if( diagonal != row ){
coef = mat.array[row][diagonal];
for(col=diagonal; col<mat.cols; ++col)
mat.array[row][col] -= coef * mat.array[diagonal][col];
}
}
return 1;
}
int read_data_matrix(MATRIX *mat, FILE *fp){
int row,col;
char buf[1024];
for(row=0; row < mat->rows; ++row){
char *p;
fgets(buf,sizeof(buf),fp);
for(col=0,p=strtok(buf," "); col < mat->cols; ++col,p=strtok(NULL," "))
mat->array[row][col] = (DATATYPE)(p?atof(p):0);
}
return 1;
}
0808807NGNG
int read_data(MATRIX *a, FILE *fp){
int n;
double dn;
char buf[128];
fgets(buf,sizeof(buf),fp);
sscanf(buf,"%lf", &dn);
n = dn;
matrix_init(a, n, n+1);
read_data_matrix(a, fp);
return 1;
}
int main(){
MATRIX mat;
read_data(&mat,fp);
matrix_sweep(mat);
matrix_print(mat);
return EXIT_SUCCESS;
}
0809デフォルトの名無しさんNGNG
>>795
「参考とするプログラム」をコンパイルするためのPC環境の作成方法を先生に聞いてこい。
0810デフォルトの名無しさんNGNG
3つのサイコロの和を求めるプログラミングをCで。
また、その確率分布、分散も求めよ。
   助けて下さいませ。
0811デフォルトの名無しさんNGNG
>>810
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DICE 6 //サイコロの目の数
#define ROLL 3 //サイコロを振る個数
#define SIZE (DICE * ROLL + 1) //合計値の取り得るサイズ
#define CHECK 10000 //調べる回数
int dice(void)
{return (int)((DICE*1.0)*rand()/(RAND_MAX+1.0)) + 1;}
int main(void)
{
int c, r, i;
int total; //サイコロの合計値
int count[SIZE] = {0}; //それぞれの合計値の回数
srand((unsigned)time(NULL));
for(c=0; c<CHECK; c++)
{
for(r=0, total=0; r<ROLL; r++)total += dice();
count[total]++;
}
for(i=ROLL; i<SIZE; i++)printf("%2d:%d\n", i, count[i]);
return 0;
}
0812デフォルトの名無しさんNGNG
テキストファイルを読み込んで別のファイルに移すプログラムを作成せよ。
このとき、2つのファイル名は各自で指定できるものとせよ。

を おながいすます orz
0813デフォルトの名無しさんNGNG
それくらいは自力でやってもらいたい。
0814デフォルトの名無しさんNGNG
>>812
cygwin をソース込みでインスコして cp のソースをコピれ。
0815デフォルトの名無しさんNGNG
>>812
移すとなると写した上で元のファイルを消さなきゃならんのか。少し手間が増えるなぁ…。
勿論、移される先は元々あるファイルで、その中身は消しちゃいけないんだろ?
0816デフォルトの名無しさんNGNG
教えれ
数を入力して桁数を出力するプログラムをつくれ。
0817デフォルトの名無しさんNGNG
int col = log(n)/log(10)+1;
0818デフォルトの名無しさんNGNG
ありがとう
0819デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fin, *fout;
char buf[1024];
if (argc != 3)
fprintf(stderr, "input error\n"), exit(1);
if ((fin = fopen(argv[1], "r")) == NULL)
fprintf(stderr, "file open error\n"), exit(1);
if ((fout = fopen(argv[2], "w")) == NULL) /*追加なら"a"*/
fprintf(stderr, "file create error\n"), exit(1);

while (fgets(buf, sizeof buf, fin) != NULL)
fputs(buf, fout);

fclose(fin);
fclose(fout);
/*元のファイル消すならremove(argv[1])*/
return 0;
}
0820デフォルトの名無しさんNGNG
>>776
>sprintf(SQL,"SELECT CRE_YMD,SEIKYU_NO,TOKUI_CD,NYUKIN_YMD,NYUKIN_KG, KESSAI_YMD"
>"FROM T_NYUKIN WHERE CRE_YMD < '%s',SYSDATE");
                        ↑
「TO_DATE(」が抜けているのは仕様か?
0821デフォルトの名無しさんNGNG
つか、なんで sprintf 使ってんのコレ??
0822デフォルトの名無しさんNGNG
�@第一引数で指定されたファイルの内容を
第二引数で指定されたファイルへ書き出す。

�Acat コマンドと同様のプログラムを書け。
引数なし→stdinからstdoutへコピー
 引数あり→引数で指定されたファイル全てをstdoutへコピー

�B �@のプログラムと同様であるが、行単位で文字列を逆順にする。

�C �Bと同様であるが、ファイル全体で文字列を逆順にする。
0823812NGNG
>>815
「移す」じゃなく「写す」ですた 失礼しますた orz
ですから元のファイルは残ってて、例えばt1.textの内容がt2.textにコピーされる
というプログラムなのですが、、、
0824デフォルトの名無しさんNGNG
てめえの目は節穴か?
0825デフォルトの名無しさんNGNG
>>823
>>819のじゃだめか?
0826795NGNG
ぐあっ、おかしいと思って問題文よく見直したら
問1:教科書○○ページの問題を解け
問2:問1のモデルにおいて>>795を解け

もうしわけありませんでしたみなさん
何やってるんだ自分_| ̄|○|||

改めて必要なものを追加して書き込ませていただきます

課題
*入力クランクの角度Θを2゜きざみで計算して機構を表示する。
*ピストンの速度と加速度を表示する(速度ベクトルを緑色の水平線、加速度を赤色の水平線で描く)部分も付け加えよ。

動節b(節AB)上の点Aは原点Oを中心に半径OAの円の軌跡Saに沿って反時計回りに等速度10m/sで静止節dに対して運動し、更に節c(スライダー)の中心点Bは節d上を直線の軌跡Sbに沿って運動している
節OA=60mm、節AB=200mm
∠AOB=30゜の時、点Aの加速度=1666.67m/(s^2)、点Bの速度=-6.31m/s、加速度=-1705m/(s^2)、節bの角速度=-43.8rad/s、角加速度=3923.29rad/(s^2)
節OAが円運動をし、節ABのB端にある節cであるスライダーの中心点Bが静止節dの上を移動しています

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=72
>>798
for(td=0; td<361*9; td=td+5)
↑の場所まで来ると処理が止まってしまいます
普段はエラーを吐くのですが、↑の場所ではエラーを吐かずにただ止まってしまいます
この問題を作った教授に見せましたが、「知るか」の一言で終了しました

どうか私を見捨てないでください_| ̄|○|||
0827デフォルトの名無しさんNGNG
>>826
きっと写し間違えてるんでしょう。ほんとは

>for(td=0; td<361*9; td=td+5)
の後ろに { があったり

>ClearScreen()
の近くに } があったりするんじゃないかな?
0828デフォルトの名無しさんNGNG
>>799
1行毎に文字列が1つかかれているstring.datというファイルから文字列を1行ずつ順に取り出し、文字列を作成するプログラムを作ってみました。これで、やっていることはあっていますか?
#define MAXCHAR 1024
#define FILENAME "./string.dat"
void strngets(char *get_str, char *b_str, int n){
char *str; int len=0;
len = strlen(b_str);
str = &b_str[len-n];
strncpy(get_str,str,n);
*(get_str+n)='\0';
}
void stradd(char *a_str, char* b_str){
char *str; int n=0;
static int l=0;
str = a_str+l;
n=strlen(b_str);
b_str[n-1]='\0';
l+=n-1;
strncpy(str,b_str,n);
}
0829デフォルトの名無しさんNGNG
>>799
一度に書き込めなかったので分けて書き込みました。見終ったら828とこれは削除してもいいです。
void main(void){
char *str,str1[MAXCHAR],str2[MAXCHAR],str3[MAXCHAR];
FILE *fp;
printf("(1)\n");
//ファイルから複数の文字列を配列に読み込み読み込んだ順に文字列を連結させ新たな文字列を生成する
if((fp=fopen(FILENAME,"r"))==NULL){
printf("can't open file!!\n");
exit(-1);
}
while(fgets(str2,MAXCHAR,fp)!=NULL){
stradd(str1,str2);//文字列str1の右に文字列str2を連結する
}
printf("(2)\n");
strngets(str3,str1,6);//文字列str1の右から6文字を取り出し文字列str3に格納する
}
0830デフォルトの名無しさんNGNG
>>811
おい,そりゃ度数分布の表示だぞ?
問題は確率分布と分散だろ(w
0831デフォルトの名無しさんNGNG
C言語で共用体を用いて,2バイト整数の上下バイトを入れ換えて
暗号化する関数 short encode(short)というののつくり方を教えて下さい
0832デフォルトの名無しさんNGNG
入れ替えだけなら return v >> CHAR_BITS | v << CHAR_BITS; でいけるけど暗号化はどうすりゃいいんだ?
0833デフォルトの名無しさんNGNG
>>831
short encode(short sh){
  union {short sh; char c[2];} x, y;
  x.sh = sh;
  y.c[0] = x.c[1];
  y.c[1] = x.c[0];
  return y.sh;
}


>>832
入れ替えが暗号化なんだと思われ。
0834デフォルトの名無しさんNGNG
>>832-833
どうもありがとうございます、暗号化は言われてる通り入れ替えのことだと思います
0835デフォルトの名無しさんNGNG
>>824
煽りは来ないでいいよ
0836デフォルトの名無しさんNGNG
>>835
>>824は正論っぽいけど
煽りにマジレス カコワル(ry
0837デフォルトの名無しさんNGNG
835が煽り
0838デフォルトの名無しさんNGNG
>>822
まる1、まる2、まる4の解答を載せといた。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=97&fi=no
0839デフォルトの名無しさんNGNG
関数strcatと同じ機能をもつ関数moji-renketuを作成し動作するか確認せよ
・・・お助けください
0840786=787NGNG
>>794さんいえいえ
#include <gmp.h>
と書いているのですが
すいません言葉足らずでした
gmpライブラリを用いて
数兆の数の和をプログラムに求めさせたいんです。
0841デフォルトの名無しさんNGNG
>>839
char *moji_renketu(char *str1, const char *str2)
{
sprintf(str1, "%s%s", str1, str2);
return str1;
}
0842デフォルトの名無しさんNGNG
char *moji_renketu(char *to, char *from)
{
char *p = to + strlen(to);
while (*p++ = *from++);
return to;
}
0843デフォルトの名無しさんNGNG
>>839
sprintf(str1, "%s%s", str1, str2);
     ↑       ↑

そもそもエスケープシーケンスが表示できなくなるから同じではない。
0844デフォルトの名無しさんNGNG
>>843
はぁ?なんか勘違いしてない?
0845843NGNG
失礼、後半は無視してくれ。
0846デフォルトの名無しさんNGNG
>>840
mpz_set_str(a,"1000000000000",10);
0847デフォルトの名無しさんNGNG
>>846さん
ありがとうございます
これで千兆の乗算とかできそうです。
ほんとにうれしいです
0848デフォルトの名無しさんNGNG
オーイ,遥か後方で解決してない奴らでてこーい。
0849デフォルトの名無しさんNGNG
こんなステキなスレがあったなんて
0850デフォルトの名無しさんNGNG
>>826

>>822
0851デフォルトの名無しさんNGNG
>>822
→>>838
�Bの答えは多分このスレを捜せばありそう

>>826
→>>827
きっと他にもいろいろ写し間違えてる
Line()の引数とか
0852デフォルトの名無しさんNGNG
>>826
速度に+-があるけど,基準もなしに+-付けてどうするんだ?
0853デフォルトの名無しさんNGNG
与えられた文字列より、その文字列の全ての順列を列挙するプログラム
神様、お願いします
0854デフォルトの名無しさんNGNG
>>826
後,課題の文 と その下にある説明 とで用語が一致してない。
入力クランク=OA???
ピストンはBについてるスライダc???

算出可能な余計な数値ゴテゴテつけるより,もっと状況をちゃんと説明しろ。
0855デフォルトの名無しさんNGNG
>>853
文字列中の文字の順列?
それとも,一行1文字列で複数行読み込んで行の順列?
0856rNGNG
「文字列のすべての順列」??
nPn?
0857デフォルトの名無しさんNGNG
>>853
void perm1(char *s, int i)
{
char *p = s + i, t, *c = p;
int len;
if (!*p) {
puts(s);
return;
}
for (; *p; p++) {
t = *p;
*p = *c;
*c = t;
perm(s, i + 1);
}
p = s + i;
len = strlen(p + 1);
t = *p;
memmove(p, p + 1, len);
p[len] = t;
}
void perm(char *s)
{
perm1(s, 0);
}
0858853NGNG
>>855
ABCの場合なら

ABC ACB
BAC BCA
CAB CBA です。

>>857
エラーが出てしまいました(つД`)
0859853NGNG
ttp://pascal.cs.kobe-u.ac.jp/~sumitomo/cong/algodata/
ここにあるんですけど、ぜんぜんわかりません
0860デフォルトの名無しさんNGNG
∋oノハヽo∈
ヽ( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ
ヽ( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ
ヽ( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ
ヽ( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ
( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ
ヽ( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ
ヽ( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ
ヽ( ´∀`)ノ <ぬるぽぬるぽ
  (へ  )     ぬるぽ    
nurupoぬるぽ
nurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽ
nurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽ   
nurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽ
nurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽ
nurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽnurupoぬるぽ
0861デフォルトの名無しさんNGNG
>>858
AABBB だったら?
0862853NGNG
>>861
そ、それは、、、
わかんないよぅ。・゚・(ノД`)・゚・。
0863デフォルトの名無しさんNGNG
C++でマインスイーパを作っています。
パネルを開いたときそのパネルが何も無い場合(1〜8、爆弾以外)
周りの何も無いパネルを開かせる動作がわかりません。

アルゴリズムでも良いのでお願いします。
0864デフォルトの名無しさんNGNG
UUDDLRLRBA
0865デフォルトの名無しさんNGNG
>>863
自分を中心に周りをめくる処理を、再帰的にやっていくんだろうな。
0866デフォルトの名無しさんNGNG
【 問題 】
キーボードより、AとSキーが同時に押された時、「うんこ」と
表示されるプログラムを作成せよ。
なお、Aのみもしくは、Sのみの入力では「ちんこ」と表示すること。
0867デフォルトの名無しさんNGNG
Alt と Shift ?
0868デフォルトの名無しさんNGNG
同時押しを検出する方法はcには備わってない。
WindowsとかOS固有ならあるけどな。
0869857NGNG
>>853
perm(s, i + 1);
は
perm1(s, i + 1);
の間違いでした。
ソース全体を貼っときます。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=98
0870デフォルトの名無しさんNGNG
ビット処理についてですが、課題が出てるんですが何時間考えても分かりません・・。
どなたか教えてください。
課題
データに含まれるビットのうち、最上位にあるものをMSB(Most Significant Bit)
最下位にあるものをLSB(Least Significant Bit)と言う。我々の使用しているC言語
では整数型データeは32ビットであるので、eのMSBをb31,eのLSBをb0であらわす事にする。
  e=b31:b30:b29:...:b2:b1:b0
eに値が読み込まれた時、ビットの値を上位から順に調べてゆき、はじめて1になるビット
のビット名を表示するプログラムを作成しなさい。
0871デフォルトの名無しさんNGNG
>>870
未テストですけど。
for (i = 31; i >= 0; --i) {
if (e & (1 << i)) {
printf("b%dではじめて1になりました。\n", i);
break;
}
}
0872870NGNG
即レス有難うございますm(__)m
試してみます!
0873870NGNG
#include <stdio.h>
void print_bin (unsigned int n)
{
unsigned int mask=0x8000000;
while(mask){
printf("%1d",mask&n ? 1:0);
mask>>=1;
}
printf("\n");
}

main()
{
int i,n;
printf("値を入力\n");
scanf("n=%d\n",&n);
print_bin(n);
for (i = 31; i >= 0; --i) {
if (n & (1 << i)) {
printf("b%dではじめて1になりました。\n", i);
break;
}
}

}
0874870NGNG
値を入力
10
0000100100000010000111101100
b23ではじめて1になりました。


Console>> 何かキーを押すと終了します。



となりました。どこか間違っていますか・・。何度も申し訳ありません。
0875デフォルトの名無しさんNGNG
>>874
scanfと入力が一致してない。
0876デフォルトの名無しさんNGNG
言葉が足りてないな。scanfの書式文字列で指定されている入力と、実際の入力が異なる。
0877デフォルトの名無しさんNGNG
つまり

>scanf("n=%d\n",&n);
を
printf("n=");
scanf("%d\n", &n);
に分割しろってこと
0878877NGNG
もしくは、ソースはそのままで
n=10
みたいに「n=数字」って入力する
0879870NGNG
>>877さん 有難う御座います。試してみます!!
0880デフォルトの名無しさんNGNG
WindowsXP Homeで、スタック領域を増やすにはどうしたらいいですか?

自分で作ったプログラムなんですが、スタックメモリが足りないらしく、エラーが起こります
プログラムを変えないでそのまま実行したいので、スタック領域の増やし方を教えてくださいおねがいします

WindowsXP Home
MS VC++6.0で作成したプログラムです。
0881870NGNG
値を入力
n=10
10
0000000000000000000000001010
b3ではじめて1になりました。


Console>> 何かキーを押すと終了します。

となりましたが、数値(上の場合10)を2度入力しなければなりませんでしたが
どこを直せばよいでしょうか?お手数掛けてすみません。
0882デフォルトの名無しさんNGNG
scanf("%d\n", &n);
の\nを消せばいいのかな。
0883870NGNG
自己解決しました。>>871>>877様本当に有難う御座いました!m(__)m
0884デフォルトの名無しさんNGNG
scanfの使い方を覚えるか、捨てろ。
0885デフォルトの名無しさんNGNG
>>880
[プロジェクト][設定]の[リンク]タブ開いて、カテゴリを[アウトプット]にする。
で、スタックアロケーションの予約のとこに必要な分を入力。C形式の十六進表記可。
まぁ正直、プログラムの構成を見直すことをオススメするが…
0886880NGNG
>>885
ありがとうございました
0887デフォルトの名無しさんNGNG
#ifdef AAA
#define BBB __CCC(D)
#else
#define BBB __CCC(D)
#endif

すいません。これはどういう意味でしょうか?
0888デフォルトの名無しさんNGNG
>>863
再帰コールはマップの広さと爆弾の過密によっては深くなりそうなので、
使わない方がいいかも。
1. std::set型で位置データの集合を格納するコンテナsを用意する。
2. sに、開きたい位置を挿入する。
3. sから位置pを1つ取り出し、取り出した位置pはsから削除する。
4. 位置pを開く。
5. 位置pの周囲に爆弾が無いなら、pの周囲8箇所のうち、開いていない位置をすべてpに挿入する。
6. sが空でないなら、3へ戻る。
7. 終了
0889888NGNG
間違い
5. 位置pの周囲に爆弾が無いなら、pの周囲8箇所のうち、開いていない位置をすべてsに挿入する。
0890デフォルトの名無しさんNGNG
>887
プリプロセッサ。
「プリプロセッサ 入門」とかでぐぐるといい感じの解説が見つかった。
0891デフォルトの名無しさんNGNG
>>887
複数の処理系で使うときで、処理系依存のコードがあるときには#ifdefを使う。

#ifdef __ENGLISH__
printf("Hello how are you?");
#define BBB __CCC(D)
#else ifdef __JAPANESE__
#define BBB __CCC(D)
printf("こんにちわ。ごきげんいかが");
#endif

って感じだな。
0892デフォルトの名無しさんNGNG
>>887 == マルチ
0893デフォルトの名無しさんNGNG
C言語でフォルダを作成してファイルを書き込む時はどうすればよろしいのでしょうか?
たとえばCドライブTESTというフォルダがあったときは
c:\\test\\test.txt
のようにしてできたのですが、
TESTというフォルダがない場合上記の方法ではできませんでした・・・
当方コンパイラはBCC++を使用しております。

0894デフォルトの名無しさんNGNG
>>893
できれば宿題のみにしていただけるとありがたい。
0895デフォルトの名無しさんNGNG
>>893
標準Cではディレクトリを作成する手段は標準ライブラリに含まれなかった。
よって、環境依存なので環境のスレで質問するべし。
0896デフォルトの名無しさんNGNG
>>893

C言語なら俺に聞け!
http://pc5.2ch.net/test/read.cgi/tech/1085806791/

で待ってるYO!
0897へたれ初心者NGNG
実数係数a,b,c(キーボードから読み込む)をもつ2次方程式,
ax^2+bx+c=0
の解を計算するプログラムを作ってください。その際,
a=0の場合や重根の場合などを場合分けして答えを求めるようプログラムを工夫.
(i)a=0のとき,
x=-c/b
(ii)a≠0のとき, 判別式 
D=b^2-4ac
を計算。
 (ii)-1 D=0のとき(重根)
x=-b/2a
(ii)-2  D>0のとき(実根),
    -b±√D
 X= −−−−−
      2a
 (ii)-3  D<0のとき(複素根),虚数単位iを用いて
    -b± i √-D
 x= −−−−−−
      2a
という問題です。if文と算術関数を使え、とか虚数のiは表示されないから
printf文で自分でくっつけろとか色々指示されたんですが、全然わかりません。
どなたか助けて下さい!



0898デフォルトの名無しさんNGNG
>>897
#include <stdio.h>
#include <math.h>

int main()
{
  double a,b,c,D;
  char buf[256];
  各係数の取得
  printf("a?");  fgets(buf,sizeof(buf),stdin);  a = atof(buf);
  printf("b?");  fgets(buf,sizeof(buf),stdin);  b = atof(buf);
  printf("c?");  fgets(buf,sizeof(buf),stdin);  c = atof(buf);

  if(a == 0.0){//1次式の場合
    printf("x = %f\n",-b/c);
  }else{//2次式の場合
    D = b*b - 4*a*c;//判別式の計算
    if(D > 0){//判別式が正のとき=>普通の解の公式
      printf("x = (%f,%f)\n",(-b+sqrt(D))/(2*a),(-b-sqrt(D))/(2*a));
    }else if(D == 0){//判別式が0のとき=>重根
      printf("x = %f\n",-b / (2*a));
    }else{//判別式が負のとき=>解は複素数
      printf("x = (%f%+fi,%f%+fi)\n",-b/(2*a),sqrt(-D)/(2*a),-b/(2*a),-sqrt(-D)/(2*a));
    }
  }
  return 0;
}
0899デフォルトの名無しさんNGNG
>897
そこまでわかっといて何がわからんかがわからん
>898
fgets使うなら、atofでエラーがでないようにしろよ……
0900デフォルトの名無しさんNGNG
>>896
>895が読めないのか?
0901898NGNG
>>899
入力部分はこの宿題の本質とはあまり関係ないと判断したので
入れなかったのでつ。
0902ioNGNG
if (a==0.0){
 if(b!=0.0) printf("x = %f\n",-c/b);
  if (c = 0.0) printf("任意\n");
else printf("なし");

こんな感じだろ。
0903902NGNG
まちがい。
if (a==0.0){
 if(b!=0.0) printf("x = %f\n",-c/b);
 else if (c = 0.0) printf("任意\n");
    else printf("なし");
0904902NGNG
やっぱ↓で。
if (a==0.0){
 if(b==0.0){
  if (c = 0.0) printf("任意\n");
  else printf("なし");
 } else printf("x = %f\n",-c/b);
0905902NGNG
ああ・・・== を = にしてる・・・
スレ汚しすまん。
0906898NGNG
>>902
補足トンクス
0907デフォルトの名無しさんNGNG
二等分法というのを試してみた。
ニュートン法という高級なのもあるらしい。
#define f(t) (a * t * t + b * t + c)
/* f(x) = a * x * x + b * x + c */
/* ya, yb (異符号) は 軸のx座標とそこからの相対距離とするといい模様 */
double hoge(double a, double b, double c, double ya, double yb)
{
double eps = 0.000001;
double w, x;
x = 0;
if ( f(ya) * f(yb) < 0.0) {
if (ya != yb) {
if (ya > yb) {
w = ya;
ya = yb;
yb = w;
}
while (fabs(yb - ya) > eps) {
x = (ya + yb) / 2.0;
if (f(x) == 0.0)
break;
if (f(ya) * f(x) > 0.0)
ya = x;
else
yb = x;
}
}
}
return (x);
}
0908893NGNG
スレ違いな質問ですいませんでした。
0909へたれ初心者NGNG
有難うございます!ええと・・皆さん入力部分で高度な議論なさってましたが
ここはfgetsでなくてscanfでも平気ですよね?
ご苦労様でした。
0910デフォルトの名無しさんNGNG
正整数をキーボードから1個入力し、その各桁の和を表示するプログラム
を作りたいです。例えば123なら1+2+3の計算をして6と表示する。
桁数は決まっていない。お願いします。
0911デフォルトの名無しさんNGNG
>>910
#include <stdio.h>
int main() {
int i = 0;
char *p,buf[80];
p = buf;
gets(buf);
while(*p != '\0') i += *p++ - '0';
printf("%d\n",i);
return 0;
}
0912デフォルトの名無しさんNGNG
>>910
int x[N]; // int が32ビットなら N は 10 かな。
int n = 何らかの方法で正整数を入力

int i = 0;
for(; n != 0; ++i, n/=10) x[i] = n % 10;

in sum = 0;
while(i != 0){ --i; sum += x[i]; }
0913デフォルトの名無しさんNGNG
>>909
>ここはfgetsでなくてscanfでも平気ですよね?

やめとけ

>ご苦労様でした。

無礼者
0914デフォルトの名無しさんNGNG
>>ご苦労様でした。
>無礼者

そうだな。
労をねぎらう所じゃなくって感謝の気持ちを(あるなら)伸べる所だ。
>>909にチョメ。
0915デフォルトの名無しさんNGNG
>>911
さすがにゲッツはやめようぜ。
0916デフォルトの名無しさんNGNG
( ´,_ゝ`)プッ
0917デフォルトの名無しさんNGNG
アスキーコード表を表示させるプログラムを作れという課題が出ました。
アスキーコード表の体裁は、特別見にくくなければ自分なりに工夫して
表示させることになっています。
余裕があれば「あ〜ん」「ア〜ン」の50音のアスキーコードも表示する
ようにしなさいということでした。
よろしくお願いします。
0918デフォルトの名無しさんNGNG
アスキーコードに50音はないだろ?
0919デフォルトの名無しさんNGNG
>>917
#include <stdio.h>
#include <ctype.h>

int main() {
unsigned char c = '\0';
printf(" 0123456789ABCDEF");
while( c <= 0x7f ) {
if( c % 16 == 0) printf("\n%X ",c / 16);
putchar(isprint(c) ? c : ' ');
c++;
}
return 0;
}

工夫の方は自分でやっとくれ。
0920917NGNG
>>918-919
ありがとうございました。
0921デフォルトの名無しさんNGNG
#include<stdio.h>
#include<math.h>

double pex(double v){
double m,g,s,r,ro,h,pa,pao,pex,pr,cd,cl;

m=4240;
g=9.81;
s=16.55;
ro=1.225;
r=1.225;

pao=(-0.0192*pow(v,2)+4.24*v+378)*1000;
pa=pao*pow(r/ro,1.4);
cl=2*m*g/(r*s*pow(v,2));
cd=0.03+0.0454*pow(cl,2);
pr=r*pow(v,3)*s*cd/2;
pex=pa-pr;

return pex; }
0922921NGNG
main(){
double va,vb,vn;

while(pex(va)*pex(vb)>0){

printf("Va=");
scanf("%lf",&va);
printf("Vb=");
scanf("%lf",&vb); }
do{
vn=va-pex(va)*(va-vb)/(pex(va)-pex(vb));

printf("Vn=%lf\nPex(Vn)=%lf\n",vn,pex(vn));

if(pex(vn)*pex(va)>0){
va=vn;
pex(va)=pex(vn); ←
       } 
else{
vb=vn;
pex(vb)=pex(vn);   ←
}
}while(fabs(pex(vn))>0.1);

printf("最大水平速度Vmax=%lf",vn);

return 0;
}

上の←のとこで「左辺値が必要」とエラーがでるのですが誰か解決策を
お願いします。
0923デフォルトの名無しさんNGNG
>>921
>pex(va)=pex(vn);
って何がしたいの?
0924デフォルトの名無しさんNGNG
800で質問してアドバイスを受けた後作り直したプログラムですがこれであってますでしょうか?
自信がないですがどうかよろしくおねがいします。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_11/code.txt
0925デフォルトの名無しさんNGNG
>>924
それでいんじゃね?
(pK+x)->age を pK[x].age にしたほうが分かりやすいと思うけど。
0926デフォルトの名無しさんNGNG
>>924
構造体へのポインタからメンバにアクセスするには->を使うと参考書に書いてあったので->を使ったんですが.でもできるんですね。
->を使うと便利と書いてありますが.とくらべてどう違うのでしょうか・・・?
また構造体へのポインタからメンバにアクセスするときに.を使っても問題ないのでしょうか?
質問が多くてスイマセン。
0927デフォルトの名無しさんNGNG
>>926
p->testと(*p).testはほぼ同じ意味。
0928デフォルトの名無しさんNGNG
>>926
論理を実現するに、適当な方を選べばよいのでは?
前者はポインタpKからx離れた構造体のメンバageで、
後者は配列と見做したpKの要素xのメンバageって感じで。
0929デフォルトの名無しさんNGNG
>>926
こう書くと,"."使って構造体メンバにアクセスするのは面倒。
"->"の方が便利。
for(Person* p=pK; p<pK+rupu1; p++)
{
cout << p-pK+1 << "番目の人のデータは" << "年齢" << p->age << "身長" << p->height << "体重" << p->weight << "です。\n";
}
0930デフォルトの名無しさんNGNG
#include<unistd.>

int main(void){
int m1,m2,c1;

m1=mkdir("test-dir",0700);
printf("m1=%5d\n",m1);

c1=chdir("test-dir");
printf("c1=%5d\n",c1);

m2=mkdir("test-dir",0700);
printf("m2=%5d\n",m2);

}

このプログラムの機能を教えて下さい。
また複数回実行した場合 m1、m2の値が変化する理由を教えて下さい


0931デフォルトの名無しさんNGNG
次は最大値,最小値を求めるプログラムです.maxmin 関数を埋めて,プログラムを実行し
てください.
#include<iostream.h>
void maxmin( int *, int, int*, int*);
void main( void){
int i, max, min, a[10];
i=0;
while( i < 3 ){
cout << i+1 << "番目のデータ入力";
cin >> a[i];
i++;
}

maxmin( a, 10, &max, &min);
cout << "最大=" << max << " 最小=" << min;
}

void maxmin(int *a,int n,int *mx,int *mn){
//埋めていただきたいところ
}
というものです。
よろしくお願いします。
0932デフォルトの名無しさんNGNG
>>930
・問題を書き写すときは正確に。
・環境を明記することも忘れずに。

mkdir()はディレクトリを作成する関数と思われ。
chdir()はディレクトリ(カレントワークディレクトリ、作業ディレクトリなど)を移動する関数と思われ。
m1、m2にはそれぞれmkdir()関数の戻り値が入るが、それはmkdir()関数の実行結果だと思われ。
0933デフォルトの名無しさんNGNG
>>931
void maxmin(int * a, int n, int * mx, int * mn)
{
if (n<= 0) {
return;
}

*mx = a[0];
*mn = a[0];
for (unsigned ic = 1; ic < n; ++ic) {
if (a[ic] > *mx) {
*mx = a[ic];
}
if (a[ic] < *mn) {
*mn = a[ic];
}
}
}
0934デフォルトの名無しさんNGNG
>>933
unsignedよりsize_tの方が適切かと
0935デフォルトの名無しさんNGNG
整数値a,b,cを受け取り、比較して中央になる値を返す関数mid(a,b,c)を作る
お願いします。
0936デフォルトの名無しさんNGNG
>>935
int mid(int a, int b, int c)
{
return (a + b + c) / 3;
}
0937デフォルトの名無しさんNGNG
>>935
int mid(int a, int b, int c)
{
if(b<a && a<c)return a;
if(a<b && b<c)return b;
return c;
}
0938デフォルトの名無しさんNGNG
int mid(int a, int b, int c){
if (((a > b)&&(a < c))||((a > c)&&(a < b))) return a;
else if (((b > a)&&(b < c))||((b > c)&&(a < a))) return b;
return c;
}
0939デフォルトの名無しさんNGNG
解説しよう。
>936は平均値を求めている。
>937は条件が足りない。
>938がまぁ無難なところやね。
私が書くと
int mid(int a, int b, int c)
{
if (a > b && a < c || a < b && a > c) {
return a;
}
if (b > a && b < c || b < a && b > c) {
return b;
}
return c;
}
になるがな。
0940デフォルトの名無しさんNGNG
int mid(int a,int b,int c) { if(a>b&&a<c||a< b&&a>c)return a;if(b>a&&b<c||b<a&&b>c)return b;return c;}
0941デフォルトの名無しさんNGNG
>>927,928,929
ありがとうございました。
0942デフォルトの名無しさんNGNG
入力された値が不正の場合後の処理を飛ばせるようグローバル変数handanを用いてifで処理を分けようとしたのですがhandanの値が0から変わらなくて困っています。
ガソリン量をマイナスで入れてもbuyが実行されマイナスで入力していないナンバーもマイナスで表示されるしガソリン量はおかしな表示で出てくるし。。。
クラスのメンバ関数内ではグローバル関数は使用できないんですかね。。。

↓コードです
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_13/code.txt
0943デフォルトの名無しさんNGNG
>>942
グローバル変数 handan は誰も値をセットしていないようだよ?
Car::setNumGas() のローカル変数 handan には値が入ってるようだけど。
つかグローバルやめれ。
0944デフォルトの名無しさんNGNG
>>943
Car::setNumGas()のhandanはローカル扱いになっているんですか、気づきませんでした。
グローバル変数で扱うには::を使用するみたいですが::handan = 1;でもint ::handan = 1;でもエラーが出るのでどうすればグローバル変数handanに1を入れることができますか?
グローバル使わなければ簡単にできるとおもいますがグローバルを使う練習を兼ねてやっておきたいので。。
0945デフォルトの名無しさんNGNG
問題いきます。


文字列str内の全ての数字文字を削除する関数

void del_digit(char str[ ])

を作成せよ(たとえば "AB1C9" を受け取ったら、 "ABC" とする)。


わかる人にはくだらない問題のような気もしますが、
お願いします。
0946デフォルトの名無しさんNGNG
>>944
使う前に定義(または宣言)白。
0947デフォルトの名無しさんNGNG
>945
void del_digit(char str[])
{
  int i = 0, j = 0;

  while (str[i] != '\0') {
    if (isdigit(str[i]))
      i++;
    else
      str[j++] = str[i++];
  }
  str[j] = '\0';
}
0948デフォルトの名無しさんNGNG
>>945
void del_digit(char str[ ])
{
char* pw = str;
char* pr = str;
do
{
*pw = *pr;
if( !isdigit( *pr ) )
++ pw;
} while( *pr++ );
}
0949947NGNG
#include <ctype.h> を忘れてた。
0950945NGNG
>>947-948

�dです。
0951デフォルトの名無しさんNGNG
>>945
いくらなんでもホントに助かったのならもう少しましな挨拶くらいしておけよ。
#それで何が減るわけでなし。

>>944
グローバル変数なんかの使い方を覚えるよりも先に、
グローバル変数を使わずに問題を解決できるようになる方がいいぞ。
0952945NGNG
>>951
俺的には2chにおける最大級の表敬のつもりだったのだが・・・orz

改めて、

>>947-948
ありがとうございました。
0953デフォルトの名無しさんNGNG
>>944
「int handan;」と書くと変数を宣言することになり、外側で宣言されている同じ名前の変数は隠されてしまう。
Car::setNumGas()内で変数handanを宣言しないよう、「int」は削除し、「handan = 1;」とだけ書く。
そしてソース上の、Car::setNumGas()内で変数handanを使用する位置より前で変数handanを宣言しなければ、
「handan」が変数名であることがコンパイラに伝わらない。
よって、グローバル変数handanの宣言をもっと前へ移動する。
これでまともに動作するようになる。

::演算子は名前空間を解決するもの。
例えばCarクラスのstatic変数として「handan」が宣言されていれば、
「Car::handan」と「::handan」で使い分けが可能。
今の場合は不可。
0954デフォルトの名無しさんNGNG
まあトンってのは豚のことだからな。
これでは失礼と言われても仕方ない。
0955デフォルトの名無しさんNGNG
新スレ立ててくるか。
0956デフォルトの名無しさんNGNG
>>946
int mainの前にint handan=0;でグローバル変数handanを定義していますがこれではだめなのでしょうか?
0957デフォルトの名無しさんNGNG
>>956
だからぁ、コード上で上の方になきゃダメなんだってば。
class Carの定義より上ね。
#つーかグローバル変数やめろや。
0958デフォルトの名無しさんNGNG
>956
勘違いしてました、上の発言無視してください、スイマセン。
0959デフォルトの名無しさんNGNG
新スレ
http://pc5.2ch.net/test/read.cgi/tech/1086612317/
0960デフォルトの名無しさんNGNG
>>957
何度も迷惑かけてスイマセン、ようやく正常に動くものが作れました。
グローバル変数めんどうなんであんまり使わないことにします。

修正したコードです
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_14/code.txt
0961デフォルトの名無しさんNGNG
初心者で宿題ではないのですが教えてくさい。
たとえば>>939さんとかのコードで

int mid(int a, int b, int c)
{
if (a > b && a < c || a < b && a > c) {
return a;
}
if (b > a && b < c || b < a && b > c) {
return b;
}
return c;
}

比較の部分は
if (c > a && a > b || b > a && a > c) {
のように等符号をそろえたほうが見やすいような
気がするのですが、みなさん939さんのようなスタイル
のひとが多いような気がするのですがなんでですか?
0962デフォルトの名無しさんNGNG
>>961
そういうスタイルの人もいるが、漠然と「見やすい」というのは戴けないな。
さて、>>939に替わって答えると、
こっちのスタイルはテストの主体となる変数を左手側に配置するという基準でなされる。
この場合、 a に注目してる間は常に a が左という具合。
ただこの中にも、一次元的な順序を考える場合のみ不等号の向きを右向きに揃えるというような人もいて、
一般的な答えはない、結局スタイルの話になるからな。
0963デフォルトの名無しさんNGNG
>>962
どうもありがとうございます。

>こっちのスタイルはテストの主体となる変数を左手側に配置するという基準でなされる。

あっ、なるほど...

>ただこの中にも、一次元的な順序を考える場合のみ不等号の向きを右向きに揃えるというような人もいて

僕はこっちですね

そういや高校(中学?)のとき、2次関数かなんかで同じような問題(書き方)で
迷ったのを思い出しました。
いっぱいコーディングして、いいスタイルを身につけれるようにがんばります。
ありがとうございましたm(__)m
0964939NGNG
>>963
>962の言うとおり。
敢えて付け加えるなら、||の両側ともaとb、aとcを較べると言うポリシーもある。
#a > b && a < c || a > c && a < bは避けたと言うわけ。
##まぁ、自分のためであって、他人がそう理解してくれることまでは期待していないが。
0965デフォルトの名無しさんNGNG
他のとこでも聞いてますがここでも教えて下さい。

キーボードから5人分の年齢身長および体重を繰り返し構文を用いて年齢は1次元配列(age)身長と体重は2次元配列(date)
に読み込み以下の二つの条件を同時に満足するもののデータ(出席番号・年齢・身長・体重)と人数を画面に表示するプログラム
を作成せよ。
条件
1 身長が全員の平均値よりも高い。
2 体重が全員の平均値以下である。

と言う問題なんですが厨房のオレにはさっぱりで
数値や変数の型などは自由で良いみたいなので模範解答みたいのをお願いします。
よろしくお願いします。
0966デフォルトの名無しさんNGNG
どうどうとまるちッスね
0967デフォルトの名無しさんNGNG
まあまあそう言うな
0968デフォルトの名無しさんNGNG
>>965
#define SUTADIO <stdio.h>
#include SUTADIO
#define mein main
#define mosi if
#define boid void
#define faibu 5
#define wan 1
#define tuu 2
boid mein(){
float caunto;
float age[faibu];
float date[faibu][tuu];
int tincyo_heikin;
int taijuuu_heikin;
for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
printf("年齢 身長 体重? ");
scanf("%f %f %f",&age[(int)(char)(int)caunto],&date[(int)(char)(int)caunto][0],&date[(int)(char)(int)caunto][1]);
}

tincyo_heikin=taijuuu_heikin=tincyo_heikin=taijuuu_heikin=0;
for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
taijuuu_heikin+=date[(int)(char)(int)caunto][1];
tincyo_heikin+=date[(int)(char)(int)caunto][0];
}
taijuuu_heikin=tincyo_heikin=taijuuu_heikin/faibu;
tincyo_heikin=tincyo_heikin=tincyo_heikin/faibu;

for(caunto=0; caunto<faibu; caunto=caunto=caunto+=wan){
mosi(tincyo_heikin<date[(int)(char)(int)caunto][0] && taijuuu_heikin>date[(int)(char)(int)caunto][1]){
printf("年齢%f 身長%f 体重%f\n",*&age[(int)(char)(int)caunto],*&date[(int)(char)(int)caunto][0],*&date[(int)(char)(int)caunto][1]);
}}}
0969デフォルトの名無しさんNGNG
>>968
>int tincyo_heikin;

(;´Д`) ハァハァ…
0970デフォルトの名無しさんNGNG
・入力スペースに文字を7文字7行入力。
↓
・表示ボタンを押すと入力したものが表示スペースに表示される。
↓
・縦、横の倍数指定して拡大ボタンを押すと拡大
っていう処理が作りたいんだけど……
何倍でもできるようにしたいんですが…
だれか助けてください。
0971デフォルトの名無しさんNGNG
だから処理系くらい書けと。
0972デフォルトの名無しさんNGNG
プログラムの処理速度でちょっと困っています。
たとえば以下のようなfunc()を繰り返す行うプログラムがあります。

for ( int i = 0; i < 1000; i++ ) {
for ( int i = 0; i < 10000; i++ )
func();
}

このfunc()は関数の場合かなり処理時間がかかってしまいますが、マクロだと速度が1/10ぐらいになります。
そこで、inlineにしてみましたが、関数と全く処理速度が変わりませんでした。
これはなぜなのかわかる方いましたら教えてください。
ちなみに定義は以下のようにしています。( 中身はあってもなくても同じでした )

void func() {}
#define func() {}
inline void func() {}
0973デフォルトの名無しさんNGNG
>>972
最適化OFFにしてない?
0974デフォルトの名無しさんNGNG
最適化の項目を見たら無効になっていました。
インライン関数の展開をONにしましたが、全く速度が変わりません。
う〜んどうすればいいんでしょうか。
0975デフォルトの名無しさんNGNG
Debug から Release に変更したら inlineが有効になりました。
Debugの状態で inlineを有効にすることはできないんでしょうか。
ものすごく不便;;
0976デフォルトの名無しさんNGNG
>>975
デバッグ中にインラインにすることも出来るが。
たが、デバッグし難くなるぞ。
0977デフォルトの名無しさんNGNG
>>975
inline指定は,コンパイラへのヒントに過ぎない。
inline展開されない可能性もあると心得よ。

これ以上踏み込んだ,強制指定や変換指定は環境依存。
その開発環境のスレいけば〜?
0978デフォルトの名無しさんNGNG
inlineで高速化しようと思っていましたが、違う部分で高速化することにします。
ありがとうございました。
0979デフォルトの名無しさんNGNG
ポインタ変数を使ってお願いしたいのですが。

monaと入力するとanomと出力するプログラム
要するに入力したものを逆の順序で出力するプログラムです。

出来るだけ簡単なプログラムでお願いしたいのですが・・・
時間的にも余裕無く・・・どなたかお願いしますm(;´Д`)m
0980デフォルトの名無しさんNGNG
>>979
適当だからあってないと思う。

char* reverse_string(char* str){
char* result;
int i;
result=(char*)malloc(strlen(str)+1);

for(i = 0, int j=strlen(str) ; j >= 0 ; i++, j--) {
result[i] = str[j];
}

result[i] = "\0";

return result;
}

result[]
0981デフォルトの名無しさんNGNG
ポインタ使うってもしかして
*result++ = *str--ってことか?
0982デフォルトの名無しさんNGNG
>>979
#include <stdio.h>
#include <string.h>
main(){
  int i;
  char buf[256], *p;
  fgets(buf, sizeof(buf) - 1, stdin);
  for(p = buf + strlen(buf) - 2; p >= buf; p--)
    putchar(*p);
}
0983982NGNG
int i; の行はいらない。削除して。
0984979NGNG
すぐに出来てしまうんですね・・・(;´Д`)

有り難うございました。
でもなんか構文エラーでたり>980殿

関数mainにreturn文が無いと言われました>982殿
0985979NGNG
あ、でも今できました>982殿

構造は知らないプログラムの仕方なので良く分かりませんが
完動しているようなので助かりました。有り難うございました。
0986デフォルトの名無しさんNGNG
>>975=978
もしやデバッグ版で公開するつもりか
0987デフォルトの名無しさんNGNG
次スレの方に書き込んだ者ですが、こちらにも…

単一パーセプトロンを使ったやつです。
初期値を変えて学習を行ったときの学習回数と正答率の関係を求めよ。
但し、初期値は非常に小さな値、大きな値に変化させ、学習回数は
各初期値に対して100回とする。
学習パターンは乱数を使って生成する。

次のパターンを認識するパーセプトロンを構成せよ。
http://page.freett.com/sabotenga/c.GIF

重みの更新式:Wi(t+1)=Wi(t)+c*(Te(t)-y(t))*xi(t)

   開始
   |
  ループ1
学習回数だけ繰り返す
   |
入力と教師出力を与える
   |
 出力を計算
   |
 重みを更新
   |
  ループ1
   |
   終了

どうかよろしくお願いします。
0988デフォルトの名無しさんNGNG
>>987
まず、問題を明確に記述する訓練をしような。
意味がわからん。以下補足/つっこみ。

(1)
×単一パーセプトロン
○単純パーセプトロン

(2)
正答率ってなんだ?
テスト問題の分布を仮定しないと意味がないぞ。

(3)
学習のアルゴリズムは?これくらい書け。
たぶんBPだろうけど。

(4)
入力層の素子数は?

(5)
Te(・)って何だ?シグモイドか?

(6)
つっこむときりがない…
0989988NGNG
>正答率ってなんだ?

もしかして教師と同じパターンでテストするの?
そうならば、学習後の正答率は100%だ。
100回で学習が収束するかどうかは学習アルゴリズムと入力層の素子数による。
0990988NGNG
あ、単純パーセプトロンならBPも糞もないか…
すまん。
0991デフォルトの名無しさんNGNG
学習回数が限られてるから収束しているとは限らないが……
つーか学習回数が一定なのに「学習回数と正答率の関係を求めよ」って意味不明。
「初期値と」でもこれだけじゃきついものがある上に考察としてはあまり意味がない。
初期値依存性を確認するくらいの意味はあるだろうが
0992987NGNG
>>991

学習回数と正答率の関係は10回20回30回…毎にテストさせて、その度に
正答率がどうなるか。ということらしいです。

本人が完全に理解できてない為、ご迷惑をおかけしてすみません…
0993デフォルトの名無しさんNGNG
>>992
それより>>988に答えろ。
素子数も関数もわからないし、
正答率は目的関数(というか誤差)の求め方を提示しないと算出しようがない。
たぶん適当な刻み幅で複数の入力を入れて教師との差の2乗和取るんだろうけど
0994987NGNG
(1)
すいません…

(2)
0〜1までの乱数を発生させます。

(3)
修正ヘッブ型アルゴリズム?

(4)
2つです

(5)
Te:教師出力
0995デフォルトの名無しさんNGNG
>>987
何だかなあ・・・。
入出力関数は何だ? ロジスティック関数か? 書いてあるだろ。
(2)も情報が足りなさ過ぎる。誤差関数の定義は書いてないのか?(つーか乱数ってマジ?)
(5)も教師出力=>>987の図のものでいいのか? 手抜きして用語だけ書くな。

文字通りにしかかけないのなら問題文全部写せ。
0996988NGNG
988@自宅残業中です。風呂入った後で電話していました。
読み直すとオレの書き込み穴だらけだ…

>>987
パーセプトロンを扱うってことは学部の実験・演習か大学院ってことかな?
それとも、マニアックな授業?

単純パーセプトロンは数学面では単純だから学部2年までに習う線形代数と解
析学でたいていの答えは出せるよ。そこのところを理解した後だとプログラム
を組むのは簡単だと思う。甘利先生や中野先生の論文を読む必要はない。

馬鹿正直に計算してみ。
君が学部3年以上なら、たぶん理解できる。
0997987NGNG
入力関数はしきい値関数と思われます。

もう、これが全文なんです…
出題しているのはマニアックな教授です…

0998デフォルトの名無しさんNGNG
998
0999デフォルトの名無しさんNGNG
999
1000デフォルトの名無しさんNGNG
gets(1000);
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。