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

ぼるじょあがC/C++の宿題を片づけますYO! 24代目

レス数が1000を超えています。これ以上書き込みはできません。
0001ぼるじょあ ◆yBEncckFOU NGNG
(・3・)アルェー 帰ってきたC++房のぼるじょあですYO!
わからない宿題を片づけますYO!

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

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

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

【歴代スレは>>2-10】
0002デフォルトの名無しさんNGNG
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
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
終了
0004デフォルトの名無しさんNGNG
4gets!
>>1 乙!
0005デフォルトの名無しさんNGNG
  ( ̄ー ̄)ニヤリッ
  ⊂    つヽ    (;⌒`;⌒`)
  ノ ノ ノ \ \  (`⌒ )
 (_ノ、_ノ   ` \\ ( ⌒)
彡        \ ヽヽ (  )
          ヽ  `\从从从从人火
       ゚,.(´;(´⌒(;・"⌒`);`):';⌒`)`)。 
゚,.(´;(´⌒(;・"⌒`);`):';⌒`)`´;(´>>1(;・"⌒`);`):';⌒`)`)..
从从从从゚,.(´;(´⌒(;・"⌒`);`):';⌒`゚,.(´;(´⌒(;・"⌒`);`):';⌒`)`)。.
゚,.(´;(´⌒(;・"⌒`);`):';⌒`)`)。.゚,.(´;(´⌒(;・"⌒`);`';⌒`)`)。.゚,.(´;(´⌒(;⌒`);`):';⌒`)`)。.

 l || ___ ||
 l\     l
 l      |
 l   ___l
0006デフォルトの名無しさんNGNG
くそー。ぼるじょあにならんように早めにスレ立ててたのに。
0007デフォルトの名無しさんNGNG
>>6
Can I fly ?
0008デフォルトの名無しさんNGNG
早速質問です。

{50.0, 75.0, 62.0, 65.5, 80.0, 95.0, 90.5, 87.0, 80.0, 99.5}
この10個のデータを配列に入れ、main関数の中で平均と分散を求めるプログラムを、
ポインタを用いて画面に出力せよ。平均、分散の式は以下のこと。
_ 1 n      1 n    _ 2
x=− x   σ=− (x−x)
  n i=1 i     n i=1  i

です。平均分散の式わかりにくいかと思いますがわかる方回答よろしくお願いします・・
00098NGNG
式がどうしてもずれてしまう・・・とりあえずフィーリングでおねがいします(泣)
0010デフォルトの名無しさんNGNG
まあ分かる人は式を提示されなくても分かるでしょうね。
0011デフォルトの名無しさんNGNG
>>8
#include <stdio.h>

int main()
{
static double data[10] = {50.0, 75.0, 62.0, 65.5, 80.0, 95.0, 90.5, 87.0, 80.0, 99.5};
double sum, avg, var;
double* p;

sum = 0.0;
for( p = data ; p != data+10 ; ++ p ) { sum += *p; }
avg = sum / 10;
var = 0.0;
for( p = data ; p != data+10 ; ++ p ) { var += (*p - avg) * (*p - avg); }
var /= 10;
printf( "平均=%f\n分散=%f\n", avg, var );

return 0;
}
問題文には「プログラムを画面に出力せよ」と書いてあるようだけど、
その辺はフィーリングで解釈してみました(笑)
0012デフォルトの名無しさんNGNG
>>11
なぜにstatic?
0013デフォルトの名無しさんNGNG
保守
0014デフォルトの名無しさんNGNG
キーボードから5人分の年齢身長および体重を繰り返し構文を用いて年齢は1次元配列(age)身長と体重は2次元配列(date)
に読み込み以下の二つの条件を同時に満足するもののデータ(出席番号・年齢・身長・体重)と人数を画面に表示するプログラム
を作成せよ。
条件
1 身長が全員の平均値よりも高い。
2 体重が全員の平均値以下である。

と言う問題なんですが厨房のオレにはさっぱりで
数値などは自由で良いみたいなので模範解答みたいのをお願いします。
よろしくお願いします。
001514NGNG
変数の型も自由です
0016デフォルトの名無しさんNGNG
(´ι _` )アッソ
0017デフォルトの名無しさんNGNG
マルチしてしまってすみません。
0018デフォルトの名無しさんNGNG
>>14
#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]);
}}}
0019デフォルトの名無しさんNGNG
よかったな心優しい人がいて
0020デフォルトの名無しさんNGNG
そこまでするかw
0021デフォルトの名無しさんNGNG
単一パーセプトロンを使ったやつなんですけど…

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

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

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

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

どうかよろしくお願いします。
0022デフォルトの名無しさんNGNG
パターン図の境界線上はどっち?
こういうのがわからんから,図より式で示して欲しい。
0023デフォルトの名無しさんNGNG
printf関数を用いて,整数「255」を8進数,10進数整数,16進数で,
実数「255.0」を浮動小数点,指数形式で各1行ずつ,合計5行に出力するプログラムを作りなさい。
なんですが、
#include<stdio.h>

void main(void)
{
printf("%o\n", 255);
printf("%d\n", 255);
printf("%x\n", 255);
printf("%f\n", 255.0);
printf("%e\n", 255.0);
}

でよろしいでしょうか?
002421NGNG
>>22

X2≦X1+1⇒y=1
X2>X1+1⇒y=0

こんな感じでよろしいでしょうか?
00258NGNG
遅くなりましたが>>11さんありがとうございました!
002623NGNG
できたので、おkです
0027デフォルトの名無しさんNGNG
次スレは、ここですか?
0028デフォルトの名無しさんNGNG
>>21
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=101

cの値次第で収束速度と精度にエライ差が付くわけだが,どうすんだ?
初期値は W0(0)==W1(0)==W2(0)
>>24のパターン式もフィーリングで修正。
0029デフォルトの名無しさんNGNG
前スレ(?)の最後のほうもパーセプトロンなわけだが
003028=22NGNG
>>22からコード書くまでの間に,飯食って,酒呑んできた。
その間に起こったことなど知らん。

003121NGNG
すみません。
こっちには人がいないと思い前スレにも書いてしまいました…

>>28
error C2374: 'i' : 再定義されています。2 回以上初期化されています。
: 'i' の宣言を確認してください。
error C2065: 'lround' : 定義されていない識別子です。
cl.exe の実行エラー

と出るのですが、どうすればよいでしょうか?
0032デフォルトの名無しさんNGNG
>>31
これなら通るだろうよ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=102

初心者なのに古いVC使ってんなぁ。
003321NGNG
>>32
ありがとうございます!
0034デフォルトの名無しさんNGNG
問1 文字列"Osaka1Electro2Communication3University4"を
"test.txt"に書き込むプログラムを作成せよ
問2 ファイル"test.txt"から文字列を読み込み並びを逆にしてファイル"sample.tet"
に出力するプログラムを作成せよ。(test.texは問1のを使用すること)
この2つ御願いいたします
0035デフォルトの名無しさんNGNG
三角形を表現する構造体triangleを定義して、三角形の面積を計算する関数
areaを作成しなさい。なおmain関数ではこの関数が正しく働いていることを
示すようなプログラムを書きなさい。 
という問題なのですが、ど素人の自分にはどうしても分からなくて・・・
どうかよろしくお願いします。
0036デフォルトの名無しさんNGNG
* 最初に起動すると
0.gif
0.gif
0.gif
0.gif
0.gif
1.gif
と表示して終了します。
次に起動すると
0.gif
0.gif
0.gif
0.gif
0.gif
2.gif
と表示して終了します。
0037デフォルトの名無しさんNGNG
* 次に起動すると
0.gif
0.gif
0.gif
0.gif
0.gif
3.gif
と表示して終了します。
* 10回めに起動すると
0.gif
0.gif
0.gif
0.gif
1.gif
0.gif
と表示して終了するプログラムの作り方を教えろ禿
0038デフォルトの名無しさんNGNG
アクセスカウンターか?
0039デフォルトの名無しさんNGNG
#include <stdio.h>
main(){
FILE *f; int count;
f = fopen("data","r");
if( fscanf(f,"%d", &count) == EOF ) count=0;
fclose(f);
f = fopen("data", "w");
fprintf(f, "%d", ++count);
fclose(f);
print_count(count, 7);
}
print_count(int c, int i){
if( i == 0 ) return;
print_count(c/10, --i);
printf("%d.gif\n", c%10);
}
0040デフォルトの名無しさんNGNG
セグメンテーション違反とかいうのがでてしまいます
0041デフォルトの名無しさんNGNG
できましたーーーーーーー!!!!!!!!!!!!
0042デフォルトの名無しさんNGNG
できましたーーーーーーーー
0043デフォルトの名無しさんNGNG
>>36-37
#include <stdio.h>

int main( void )
{
  FILE *iFp;
  char iStr[32] = {'\0'};
  int iCount = 0;
  int i;

  iFp = fopen( "count.txt", "r" );
  if( iFp )
  {
    fscanf( iFp, "%d", &iCount );
    fclose( iFp );
  }
  iCount++;
  sprintf( iStr, "%06d", iCount );

  for( i=0; iStr[i]; i++ )
  {
    printf( "%c.gif\n", iStr[i] );
  }
  iFp = fopen( "count.txt", "w" );
  if( iFp )
  {
    fprintf( iFp, "%d", iCount );
    fclose( iFp );
  }
  return 0;
}
0044デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=75

このプログラムを書き換えてUNIXコマンド"ls"の機能を提供するプログラムを創れ。


お願いします。
0045デフォルトの名無しさんNGNG
MFCで1次元配列の拡大処理を作成しているのですが、うまくいきません。

・1次元で7文字7行入力。
↓
・表示を押すと、入力した7*7が表示ボックスに表示される。
↓(ここまではできました)
・縦・横の倍率を指定して拡大ボタンを押す
↓
・表示ボックスから文字列を全部取ってきて、拡大処理。
↓
・拡大処理結果をまた表示ボックスへ。
っていう処理なんですけど…
初心者なんでぜんぜんわからないんです;;

例>>
12345
123
12
って表示してあった場合、縦・横を2倍と入力すると、
1122334455
1122334455
112233
112233
1122
1122
ってな感じになるんですけど。。。。。。
メモリの確保も使わなくちゃいけなくて…
わからなくて困ってます。。。。
0046デフォルトの名無しさんNGNG
>>45
藻前の言う「拡大」が、
どういう事なのか理解に苦しむ。
0047デフォルトの名無しさんNGNG
例えば
123456って打ってあって、
縦1倍横2倍に設定したら、
112233445566ってなる。


0048デフォルトの名無しさんNGNG
任意中の文字列中の特定文字列が先頭から何番目にあるかを調べるプログラム
先頭からn番目よりm個の特定文字列を取り出すプログラム
任意の文字列を入れ替えるプログラム

この三つが宿題で出されてるんですが、さっぱりの状態です。
どうかどなたか教えてくれないでしょうか
004934NGNG
問1は自力でなんとかできました。問2をお願いしますだ
0050デフォルトの名無しさんNGNG
>>47
縦2倍だとどうなる?

>>48
わけわからん。全文こぴぺ汁
0051p53NGNG
グローバルスコープの変数はどこで定義すればよいのか教えて下さい。
0052デフォルトの名無しさんNGNG
>>51
使う前。関数の外。
005348NGNG
>>50
一応これが全文でして…
0054デフォルトの名無しさんNGNG
>>48の一つ目
int search(const char *str1, const char *str2){
int n = 0, ret;
const char *cp;
cp = str2;

while(*str1){
n++;
if( *str1 == *str2 ){
ret = n;
while(*str1 == *str2){
str1++; str2++; n++;
}
if(*str2 == '\0') return ret;
str2 = cp;
}
str1++;
}
return 0;
}
005548NGNG
>>54
おお!どうもありがとうございます!
0056デフォルトの名無しさんNGNG
>>35
#include <stdio.h>

struct triangle
{
double x1, y1;
double x2, y2;
double x3, y3;
};

double area( const triangle& t )
{
double vx1 = t.x1 - t.x3;
double vy1 = t.y1 - t.y3;
double vx2 = t.x2 - t.x3;
double vy2 = t.y2 - t.y3;
return (vx1 * vy2 - vy1 * vx2) / 2;
}

int main()
{
triangle t;
t.x1 = 0; t.y1 = 0;
t.x2 = 1; t.y2 = 0;
t.x3 = 0; t.y3 = 1;
printf( "%f", area(t) );
return 0;
}
0057デフォルトの名無しさんNGNG
>>45
どの部分を作って欲しいのかわからん。
1次元で7文字7行とは、どういうデータ構造を言っているのかわからん。
表示ボックスとは何なのかわからん。
表示ボックスなるものから文字列を取り出さなければならないのなら、
そのアクセス方法もわからん。
倍率の値もやはり、どこかから取り出さなければならないのか、
それともint型等のデータで与えられているのか、わからん。
扱う文字列は全角なのか半角なのか、それともどちらでもいいのかわからん。
005856NGNG
訂正
return fabs(vx1 * vy2 - vy1 * vx2) / 2;

#include <math.h>
も追加
0059p53NGNG
デフォルトの名無しさん 有難うございました。
0060デフォルトの名無しさんNGNG
>>45
>>57がいうようにようわからんから参考程度
#include <iostream>
#include <string>
using namespace std ;
int main()
{
const char org_str[] = "12345" ;//\n123\n12\n" ;
const char* end_p = &org_str[sizeof( org_str )] ;
int v = 2 ;//倍率縦
int h = 2 ;//倍率横
string new_str ;
string buf ;
for( const char* p = org_str ; p <= end_p ; ++p ){
switch( *p ){
case '\r': case '\n': case '\0':
buf += '\n' ;
for( int j = 0 ; j < v ; j++ ) new_str += buf ;
buf.clear() ;
break ;
default:
for( int j = 0 ; j < h ; j++ ) buf += *p;
}
}
cout << new_str ;
return 0;
}

0061デフォルトの名無しさんNGNG
void strcpy(char *a, char *b)
{
int i;
for (i = 0; b[i] != '\0'; i++)
a[i] = b[i];
}

void strncpy(char *t, char *s, int n)
{
while (n > 0 && *s != '\0') {
*t = *s;
t++;
s++;
n--;
}
}

↑の2つコードの間違いを指摘し修正しろというのなんですがどこが間違ってるのでしょうか?
0062デフォルトの名無しさんNGNG
>>61
ナル文字がコピーされない。
0063デフォルトの名無しさんNGNG
あと、関数名からするとCの標準ライブラリの仕様と合致してないとか?
0064?NGNG
void strcpy(char *a, char *b)
{
int i;
for (i = 0; b[i] != '\0'; i++)
a[i] = b[i];
a[i] = '\0';
}
0065デフォルトの名無しさんNGNG
>>64
それってナル文字で埋めてるだけじゃん。
0066?NGNG
void strcpy(char *a, char *b)
{
int i;
for (i = 0; b[i] != '\0'; i++)
{
a[i] = b[i];
a[i] = '\0';
}
}
0067デフォルトの名無しさんNGNG
>>65
はぁ?
0068デフォルトの名無しさんNGNG
       ________∩_∩
     /   ノ ヽ (  ノ⊂ ̄))) ̄⊃
     /|ヽ  (_ノ  ._ ̄  0'ヽ 0'
    / |ノ  .)    (_)  ヽ  i (   むしゃむしゃしていた。
 ∋ノ |  /――、__  ./(∩∩)  草なら何でもよかった。
      / /| ヽ__ノ   | / ./     今は反芻している。
    | ( | ( ’’’    | ( /
    |__ヽ.L_ヽ        Lヽ_ヽ
''" ""''"" "'''''" ""''"" ''" ""''"" ''" ""''"" ''" ""''"" "'''.
0069デフォルトの名無しさんNGNG
>>61
下の方のはコレでいいのかな・・・・・・
 
void strncpy(char *t, char *s, int n)
{
while (n > 0 && *s != '\0') {
*t = *s;
t++;
s++;
n--;
}
while (n--) *t++ = '\0'; /* sの長さがnより短ければヌル・・・で埋める */
}
 
ヌルポ
0070デフォルトの名無しさんNGNG
nが負の値の時に死にますな。
0071デフォルトの名無しさんNGNG
>>61
間違いは>>62の通りだと思う。

void strncpy(char *t, char *s, int n)
{
for (;n > 0 && *s != '\0';n--)
*t++ = *s++;
*t = '\0';
}

コンパイラは通してないけど、多分大丈夫。
007269NGNG
>>70
おいらへのレスかな?
>while (n--) *t++ = '\0';
条件式って「真:0以外、偽:0」で評価されるから、nが0になったら抜けるから負にならないでしょ?
0073デフォルトの名無しさんNGNG
>>72
関数の引数に指定されたnが最初から負の値の場合だと思われ。
0074デフォルトの名無しさんNGNG
とはいえそこまで考える必要があるのかどうか。
0075デフォルトの名無しさんNGNG
>>73
あ、そういうことか・・・
0076デフォルトの名無しさんNGNG
>>74
nをint型にして条件式でn > 0としてるから考える必要ありそうだね。
 
0077デフォルトの名無しさんNGNG
いや、どのみち領域外の値を指定したらダメなのは同じだから、呼び出し側の責任かなあ、と。
0078デフォルトの名無しさんNGNG
#include<stdio.h>

void convertToUppercase(char*);

int main()
{
char string[]="characters";

printf("変換前の文字列は:%s\n",string);

convertToUppercase(string);
printf("変換後の文字列は:%s\n",string);

return 0;
}


void convertToUppercase(char*s)
{
while(*s!='\0'){
if(*s>='a'&&*s<='z')
*s-=32;
++s;
}
}




このプログラムを改造してアルファベットの大文字を小文字に変更するプログラムを作成してください。
0079ぼるじょあ ◆yBEncckFOU NGNG
>>78
#include <stdio.h>
#include <ctype.h>
void convertToUppercase(char*);

int main()
{
char string[]="characters";

printf("変換前の文字列は:%s\n",string);

convertToUppercase(string);
printf("変換後の文字列は:%s\n",string);

return 0;
}


void convertToUppercase(char*s)
{
for(;*s!='\0';s++)
*s=toupper(*s);
}
0080ぼるじょあ@79 ◆yBEncckFOU NGNG
(・3・)アルェー これじゃ逆だね。

#include <stdio.h>
#include <ctype.h>
void convertToLowercase(char*);

int main()
{
char string[]="FUCKASSHOLE";

printf("変換前の文字列は:%s\n",string);

convertToUppercase(string);
printf("変換後の文字列は:%s\n",string);

return 0;
}


void convertToLowercase(char*s)
{
for(;*s!='\0';s++)
*s=tolower(*s);
}
0081デフォルトの名無しさんNGNG
if(*s>='A'&&*s<='Z')
*s+=32;
0082デフォルトの名無しさんNGNG
現在、Linuxを使ってプログラムを使ってプログラムを作っているのですが、
gettimeofdayを使って現在の西暦を出したいんですが、使い方がよくわかりません。
宜しく、お願いします。
0083デフォルトの名無しさんNGNG
独学者です。そして素人です。
前に3つのさいころがどうのこうのってあったので、2つのでやってみたいと思ったのですが、
全くわかりません・・・。 2つのさいころの和の平均値を求めたいのですが
どのようにしたらよろしいでしょうか? 配列とかわからないので、おべんきょしたいのです。
お願い致します。
0084デフォルトの名無しさんNGNG
>>82-83
できれば宿題に限定していただけるとありがたいのですが。

>>82
そんなもんを使わんでも、timeとか使った方が手軽じゃないかと思いますが。

>>83
おべんきょしたいなら、何か入門書を一冊片づけるのが早いかと思いますが。
0085デフォルトの名無しさんNGNG
>>82
現在の西暦を出すだけならtime()とlocaltime()でできるだろ。
#文字列の加工はstrftime()でいいし。
008683NGNG
>84
そですか・・・ 板汚しすみません。
お勧めの一冊はございますか?
板違いsage
0087デフォルトの名無しさんNGNG
>>80
>>81

�dクス
0088デフォルトの名無しさんNGNG
C++の関数の問題ですがお願いします。

1.
要素数がnであるint型配列xから、値がkである要素の添え字を返却する関数
int search (int x[] ,int n, int k) {/*........*/}を作成せよ。
値がkである要素が存在しなければ-1を返却するものとし、そのような要素が複数
の場合は先頭側の最も小さい添え字を返却すること。

2.
異なるn個の整数からr個の整数を取り出す組み合わせの数nCrを求める関数。
int combination(int n, int r){/*......*/}
を作成せよ。なお、nCrは以下のように定義する。
nCr= n-1 C r-1 + n-1 C r (ただしnC0= nCn = 1, nC1 = n)

上の式は見にくいかもしれませんが、数学のcombinationのことです。
0089デフォルトの名無しさんNGNG
2番やってみた。Cで。

#include <stdio.h>
#include <stdlib.h>
int ft(int n)
{
if (n > 0)
return (n * ft(n - 1));
else
return (1);
}

int ncr(int n, int r)
{
return (ft(n) / (ft(r) * ft(n - r)));
}

int main(int argc, char *argv[])
{
if (argc != 3) {
fprintf(stderr, "usage %s n r\n", argv[0]);
return (0);
}
printf("%d\n", ncr(atoi(argv[1]), atoi(argv[2])));
return (0);
}
0090デフォルトの名無しさんNGNG
c++でないとだめなんですよね。すいません。
0091デフォルトの名無しさんNGNG
>>90

#include <cstdio>
#include <cstdlib>
using namespace std;
int ft(int n)
{
if (n > 0)
return n * ft(n - 1);
else
return 1;
}

int ncr(int n, int r)
{
return ft(n) / (ft(r) * ft(n - r));
}

int main(int argc, char *argv[])
{
if (argc != 3) {
fprintf(stderr, "usage %s n r\n", argv[0]);
return 0;
}
printf("%d\n", ncr(atoi(argv[1]), atoi(argv[2])));
return 0;
}
0092デフォルトの名無しさんNGNG
1番を無理矢理再帰で求めようとしたけど面倒だから止めた
0093デフォルトの名無しさんNGNG
>>88
1.

int search(int x[],int n,int k) {
for(int i = 0;i < n; i++) if(x[i] == k) return i;
return -1;
}

ってかC++なら参照つかうとか、、、
009483NGNG
しつこくてすみません。
気になって2つのさいころの和と確率分布、期待値を求めてみたのですが、
ミスがありまして・・・
手解きを受けたいのですが こちらでもよろしいでしょうか?
0095デフォルトの名無しさんNGNG
うまく動かなかったら、その原因のことをミスというのですよ
0096デフォルトの名無しさんNGNG
>>94
暇だからカモン
009783NGNG
#include <stdio.h>
int main(void){
int a, b, c, dice[6][6];
float i[12], j[13], k[13];
for(c = 1; c <= 11; c++)
i[c] = 0.0;
for(a = 0; a <= 5; a++)
{for(b = 0; b <= 5; b++)
{dice[a][b] = a + b + 2;
for(c = 1; c <= 11; c++)
{if(dice[a][b] == c + 1)
i[c]++;
}
}
}
for(c = 1; c <= 11; c++)
printf("%2dの時の確率は%f\n", c + 1, i[c] / 36);
printf("んで\n");
for(c = 1; c <= 11; c++)
{ j[c] = i[c+1]*c / 36;
k[1] = j[1];
k[c + 1] = k[c] + j[c + 1];
}
printf("期待値は%f\n", k[11]);
return 0;
}
009883NGNG
で打ってみました。
よろしくお願いします。
0099デフォルトの名無しさんNGNG
スレ違いかもしれんが、誰か俺のかわりにアセンブリ言語のプログラム
作ってもらえないか?
またはそういう掲示板を教えてくれ
頼む
0100デフォルトの名無しさんNGNG
>>99
http://pc5.2ch.net/test/read.cgi/tech/1085867636/509
http://pc5.2ch.net/test/read.cgi/tech/1084544243/802
http://pc5.2ch.net/test/read.cgi/tech/1086612317/99
http://pc5.2ch.net/test/read.cgi/tech/1076157613/853
0101きょんちゃんNGNG
すいません この問題お願いします。アルファベット以外の文字を入れたときには
へんかんしないような、プログラムです。判断するプログラムCASLください
0102きょんちゃんNGNG
すいません この問題お願いします。アルファベット以外の文字を入れたときには
へんかんしないような、プログラムです。判断するプログラムCASLください
0103デフォルトの名無しさんNGNG
>>101-102
このスレッドのタイトルを読め。
0104きょんちゃんNGNG
ごめんなさい!はじめて 2ちゃんねるにかきこんでいます!
010596をさしおいてNGNG
#include <stdio.h>

int main(int args, char **argc) {
int a, b, c;
int i[13], s;
for(c = 2; c <= 12; c++) i[c] = 0;

for(a = 1; a <= 6; a++) {
for(b = 1; b <= 6; b++) {
i[a + b]++;
}
}

for(c = 2; c <= 12; c++) printf("%2dの時の確率は%1.5f\n", c, ((float)i[c])/36.0);
printf("んで\n");
s = 0;
for(c = 2; c <= 12; c++) s += i[c]*c;
printf("期待値は%2.5f\n", ((float)s)/36.0);

return 0;
}
冗長だなぁ。と思ってすこし縮めた。
添え字だなんだで混乱するときは、添え字のほうは後回し。目のほうを表すよう優先した。
プログラムは目的があってつくってるんだから、
変数の値も目的に合わせたほうがいいんじゃないかな、と俺は思ふ。
メモリの節約とか「添え字 0, 1 が使われないのは気持悪い」とかは、あとから考えな。
0106デフォルトの名無しさんNGNG
>>105
floatにキャストしても、36.0じゃ結局doubleにされるぞ。
0107デフォルトの名無しさんNGNG
あ、素人だってばれた
010883NGNG
>105
ありがとうございます。
ちょっとまだ私には高度すぎるようですので、一から出直してまいります。
ついでで申し訳ないのですが、何故私のでは期待値がNaNと出てしまうのでしょうか?
0109デフォルトの名無しさんNGNG
俺のではとんでもなくでかい値が出たよ
まぁ単純に計算方法が間違ってんでしょう
j のうち、初期化されてない部分を足し算してない? それとか
なんでこんなまわりくどいことしてるか分からんから これ以上レクチャーしにくいが
011090NGNG
ありがとうございました。
0111デフォルトの名無しさんNGNG
ほぉ 分かりました。ありがとうございました。
スレ汚し失礼いたしました
011261NGNG
遅れましたが、答えてくださった方ありがとうございますた
0113デフォルトの名無しさんNGNG
以下は、標準入力から入力した文字列を逆順にして表示するプログラムの一部である.
関数 reverse の定義を追加し,プログラムを完成させよ.
なお,入力される文字列の長さ(文字数)は任意であるが, 99文字以内であることが保証されているものとする.

/* reverse.c: reverse a given string */
#include <stdio.h>
#include <string.h>
void reverse(char *);/* プロトタイプ宣言 */

int main(void)
{
char str[100];

scanf("%s", str);
reverse(str);
printf("%s\n", str);

return (0);
}


どうかお願いします。
0114デフォルトの名無しさんNGNG
電卓のシュミレーターをC言語で希望
・扱う数値は整数値でよい(実数ならもっといい)
・数値と演算子の区切りは改行(リターンキー)でよい
・対話的に使えるものとするー終了は数値の代わりに一文字
 の入力をすればよい
・演算は加減乗除のみ(ほかのがあってもよい)
・演算子の優先順位は考慮しなくてもよい
・括弧は扱えなくてもよい
・メモリ機能は扱えなくてよい
0115デフォルトの名無しさんNGNG
文字配列nameにキー入力で"Hello"の文字列を代入し、その後、一文字ずつ取り出して
表示させよ。表示には、putcharを用い、文字列の長さは事前にわからないものとし、プログラムの中で調べること。   (先頭1文字ずつ表示し、null文字が見つかったら表示を中止する)

     お助けくださいorz/
0116デフォルトの名無しさんNGNG
>>114
マルチ死ね
http://pc5.2ch.net/test/read.cgi/tech/1085867636/512-524n
http://pc5.2ch.net/test/read.cgi/tech/1033876116/546
http://pc5.2ch.net/test/read.cgi/tech/1086612317/114
0117デフォルトの名無しさんNGNG
>>113
#include <stdio.h>
#include <string.h>
void reverse(char *);/* プロトタイプ宣言 */

int main(void)
{
char str[100];

scanf("%100s", str);
reverse(str);
printf("%s\n", str);

return 0;
}

void reverse(char *s){
int len, t, i;
len = strlen(s) - 1;
for (i = 0; i < len / 2; i++){
t = s[i]; s[i] = s[len - i]; s[len - i] = t;
}
}
0118デフォルトの名無しさんNGNG
>>114
今時、シュミレーターは無いな
0119デフォルトの名無しさんNGNG
>>115
#include <stdio.h>
#include <string.h>
#define N 16
int main(void){
int i, ch;
char name[N];

scanf("%16s", name); /*fgets(buf, sizeof buf, stdin)*/

for (i = 0; name[i] != '\0' && i < N;i++) putchar(name[i]);

return 0;
}
0120119NGNG
多分scanfを使うんだろうけど
コメントのところにミスがあったので一応修正。
buf→name
あとfgetsの場合は改行も読み込むので、0に変えるなどをするべき。
0121117NGNG
%100s→%99sに訂正。 
0122デフォルトの名無しさんNGNG
>>119-120
ありがとうございました。
言われてみたので問題をよく見ると本当に書き損ねてました・・・スイマセン
0123デフォルトの名無しさんNGNG
Cで1次元配列の5つの要素にランダムに5つの数字を格納するには、
どうしたら良いでしょうか?
0124デフォルトの名無しさんNGNG
>>123
そのランダムにいれる数字はどんな値にしたいの?
全部ばらばらなのか
1〜5、0〜4、または適当な5つの決められた数字をかぶりのないように入れたいのか
0125デフォルトの名無しさんNGNG
>>124
ランダムつったらランダムなんだよボケー!!
0126123NGNG
>>124
すいません1〜5までの数字です。
0127デフォルトの名無しさんNGNG
>>125
配列を持ち出してきたからシャッフルのことも考えたんだろ、
つねに質問者が問題に沿った書き方をするとは限らないから
一応聞いてるだけだろ、氏ね。
0128デフォルトの名無しさんNGNG
>>126
かぶりはあり、なし?
0129123NGNG
1〜5の数字を全部つかいきる感じです。
かぶりなしってことです
0130デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5

int main(void){
int s[N], change_index, temp, i;

srand((unsigned)time(NULL));
for (i = 0; i < N; i++) s[i] = i + 1;
for (i = 0; i < N; i++){
change_index = (double)rand() / (RAND_MAX + 1) * N;
temp = s[change_index];
s[change_index] = s[i];
s[i] = temp;
}
for (i = 0; i < N; i++){
printf("s[%d]=%d\n",i , s[i]);
}

return 0;
}

//randのとこは解らなければ change_index = rand() % 5;で
0131130NGNG
最後のコメント一応訂正。
change_index = rand() % N; 
0132デフォルトの名無しさんNGNG
>>130
RAND_MAX の値によってはオーバーフローするから、
(RAND_MAX + 1) の部分は ((double)RAND_MAX + 1) にしないといけない。
0133123NGNG
>>130
ありがとうございます。
defineをつかわないで直接5でも問題ないですか?
0134デフォルトの名無しさんNGNG
>>132
なるほど、勉強になった。
>>133
別に動作には問題はない。
0135デフォルトの名無しさんNGNG
>>132
>(RAND_MAX + 1) の部分は ((double)RAND_MAX + 1) にしないといけない
実は(RAND_MAX + 1)が定数項(コンパイル時にケテーイ)だから,いらない罠。
まぁ,教える分にはエエけどね。
0136デフォルトの名無しさんNGNG
>>135
コンパイル時にオーバーフローするのがわかるからと言って付けなくてもよい理由にはなりませんが?
0137デフォルトの名無しさんNGNG
学校で課題が出たのですが考えても分かりませんでした・・。教えてください。
課題;
漸化式a=0,
a1=1,     
an=an-1+an-2 (n≧2)   a1の1やanのn、n-1,n-2は下付き文字ですが変換できませんでした。

によって定義される数列をフィボナッチ数列と言う。サイズ20の整数型配列fib[]
を宣言し、fib[0],fib[1],・・・,fib[19]にフィボナッチ数a0,a1,・・・,a19を求めよ。
また、この値をprintf()関数を使って出力せよ。
0138137NGNG
途中まで手をつけたものを書いときます。(間違ってるかも)
#include <stdio.h>
int main(void)
{
int i;
int fib[20];
for(i=0;i<20;i++)
fib[i]=
for(i=0;i<20;i++)
printf("fib[%d]=%d\n",i,fib[i]);
return(0);
}
0139デフォルトの名無しさんNGNG
>>137
#include <stdio.h>

int main(void){
int fib[20], i;

fib[0] = 0; fib[1] = 1;
for (i = 2; i < 20; i++){
fib[i] = fib[i-1] + fib[i-2];
}

for (i = 0; i <20; i++){
printf("fib[%d]=%d\n", i, fib[i]);
}
return 0;
}
0140137NGNG
>>139
ありがとうございます!早速やってみます!
0141137NGNG
出来ました(T T) >>139さん有難う御座いました!
0142デフォルトの名無しさんNGNG
ログを読んでいたら間違い(正確には、指定された通りの解凍ではない解)を見つけたんで揚げ足取りをしてみる。

>>88,89,90
#include <iostream>
using namespace std;

int combination(int n, int r)
{
if(n < r) return -1; // エラー

if(n == r || r == 0) return 1;
if(r == 1) return n; // 本当は不必要
return combination(n - 1, r - 1) + combination(n - 1, r);
}

int main(void)
{
int n = 10, r = 2;

cout << n << "C" << r << " = " << combination(n, r) << endl;
return 0;
}

あとで>>94,96,105もやってみる。バグったままだよね?
0143デフォルトの名無しさんNGNG
>>136
doubleの定数でコードに埋まる
0144デフォルトの名無しさんNGNG
>>137
あえて嫌がらせでこんなのも

#include <stdio.h>
int fib(int n);
int main(void)
{
int a,i;
printf("何項目まで求めるか入力してください\n");
scanf("%d",&a);
for(i=1;i<=a;i++){
printf("%d\n",fib(i));
}
return 0;
}
int fib(int n)
{
if(n==1||n==2){
return 1;
}else{
return fib(n-1)+fib(n-2);
}
}
0145デフォルトの名無しさんNGNG
>137
#include<cstdio>
using namespace std;

template<int N>
struct Fib {
 enum { n = Fib<N-1>::n + Fib<N-2>::n };
};

template<>
struct Fib<0>{
 enum { n = 0 };
};

template<>
struct Fib<1>{
 enum { n = 1 };
};

int main(){
 int i;
 int fib[] = {
  Fib<0>::n, Fib<1>::n, Fib<2>::n, Fib<3>::n,
  Fib<4>::n, Fib<5>::n, Fib<6>::n, Fib<7>::n,
  Fib<8>::n, Fib<9>::n, Fib<10>::n, Fib<11>::n,
  Fib<12>::n, Fib<13>::n, Fib<14>::n, Fib<15>::n,
  Fib<16>::n, Fib<17>::n, Fib<18>::n, Fib<19>::n
 };
 for( i=0; i < 20; ++i ) printf( "fib[%d]=%d\n", i, fib[i] );
}
0146142NGNG
>>105は、パッと見、エラーもなくて、コンパイルしても大丈夫だったんでそのまま。
あとは>>114のマルチか。暇ならやろうかな。
0147137NGNG
>>144-145
有難う御座います。でもあまり難しいの提出したら、先生にC言語に詳しい奴だと
勘違いされそうなので(^^;)
0148デフォルトの名無しさんNGNG
Cです。よろしくお願いします。

8進数y=037427を右側に3ビット分シフトし、捨てられたビットを8進数x=0の左側から順につめて、
y=03742,x=0160000となるようにしなさい。
0149デフォルトの名無しさんNGNG
>>148
仮定:xは16bit

#include<stdio.h>

void hoge( unsigned short *y, unsigned short *x ) {
 unsigned long z = ( *y<<16 );
 z >>= 3;
 *y = (z>>16);
 *x = z&0xffff;
}

int main(){
 unsigned short x, y=037427;
 hoge( &y, &x );
 printf( "y=0%o, x=0%o\n", y, x );
 return 0;
}
0150デフォルトの名無しさんNGNG
>>143
オーバーフローの結果なんて未定義だろ
0151デフォルトの名無しさんNGNG
>>83==>>97
>j[c] = i[c + 1] * c / 36.;
>k[1] = j[1];
>k[c + 1] = k[c] + j[c + 1];
この部分が問題。
j[1]代入→j[2]参照→j[2]代入→j[3]参照→…
なんて繰り返し,つまり値を代入する前に参照しているのが悪い。

プログラム全体に無駄な操作が多いのが間違える原因だろうな。
>for(c = 1; c <= 11; c++)
>{if(dice[a][b] == c + 1)
>i[c]++;
>}
↓
i[dice[a][b]-1]++;

さらにその上の
dice[a][b] = a + b + 2;
と統合すれば

>dice[a][b] = a + b + 2;
>for(c = 1; c <= 11; c++)
>{if(dice[a][b] == c + 1)
>i[c]++;
>}
↓
i[a+b+1]++;
0152デフォルトの名無しさんNGNG
>>148
#include <stdio.h>

void shift_right( unsigned short* y, unsigned short* x )
{
unsigned char bit = *y & 1;
*x >>= 1;
*x |= *y << 15;
*y >>= 1;
}

int main()
{
unsigned short x = 0;
unsigned short y = 037427;
int i;
for( i = 0 ; i <= 3 ; i ++ )
{
printf( "y=%o\tx=%o\n", y, x );
shift_right( &y, &x );
}
return 0;
}
0153デフォルトの名無しさんNGNG
�@
マイナスの数が入力されるまでの入力データを使って平均値を求め、
個々のデータと平均値の差の二乗和の平均値を表示するプログラム(ただしデータは一回だけしか入力できない)
例 
入力データが1,2,4,1なら、平均値は2なので平均値との差の二乗和は(-1)^2+0+2^2+(-1)^2=6となる。

�A
rand()/32768.0としてn個の乱数を作成し、その度数分布をつくるプログラム
ただし、度数分布のクラスの数は10とする



ぜんぜんわかりません。c言語です。よろしくおねがいします。
0154デフォルトの名無しさんNGNG
>>153 �@
#include <stdio.h>
#define N 10

int main()
{
float data[N], sum = 0.0, avg;
float nvar = 0.0;
int num = 0, i;

while(1) {
printf( "%d番目の値は?", num+1 );
scanf( "%f", &data[num] );
if ( data[num] < 0.0 )
break;
sum += data[num];
num ++;
if ( num == N ) {
printf( "バッファが足りないので、入力を打ち切りますorz\n" );
break;
}
}
avg = sum/num;
for( i = 0 ; i < num ; i ++ ) nvar += (data[i] - avg) * (data[i] - avg);
printf( "データ数=%d\n", num );
printf( "平均値=%f\n", avg );
printf( "平均値との差の二乗和=%f\n", nvar );
return 0;
}
0155デフォルトの名無しさんNGNG
>>153
�@ 入力データx_i(i=1..n)の平均をX、(x_n)^2の平均をXと書くと
  (1/n)Σ(x_i-X)^2 = X-X^2
  と変形できることを利用する。高校数学の分散を思い出せ。

#include <stdio.h>

int main(void)
{
int data, i;
double avg, avg2;

avg = avg2 = 0.0;
for(i = 0; ; i++) {
scanf("%d", &data);
if(data < 0) break;
avg += data;
avg2 += data * data;
}
avg /= i;
avg2 /= i;
printf("平均は%f\n分散は%f\n", avg, avg2 - avg * avg);

return 0;
}
0156デフォルトの名無しさんNGNG
>>149
>>152
ありがとう。
勉強に励みます。
0157デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void){
int n, i, j, a[10] = {0,};
double t;

srand((unsigned)time(NULL));

printf("n >>"); scanf("%d", &n);
for (i = 0; i < n; i++){
t = rand() / 32768.0;
for (j = 0; j < 10; j++){
if (t < 0.1 * (j + 1)){
a[j]++;
break;
}
}
}

for (i = 0; i < 10; i++){
printf("\n%.1f〜%.1f", i*0.1, (i+1)*0.1);
for (j = 0; j < a[i]; j++){
putchar('*');
}
}
return 0;
}
0158デフォルトの名無しさんNGNG
文字列を置換する関数を作りたいのですが
0159デフォルトの名無しさんNGNG
>>158
どうぞ、遠慮せずにやってください。
0160デフォルトの名無しさんNGNG
>158
日記は自分のメモ帳にでも書いておけ。
0161デフォルトの名無しさんNGNG
そんなもんわざわざ作るな、ぼけ
0162158NGNG
すみません。
作り方をおしえてください。
0163デフォルトの名無しさんNGNG
少し前にでていたフィボナッチ数列ですが、どうか教えて下さい。

1.フィボナッチ数列の1項から10項までを表示するプログラムを作りなさい。
フィボナッチ数列は第1,2項が共に1で、第n項はn-2項とn-1項で求める。

2.整数nを入力し、1項からn項までのフィボナッチ数列を表示するプログラム
を作りなさい。また1行に表示するのは5項までとする。

学習範囲から言ってcontinueかbreakかreturnを使って作るのだと思うのですが
よく分かりません。ちなみにまだ関数までいっていません(void mainのみ)。
どなたかよろしくお願いします。
0164153NGNG
どうもありがとうございます!!
0165デフォルトの名無しさんNGNG
>>162
(1)一時的な変数を確保
(2)パターンに一致するものを検索する
(3)見つかったら最終位置から一致する以前の文字列+置換後の文字列を一時変数に追加
(4)終端についていなければ(1)へ
(5)ぬるp・・・NULLを入れる
(6)元の変数に代入する

意図的に無駄なことをしています。自分で無駄を省きましょう
0166デフォルトの名無しさんNGNG
>>163
無理矢理break;を使って作った。

#include <stdio.h>

int main(void)
{
int a, b, c, i;

printf("F[ 1] = 1\nF[ 2] = 1\n");
b = 1;
c = 1;
for(i = 3; ; i++) {
if(i > 10) break;
a = b;
b = c;
c = a + b;
printf("F[%2d] = %d\n", i, c);
}

return 0;
}

2は面倒なので略。もしこれを改造するつもりなら、nが1の時の表示に注意。
0167デフォルトの名無しさんNGNG
>>163
breakもcontinueも使って無いけど。
#include <stdio.h>
#include <stdlib.h>
int main(){
int n,v1,v2,tmp,col;
printf(">"); scanf("%d",&n);
if(n<1){printf("error.\n"); exit(0);}
v1=0; v2=1; col=0;
while(n>0){
printf("%d ",v2);
tmp=v1; v1=v2; v2+=tmp; n--; col++;
if(col>4){printf("\n"); col=0;}
}
return 0;
}
0168163NGNG
>>166>>167さん
早速の御回答ありがとうございます。
まだ#include<stdio.h> voidmain(void)から始まる書き方しかやっていなくて、
int main()などは習っていないのです。でも、早速参考にさせて頂きます。
夜中にどうもありがとうございました。非常に助かりました。 
0169デフォルトの名無しさんNGNG
{問 1} int a[8]; のように配列の宣言をしたとき、
配列 a はコンピュータのメモリにどのように割り当てられるか説明しなさい。

{問 2} 文字列を記憶するには char型配列を使用する。
char s[] = "Practice"; としたとき、配列 s の各要素はどのような値(文字)になっているか説明しなさい。

お願いします
0170デフォルトの名無しさんNGNG
>>169
問1 問題を出した人間に文句を言う
問2 s[0] = 'P',s[1] = 'r' (中略) s[7] = 'e' , s[8] = '\0'
0171169NGNG
>>170 お早い回答ありがとうございます。
問1 そうですね。変な問題ばっか出しやがって。
問2 やっぱそうか
0172highNGNG
これを作ってください↓
長いので2回に分けます。

サフィックス記法(逆ポーラント記法)は数式の記法の1つで,一般の記法との対応は下表の通りである.ただし,ここでは簡単のため,数式には加算(+)と乗算(*)しか含まれていないものとする.

一般記法 サフィックス記法
(数式A)+(数式B) (Aのサフィックス記法)(Bのサフィックス記法)+
(数式A)*(数式B) (Aのサフィックス記法)(Bのサフィックス記法)*

例えば,以下のような変換ができる.
一般記法 サフィックス記法
a+b ab+
a*b ab*
a+b*c abc*+
a*b+c ab*c+
(a+b)*c ab+c*
(a+b)*(c+d) ab+cd+*

0173highNGNG
続き↓

サフィックス記法が求まると,カッコのある任意の数式を順序よく計算できる.つまり,読み込んだ文字に従って次のようにスタックに入れながら計算することで値を求めることができる.
文字 操作
数(変数) スタックにpush
演算子(+,*) スタックから2つpopしてその演算を行い,結果をpush

次の数式をサフィックス記法に直せ.(解答は以下で作成するプログラム先頭部分にコメント文として含めよ)
a*(b+c)
((a+b*c)+d)*e
((a+b)*(c+d))+e*f
サフィックス記法により記述された数式(変数の値は自然数1桁とする.例えばa=2,b=3,c=4,d=5,e=6,f=7として,
「234+*」とせよ)をキーボードから入力し,スタックを用いて数式の値を計算するプログラムsuffix.cを作成せよ.
動作確認は上記の3式について数値を入れて行い,答が一致することを確かめよ(例えば通常の数式「2*(3+4)」の値と
サフィックス記法の式「234+*」をプログラムで計算させた値が一致することを確認せよ).
0174デフォルトの名無しさんNGNG
ダルー
0175highNGNG
お願いしますm(__)m
0176デフォルトの名無しさんNGNG
C言語なんですが
空白で区切って入力した1行(正整数並びの文字列)を項に分解して
i番目の項を配列X[i]に累計しながら格納していく(Xの要素数は10)
要素数より多い入力は11項目以降を棄却
入力の終了は改行のみの入力で判定
入力にはfgets、整数並びの文字列の項の分解にはisspace、isdigitで判定
して行い、文字列の数値化にはatoi()を使えというのなんですが
ご教授お願いします
0177デフォルトの名無しさんNGNG
>172,173
ダルー
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=103
0178デフォルトの名無しさんNGNG
>>177
わざわざatoi使ってるくせに,平気でスタック破壊する。
そんなところがステキ♪
0179デフォルトの名無しさんNGNG
ダルー
え?どこ?
0180デフォルトの名無しさんNGNG
二回に分けます
練習問題
/* xの階乗を計算する */
#include <stdio.h>

float kaijo( int ); /* 関数のプロトタイプ宣言 */

main()
{
int x;

printf("x = ");
scanf("%d", &x);

printf("%d! = %.0f\n", x,kaijo(x));
}

/* 階乗を計算する関数 */
float kaijo( int n )
{
int i;
float v = 1.0;

for(i = 1; i <= n; i++){
v = v * i ;
}
return v ;
}
0181180NGNG
続き
課題
sin x は、マクローリン展開によって次のように表せられる。
x^3 x^5 x^(2n+1)
sinx = x - --- + --- -・・・+(-1)^n------- +・・・
3! 5! (2n+1)!
ただし、コンピュータでの計算では第 n 項までとする。
この式と練習問題の kaijo 関数を組み合わせて sin x の値を計算する関数 float mysin( float x ) を作成せよ。
このとき、項の数 n はプログラム内で適当な値を代入する。
また、キーボードから実数値 x を入力して、 mysin(x) の値と数学関数 sin(x) の値を表示する処理を main 関数の中に作成せよ。

練習問題をいじって課題を完成させたいです。結構悩んでます。

お願いします
0182180NGNG
すいません
修正です
  x^3 x^5 x^(2n+1)
sinx = x - --- + --- -・・・+(-1)^n------- +・・・
3! 5! (2n+1)!
0183180NGNG
なんかうまく表示できません
\[\sin x = x-\frac{x^3}{3!}+\frac{x^5}{5!}-\cdots+(-1)^n\frac{x^{2n+1}}{(2n+1)!}+\cdots\]
Tex用の展開式
何度もすみません
0184デフォルトの名無しさんNGNG
16進DUMPを読み込みJIS コードを用いた文字を出力するプログラムを作成せよ

入力例:[dump.txt]
B7 82 B5 8D 9E 82 DD 2C 0D 0A 25 83 52 83 7D 83
93 83 68 82 DC 82 BD 82 CD 83 74 83 40 83 43 83
8B 96 BC 82 AA 88 E1 82 A2 82 DC 82 B7 2E 0D 0A

出力例:[binary.txt]
キし込み,..%コマン
ドまたはファイル
名が違います...
0185デフォルトの名無しさんNGNG
>>180
float mysin(float x){
int i, n = 2; /*nは適当*/
float t, sum = 0.0;

for (i = 0; i <= n; i++){
t = pow(x, 2*i+1) / kaijo(2*i+1);
if (i%2 == 1) t *= -1;
sum += t;
}
return sum;
}
0186180NGNG
>>185 なんかわかりません。ちなみにここまでできてます。
#include <stdio.h>
#include <math.h>
float kaijo( int );
float mysin(floatx);
main()
{
int x;
printf("x = ");
scanf("%d", &x);
printf("%d ")
printf("%d ")
printf("%d! = %.0f\n", x,kaijo(x));
float mysin (floatx)
{
n = 5;
v = 0
for(i=0 ,i<=n i++){
v = v +(-1)*
}
x =sin(i)
}
return x
}
0187180NGNG
float kaijo( int n )
{
int i;
float v = 1.0;
for(i = 1; i <= n; i++){
v = v * i ;
}
return v ;
}
0188デフォルトの名無しさんNGNG
なんかわかりませんじゃねーよ。
0189180NGNG
>>188 すいません.
プログラムの意味がわからないってことです。
185のプログラムはどっかいれるんでしょうか?
0190デフォルトの名無しさんNGNG
>>184
すいません。
元の16進ダンプはJISコードの値範囲を逸脱していますが,何か?
0191デフォルトの名無しさんNGNG
すいません。
生きててすいません。
0192デフォルトの名無しさんNGNG
すいません。
すみませんというべきでした。
0193デフォルトの名無しさんNGNG
>>176
(・3・)アルェー 出題者の言語能力は相当低いですYO!
日本語の出来ていない人と付き合うのは大変ですね。同情するYO!

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(){
char buf[1024];
int x [10];
memset(x,sizeof(x),0);
while( fgets(buf,sizeof(buf),stdin) ){
char *p = buf;
char *start;
int i;
if( buf[0] = '\n' ) break;
if( buf[strlen(buf)-1] != '\n' ) exit(EXIT_FAILURE);
for(i=0;i<10;++i){ start = p; while(isdigit(*p++)); *p++='\0';
x[i]+=atoi(start); while(isspace(*p++));}
}
}
0194デフォルトの名無しさんNGNG
あ,マズー(・3・)
memset(x,sizeof(x),0);
↓
memset(x,0,sizeof(x));
0195デフォルトの名無しさんNGNG
>>193
int x [10]={0};で十分だろ。
0196デフォルトの名無しさんNGNG
>>190
シフトJISでした
0197highNGNG
>177
ありがとうございます。
今後ともよろしくお願いしますm(__)m
0198最小値をとる配列要素の番号わかりませんNGNG
平均= 60.46
標準偏差= 22.80

最小値= 5
最小値をとる配列要素の番号= 50

最大値= 99
最大値をとる配列要素の番号= 50

0- 9 |** 2
10-19 |* 1
20-29 |*** 3
30-39 |** 2
40-49 |****** 6
50-59 |********** 10
60-69 |******** 8
70-79 |******* 7
80-89 |****** 6
90-99 |***** 5
続行するには何かキーを押してください .
0199198NGNG

#include <stdio.h>

#define NUM 50

int a[NUM] = {
99,45,89,62,61,93,55,78,56,26,
81,49,99,77,38,73,54,20,62,59,
63,59,63,93,74,37,71,49,48,56,
5,47,82,83,85,17,74,56,69,50,
51,82,24,99,66,65,73,53,48, 5};

void main(void)
{
double average , std_v ;
int i , j , k , histo[10] ={0} , min , max , s , ss ,min_suffix =
0,max_suffix = 0;
for (i=0; i<NUM; i++) {
s+=a[i];
ss+=a[i]*a[i];
histo[a[i]/10]++;
if(a[i]<min) min=a[i] ;
if(a[i]>max) max=a[i] ;
}
0200199に ◆3VUXqvbfSY NGNG
min_suffix = 0;
max_suffix = 0;
for (j=0; j<NUM; j++) {
if (a[j] < a[min_suffix]) min_suffix = j;
if (a[j] > a[max_suffix]) max_suffix = j;
}


average=(double)s/NUM;
std_v=sqrt((double)ss/NUM - average*average);

printf("平均=%6.2f\n",average);
printf("標準偏差=%6.2f\n\n",std_v);
printf("最小値=%3d\n",min);
printf("最小値をとる配列要素の番号=%13d\n\n",j);
printf("最大値=%3d\n",max);
printf("最大値をとる配列要素の番号=%13d\n\n",j);

for (k=0; k<10; k++) {
printf("%2d-%2d |", k*10, k*10+9);
for (i=1; i<=histo[k]; i++)
printf("*");
printf(" %d\n", histo[k]);
}
}
どこがまちがってるのか教えてください
0201198〜200NGNG
#include<math.h>が抜けてました
最小値をとる配列要素の番号
最大値をとる配列要素の番号
がなぜか50 になってしまいます。
教えてください
0202デフォルトの名無しさんNGNG
>>180
floatなんか使うなよ。
0203デフォルトの名無しさんNGNG
電卓のシュミレーターをC言語
・扱う数値は整数値でよい(実数ならもっといい)
・数値と演算子の区切りは改行(リターンキー)でよい
・対話的に使えるものとするー終了は数値の代わりに一文字
 の入力をすればよい
・演算は加減乗除のみ(ほかのがあってもよい)
・演算子の優先順位は考慮しなくてもよい
・括弧は扱えなくてもよい
・メモリ機能は扱えなくてよい
マルチで非常にすいませんでした。
本当に困ってます。助けてーm(><)m
0204デフォルトの名無しさんNGNG
>>201
釣り?

>printf("最小値をとる配列要素の番号=%13d\n\n",j);
jを表示したら、そりゃぁ50だろうよ。
0205デフォルトの名無しさんNGNG
min と max をmin=a[0] , max=a[0]かなんかで初期化して
printf("最小値をとる配列要素の番号=%13d\n\n",min_suffix);
printf("最大値=%3d\n",max);
printf("最大値をとる配列要素の番号=%13d\n\n",max_suffix);
0206デフォルトの名無しさんNGNG
printf("最小値=%3d\n",min);
printf("最小値をとる配列要素の番号=%13d\n\n",min_suffix);
printf("最大値=%3d\n",max);
printf("最大値をとる配列要素の番号=%13d\n\n",max_suffix);
でつね
0207198〜200NGNG
min_suffix = 0;
max_suffix = 0;
for (j=0; j<NUM; j++) {
if (a[j] < a[min_suffix]) min_suffix = j;
if (a[j] > a[max_suffix]) max_suffix = j;
}
で最小値、最大値を与える配列要素の番号をだそうと
おもったのですが…
0208デフォルトの名無しさんNGNG
>>207
>204読んだ?
0209デフォルトの名無しさんNGNG
sとかssも初期化しとかないとだめだろ。
たまたま0で初期化されたかもしれんが。
0210デフォルトの名無しさんNGNG
プリプロセッサをツールとして使用してるんだけど、
はき出されるソース中に、ソースの名前と、行番号を残したい
で、こんなマクロつくったんだけど、ダメですた。
#define __LLL // __FILE__ __LINE__
こんな風になってほしんだけど
// "test.c" 10
マクロで指定した"//"がコメントと認識されちまって、その後に続く、
"__FILE__ __LINE__"もコメントとして認識されちゃう。
何か回避方法ないすか?
とりあえず、後処理で、sed通すとかは無しの方向で
0211198〜200NGNG
>209 s=0; ss=0;忘れてました
>204〜208ありがとうございます

最小値をとる配列要素の番号が複数になる時どうすればいいんですか?
0212デフォルトの名無しさんNGNG
198はJavaスレに誤爆しておいて放置するのは、いくない。
0213>212NGNG
すみませんm(__)m
0214デフォルトの名無しさんNGNG
演算子のオーバーロード関係のサンプルコードなんですけどコンパイルができませぬ。。。
何がいけないんでしょうか。。。

問題のコードとエラーメッセージです↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_16/code.txt
0215デフォルトの名無しさんNGNG
>>214
bcc と g++ でならコンパイルとおるし、実行も出来る。
0216デフォルトの名無しさんNGNG
ファイル名が全角文字なのがいけないんじゃないか?
0217デフォルトの名無しさんNGNG
>>216
全角文字を入れずにやってみましたがだめでした。
visualC++では無理なのか。。。。
0218デフォルトの名無しさんNGNG
VC6も7.1もビルドできるけどなぁ。
そういや漏れも昔この内部エラーとかいうの出た。
どうやったか忘れたけど、とりあえずリビルドしてみた。
ビルドフォルダ削除してみてみ。
0219デフォルトの名無しさんNGNG
>>218
ビルドフォルダってのはdebugって名前のフォルダですかね。
削除してビルドしたりリビルドしたりクリーンを実行したりしましたがだめでした。。。
何がいけないというのですか。。。。visualC++先生。。。
0220デフォルトの名無しさんNGNG
>>214
おれもよく見たよ。VCに処理できないようなコードを書くと死んでわびてくれる。
んで、こういうときは仕方がないので少しづつコメントアウトしながら問題の記述を特定するしかない。
というわけでがんばれ。
なお、おれの勘ではコンストラクタの引数にデフォルト値があるのと
operator+の片方がintになってるののとで、
関数オーバーロードの解決に失敗しているくさい。
試しにコンストラクタの引数にデフォルト与えるのやめてみたら
0221デフォルトの名無しさんNGNG
生徒の名前、テストの点数が順番にスペースを空けながら並べてあるファイルを
読み込み、構造体オブジェクトを動的な記憶域を確保し、そこに格納する。

(1)データを読み込んだ記憶域から、スタックにデータをプッシュしたり、ポップ
したりする。
(2)データを読み込んだ記憶域から、キューにデータをエンキューしたり、デキュー
したりする。

2つもあって申し訳ないですが、どうかよろしくお願いいたします。
0222221NGNG
すみません。書き忘れました。
言語はC言語です。あと、ファイルはtxtファイルです。
よろしくお願いいたします。
0223デフォルトの名無しさんNGNG
>>214
VC++6ならサービスパック当てるとなおるかも
VC++6はサービスパック当てないと演算子のオーバーロードで
エラーでた記憶がある
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=a8494edb-2e89-4676-a16a-5c5477cb9713&displaylang=ja
0224デフォルトの名無しさんNGNG
>>221
キューやスタックも作れってこと?
それとも過去の課題で作ったのを使ったりするのかな…
0225221NGNG
レスありがとうございます。
キューやスタックは、数字一つをプッシュしたりするのならあるのですが、
今回は、構造体になってたり文字が含まれていたりしてるので、よろしけ
れば、キューやスタックもお作り願いたいのですが。。。
0226デフォルトの名無しさんNGNG
そこで、STL ですよ。
0227デフォルトの名無しさんNGNG
すいません
わからないので
こーどを
かいてください
おねがいします
0228デフォルトの名無しさんNGNG
>>221
>お作り願いたいのですが。。。
キミの場合,プログラムは人に任せて,
まずは,日本語の勉強をしたほうがよさそうだね。
0229デフォルトの名無しさんNGNG
>>226
Cげんごでおながいします
0230デフォルトの名無しさんNGNG
>>225
そんなキューやスタックでも書いて、流用して貰えば
人に頼んだことがばれにくくなって( ゚Д゚)ウマー
0231デフォルトの名無しさんNGNG
>>210
#define __LLL /##/ __FILE__ __LINE__
これはどうだ
0232デフォルトの名無しさんNGNG
>>221
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=104
めんどくせぇから,遅いけどLISTで手抜き実装。
そして,C99的な構造体を使ってみるテスト。
0233デフォルトの名無しさんNGNG
名前(文字型配列)、年齢(整数型)、体重(実数型)のデータをメンバにもつ構造体aにデータをキー入力し、その後aにはいっているデータを同じ型を持つ構造体bに代入し最後にaとbの両方のデータを出力せよ
0234デフォルトの名無しさんNGNG
>>233

#include <stdio.h>

int main()
{
struct{char n[4000]; int a; double w;} a,b;
printf("名前 > ");
fgets(a.n,sizeof a.n,stdin);
printf("年齢 > ");
scanf("%d",&a.a);
printf("体重 > ");
scanf("%lf",&a.w);
b=a;
printf("%s%s\n%d\n%d\n\n%f\n%f\n",a.n,b.n,a.a,b.a,a.w,b.w);
return 0;
}
0235221NGNG
>>232
本当にありがとうございました!!助かりました!!
0236232NGNG
あれ?すんなりコンパイルできちゃったの??
クヤチー!!
0237デフォルトの名無しさんNGNG
>>203
#include <stdio.h>
int main(){char a[99],b[99],*e="+-*/",*f;int s=0,c;float m=0,n;while(1){printf(
"%f :",m);fgets(a,99,stdin)?0:exit(0);if(sscanf(a,"%s",b)>0){if(sscanf(b,"%f",
&n)>0){m=s?c?c-1?c-2?m/n:m*n:m-n:m+n:n;s=0;continue;}else{if(!b[1] && (f=strchr
(e,*b))){s=1;c=f-e;continue;}}}*a-'q'?0:exit(0);puts("Input errror (type 'q' t"
"o exit)");}}

使用例
0.000000 :1
1.000000 :25
25.000000 :/
25.000000 :9
2.777778 :+
2.777778 :3
5.777778 :-
5.777778 :7
-1.222222 :*
-1.222222 :5
-6.111112 :/5
Input errror (type 'q' to exit)
-6.111112 :
Input errror (type 'q' to exit)
-6.111112 :q
0238すみませんがNGNG
ジョイパッドを使えるようにしろという課題をだされたのですが
ダイレクトXを使えば自分でもできますが、C++のAPIを使って
やれとのことでよくわかりません。教えてもらえますか?
0239デフォルトの名無しさんNGNG
C++のAPIじゃなくてWin32のAPIだろ?
joyGetPosExとかいうカビ生えた関数使うんだったっけ
0240デフォルトの名無しさんNGNG
>>232
>めんどくせぇから,

めんどくせぇなら、レスするな。
自分の無能を隠すのに下らない言い訳するなよ。

そんなものは世の中の害にこそなれど、役には立たない。
0241デフォルトの名無しさんNGNG
↑より役に立つことは間違いない!
0242デフォルトの名無しさんNGNG
長井秀和きらい
0243厨房・・・NGNG
#include <stdio.h>
void main (void)
{
char s,e;
printf("開始文字を入力==>");
scanf("%c",&s);
printf("終了文字を入力==>");
scanf("%c",&e);

printf("\n開始文字%c\n終了文字%c",s,e);

return;

}

どうやって入力すれば良いのでしょうか?
これだと一回目で終わってしまいます。
0244デフォルトの名無しさんNGNG
printf("開始文字 終了文字を入力==>");
scanf("%c %c",&s,&e);
0245デフォルトの名無しさんNGNG
どなたか>>184分かる方いませんか?
JISじゃなくShift-JISでお願いします。
0246デフォルトの名無しさんNGNG
>>244
ご回答有難う御座います。
ただ課題で実行画面が書かれており、そのとおりに表示しないと駄目なんです。

開始文字==>A 「Enter」
終了文字==>Z 「Enter」

と表示しなければ駄目なんです。
もっとも、開始・終了文字を入れて処理を行い、その結果を表示するのですが、
int と %d で数値を入力するのなら、普通に出来るのですが、文字をやろうとすると
上手く行きません・・・。

0247デフォルトの名無しさんNGNG
問題のつけたしすんな
0248デフォルトの名無しさんNGNG
>246
scanf() は必要部分を読んだあと残りを 『食い残す』 癖があるので、
fgets() などで一行丸々読んでから sscanf() で切り出すのが定石。
0249デフォルトの名無しさんNGNG
>>246
>printf("開始文字を入力==>");
>scanf("%c",&s);
>printf("終了文字を入力==>");
>scanf("%c",&e);

printf("開始文字を入力==>");
scanf("%c\n",&s);     /* こうする */
printf("終了文字を入力==>");
scanf("%c",&e);
0250厨房・・・NGNG
>>248さん
fgets()を早速調べてみたのですが、fflush(stdin);というのもあるみたいですね。
fflush(stdin);よりfgets()の方が確実だとかなんとか・・・fgets()について、もう少し調べてみます。
有難う御座います。

>>249さん
試してみました。
ただ最初に入力した後に、一文字入れなければ終了文字を入れられません。
%cの後に\nを入れることで、どのような動作になるのでしょうか?
0251デフォルトの名無しさんNGNG
fflushのその使い方はまちがっている。
0252デフォルトの名無しさんNGNG
>>250
http://www.linux.or.jp/JM/ の 『man on WWW』 のセクション 2,3 で検索すると、
大概の C の関数は調べられるので紹介しておく。

ただし、準拠の欄に ANSI C、POSIX のどちらも書かれていない関数は、特定の
環境でしか使えないので注意
0253デフォルトの名無しさんNGNG
CかC++で一元配置分散分析を行うプログラムを
作らなくてはいけないのですが
どこかにいいサンプルなどないでしょうか?
0254253NGNG
すみません、下げ忘れました。
多重比較の方法はボンフェローニかシェッフェの方法を検討しています
よろしくお願いします。
0255デフォルトの名無しさんNGNG
>>245
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE * fpIn = fopen("dump.txt", "r");
FILE * fpOut = fopen("binary.txt", "wb");
while (fscanf(fpIn, "%02x", &cd) == 1) {
fputchar(cd, fpOut);
}
fclose(fpIn);
fclose(fpOut);
return EXIT_SUCCESS;
}
0256デフォルトの名無しさんNGNG
>>255
cdはどこで定義されているのー?
0257255NGNG
>>256
あ、忘れた。
0258デフォルトの名無しさんNGNG
fputchar も妙だね…
0259255NGNG
あははは…
fputc()だね。
#ダメだ、寝てこよう_/ ̄|⌒γ⌒γ⌒γ⌒γ⌒γ⌒○
0260デフォルトの名無しさんNGNG
質問ではないのでつが、このスレ時々名前が
ぼるじょあどんになったり、ならなかったりするの
でつが慣例でつか?
0261ぼるじょあ ◆yBEncckFOU NGNG
エー
0262デフォルトの名無しさんNGNG
あ、ぼるじょあさんだ
0263デフォルトの名無しさんNGNG
              ,、.'"     __,,,,,_   ゙' 、
              ,.'::    ,、- ''"´   `゙゙゙''‐ 、 ゙' ,  ,,、、、
             ,.':::  .,. "           ゙'.、r'"  ゙'、
           ,.':::: , " ,  ., , ,, 、,  , 、 、 ,r"       ',
          _,i、  ,.'  .i  ,','l !l .!l l. ! ',, l .l、/     ........ !
         ゙,~   ,.ri.  .{ .!.!,i,',l ,',!,! l', l',l,,,!/    .::::::::::::::!
          ゙、:::::,.' .::!   l゙、'l"l,' !,'!'!'.レ !' .'''.,'   .:::::::::::::::::l
.          ,>' .:r"l  ',.l,、‐''''i-     ''i;'   .:::::::::::::::::::,'
         〈-、::::゙'‐!. ,. '、ゝ;;;:j      /.   .::::::::::::::::::::,'
.          ゙、 ゙''‐-l  ', .ヽ`.´    ' ,.'   .::::::::::::::::::::/
           `,i‐、..}i  '.;:. ゙ヽ  ヾソ'   .:::::::::::::::::::,.'  ぼるじょあは天才
.           / ;. ゙,゙,   ';: ノ,,、-''"   .::::::::::::::::::,r'
          / ,.'-‐゙'',-,、,i'"゙! "     .::::::::::::::::,r'"',      憶えた!
          / i'r"゙'´` `'''>'      ゙,::::::::::;r':!   ',
.         / .,、'´ ::、 .:,r'"       ゙、:::::'::::::',.   ',
         / .,.!  ..  :゙'::,'   、.l.      ゙、:::::::::: ゙、.  ',
       / /,', ...::.:::::::,'   ゙'i.       ゙、:,',:::::. ゙、 '゙、
.      / , ', ' .i、:::::::::,r'     ',       ゙、':::::::::. ゙、 ヽ
      / ,.'.,.'  ,゙、:::::::i   ゙、.   '、    ..:::::::l::::::::::::::. ヽ ヽ
     / ././  ,.'  '、;:::!   ',   ゙、::::::::::::::::::::::!:::::::::::  ,''-、..,,゙、、,,,.__
    / / / ./  .::::::`゙'、.   '、  .:::::゙.、::::::::::::::::!::::::::  .,.',,     ,,-,-‐'
0264デフォルトの名無しさんNGNG
お願いします!下に書いた同じ画像を表示させるプログラムをいじって
画像を1/2に縮小するプログラムを作ってください!
#include "_wmgraph.h"
#include "_stdfunc.h"
main()
{
_init_wmimage();

printf("JPEGファイルを表示します.\n");
printf("何かキーを押して下さい.\n");
getchar();

char fname[256];
if(_fileopen(fname)) {
_bmap *b = _read_bmap(fname);

_newpage(1,"JPEG FILE",10,10,-b->w,-b->h);
_setactivepage(1);
_put_bmap(b, 10);
_putimage(0,0,10);
_setactivepage(1);

_bmap *bb = new _bmap(b->w, b->h); //空の画像を生成

unsigned char *c = b->b;
int blw=b->lw;
unsigned char *cc = bb->b;
int bblw=bb->lw;


0265デフォルトの名無しさんNGNG
続き
for (int i=0; i<b->h; i++)
for (int j=0; j<b->w; j++) {
cc[bblw*i+3*j+0]=c[blw*i+3*j+0]; //Blue
cc[bblw*i+3*j+1]=c[blw*i+3*j+1]; //Green
cc[bblw*i+3*j+2]=c[blw*i+3*j+2]; //Red
}

_newpage(2,"JPEG FILE",20,20,-bb->w,-bb->h);
_setactivepage(2);
_put_bmap(bb, 10);
_putimage(0,0,10);
_setactivepage(2);
delete b;
delete bb;
}
return 0;
}
0266デフォルトの名無しさんNGNG
あとこいつを使ってください!

int red=0, green=0, blue=0;
for (int ii=2*i; ii<2*i+2; ii++)
for (int jj=2*j; jj<2*j+2; jj++) {
red = red + c[blw*ii+3*jj+2];
green = green + c[blw*ii+3*jj+1];
blue = blue + c[blw*ii+3*jj+0];
}
red = red/4;
green = green/4;
blue = blue/4;
0267デフォルトの名無しさんNGNG
>あとこいつを使ってください!

あ、ご丁寧にどうも!












       って長いYO!w

0268デフォルトの名無しさんNGNG
>画像を1/2に縮小
面積が1/2?
辺の長さが1/2だよね。
0269デフォルトの名無しさんNGNG
wmgraph 持って無いんで良くわかんないけど、単に
-for (int i = 0; i < b->h; i++)
- for (int j = 0; j < b->w; j++) {
-cc[bblw * i + 3 * j + 0] = c[blw * i + 3 * j + 0];//Blue
-cc[bblw * i + 3 * j + 1] = c[blw * i + 3 * j + 1];//Green
-cc[bblw * i + 3 * j + 2] = c[blw * i + 3 * j + 2];//Red
を抜いて、代わりに
+for (int i = 0; i < b->h/2; i++)
+ for (int j = 0; j < b->w/2; j++) {
+int red = 0, green = 0, blue = 0;
+for (int ii = 2 * i; ii < 2 * i + 2; ii++)
+ for (int jj = 2 * j; jj < 2 * j + 2; jj++) {
+red = red + c[blw * ii + 3 * jj + 2];
+green = green + c[blw * ii + 3 * jj + 1];
+blue = blue + c[blw * ii + 3 * jj + 0];
+ }
+cc[bblw * i + 3 * j + 0] = blue / 4;//Blue
+cc[bblw * i + 3 * j + 1] = green / 4;//Green
+cc[bblw * i + 3 * j + 2] = red / 4;//Red
を入れるんじゃ駄目?
0270デフォルトの名無しさんNGNG
50 個のデータの平均,標準偏差,最小値,最小値をとる
配列要素の番号,最大値,最大値をとる配列要素の番号および10 ごとに区切ったヒストグラムを
(B)のように表示するプログラムを完成せよ。(ソースプログラムを提出)
ただし,平均,標準偏差,各区間での度数,最小値,最小値をとる配列要素の番号,最大値,
最大値をとる配列要素の番号を計算するためのコードではfor 文は最大2回まで用いてよいこと
にする。(うまくアルゴリズムを工夫すればfor 文は1 回の使用でも実現できる。)
ヒント
for 文を1 回だけ使用するアルゴリズムは難しいので,for 文を2 回使うことを前提としたヒント
を与える。まず,最初のfor 文で最小値を求める。次に,2 度目のfor 文で,その最小値と配列
要素が等しいかどうかをみていくことにより,最小値をとる配列要素の番号を探す。このとき,
最小値をとる配列要素の番号が複数になる可能性があることを考え(実際にこの問題では複数あ
る。),配列要素の番号を記憶する配列変数とこの配列変数のどの要素までを使ったかを記憶する
変数が必要となる。最大値についても,同様に考えればよい。
平均,標準偏差,各区間の度数を求めるためコードは,最初,2 回目のどちらのfor 文の中に
書いてもよい。
a[NUM] = {
99,45,89,62,61,93,55,78,56,26,
81,49,99,77,38,73,54,20,62,59,
63,59,63,93,74,37,71,49,48,56,
5,47,82,83,85,17,74,56,69,50,
51,82,24,99,66,65,73,53,48, 5};
0271デフォルトの名無しさんNGNG
要素数が可変長の多次元配列の作り方を教えてもらえませんか
C/C++どちらでも構いません
できれば関数(?)みたいに一行で宣言できるようにしてくれるとありがたいです
(要素x y zの数を引数で渡すと生成されるみたいな)

しょうもない質問かと思いますが,是非ともよろしくお願いします
0272デフォルトの名無しさんNGNG
>>271
std::vector
0273デフォルトの名無しさんNGNG
>>223
ありがとうございます。
早速アップデートを試して再開したところ今度はエラーメッセージの内容が変わってやがる。。。

f:\c++\レッスン15サンプル1.cpp(39) : error C2512: 'Point' : クラス、構造体、共用体にデフォルト コンストラクタがありません。
f:\c++\レッスン15サンプル1.cpp(46) : error C2512: 'Point' : クラス、構造体、共用体にデフォルト コンストラクタがありません。
f:\c++\レッスン15サンプル1.cpp(53) : error C2512: 'Point' : クラス、構造体、共用体にデフォルト コンストラクタがありません。

エラー数だけで言えば前のほうが少なかった。。。のだろうか。

コード(エラーメッセージは上に書いたのになりました)↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1074774948_16/code.txt
0274デフォルトの名無しさんNGNG
>>272
271のレベルを推測するに,それだとvector単純に宣言したら出来るんだって思うんでね?
0275デフォルトの名無しさんNGNG
ttp://www.math.nagoya-u.ac.jp/~naito/lecture/2004_SS/PDF/07/report.pdf

↑ここのprob-3について教えていただけますか?

我々はコレを完璧に解かないと 卒業できずと教員免許もでない と いう事態になりますので皆様の力を貸してください。

なお、適当にURLをいじればコレまでの経過に関するページへ飛びます。
0276デフォルトの名無しさんNGNG
>275
内藤さんにちくりました。レポートの注意くらいは読んでおこうね。
0277デフォルトの名無しさんNGNG
>>275
> 卒業できずと教員免許もでない

こんな日本語書く奴が教師になろうとしてるのか...、世も末だな。
0278デフォルトの名無しさんNGNG
>>271
C99対応のコンパイラなら普通の配列と同じように作れるんだけど
そうじゃないの使っているから質問したんだよな……。
int hoge[x][y][z];
0279デフォルトの名無しさんNGNG
寧ろ落として欲しいもんだ。
0280デフォルトの名無しさんNGNG
>>270
(B)がない
0281デフォルトの名無しさんNGNG
>>276
GJ!
0282デフォルトの名無しさんNGNG
>>270
>>198- あたりを参照のこと。てか、(・3・)同じ課題かYO!
0283デフォルトの名無しさんNGNG
>>275

unsigned int uint_power(unsigned int a, unsigned int n)
{
if(n == 0)
return 1;

if(n == 1)
return a;

else {
if(n % 2)
return uint_power(a, n/2) * uint_power(a, n/2 + 1);
else
return uint_power(a, n/2) * uint_power(a, n/2);
}
}

動的に求めれば O(log n) よりも早くなるが。
これでいい?
0284デフォルトの名無しさんNGNG
>>273
Pointクラスにデフォルトコンストラクタがないって教えてくれてるでしょーが

class Point
{
//略
  Point(int a=0,b=0);
}
     ↓
class Point
{
//略
  Point(int a=0,b=0):x(a),y(b){}
}

あとoperator++,operator++(int)はその実装だとまずいかも。
0285デフォルトの名無しさんNGNG
>>284
>Point(int a=0,b=0):
↑なんかすげーきもちわるい。
Point(int a=0, int b=0):
↑きもちいい。
0286BですNGNG
(B)
平 均 = 60.46
標準偏差 = 22.80
最小値 = 5
最小値をとる配列要素の番号 = 30 49
最大値 = 99
最大値をとる配列要素の番号 = 0 12 43
0- 9 |** 2
10-19 |* 1
20-29 |*** 3
30-39 |** 2
40-49 |****** 6
50-59 |********** 10
60-69 |******** 8
70-79 |******* 7
80-89 |****** 6
90-99 |***** 5
0287デフォルトの名無しさんNGNG
>>286
だーかーらー、>>198- を見れと。同じ課題やった君の友人がいるから。
0288デフォルトの名無しさんNGNG
むしろ同じやつが納得できずに
もう一度訊いてたりしてw
0289デフォルトの名無しさんNGNG
>>283
(・3・)アルェー 
それのどこが O(log n)???
O(n)にしか見えないYO!
0290デフォルトの名無しさんNGNG
この問題をお願いいたします。

ヤコビ法とガウス・ザイデル法のそれぞれで
連立3元1次方程式を解くプログラムをつくりなさい。
ただし、途中の解の近似値も出力されるようにすること。
0291デフォルトの名無しさんNGNG
>>284
どうもありがとうございます。
しかし書籍に載っているコードが動作しないなんてどういうことなんだ。。
やさしいC++ってやつのサンプルですけどこの本だめですかねぇ。。?
配列やらポインタやら一応覚えた気でいるけどもう少しやりたいので完全な素人ではないけど初心者向けみたいな書籍ってないですかね〜
って板違いですかな。
0292デフォルトの名無しさんNGNG
>>290
せめてその数式を書いてください。
屋媚法とかガウス・財出るほうを調べるのはプログラムのスキルとは違うと思うので…
0293デフォルトの名無しさんNGNG
>>290
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=105
に置いときますた。

収束しない場合の扱いとか、解が 0 になって errmax がとち狂ったりする
のは適当に書き直してください。

なお、>>292 にもあるとおり、数学計算の問題の場合は、どんな計算なのか十分に
説明してくれないと、知ってる人しかできないので、その辺よろしく
0294デフォルトの名無しさんNGNG
>>291
コンパイルエラーはコンパイラが腐ってるだけ。
それとは全く別に,例えば p1++.setX(-1) が変になるから糞。

http://pc5.2ch.net/test/read.cgi/tech/1083665944/
0295デフォルトの名無しさんNGNG
>>292-293
どうもありがとうございます。
以後気をつけます。
0296デフォルトの名無しさんNGNG
>>283
プッ
unsigned int uint_power(unsigned int a, unsigned int n)
{
if(n == 0)
return 1;

if(n == 1)
return a;

int tmp = unit_power(a, n / 2);
return n % 2 ? tmp * tmp * a : tmp * tmp;
}
0297highNGNG
これお願いします↓

データの個数と,その個数分の整数データが保存されているファイル(データ例)を読み込み,データを木の節点に保存する,各データがどの節点に保存されるかは任意
とする.

このとき,ユーザがキーボードで前順,中順,後順を選択すると,その順で木をなぞる(データを画面上に順に表示する)プログラム order.cを作成せよ.(表示するの
はデータの値の大小順ではないことに注意せよ.)

データ例
8
3 7 5 8 2 1 4 9
0298デフォルトの名無しさんNGNG
↑問題文はそれだけなの?
0299デフォルトの名無しさんNGNG
木だのなんだのは組めたけど
ファイル入力が分からないw
0300デフォルトの名無しさんNGNG
fscanf
0301デフォルトの名無しさん NGNG
これはサイコロの目の出る確率を計算するプログラムであるが、
不備があるため結果が得られません。
間違いを指摘して修正しなさい。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int i,me,j,n;
int a[6];
float b[6];
srand(time(NULL));
for(j=0;j<6;j++){
a[j]=0;
}

続く
0302デフォルトの名無しさん NGNG
printf("繰り返しの回数≦30000");
scanf("%d",&n);
for(i=0;i<n;i++){
me=rand()%6;
switch (me){
case 1:a[0]+=1;break;
case 2:a[1]+=1;break;
case 3:a[2]+=1;break;
case 4:a[3]+=1;break;
case 5:a[4]+=1;break;
case 6:a[5]+=1;break;
}
}
for(j=0;j<n;j++){
b[j]=a[j]/n;
printf("%d の目の出る確率= %d\n",j,b[j]);
}
return(0);
}

どなたか助言お願いします。
0303デフォルトの名無しさんNGNG
for(j=0;j<6;j++){
b[j]=a[j]/n;
printf("%d の目の出る確率= %d\n",j,b[j]);
}
n回まわすとかぶっちゃけありえない。
0304デフォルトの名無しさん NGNG
>>303
すいません、タイプミスでした
おっしゃる通り、
for(j=0;j<6;j++){
です。

その他で何かあったらお願いします。
0305デフォルトの名無しさんNGNG
printf("%d の目の出る確率= %d\n",j,b[j]);
                   ↑
                   %f
0306デフォルトの名無しさんNGNG
あとb[j]=a[j]/n;もb[j]=a[j]/(float)nかな
0307デフォルトの名無しさんNGNG
ついでに、case で指定した値も全部 1 大きすぎる。
0308デフォルトの名無しさんNGNG
printf("%d の目の出る確率= %d\n",j,b[j]);
                      ↑
                      j+1
0309デフォルトの名無しさんNGNG
for文についての質問です
for文で特定の回数繰り返しprintf関数を使って出力するときに
scanf関数で出力ごとに独自の値を入力できるようにするにはどうすればいいのでしょうか

1つ目の値 **
2つ目の値 ++
3つ目の値 ==

**、++、==はscanf関数を使用して入力した値です
何方かご教授願います
0310301NGNG
>>305
>>306
>>307
>>308

ご教授ありがとうございます。

>>307
caseで指定した値も全部1大きすぎるとは、具体的にどういうことなんでしょうか?
知識不足ですみませんです。
0311サイコロ1NGNG
サイコロの目の出る確率のプログラムを以下のように作ってみましたがうまくいきません。おそらくプログラムが一秒以内で終了してしまうため
for文の中のrand()の値が一定になってしまうようです。どうすればよいのでしょうか?
0312HSPは万能NGNG
>>311
なんとなく予想がつく。
srandを呼ぶのは一度だけにしろ。
0313デフォルトの名無しさんNGNG
>>309
日本語が不明瞭でよく分からないけど、要するに"nつめの値 "と表示してから
配列の n 番目に値を読み込みたいって事?
0314サイコロ2NGNG
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i,me,j,h;
int a[6];
float b[6],n;
srand(time(NULL));
for(j=0;j<6;j++){
a[j]=0;
}
printf("繰り返しの回数<=30000\n");
printf("サイコロをふる回数は:");
scanf("%d",&n);
for(i=0;i<n;i++){
me=rand()%6;
switch(me){
case 0:a[0]+=1;break;
case 1:a[1]+=1;break;
case 2:a[2]+=1;break;
case 3:a[3]+=1;break;
case 4:a[4]+=1;break;
case 5:a[5]+=1;break;
}
}
for(j=0;j<6;j++){
b[j]=a[j]/n;
printf("%dの出る目の確立=%f\n",j,b[j]);
}
return(0);
}
0315デフォルトの名無しさんNGNG
>>310
rand()%6 は、6で割ったあまりなので 0〜5 の範囲しか取らない。しかし
case では、1〜6 で指定しているので case 「6」 (a[5]) には絶対にこない。
0316HSPは万能NGNG
>>314
じゃなかったか。
b[j]=(float)a[j]/n;
これでも駄目か?

あと、switchはいらない。↓で十分。
for(i=0;i<n;i++)
a[rand()%6]++;
0317デフォルトの名無しさんNGNG
>>314
>switch(me){
>case 0:a[0]+=1;break;
>case 1:a[1]+=1;break;
>case 2:a[2]+=1;break;
>case 3:a[3]+=1;break;
>case 4:a[4]+=1;break;
>case 5:a[5]+=1;break;
>}

a[me]++;
1文ですむでしょ
0318サイコロNGNG
C言語をはじめたばかりでどう説明すればいいのかもわかりません。
本当にすみません。
0319デフォルトの名無しさんNGNG
>>316
float n を scanf("%d") で読み込んじゃまずいでしょ。
0320サイコロNGNG
b[j]=(float)a[j]/n;
としてみましたがダメみたいです
0321309NGNG
>>313
いえ、"nつ目の値"と固有の値をそれぞれfor文でn番目まで読み込ませたいのです
int z,a;
for(z=1;z<=3;z++){
printf("%dつ目の値 ",z);
scanf("%d",a);
}
でaの部分を表示されるたびに打ち込めるようにしたいのです。
なんとなく伝わったでしょうか・・・?
0322HSPは万能NGNG
>>319
それだな。

↓これでできるはず。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int i,n,a[6]={0};
srand(time(NULL));
printf("繰り返しの回数<=30000\n");
printf("サイコロをふる回数は:");
scanf("%d",&n);
for(i=0;i<n;i++)
a[rand()%6]++;
for(i=0;i<6;i++)
printf("%dの出る目の確立=%f\n",i,(float)a[i]/n);
return 0;
}
0323310NGNG
>>315
ありがとうございます。
まだ修正すべき点があるようなのですが、もしよろしければでいいので
お願いします。もちろん自分でもやってみます。
0324デフォルトの名無しさんNGNG
>>321
a の部分ってのは、配列になってるの?それともばらばらの変数?
配列になってると仮定すると、↓で、 1番目の値を a[0]、2番目の…(ry に読み込む。

int z,a[3];
for(z=1;z<=3;z++){
printf("%dつ目の値 ",z);
scanf("%d",&a[z-1]);
}
0325サイコロNGNG
できました!
みなさん、ほんとうにありがとうごさいました!!
0326デフォルトの名無しさんNGNG
>>325
とりあえず
確立→確率
は直しておこう。どんなに頑張ってもコンパイラは教えてくれないバグ(w
0327デフォルトの名無しさんNGNG
>>325
「0」 の目が出る確率は 0 だけど、その辺は直した?
0328309NGNG
>>324
変数です。授業では配列をやっていないので配列は使わないと思われます。
0329サイコロNGNG
直しました。大丈夫です!
本当にありがとございましたm(--)m
0330デフォルトの名無しさんNGNG
>>328
配列やってないとすると、switch() もやってないのかな?そうすると変数を a, b, c として
d でいったん入力を受け取って、

int z,a,b,c,d;
for(z=1;z<=3;z++){
printf("%dつ目の値 ",z);
scanf("%d",&d);
if(z==1)
a=d;
if(z==2)
b=d;
if(z==3)
c=d;
}

# 良い子はまねをしないでください系のコードになったかも。
0331309NGNG
>>330
if、switch、for文の順で習いました。
この後にはここで出す値とifを使い、
それぞれに対応した場合分けの出来るようにするところまでが宿題です
これを使ってやってみます。ありがとうございました。
0332デフォルトの名無しさんNGNG
宿題ですが、まったくわからないので、お願いします。
<問題>
############
#...#......#
..#.#.####.#
###.#....#.#
#....###.#..
####.#.#.#.#
#..#.#.#.#.#
##.#.#.#.#.#
#........#.#
######.###.#
#......#...#
############
この2次元配列で、#は迷路の壁、ドットは迷路の道を表す。配列の中でドットのあるところだけが通ります。
迷路の出口(1つあると仮定)に必ず行き着く簡単なアルゴリズムがある。このアルゴリズムでは出口がないと入り口に戻ってくる。
まず、右手で右側にある壁に触りながら前方に歩き出す。決して壁から手を離してはいけない。迷路が右に折れていたら壁に沿って右に曲がる。
このようにして進んでいけば、壁から手を離さないかぎり必ず迷路の出口に着く。
迷路を通り抜ける再帰関数mazetraverseを書け。この関数は引数として迷路の入った12×12の文字型配列およpび入り口の位置を受け取る。
mazetraverseは出口に向って進むたびに文字Xを置いていく。
出口に着いたら、迷路から脱出できたことを示すため迷路全体をプリントすること。

以上です。どうかよろしくお願いします。
0333デフォルトの名無しさんNGNG
ポインタの宿題なんですがちょっと分からないので教えて下さい。

文字列「Evercool」をメモリ領域に格納し、ポインタの概念を利用して文字列「Eeco」と「lorv」を
画面に表示するプログラムを作成せよ。
って言う問題です。
ポインタまで来て少しつまずいてます。
よろしくお願いします。
0334デフォルトの名無しさんNGNG
ポインタの概念を利用してってこういうことか?
char *str = "Evercool";
int i;
for(i=0; i<4; i++){ putchar(*str); str+=2; }
putchar('\n'); str--;
for(i=0; i<4; i++){ putchar(*str); str-=2; }
0335デフォルトの名無しさんNGNG
d次元正方格子で各ステップごとに2d個の隣接格子点の一つを等確率で
選んで飛び移る(対象単純ランダムウォーク)とき、再帰確率をシミュレーション
によって求めるには?
3次元までは分かるがd次元に拡張する良い方法はないかのう…。
0336デフォルトの名無しさんNGNG
>>332
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=106
に置いておきますた。

なお、以下の仮定が外れていたら適当に修正してください。
1. 通り抜けた部分に置いた X マークは道が間違っていても消さなくていい。
2. 呼び出し元の迷路データを書き換えても良い。
3. 迷路のゴールは端にある。
0337デフォルトの名無しさんNGNG
>>335
再帰確率とかよくわからなかったけど、
ようするに一度通った座標を覚えておけばいいのだろ?

#include <vector>
#include <map>
#include <iostream>
#include <iterator>
#include <cstdlib>
using namespace std ;
int main()
{
const int d = 6 ;
const int loop_num = 1024 * 8 ;
vector<int> pos( d, 0 ) ;
map<vector<int>,int> count ;

for( int i = 0 ; i < loop_num ; i++ ){
if( rand() % 2 ) ++pos[ rand() % d ] ;
else --pos[ rand() % d ] ;
++count[pos] ;
}

cout << "ゆにーくな座標の数/移動した数="
<< count.size() << "/" << loop_num << "="
<< static_cast<double>( count.size() ) / loop_num
<< endl ;

return 0 ;
}
0338デフォルトの名無しさんNGNG
次は文字列と検索する文字を入力し,文字列の中に検索する文字があれば,それ以降(その
文字を含む)の文字列を表示するプログラムです.空欄を埋めてプログラムを完成してください.
#include <iostream.h>
#define STR_LENG 100
char *wherechar(char *p,char ch);
void main(void)
{
char str[STR_LENG+1], ch, *p;
cout << "文字列入力"; cin >> str;
cout << "検索文字?"; cin >> ch;
if((p=wherechar(str,ch)) == NULL){
cout <<"文字"<< ch << "は見つからない"<<endl;
}
else{
cout<<"文字"<<ch<<"の後ろの文字列は"<<p<<endl;
}
}
char *wherechar(char *p,char ch)
{
//埋めていただきたいところ
}

という問題です。よろしくお願いします。

0339デフォルトの名無しさんNGNG
>>338
for(;*p;p++)
if(*p==ch)
return p;
if(!ch)
return p;

return NULL;
0340疲NGNG
文字列 "** /?"
(**は数字の1から15)
以外しか読み込めないように制御する式はどうやったら良いんでしょうか?
ずっと悩んでいるんですが教えてください。

0341デフォルトの名無しさんNGNG
http://www.gsic.titech.ac.jp/supercon/supercon2004/yosen-mondai.html
を解いてください。
0342デフォルトの名無しさんNGNG
二次元配列のメモリを確保することってできますか?
0343デフォルトの名無しさんNGNG
>>342
int a[2][3];
こうすれば確保されます。
0344デフォルトの名無しさんNGNG

>>343
ありがとうございます。
では、二次元配列のメモリの動的確保ってできますか?
0345デフォルトの名無しさんNGNG
>>344できる
0346デフォルトの名無しさんNGNG
>二次元配列のメモリの動的確保
順番にやるだけ
0347346NGNG
念のため補足すると、高次からね。
0348デフォルトの名無しさんNGNG
>>347

えっと、mallocでやりたいんですけども…
0349デフォルトの名無しさんNGNG
できますか
と
どうやるんですか
は全然違う質問です。
0350デフォルトの名無しさんNGNG
mallocでやりたいんですが、どうやるんですか?

>>349
質問のしかたが悪く、すみませんでした。
0351デフォルトの名無しさんNGNG
>>二次元配列のメモリの動的確保
>順番にやるだけ
>念のため補足すると、高次からね。

int **a,i;
a=(int *)malloc(sizeof(int *)*2次の大きさ);
for(i=0; i<2次の大きさ; ++i) a[i]=malloc(sizeof(int)*1次の大きさ);
0352デフォルトの名無しさんNGNG
↑間違ってるし...

a=(int **)malloc(sizeof(int *)*2次の大きさ);

ぢゃねーのか?
0353デフォルトの名無しさんNGNG
↑?????
0354デフォルトの名無しさんNGNG
↑??????
0355デフォルトの名無しさんNGNG
質問者のイメージする2次元配列によるんだが、>>343-344の流れからいくと、
malloc(n*m*sizeof(int)) じゃないのか?
0356デフォルトの名無しさんNGNG
>355 ほぇ?
int a[2][3];
って話しか出てない気がするのはもれの目が悪いせいか?もまえがデムパなのか?
0357デフォルトの名無しさんNGNG
書き込めない…
0358デフォルトの名無しさんNGNG
なかなか哲学的な書き込みだな↑
0359デフォルトの名無しさんNGNG
例えばg[j][i]という配列があるとします。
この場合のjとiのメモリを動的確保したいのですが、
どうすればいいのでしょうか?
0360デフォルトの名無しさんNGNG
int *i,*j;
i=malloc(sizeof(int)*1);
j=malloc(sizeof(int)*1);
ぢゃないのか?
0361デフォルトの名無しさんNGNG
>>360
ありがとうございます。
intの箇所をcharにしてもできますか?
0362デフォルトの名無しさんNGNG
何がしたいのか皆目見当がつかんが
char *i,*j;
i=malloc(sizeof(char)*1);
j=malloc(sizeof(char)*1);
別に問題なかろ
0363デフォルトの名無しさんNGNG
>360,362 もまえイヂワルだな(w

>例えばg[j][i]という配列があるとします。
>この場合のjとiのメモリを動的確保したいのですが、
質問文章が全然ダメなんだが、
意図はg[0][0]〜g[i][j]の配列を確保したい、って事ぢゃねーのか?
iとiのメモリを動的確保したいのではなく(w
0364デフォルトの名無しさんNGNG
>>363
質問内容がめちゃくちゃですみません。
363さんが言っている
>g[0][0]〜g[i][j]の配列を確保したい
ってことをしたいのですが、どうすればいいのでしょうか?
0365363NGNG
>どうすればいいのでしょうか?

>351,352 読め
>355ぢゃねーぞ(w
0366デフォルトの名無しさんNGNG
>>365
そうかな?
ま、364が何をしたいのかは、この状態ではわからんけどな。
0367デフォルトの名無しさんNGNG
>366 ほぇ?
>g[0][0]〜g[i][j]
って話しか出てない気がするのはもれの目が悪いせいか?もまえがデムパなのか?
0368デフォルトの名無しさんNGNG
二次元配列ってのは配列を指すポインタの配列と覚えたほうがわかりやすい
0369デフォルトの名無しさんNGNG
>>368
その二つを一緒にするのは配列とポインタを混同するようなものかと。
0370デフォルトの名無しさんNGNG
まぁ別に char *p; を

*(p+i) としようが p[i] としようが同じ訳なんだが、
違う意味の所もあるしな
0371デフォルトの名無しさんNGNG
自然対数の低の累乗e^(x)のマクローリン展開を定義によって求め、その値を
近似計算する関数定義、
double exp2(double x);
を作成し、eの値を求めよ。

この課題をどなたかお願いします。力不足ですみません
0372デフォルトの名無しさんNGNG
せめてマクローリン展開した式くらい書くがよろし。
あと求めるのはdoubleの精度まででいいのか?
0373デフォルトの名無しさんNGNG
>>371
>372 にもあるとおり、数学計算の問題の場合は、どんな計算なのか十分に
説明してくれないと、知ってる人しかできないので、その辺よろしく

double exp2(double x)
{
double n = 0;
double n_kaijo = 1;
double oldans;
double x_njo = 1;
double newans = 0;
double err, e = (1/(10000000000.0));

do {
oldans = newans;
newans = oldans + x_njo / n_kaijo;
n++;
n_kaijo *= n;
x_njo *= x;

err = fabs((newans - oldans) / newans);
} while (err > e);

return newans;
}
0374デフォルトの名無しさんNGNG
考えてもここまでしか分かりませんでした。教えてください(T T)

課題
n次正方行列x、yの積を行列zに求める関数mul_mat()を定義せよ。
定義した関数により、
2 1 -3 -1 1 -2
5 -7 1 1 2 -1    ←三次正方行列同士の積
0.5 4 -2 3 -2 1     
を計算し、結果を印刷せよ。
0375374NGNG
#include <stdio.h>
#define N 5

double a[N][N]={{2.0,1.0,-3.0},{5.0,-7.0,1.0},{0.5,4.0,-2.0}};
double b[N][N]={{-1.0,1.0,-2.0},{1.0,2.0,-1.0},{3.0,-2.0,1.0}};
double c[N][N];

void mul_mat(double z[][N],double x[][N],double y[][N],int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
z[i][j]=x[i][j]*y[i][j];
}

void print_mat(double x[][N],int n)
{
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%5f",x[i][j]);
printf("\n");
}
}
0376374NGNG
void main()
{
print_mat(a ,3);
printf("\n");
print_mat(b ,3 );
printf("\n");
mul_mat(c ,a ,b ,3);
printf("\n");
print_mat(c ,3 );
}


>>374の行列がずれてしまって読みにくくてすみません。
0377デフォルトの名無しさんNGNG
>>374
行列の積は、成分であらわすと
    z_ij = Σ a_ik*b_kj
だから、mul_mat 内で新しい for ループを使って k を 0〜2 間で動かして、積の総和を
z_ij に入れてやればいいかと。

ちなみに N の 5 は 3 の間違い?
0378374NGNG
Nは3の間違いかもしれません。
forループを使って考えてみます。
また分からなかったら教えてください。m(_ _)m
0379デフォルトの名無しさんNGNG
>>372,373
すみません。マナー違反でした、、

そして、ありがとうございます!
まさかこんなに早いとは思いませんでした、感謝です。
めげずにC言語がんばります
0380374NGNG
>>375のmul_mat内を変えて、
void mul_mat(double z[][N],double x[][N],double y[][N],int n)
{
int i,j,k;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<=0;k++)
z[i][j]=x[i][k]*y[k][j]+x[i][k+1]*y[k+1][j]+x[i][k+2]*y[k+2][j];
}
としたら、結果は正しく出たのですが、
無駄が沢山あるように思えます。もう少しスマートに出来ないでしょうか?
0381374NGNG
void mul_mat(double z[][N],double x[][N],double y[][N],int n)
{
int i,j,k;
k=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
z[i][j]=x[i][k]*y[k][j]+x[i][k+1]*y[k+1][j]+x[i][k+2]*y[k+2][j];
}
としてみました。連レスすみません。
もっと良いのがあったらご教授下さい。
有難う御座いました!!
0382デフォルトの名無しさんNGNG
実数a,bを引数とし、それらの大きい方の数を関数値とする関数定義
double maxi(double a,double b);
と小さい方の数に対応する関数定義
double mini(double a,double b);
を作成し、それらの動作テストのためのプログラムを作成せよ

どうかお願いしますm(__)m
0383デフォルトの名無しさんNGNG
>>380
せっかく k のループ入れたんだから、ループさせようよ(^^;;;

void mul_mat(double z[][N], double x[][N], double y[][N], int n)
{
int i, j, k;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {

z[i][j]=0; /* まず積算前に初期化しておく */
for (k = 0; k < n; k++)
z[i][j] += x[i][k] * y[k][j]; /* k ごとに積算していく */

}
}
}
0384デフォルトの名無しさんNGNG
>>382そんなのわからない奴っているのか?信じられん。いや俺は絶対信じない!
0385374NGNG
>>383
有難う御座います。
z[i][j]=0; /* まず積算前に初期化しておく */
が無くても出来たのですが、あった方がいいのでしょうか?
0386デフォルトの名無しさんNGNG
>>385
絶対必要

もし、c=a*b を計算して表示した後に、今度はc=b*a を計算しようとかしたら、
c には前の計算結果が残っているから、0 で初期化しないと、それも足しちゃうよ?

# ついでに言うと、>380-381 がだめな理由は、3次以外のn次正方行列(→問題
# 参照)でおかしくなるから
0387374NGNG
ありがとうございました。m(_ _)m
よく考えます!!
0388デフォルトの名無しさんNGNG
>>336
332です。どうもありがとうございました。助かりました!またお願いします。
0389デフォルトの名無しさんNGNG
実行結果
二つの整数を入力してください。
整数A:40
整数B:45↓
平均値の符号を反転した値は-42です。

平均値の符号を反転した値って何?どうやって計算するの?教えてください
0390デフォルトの名無しさんNGNG
-1をかけりゃいいんでない?
0391デフォルトの名無しさんNGNG
かける必要なんて無い。
-a
0392389NGNG
できました、ありがとうございます。それでもうひとつ教えてほしいんですが
実行結果
長さcmを入力してください:25.4↓
それは10.000000インチです。

cmの単位を、インチに変換した値にするんですけどどうすればいいんでしょうか
0393デフォルトの名無しさんNGNG
2.54 で割ればいいのでは?
0394デフォルトの名無しさんNGNG
プログラム以前の問題だよなコレ
0395デフォルトの名無しさんNGNG
>平均値の符号を反転した値は-42です。
>平均値の符号を反転した値って何?
類推できないのかよ。恐ろしいな。
int 切捨てになってること以外は、小学生向けの知能テストのレベルだよ。
0396デフォルトの名無しさんNGNG
ゆとり教育の賜物ですな
0397デフォルトの名無しさんNGNG
ですな。
0398デフォルトの名無しさんNGNG
簡単な問題は
友達に聞くほうが早いで。
0399デフォルトの名無しさんNGNG
int red,green,blueとdouble brightnessをメンバとする構造体colorと、
int x,yをメンバとする構造体coordinateを作成し、coordinate positionと
color lightをメンバとする構造体dotinfoを定義せよ
(@�u@ .:;)御願い
0400デフォルトの名無しさんNGNG
http://www9.plala.or.jp/sgwr-t/c/sec15.html
>(1)構造体の型枠(テンプレート)の宣言
ここ見たらできるでしょう。めちゃくちゃ簡単ですよ。
0401399NGNG
>>400
わかりました。そこで勉強してきます
0402ぼるじょあ ◆yBEncckFOU NGNG
ぼるじょあ◆yBEncckFOUは共同体で連続体で群生体だから
無限の知識と無尽蔵の体力を持ってるんだYO!24時間、いつでも質問オッケー♪

(・3・) エェー こっちが嫌になるほど質問しろYO!

名前欄に「ぼるじょあ#ぶるじょあ」って書けば、キミも今日から ぼるじょあ◆yBEncckFOU だYO!
名前欄に「ぼるじょあ#セV8cLFセz」って書けば、キミも今日から ぼるじょあ◆yEbBEcuFOU だYO!
*ぼるじょあ◆yBEncckFOUはコテハンじゃないYO!
*ぼるじょあ◆yBEncckFOUはいつだって全力投球ダジェ!!
*ぼるじょあ◆yBEncckFOUは共同体で連続体で群生体だYO!
*ぼるじょあ◆yBEncckFOUはみんななれるからイイぼるじょあも悪いぼるじょあもいるYO!
*ぼるじょあ◆yBEncckFOUはエムエクースとニーはよくわからないYO!
*ぼるじょあ◆yBEncckFOUは2ちゃんねるの人気者だYO!
*ぼるじょあ◆yBEncckFOUはちょっと基地外はいっているYO!
0403デフォルトの名無しさんNGNG
>>399
>int red,green,blueとdouble brightnessをメンバとする構造体colorと、
struct color {
int red, green, blue;
double brightness;
};
>int x,yをメンバとする構造体coordinateを作成し、
struct coordinate {
int x, y;
};
>coordinate positionと
>color lightをメンバとする構造体dotinfoを定義せよ
struct dotinfo {
coordinate position;
color light;
};
もう>400の勉強しに逝ってしまったかな?
0404デフォルトの名無しさんNGNG
次の関数を定義し、適当なmain関数を付けて実行しなさい。
・文字列を受け取り、その中の最小(コード)の文字を返す関数min

よろしくお願いします。どう考えるのかご教授下さい。
0405デフォルトの名無しさんNGNG
自然対数の低の累乗e^(x)のマクローリン展開を定義によって求め
その値を近似計算する関数定義
double exp2(double x);
を作成しeの値を求めよ

これを誰かお願いします。
0406デフォルトの名無しさんNGNG
�@キー入力で文字列を読み込む
�A検索したい文字列をキー入力
�Bマッチする文字列のメモリ番地の範囲を出力

というものなのですが、お願いします。

メモリ番地の先頭番地だけの出力ではなくお願いします。

「あいうえおえおえお」とかの場合で検索語「えお」ならば
1つめの番地 4〜5
2つめの番地 5〜6
3つめの番地 6〜7 という感じです。
0407デフォルトの名無しさんNGNG
引数1 int型 税抜き価格
引数2 int型 税率(%)
戻り値 int型 税込価格
引数から税込価格の計算をする。

main
整数型変数に税抜き価格を入力する。
整数型変数に税率を入力する
gctpriccを用いて税込価格を計算する。
税込価格を表示する。

関数って難しいです。おながいします。
0408デフォルトの名無しさんNGNG
>>405
同級生がこのスレでもう聞いてるよ。
0409デフォルトの名無しさんNGNG
>>404
C++でいいのかな?

#include <iostream>
using namespace std;

char min(char[]);

int main() {
char test[] = "fieiVj aEFLjfQelha BHue ha";
cout << min(test) << endl;
return 0;
}

char min(char s[]) {
char m = s[0];
int len = strlen(s);
for (int i = 1; i < len; i ++)
if (s[i] >= 'A' && s[i] <= 'z' && s[i] < m)
m = s[i];
return m;
}

アルファベットに限定する必要ないなら最後の方の if の中身は
if (s[i] < m) だけでいいでしょう。
Cだったら・・・自分で書き換えて。
0410デフォルトの名無しさんNGNG
>>405
>371- あたりを参照のこと。

>>404
#include <stdio.h>

char min(char const *str)
{
unsigned char lowest;

for(lowest = 0xff;*str != 0; str ++)
{
if (((unsigned char) *str) < lowest)
lowest = *str;
}

return lowest;
}

int main()
{
char s[] = "The quick brown fox jumps over the lazy dog.";

printf("'%s'の最小のコード: '%c'\n", s, min(s));

return 0;
}
0411デフォルトの名無しさんNGNG
げ、かぶった(汗
0412デフォルトの名無しさんNGNG
>409-410
熾烈な争いだ・・・。
0413デフォルトの名無しさんNGNG
>>407
かぶりませんように・・・(ドキドキ)。

#include <iostream>
using namespace std;

int gctpricc(int, int);

int main() {
int zenuki;
cout << "税抜き価格は?";
cin >> zenuki;

int zeritsu;
cout << "税率は?";
cin >> zeritsu;

cout << "税込みで" << gctpricc(zenuki, zeritsu);
cout << "円かよ〜ヽ(`Д´)ノウワァァン" << endl;

return 0;
}

int gctpricc(int zenuki, int zeritsu) {
double zekomi = static_cast<double>(zenuki);
zekomi *= 1.0 + static_cast<double>(zeritsu) / 100;
return floor(zekomi);
}

ところで gctpricc ってなんだぁ!?
もしかして getprice だったのかな・・・?
0414デフォルトの名無しさんNGNG
>>406
本当に ascii コードじゃなくて日本語でやるの? それとも ascii だけでいいの? まさか混在?
日本語だとしたら、文字コードとかはどうなってる?
もしかして wcs <-> mbs とかいう問題?
0415406NGNG
ああ、日本語は例題として使ってしまっただけで
日本語じゃなくて良いんです。すいませんでした。
お願いします。
0416デフォルトの名無しさんNGNG
線形リストが与えられたとき,その長さ(要素の個数)を計る関数
int length( list *pt),リスト要素の数字の和を計算する関数 int sum( list
*pt ) および2つのリストのそれぞれの対応する要素の和を要素するリストを計算する
関数 list *add_list( list *list_a, list *list_b) をつくれ.ただし,
add_listについては,長さが一致しない場合には短い方に値0の要素を適当に後ろに詰
めるようにして長さを一致させたリストとの和をとると考えよ
0417デフォルトの名無しさんNGNG
>>415
ここを見てみると strstr 関数は日本語入ってても大丈夫そうだぞ。
http://ryu8.pinoko.jp/memo/cpp/SerchTxt/SerchTxt.txt
0418417NGNG
おっとこっちのページをリンクした方がよかったかな。
ttp://ryu8.pinoko.jp/memo/cpp/SerchTxt/
0419デフォルトの名無しさんNGNG
>>417
いや、文字コード次第だが境界の問題がある。要はある字の第二バイトと次の字の
第一バイトが検索文字の第一、第二バイトに一致する可能性がある。
加えて、>406 の問題文を見ると漢字一個で番地が 1 増えてるし、ascii と混ざると
めんどい事になりそう。
0420デフォルトの名無しさんNGNG
>>416
>線形リストが与えられたとき
その線形リストについてもうちょっと詳しく書いて。
先頭のノードはダミーなのかそうじゃないかとか
終端のノードはNULLをさしてるかどうかとか

だいたいメンバーに要素の長さを保持しておくんだったらlength関数めっちゃ短いし。(一行?)
いやむしろメンバーに和の値を保持しておくんだったらsumもいらないに近いな・・・(あんまそんなことしないと思うけど)。
0421399NGNG
>>403
ありがとうです
0422406NGNG
えーと、ファイルからの読み込みとかじゃなくて・・・
キー入力でお願いしたいんですが・・・
配列とかを使うっぽいんですが分かりません。
どなたか・・・どなたか・・・・(´ω`)
0423デフォルトの名無しさんNGNG
2個のint型変数引数の内容を入れ換えるための手続き型引数付きマクロ、
iswap(a,b)
を実現せよ

誰か助けてくださいm(__)m
0424423NGNG
すみません追加です
main()も作成せよとあります。


間に合ったかな、、
0425423NGNG
main()関数○
main() ×
0426デフォルトの名無しさんNGNG
>>415
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=107
に置いておきますた。

入力する文字列は、あくまで一続きであると仮定。空白で区切られているとそこで
読み込みを打ちきります。また、「文字の番地」の意味を「先頭から何文字目か」の
ことと解釈して作ったので、違ってたら適当にいじってください。
0427デフォルトの名無しさんNGNG
(゚Д゚)ハァ?
0428デフォルトの名無しさんNGNG
>>423
w=a
a=b
b=w
a,bに適当な数字入れてやってみ
0429デフォルトの名無しさんNGNG
>>420
#include <stdio.h>
#include <stdlib.h>
struct list{
int no;
struct list *next;
};
typedef struct list list;
list *add_to_list( int no, list *l )
{
list *pt = (list *)malloc( sizeof(list) );
pt->no = no;
pt->next = l;
return pt;
} /* add_to_list */
0430426NGNG
>>427
…どの辺が変?
0431デフォルトの名無しさんNGNG
>>420
int main()
{
list *pt = NULL;
list *ptx;
int i;
/*---- make a list ----*/
for ( i = 0; i < 20; i++ ) pt = add_to_list( i, pt );
/*---- print the list ----*/
ptx = pt;
while ( ptx != NULL ){
printf( "%d:", ptx->no );
ptx = ptx->next;
} /* while */
printf( "\n" );
/*---- free the list ----*/
ptx =pt;
while ( ptx != NULL ){
list *n = ptx->next;
free( ptx );
ptx = n;
} /* while */
return 0;
} /* main */
0432423NGNG
>>428
#define iswap(a,b) としてそのあとに

w=a
a=b
b=w
でいいんですか?

0433デフォルトの名無しさんNGNG
>>432
マクロの使い方がまったく分かってないでしょ。
たとえば、こんな感じ。
↓
#define iswap(a,b) ¥
do {¥
int temp = a;¥
a = b;¥
b = temp;¥
} while (0)
0434デフォルトの名無しさんNGNG
#include <stdio.h>
#define iswap(a,b) w=a ,a=b, b=w;
int main(void)
{
int a , b,w;
a = 4, b = 6;
printf("aは%d bは%d\n", a,b);
iswap(a,b);
printf("aは%d bは%d\n", a,b);

return 0;
}

>>432
ちっとは脳みそ使ってみたらどうなんだ
0435423NGNG
>>433
おっしゃる通りマクロについて無知です
この分野の難解さにがくぜんとしてます、、
教えてくれて感謝です!
0436399NGNG
>>403で定義した構造体dotinfo型の変数imageの初期値を以下の値としたい。
lightのメンバ変数red,green,blueの初期値を20,40,90とし、
positionのメンバ変数x,yの初期値を240,180とするプログラムを作成せよ
よろしゅうたのんます
0437434NGNG
>>433さんorz
0438423NGNG
聞きたいんですが、みなさんもCを始めたとき
はかなり理解するのに苦労しました?
自分はかなり苦労してるんでまじでアフォなんじゃと悩んでます
0439406NGNG
どなたかお願いします。(´д`)ヾ
0440デフォルトの名無しさんNGNG
>>439
横着せんと、質問以降のレスはちゃんと全部嫁。特に >426
0441デフォルトの名無しさんNGNG
>>413
CPad for Borland C++コンパイラーってソフトで実行すると
致命的エラー F1003 C:\borland\bcc55\Include\stdcomp.h 5: error 指令: Must use C++ for STDCOMP.H
と出ますた。

ともかく乙です。ありがとう。
「"円かよ〜ヽ(`Д´)ノウワァァン"」には笑ったYO!
0442デフォルトの名無しさんNGNG
>>438
かけらも。
0443デフォルトの名無しさんNGNG
>>406
どこまで対処すればいいのかよくわからんので2バイト文字に変換して処理するようにした。
入力文字数を限定したくないのでC++ね。
#include<iostream>
#include<string>
using namespace std;
wstring to_wide(std::string const & s){//2バイト文字に変換
 int len = mbstowcs(NULL, s.c_str(), s.size());
 wchar_t * buffer = new wchar_t[len + 1];
 mbstowcs(buffer, s.c_str(), len);
 wstring result(buffer, len);
 delete[] buffer;return result;
}
int main(){
 string source,pattern;
 string::size_type pos=0;//検索場所
 int hitNum=1;
 cin>>source;//ソース文字列を入力
 cin>>pattern;//検索文字列を入力
 wstring wSource=to_wide(source),wPattern=to_wide(pattern);
 while(1){
  pos=wSource.find(wPattern,pos);
  if(pos==string::npos)break;//検索終了
  int start=(int)&wSource[pos],end=start+wPattern.size()*sizeof(wchar_t)-1;
  cout.unsetf(ios::oct);cout.unsetf(ios::dec);cout.setf(ios::hex|ios::showbase);
  cout<<hitNum<<"つめの番地:"<<start<<"〜"<<end<<endl;//番地を16進数で画面に出力
  pos++;hitNum++;
 }
 return 0;
}
0444デフォルトの名無しさんNGNG
406 じゃないけど、コンパイルできない… (g++ (GCC) 3.3.1 (cygming special) 使用)
こちらの環境が腐ってるのでしょうか? 。・゚・(ノД`)・゚・。

D:\tmp\syuku>g++ -g 406wc.cc
406wc.cc:4: error: syntax error before `const'
406wc.cc:7: error: `len' was not declared in this scope
406wc.cc:8: error: `s' was not declared in this scope
406wc.cc:8: error: `len' was not declared in this scope
406wc.cc:8: error: ISO C++ forbids declaration of `mbstowcs' with no type
406wc.cc:8: error: `int mbstowcs' redeclared as different kind of symbol
/usr/include/stdlib.h:93: error: previous declaration of `size_t
mbstowcs(wchar_t*, const char*, unsigned int)'
406wc.cc:8: error: initializer list being treated as compound expression
406wc.cc:9: error: `len' was not declared in this scope
406wc.cc:9: error: 'wstring' is used as a type, but is not defined as a type.
406wc.cc:10: error: syntax error before `delete'
406wc.cc: In function `int main()':
406wc.cc:21: error: `wstring' undeclared (first use this function)
406wc.cc:21: error: (Each undeclared identifier is reported only once for each
function it appears in.)
406wc.cc:21: error: syntax error before `=' token
406wc.cc:23: error: `wSource' undeclared (first use this function)
406wc.cc:23: error: `wPattern' undeclared (first use this function)

D:\tmp\syuku>
0445デフォルトの名無しさんNGNG
>>416
#include <stdlib.h>
typedef struct {
int value;
list *next;
} list;
int length(list *pt){ int i;for(i=0; pt; ++i, pt=pt->next); return i; }
int sum(list *pt){ int s; for(s=0; pt; s+=pt->value, pt=pt->next); return s; }
list *add_list(list *pa, list *pb){
int a=length(pa); int b=length(pb); int len=a>b?a:b;
list *ret=malloc(sizeof(list)*len);
for(int i=0; i<len; ++i, pa=pa?pa->next:NULL, pb=pb?pb->next:NULL){
ret[i].value=(pa?pa->value:0)+(pb?pb->value:0); ret[i].next = ret+i+1;
}
ret[len-1].next = NULL;
return ret;
}
0446406NGNG
426見忘れてました。
で、機動させて文字を入力すると”Error: 入力 stdin が変です”
というエラーしかでませんでした。(´ω`)
プログラムは動いてるんですが・・・

>443
有り難うございます。ですが、あまりに高度な内容?
で、全く理解できません。
0447426NGNG
>>446
以下のコード (main() 内二箇所)を

if (fgets(buff, sizeof(buff), stdin) == 0) {
fprintf(stderr, "Error: 入力 stdin が変です。。。\n");
return 1;
}

このコードに置き換えるとどうなりますか? うまくいけば原因を表示してくれるんですが…

if (fgets(buff, sizeof(buff), stdin) == 0) {
if (feof(stdin))
fprintf(stderr, "Error: 入力 stdin が変です: eof\n");
if (ferror(stdin)) {
fprintf(stderr, "Error: 入力 stdin が変です: %s\n",
strerror(errno));
}
return 1;
}
0448デフォルトの名無しさんNGNG
>404
文字列は必ず最後に\0が付くといってみる。
0449デフォルトの名無しさんNGNG
初心者がここに出される問題を解いていけばレベルアップしていってウマーですか?
0450406NGNG
置き換えたらただのエラーで機動しませんでした。
というか自分が未熟なもので良く分からないからなんですが・・・
426さんのプログラムはきちんと動いているみたいです。
ただ文字を打ち込むと
if (fgets(buff, sizeof(buff), stdin) == 0) {
fprintf(stderr, "Error: 入力 stdin が変です。。。\n");
return 1;
の部分が表示されるので・・・でも自分では何がなんだか・・・
0451426NGNG
>>450
エラーはコンパイル時ですか? それとも実行時?
どんなエラーがでますか? エラーを「そのまま」コピペしてください。

# 後よろしければ参考程度に OS とコンパイラの名前も。
0452426NGNG
補足:
> 置き換えたらただのエラーで機動しませんでした。
についての質問です。
0453デフォルトの名無しさんNGNG
オレは>>426そのままで問題なく動いたけど...
ちなみにgcc3.3.1
0454406NGNG
コンパイラはLIGHT Cとかいうヤツです。vectorで無料でした。
OSはXPです。エラーメッセージというか・・・
ifで飛ばされてError: 入力 stdin が変です。。。
の部分が表示されるので、プログラム自体は動いてます。
0455デフォルトの名無しさんNGNG
オレはBorland C++ CompilerとBCC Developer使ってるよ
ttp://www.hi-ho.ne.jp/jun_miura/bccdev.htm

エラーは起こらなかったけど?
0456406NGNG
あれれ・・・自分だけおかしいのかな?
455さんのコンパイラは無料ですか?
そっちにしようかな・・・
Light Cはexeファイル作成したり作業が面倒なんですよね・・・
まぁ426さんのがそのまま動くのであればコチラに問題ある訳ですからね・・・。
0457404NGNG
>>409 >>410 各氏
わざわざ解いて頂いて、どうもありがとうございました。
ノートに書き写したので、これからじっくり考えてみます。
>>448様
優しいヒントをありがとうございます。文字列の問題が出題
された時には気をつけて解くようにします。
0458デフォルトの名無しさんNGNG
>>456
タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/
0459C初心者NGNG
次式のテーラー展開式に従って,指数関数e^xを計算する
プログラムをつくってください。
e^x= 1+x+x^2/2!+x^3/3!+…
(forループのループ変数を使って)
また,x=1の場合について,nの値が1から20までのそれぞれの
計算結果と真値e=2.718281828459045...とを比較して下さい.
という問題です。
何をforループのループ変数にすれば良いのかも分かりません。
どなたか助けて下さい。

0460デフォルトの名無しさんNGNG
>>459
この学校はダメ生徒ばっかりだな
0461デフォルトの名無しさんNGNG
>>459
>371- あたりを参照のこと。君で三人目
0462デフォルトの名無しさんNGNG
>>459
↓こんな感じかなぁ。

double exp(double x)
{
double e = 1;
double xn = x;
double factorial = 1;
for(int i=2; i<MAX; ++i)
{
e += xn / factorial;
xn *= x;
factorial *= i;
}
return e;
}
0463デフォルトの名無しさんNGNG
>>456 の light C をダウンロード、コンパイルしてデバッグしました。
CX::DX=3 AH=42H AL=00H で INT 21H して返り値 DX:AX != 3 でエラーっぽいです。

要約すると、標準入力をシークしようとして、シークできないって文句言ってます (・д・)ポカーン

406 氏へ:
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」
―――――――――――――‐┬┘
                        |
       ____.____    |
     |        |        |   |
     |        | ∧_∧ |   |
     |        |( ´∀`)つ ミ |
     |        |/ ⊃  ノ |   |  [LIGHT C]
        ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄    |   
                        |
そんなコンパイラ、窓から投げ捨てろ!
0464デフォルトの名無しさんNGNG
最大200文字までの空白を含む英語の文章を入力し、
文章を空白やカンマなどから判別して単語に分け、
かつ各単語の出現回数を計算して出現回数の多いものから順にトップ5の単語と
その出現回数を出力するプログラムを作りなさい。

・単語は空白から空白までの文字列を1つの単語とみなす。
 ('you your'の場合にはyouの個数は1カウントとする。)
・ポインタ変数を用いて作ること。


誰か助けてください・・・。
0465デフォルトの名無しさんNGNG
>>460
>>459の問題は1年(プログラミングを0から始めて2ヶ月)にはきついと
思いませんか?
0466デフォルトの名無しさんNGNG
e = 1+1+1/2!+1/3!+…
0467デフォルトの名無しさんNGNG
>>465=>>459
0468デフォルトの名無しさんNGNG
>>465
思わない。
C的にはぜんぜん初歩だし。むしろ数学の問題。
0469デフォルトの名無しさんNGNG
>>464
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=108
回答貼りましたが、どうでもよさげな部分(ソート等)は一部C++です。

こんな課題が出るのならソート、一般的なデータ構造等はすでにやってるでしょうし、
以下のことが分かれば大丈夫だと思います。
文字列をスペースかカンマで区切る時はstrtokを使ったら楽。
あと、scanfだと空白を読みこめないので
getsを使う必要があるのも注意点です。
0470デフォルトの名無しさんNGNG
>>465
漏れの学校でも1年でやったが、一万桁は求める羽目になったぞ。
0471デフォルトの名無しさんNGNG
>>469
scanf()を使わないと言うのには賛同するが、
scnaf()で空白を読み込めないと言うのは嘘だし
gets()を勧めるのは如何な最中と。
0472471NGNG
おっと、2行目、scanf()だよ。
0473デフォルトの名無しさんNGNG
>>464
おれはCで書いてみた
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=110
0474デフォルトの名無しさんNGNG
>>464
おれは STL 使って書いたので、たぶん課題としてはダメっぽいのでうpしません。
0475デフォルトの名無しさんNGNG
#include <stdio.h>

double frac(int n)
{
if(n == 1) return 1.0;
else return frac(n - 1) * n;
}

int main(void)
{
const double e = 2.718281828459045235360287471;
double exp1 = 1.0;
int n;
for(n = 1; n <= 20; n++)
{
exp1 = exp1 + 1.0 / frac(n);
printf("%.24f %2d %.24f\n", exp1, n, e - exp1);
}
return 0;
}
0476デフォルトの名無しさんNGNG
>>465
いまおじさんマになってる奴の中には
! の意味さえ教えりゃ小学校のうちから同等のことができた奴も多かろうて
同じ一年でも中学一年生にはきつかろうが
がっこでΣ習った奴はできなきゃあかんだろ
0477469NGNG
>>471
すまん。scanfは空白読めたのね。
今、検索して知った。

>>464
473の解答の方がC言語でかかれていて
読みやすくかつ正しいので、473をすすめる。
0478デフォルトの名無しさんNGNG
以下の手順で動的メモリの割り当て開放を行え。割り当ての際には割り当てられた
アドレスを出力せよ。出力されたアドレスを解析し、どのように割り当てが行われるか
考察せよ。

 | 操作列1      | 操作列2      |
1 | 200バイト割当て | 200バイト割当て |
2 | 200バイト割当て | 200バイト割当て |
3 | 1で割当てた領域の開放 | 1で割当てた領域の開放 |
4 | 250バイト割当て | 150バイト割当て |
5 | 150バイト割当て | 2で割当てた領域の開放 |
6 | 2で割当てた領域の開放 | 250バイトの割当て |
7 | 200バイトの割当て | 200バイトの割当て   |
0479デフォルトの名無しさんNGNG
>>464
文字列操作なんてC言語でやりたくねぇ・・・。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=111

>>474
STL使うのもありじゃない?
map使って既出単語の検索を高速化しましたとかやれば
それなりに評価してもらえそうな気が。
0480デフォルトの名無しさんNGNG
>>478
とりあえず、すべきことそのまんま書いてあるじゃん。
考察する部分が難しいって言うなら、とりあえず結果出してみて
アドレスがどうなったか書いてみ。
0481デフォルトの名無しさんNGNG
template <int n> struct F;
template <> struct F<0>{
enum{ value = 1 };
};
template <int n> struct F{
enum{ value = F<n-1>::value * n };
};

template <int n> struct E;
template <> struct E<0>{
static inline double value(){ return 1; }
};
template <int n> struct E{
static inline double value(){ return E<n-1>::value() + 1 / (double)F<n>::value; }
};

#include <iostream>
int main(void){
std::cout << E<1>::value() << std::endl;
std::cout << E<2>::value() << std::endl;
std::cout << E<3>::value() << std::endl;
std::cout << E<4>::value() << std::endl;
std::cout << E<5>::value() << std::endl;
std::cout << E<6>::value() << std::endl;
std::cout << E<7>::value() << std::endl;
std::cout << E<8>::value() << std::endl;
std::cout << E<9>::value() << std::endl;
std::cout << E<10>::value() << std::endl;
}
0482デフォルトの名無しさんNGNG
>>481
Java 厨です。こういう例(というか templete の宣言例) 、はじめてみました。
とても面白いです。でも僕の脳には難解で、日常的に読みたくはないです
0483デフォルトの名無しさんNGNG
このプログラムより効率の悪いプログラムを作成せよ。

#include<stdio.h>

int A(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return (A(n-1)+A(n-2));
}

main()
{
int n;

for(n=0; n<10; n++){
printf("A(%d) = %d\n", n, A(n));
}
}
0484デフォルトの名無しさんNGNG
>>483
#include<stdio.h>

int A(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return (A(n-1)+A(n-2));
}

main()
{
char n;

for(n=0; n<10; n++){
printf("A(%d) = %d\n", n, A(n));
}
}
0485デフォルトの名無しさんNGNG
問題
体積の異なる5個の球がある。それぞれの体積は、{1.20,3.65,2.70,8.93,7.62}である。
これらの値を配列に代入し、球の半径を求めよ。

お願いします。
0486デフォルトの名無しさんNGNG
>>237
遅れましたが、非常に助かりました。
ありがとうございます。
0487デフォルトの名無しさんNGNG
>>480
はい・・
0488デフォルトの名無しさんNGNG
#include <math.h>
#include <stdio.h>

main()
{
 double taiseki[] = {1.20,3.65,2.70,8.93,7.62}
 for(int i=0; i<5; i++)
 {
  printf("%f\n", sqrt(sqrt(taiseki[i] * 4.0 / 3.0 / M_PI));
 }
}
0489464NGNG
>>469
>>473
>>479

本当にありがとうございます。
実は、構造体もソートもまだ習ってないのです。
2次元配列に単語を入れていき、それをまた一つずつ取り出して
新しい2次元配列にコピーしつつ出現回数をカウントしてました。
今回みなさんのを見て本当に勉強になりました。
まだ書いてる途中ですが、がんばってみようと思います。
ありがとうございました。
0490デフォルトの名無しさんNGNG
>>488
なんか計算間違ってないかい?
0491デフォルトの名無しさんNGNG
>>488
立方根の求め方が違う
0492デフォルトの名無しさんNGNG
行列A(lm行列)と行列B(mn行列)の積ABを計算するプログラムを作成せよ。ただし、行列のすべての要素は整数であるとし、また、l、m、nおよび行列の要素はプログラム実行時に読み込むようにすること。

どなたか、助けてください・・・。
0493デフォルトの名無しさんNGNG
>>485
#include <stdio.h>
#include <math.h>

int main(void)
{
double vol[5] = {1.20,3.65,2.70,8.93,7.62};
double r;
for(int i=0; i<5; i++)
{
r = pow(vol[i] * 3.0 / 4.0 / M_PI , 1 / 3.0);
printf("V=%.2f -> r=%f\n", vol[i], r);
}
return 0;
}
0494ぼるじょあ ◆yBEncckFOU NGNG
保守
0495デフォルトの名無しさんNGNG
フィボナッチ数列を計算するプログラムを再帰を使わずに作成せよ。
0496478NGNG
>>480
プログラム書けません・・
0497デフォルトの名無しさんNGNG
>>492
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=112&fi=no
0498デフォルトの名無しさんNGNG
>>495
#include<stdio.h>
int main()
{
int an=1,an_1=1;
printf("%d %d ",an,an_1);
for(int i=0;i<10;i++)
{//とりあえず10ループ
int an_2=an+an_1;
printf("%d ",an_2);
an=an_1;
an_1=an_2;
}
return 0;
}
0499デフォルトの名無しさんNGNG
>>496
Nバイト割り当て
C: char *x = (char *)malloc(N);
C++: char* x = new char[N];

領域の解放
C: free(x);
C++: delete[] x;

アドレスの出力
C: printf("%ld", (long)x);
C++: cout << (long)x;
0500デフォルトの名無しさんNGNG
昨夜は色々有り難う御座いました。
真っ当なコンパイラで機動させたトコロ
きちんと動きました。やはりLIGHT Cは使えませんね・・・
>463さん
わざわざ面倒なことご苦労さんです。

で、動いたので良いのですが・・・
メモリ番地を出力して頂きたかったんです・・・(;´Д`)うは
勘違いしてお願いしていました・・・(´ω`)ショボーン

ex)1つめの単語は:1000〜1001番地
  2つめの単語は:1003〜1004番地 みたいな感じで・・・

どうもすいません(´ω`)・・・
0501デフォルトの名無しさんNGNG
ご苦労さんとはもっぱら目下の者にいう言葉である
(業界によるが)
0502デフォルトの名無しさんNGNG
>>500
感謝してるのに「ご苦労さん」という言葉を使うのは不適切だと思う。
0503デフォルトの名無しさんNGNG
既に解答が出てるけどせっかく書いたので

>>492
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1064150088_113/Source1.cpp
0504デフォルトの名無しさんNGNG
>>500

これを
printf("%dつめの番地 %d〜%d\n", c + 1, s - str1 + 1,
s - str1 + lenstr2);

このコードに差し替えてください。
printf("%dつめの番地 %p〜%p\n", c + 1, s, s + lenstr2 - 1);

表示はこうなります(メモリ番地は通常こういう表記):
  1つめの番地 0x22ef58〜0x22ef5a
0505C初心者NGNG
C言語で、
「平成元年から16年までを西暦に変換して、
 うるう年であれば、Lと出力するプログラム。
 うるう年は西暦が4で割り切れるとする。」
期待される出力
1 1989
2 1990
3 1991
4 1992 L

わけ分かりません><
if whitch forなどを使うらしいんですが…
誰か教えてください!
0506デフォルトの名無しさんNGNG
>>500-502
∀{日本人}において
{日本語の出来ない人} ⊂ {プログラム言語のできない人}
∴{日本語が出来ない} ⇒ {プログラム言語もできない}

でファイナルアンサー?{
0507デフォルトの名無しさんNGNG
>>505
whitch?

>>506
プログラム言語?
0508503NGNG
見直してみたらちょっとおかしい
スマン、流してくれ
0509C初心者NGNG
>>507
すいません。
whileでしたm(__)m

では訂正:
C言語で、
「平成元年から16年までを西暦に変換して、
 うるう年であれば、Lと出力するプログラム。
 うるう年は西暦が4で割り切れるとする。」
期待される出力
1 1989
2 1990
3 1991
4 1992 L

if while forなどを使うらしいんですが…
0510デフォルトの名無しさんNGNG
>>505
#include <stdio.h>

void whitch(void)
{
int i;
for (i = 1; i <= 16; i++) {
printf("%d %d", i, i + 1988);
if (i % 4 == 0) puts(" L");
else puts("");
}
}

int main(void)
{
whitch();
return 0;
}
0511デフォルトの名無しさんNGNG
>>507
文句はJISで大好評受付中。
0512デフォルトの名無しさんNGNG
ソーティングのプログラム作ったんですが、
昇順ソートは上手くいくのに降順だとちょっとおかしいんで、間違いを指摘してください
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=77
読み込みファイルのrandom.datの書式は、
要素数
乱数 乱数 乱数 乱数 乱数 ・・・・
みたいな感じです
692 231 699 801 404 999 840 988 688 519
を降順でソートすると、↓のようになるので困ってます
53977 999 988 840 801 699 692 688 519 404
元のデータ列の後ろに関係ないデカイ数字がたくさん格納されているようですが・・・これどうしたらいいですかね?
mallocの使い方がおかしいのかな
0513デフォルトの名無しさんNGNG
>>512

j = right;  これが原因。

data[data_num] にアクセスしちゃうでしょ。
0514513NGNG
> /* ソート関数呼び出し */
> quicksort(0,data_num,data,order);
いや、むしろ    ↑か。

こうすればいいね。
quicksort(0, data_num - 1, data, order);
0515デフォルトの名無しさんNGNG
あ、なんだなんだ
そうでしたか、ありがとうございます
0516デフォルトの名無しさんNGNG
>>495 確かめては無いがこんな感じなのではないかな
int s=0, a=1, b=1, n, i;
n = 求めたい番目;
if( n==1 || n==2 ) return 1;
for(i=3; i<n; ++i){
  s = a + b;
  a = b;
  b = s;
}
return s;
0517478NGNG
main(){
char *p1,*p2,*p3,*p4,*p5,*p6,*p7;

p1 = (char *)malloc(200);
printf("1のアドレス=%p\n",&p1);
p2 = (char *)malloc(200);
printf("2のアドレス=%p\n",&p2);
free(p1);
printf("3のアドレス=%p\n",&p3);
p4 = (char *)malloc(250);
printf("4のアドレス=%p\n",&p4);
p5 = (char *)malloc(150);
printf("5のアドレス=%p\n",&p5);
free(p2);
printf("6のアドレス=%p\n",&p6);
 p7 = (char *)malloc(200);;
printf("7のアドレス=%p\n",&p7);
 return 0;
}

こうやったら

1のアドレス=0012FF88
2のアドレス=0012FF84
3のアドレス=0012FF80
4のアドレス=0012FF7C
5のアドレス=0012FF78
6のアドレス=0012FF74
7のアドレス=0012FF70

って表示されました。あってますか?
0518デフォルトの名無しさんNGNG
それじゃあ、割り当てられたアドレスじゃなくて、ポインタ変数のアドレスだよ
0519604NGNG
スンマソン(´ω`)ご苦労様で御座いました。

>504さん
またまた有り難う御座いました。
新しいコンパイラをインストールしてやってみます。
どうもでした(≧∀≦)
0520デフォルトの名無しさんNGNG
ご苦労様はもっぱら(ry
馬鹿にしてるようにしか読めないぞ。>>500 なんか特に。
そのつもりならそれでいいけど
0521デフォルトの名無しさんNGNG
せめて「お疲れ様」にしてくれ。
というか、社会不適合者ばかりが集まってるのか?
0522デフォルトの名無しさんNGNG
n人の生徒のデータを読み込み、平均、最大値、最小値を求めるプログラムを作りなさい。
ただしデータの読み込み部分はinpdateとし、平均値、最大値、最小値を求める部分は
関数avemxmnとして作りなさい。

この問題が分かりません・・・・馬鹿なりに必死で考えてみたんですが全然ダメでした。
どなたかご教授お願いします。
0523Soket774NGNG
フォルダを、中身と一緒にコピーするにはどのようにすればいいのでしょうか?
0524デフォルトの名無しさんNGNG
>>509
#include <stdio.h>
int main(){
  int i = 0;
  while(++i <= 16){
    printf("%2d %d ", i, 1988 + i);
    if(i % 4 == 0) putchar('L');
    putchar('\n');
  }
  return 0;
}

// ※ 2000年はうるう年ではないが、あなたの出題に答えるとこうなります。
0525478NGNG
>>518
え、違うんですか・・(´・ω・`)
0526デフォルトの名無しさんNGNG
int a;
a = a の持ってる値。
&a = a のアドレス。
int *b = &a;
b = b の持ってる値 = a のアドレス。
&b = b のアドレス。
0527デフォルトの名無しさんNGNG
>>525
&イラネ
0528デフォルトの名無しさんNGNG
>>524
> // ※ 2000年はうるう年ではないが、あなたの出題に答えるとこうなります。
おいおい
0529デフォルトの名無しさんNGNG
>>528
ごめん、うるう年だったね・・。
0530478NGNG
1のアドレス=0090282C
2のアドレス=009028F8
3のアドレス=00000000
4のアドレス=009029C4
5のアドレス=00902AC4
6のアドレス=009021D0
7のアドレス=00902B60

といった結果になりました。あとはどうすればいいか解りません。
教えてください。。。
0531デフォルトの名無しさんNGNG
あとは考察すればいいじぇねーの?
0532478NGNG
>>530
これ操作列1についてしかやってないんですよ。
操作列2はどうすればいいか・・
0533デフォルトの名無しさんNGNG
動的にメモリを確保し、それを返さなければ、
最終的にはメモリが足りなくなりメモリを確保できなくなる。
それを以下の方法で確認せよ。

・無限ループを生成し、その中で、
−動的にメモリを確保する。
  −メモリを確保できなかった場合(malloc関数の返り値がNULL)
は、ループから抜ける。
  −確保したメモリのアドレスを出力する。
・この関数を呼び出すメインプログラムを作り、実行する。

っていう問題がでました。皆さんお願いします。
0534デフォルトの名無しさんNGNG
main () {
    void *p;
    while ((p = malloc(1024 * 1024) != NULL)) printf("%d\n", p);
}

書き込みを見る限りでは、こんなのしか出てこない
実行する気が全く起きない…
0535534NGNG
>>534 先頭の int が抜けてたスマソ
0536534NGNG
括弧、その他いろいろおかしいな
何やってんだ漏れorz
0537デフォルトの名無しさんNGNG
いい方法が思い浮かばないのでよろしくお願いします。
static struct ST{
unsigned char st;/* 状態 */
unsigned char priority;/* 優先度 */
void (*func) (unsigned char st);/* 実行関数 */
};
struct ST State[] = {
1,2,a
0,1,b
1,0,c
1,0,d
0,3,e
};
void test(unsigned char num, unsigned char st)
{
}
例えば上のようにあったとします。test関数の引数numはST構造体
の配列n番目が入ります(今の例だと0〜4)。、stはnumで指定した配
列番号のstを設定します(0か1)。
何がしたいかっていうと、test関数の中で、stが1のものの中で、
優先度がもっとも高い(0が一番高い)関数に1を引数として、またそ
れ以外でstが1のもには0を引数として渡し、また最高優先度でほか
に同じ優先度のもの(例だと最高優先度が2つある)があれば、それ
にも引数として1を渡す処理を作りたいのですが、いいやり方が思い
浮かびません。なにとぞよろしくお願いします。
0538デフォルトの名無しさんNGNG
状態を示す値struct ST::stを第一優先キー,
優先度を示す値struct ST::priorityを第二優先キー
として,予め,配列をソートしておくべき。

ソートされていれば,至極単純な処理で済む。
何も難しいことは無い。
0539デフォルトの名無しさんNGNG
>>525
>526 を参考にしながらちゃんと教科書などで復習したほうがいいよ。
ここちゃんと理解しておかないと、後でつまづくよん(脅
0540デフォルトの名無しさんNGNG
>>534
有難うございました!
0541478NGNG
>>539
はい・・頑張ります。
0542522NGNG
誰かタスケテー(ノД`)
0543ぼるじょあ ◆6gVmS8Qrys NGNG
誰かボスケテー(ノД`)
0544デフォルトの名無しさんNGNG
>>522 >>542
必死に考えた「過程」を示してくれるとうれしいな。

多分いろんな人の勉強になると思う。
0545デフォルトの名無しさんNGNG
>>541
操作列2:
操作列2は、操作列1の4の操作を6と7の間に動かしただけ。
操作列1用をちょっと書き換えれば操作列2用のプログラムはすぐできるっしょ?

考察:
16進数は分かってるものとして、紙の上にそれぞれの割り当てられたメモリの
位置関係を図示してみると、なんか見えてこない?
0546492NGNG
レス後れてすいません。
497さんありがとうございます
0547デフォルトの名無しさんNGNG
次の10個のデータをバブルソートを使って小さい順に並べなさい
2,9,4,5,1,8,0,7,6,3
ただし、どのような並べ替えが進行するのかわかるように表示させてください。

わかりません。お願いします
0548 ◆yEbBEcuFOU NGNG
てsつ2
0549522NGNG
>>544
>必死に考えた「過程」を示してくれるとうれしいな。

俺は平均、最大値、最小値を求めるプログラムを作るためにはどうすればよいのか考えた
平均、最大値、最小値を求めるプログラムなのだからどんなこともできる
手始めに全裸で姉の部屋にアンゲロ、アンゲロとつぶやきながら飛び込む
タンスをこじ開けブラジャーを腰に巻きパンティーを頭にかぶる
姉が呆然としながら見てくるが平均、最大値、最小値を求めるプログラムなので気にしない
姉のベッドに潜りこみ「幸せだから!幸せだから!」と絶叫
姉は無言で部屋から立ち去る
だがまだ平均、最大値、最小値を求めるには不十分
次は妹の部屋にムッシュムッシュと叫びながら飛び込む
妹は着がえをしている最中だったが最大値、最小値を求めるプログラムなので無視
半裸で逆立ちをしながら
「俺に充電しろ!!俺に充電しろ!!」と絶叫
妹は大泣きで退散
確実に平均、最大値、最小値を求めるプログラムに近づく
開脚後転でトイレに飛び込み便座を外し首に掛ける
ゾンビの真似をしながら母の部屋に突撃
タンスを開けると一枚の写真発見
死んだ親父が俺を抱いている写真発見
俺は泣いた
0550デフォルトの名無しさんNGNG
>>547 何がわからんの?
0551537NGNG
>>538
う、うあまりソートってしたことなくて苦手なんですよ。
ソートするってことはtest関数の頭で
struct ST State[] = {
1,2,a
0,1,b
1,0,c
1,0,d
0,3,e
}; を
ローカル変数をとって
struct ST a[] = {
1,0,c
1,0,d
1,2,a
0,1,b
0,3,e
};
とするっていうことですか?ソート詳しい人助けてください。
0552デフォルトの名無しさんNGNG
なんか>>522の必死っぷりにワロタのでマジレス。
生徒のデータってのはなんなのか
読み込むのはファイルからか標準入力なのか
inpdateじゃなくてinpdataじゃないかのか
等をちゃんと書けば誰か答えてくれるよ、たぶん。
0553547NGNG
>>550
ぜんぶです
0554デフォルトの名無しさんNGNG
>>553 バブルソートも知らないんですか?
0555553NGNG
>>554
なんとなくわかります。

#include<stdio.h>
int main (void)
{



これ以降どうやればいいかわかりません。教えてください
0556デフォルトの名無しさんNGNG
>>522

int *inpdate (int *n) {
  int i, *buf, *tmp;
  scanf("%d", n);
  tmp = buf = (int *) calloc(*n, sizeof(int));
  for (i = 0; i < *n; i++) scanf("%d", tmp++);
  return buf;
}
void avemxmn (int n, int *d, int *max, int *min, double *ave) {
  int i; *max = INT_MAX; *min = INT_MIN; *ave = 0;
  for (i = 0; i < n; i++, d++) {
    *max = *max<*d?*max:*d; *min = *min>*d?*min:*d; *ave += *d;
  }
  *ave /= n;
}
int main () {
  int size, max, min, *data = inpdate(&size);
  double ave;
  avemxmn(size, data, &max, &min, &ave);
  printf("max = %d\nmin = %d\nave = %lf\n", max, min, ave);
  free(data);
  return 0;
}

駄目っぽかったら自己訂正よろ
中途半端に酔った頭ではコレが限界
0557デフォルトの名無しさんNGNG
>>547
わからない言葉を検索する癖をつけることは上達への近道かと
バブルソートで検索してでてきたサイト↓
ttp://www.miyagi-ct.ac.jp/ee/lecture/E3_01/Bubble_sort.html

#include<stdio.h>
int main()
{
 int i,j,k;
 int data[]={2,9,4,5,1,8,0,7,6,3};
 int max=sizeof(data)/sizeof(int);
 for(i=0;i<max-1;i++)
 {
  for(j=i+1;j<max;j++)
  {
   if(data[i]>data[j])
   {
    data[i]=data[j]-data[i];
    data[j]-=data[i];
    data[i]+=data[j];
    for(k=0;k<max;k++)//途中経過を表示
     printf("%d ",data[k]);
    printf("\n");
   }
  }
 }
 return 0;
}
0558デフォルトの名無しさんNGNG
>>547
#include <stdio.h>
void print_array(int a[], int size, int n){
  int i;
  for(i = 0; i < size; i++){
    putchar(a[i] + '0');
    if(i == n) putchar('-'); else putchar(' ');
  }
  putchar('\n');
}
int main(){
  int a[] = {2,9,4,5,1,8,0,7,6,3};
  int i, j, tmp, flg, size = sizeof(a) / sizeof(int);
  flg = 1;
  for(i = 0; i <size; i++){
    if(flg) flg = 0; else return 0;
    for(j = 0; j < size - 1; j++){
      print_array(a, size, j);
      if(a[j] > a[j + 1]){
        tmp = a[j]; a[j] = a[j + 1]; a[j + 1] = tmp;
        flg = 1;
      }
    }
  }
  return 0;
}
0559558NGNG
うお、同着。
0560557NGNG
書き込み前にリロードしたのに…壮絶だ…(^^;
0561デフォルトの名無しさんNGNG
あやうく書き込むとこだったヤシの数→(1)
0562デフォルトの名無しさんNGNG
以下に示す仕様の関数を作成せよ。numの桁数がdnumより大きい場合は、左詰で表示すること。
中央揃えで、左右に均等に分割できない場合は、前半を一文字多くせよ。
void print_binary(unsigned int num,int dnum,char pos);
num: 表示する数字
dnum: 表示する桁数
  pos: 表示位置
numをdnum桁で表示する。このとき、posの内容により、左詰('L')、中央揃え('C')、右詰('R')
にせよ。また確認の為に、空白の代わりに_を表示せよ。例えば、
  print_int(100,10, 'C'); __1100100_
print_int(100,10, 'L'); 1100100___
print_int(100,10, 'R'); ___1100100
のように表示する。
0563デフォルトの名無しさんNGNG
>>556
たいていの場合、最大値と最小値がINT_MAXとINT_MINになってしまうね。
0564562NGNG
以下の手順に従って作成せよ。
●与えられた整数を2進数で表示するときの桁数を求める関数の作成
 (例えばint count_bit(int num);)
下記のように再帰的に桁数を求める。
 (a)num < 2 の場合: 1桁なので1を返す。
 (b)num > 2 の場合: count_bitにnum/2を与えて呼び出すことで、2桁目以上の桁数を求め
   それに1を加えて返す。
●与えられた整数を2進数で表示する関数の作成(例えばint print_bin(int num);)
(a)num < 2 の場合: numに対応する文字を出力する(0の場合は'0'、1の場合は'1')。
 (b)num >= 2 の場合: print_binにnum/2を与えて呼び出すことで、2桁目以上の桁を出力し
   そのあと1行目を表示する。
●上記の関数を使用して空白の数を求め、dnumとposの値によって適当な空白を
 数字の印刷の前後に入れるようにする。
0565522NGNG
>>552
あーすみませんでした。生徒のデータは身長で
読み込みは標準入力(キーボードからって意味?)と思います。
あとindateじゃなくてindataです。dateて、何なのよ俺。
教科書見てると配列使ってavemxmnとinpdataって関数作ってやるのかなと思ったんですが
まず配列からよく分かりません。今までだと配列は50以下とか条件あったけど今回は特に指定がないので・・・
あと関数もaveを平均みたいに一つならいいんですが複数だともうさっぱり分かりません。
いや正直1個でもよく分かんないんですけど。
要するにほとんど全部分かりませんスミマセンスミマセン。

>>556
お答えありがとうございます。でもtmpとかbufとかcallocとかが何のことか分からないです・・・

0566556NGNG
>>563>>565
修正したものあげ直し

int *indata (int *n) {
  int i, *buf, *tmp;
  scanf("%d", n);
  tmp = buf = (int *) calloc(*n, sizeof(int));
  for (i = 0; i < *n; i++) scanf("%d", tmp++);
  return buf;
}
void avemxmn (int n, int *d, int *max, int *min, double *ave) {
  int i; *max = INT_MIN; *min = INT_MAX; *ave = 0;
  for (i = 0; i < n; i++, d++) {
    *max = *max<*d?*d:*max; *min = *min>*d?*d:*min; *ave += *d;
  }
  *ave /= n;
}
int main () {
  int size, max, min, *data = indata(&size);
  double ave;
  avemxmn(size, data, &max, &min, &ave);
  printf("max = %d\nmin = %d\nave = %lf\n", max, min, ave);
  free(data);
  return 0;
}

まだ違うかも
0567デフォルトの名無しさんNGNG
何のことか分からなかったら調べてください。
0568デフォルトの名無しさんNGNG
(A)大勢の学生について
    学籍番号(五桁の文字列)、英語、数学、国語の点数(各100点満点)を次々に読み込んで、
各人の総得点を計算の上、(1)総得点の高い順に各人のデータを、さらに(2)各々の平均と
標準偏差を、次の形に出力するCプログラムを作成せよ。

    Id−No   Eng  Math   Jap   Total
    −−−−−  −−−−  −−−−  −−−−   −−−−−
    T0802    83   100    84     267
    T0809    85    80    90     255
             ・・・・・・・・・・・
    T0804    58    30    57     145
    −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
      Ave  72.5  75.8  68.1   216.4
      Dev  15.3  19.6  12.4    33.3
  但し、プログラム作成においては
  ・学生一人のデータは構造体としてまとめて、それにStudentとデータ型名を付けよ。
  ・総得点の高い順にデータを並び替える際に、線形リストを用いよ。

初心者でCしか使えません。誰か親切な方教えてください。
0569556NGNG
>>565
配列版

#define DATA_MAX 50

int indata (int d[]) {
  int i, n;
  scanf("%d", &n);
  for (i = 0; i < n; i++) scanf("%d", &d[i]);
  return n;
}
void avemxmn (int n, int d[]) {
  int i, max = INT_MIN, min = INT_MAX, ave = 0;
  for (i = 0; i < n; i++) {
    max = max<d[i]?d[i]:max; min = min>d[i]?d[i]:min; ave += d[i];
  }
  printf("max = %d\nmin = %d\nave = %lf\n", max, min, (double)ave / n);
}
int main () {
  int data[DATA_MAX], size = indata(data);
  avemxmn(size, data);
  return 0;
}

多分これも間違ってる
0570556NGNG
>>566>>569
言い忘れてたけど、>>566 は確保後の確認を行うこと
>>566>>569 両方とも、最低限の入出力しか行っていないので
「n = 」とかのプロンプト出したかったら任意で追加してください
0571C初心者NGNG
>510・>524
本当にありがとうございました!

どうしてもわかんなかったらまた来ます。
0572デフォルトの名無しさんNGNG
>562
print_binaryかprint_intかはっきりせい。

void print_binary(unsigned int num,int dnum,char pos){
 int bits = count_bit( num );
 if( bits > dnum ) print_binary( num >>(bits-dnum), dnum, 'L' );
 else if( pos == 'L' ) { print_bin( num ); fill_space( dnum-bits ); }
 else if( pos == 'R' ) { fill_space( dnum-bits ); print_bin( num ); }
 else { /* 'C' */
  if( (dnum-bits)%2) { printf( "_" ); print_binary( num, dnum-1, pos ); }
  else{
   int n = ( dnum - bits ) /2;
   fill_space( n ); print_bin( num ); fill_space( n );
  }
 }
}

あと、count_bit、print_bin、それから fill_space(int n){ n個空白を表示; }
は自作しれ。
0573デフォルトの名無しさんNGNG
>>568
結構でかくなりそうでつね。
というわけで構造体の宣言だけかいときますね。

typedef struct student {
int eng ;
int math ;
int japanese;//japはまずかろう
int total ;
int average ;
int hyoujunnhennsa;//...
} student_t ;

typedef struct node {
student_t *data;
node_t *prev;
node_t *next;
} node_t ;

typedef struct list {
node_t *head;
node_t *tail;
} list_t ;

いじょ、あとはまかせた
0574CのへたれNGNG
>>459とおそらく同じ学校のダメ生徒です。
>>475ではfracの意味習ってないのでどなたか別でできませんか?
void main(void)でお願いします。。


0575572NGNG
はじめまして。
「150.99874ポンドをキログラムに換算せよ。
1ポンドは0.4536キログラムである。」
という問題で、出力の精度・書式が重要なのですが、
何故か正確な値が出力されません。

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main()
{
const float KILOGRAMPERPOUND = 0.4536;
double pounds;
double kilograms;

cout.setf(ios::fixed,ios::floatfield);
cout.setf(ios::showpoint);

cin >> pounds;
kilograms = pounds * (double)KILOGRAMPERPOUND;
  cout << setprecision(9) << kilograms ;
return 0;
}

とすると、150.99874*0.4536=68.493028464なのに、
68.493026866という微妙に違う値が表示されてしまう。。。
KILOGRAMPERPOUNDをdouble型にすれば解決なのですが、
必ず1箇所はfloat型を使うこと、とされています。
何が原因なのでしょうか?
ご教授ください。
0576デフォルトの名無しさんNGNG
578GET
0577デフォルトの名無しさんNGNG
>>575
#define float double
0578537NGNG
マジお願いします。切迫詰まってます。
0579デフォルトの名無しさんNGNG
>>574

>371-373 >405 >459-462 参照のこと。
0580デフォルトの名無しさんNGNG
次の文は数字文字5からその2進数を求めるものです。
       a='5'-'0';
これを利用してキーボードから3個以内の連続する数字を文字として入力し、
それを2進数へ変更して整数型変数へ代入するプログラムを作成しなさい。

Cです。いまいち問題の意味がわかりません。お願いします。
0581デフォルトの名無しさんNGNG
>>537
Stateがあまりでかくならないんならループ回して終わり、のような気がするんだがそれじゃまずいのか?
0582デフォルトの名無しさんNGNG
ファイル名test.c

#include<stdio.h>
int main(void){

double k=77.7;

printf("%lf\n",k);

}

このプログラムのkの値を コマンドラインから与えたいのですか
よく分かりません。


  test.c 88.8 test2.c
↑
       出力を書き出す

atofなどを使うようです




0583デフォルトの名無しさんNGNG
難しい出題だな。意味が分からん。
0584537NGNG
どういう風な動きにすればいいかはわかるんですが、それをコ
ードにするとうまく書けないんです。能力不足で。
0585デフォルトの名無しさんNGNG
>>582
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
if (argc != 2) {
printf("Parameter Error!\n");
return 1;
}

printf( "%lf\n", atof(argv[1]) );

return 0;
}
0586572NGNG
>>577 
#defineは許されないと思います。
ほかにちゃんと正確な値を得る方法ないでしょうか?
そもそもどうして、こうなっちゃうのでしょうか?
どうか助けてください。。。
0587デフォルトの名無しさんNGNG
>>584

void test(unsigned char num, unsigned char st)
{
int nmin=-1;
int c;

for(c=0; c<5; c++)
{
if(State[c].st == 1 && State[c].priority < nmin)
nmin = State[c].priority;
}

for(c=0; c<5; c++)
{
if(State[c].st == 1)
{
if(State[c].priority == nmin)
(*State[c].func)(1);
if(State[c].priority == nmin)
(*State[c].func)(0);
}
}
}
0588568NGNG
>>573
 ありがとうございます。しかし、力不足でへたれな自分はこれでもまだできません。
 何回かに分けてでいいので、続きを書いてくれると助かります。
0589デフォルトの名無しさんNGNG
>587 訂正:
誤 int nmin=-1;
正 unsigned char nmin=0xff;
0590デフォルトの名無しさんNGNG
>>584
ほれ、ヒントだ。

int compare(const void *a, const void *b)
{
  struct ST *x = (struct ST *)a;
  struct ST *y = (struct ST *)b;

  return (x->priority == y->priority)? 0: (x->priority < y->priority)? 1: -1;
}

struct ST[] = { ... };

void test(...)
{
  /* ... */

  /* State[]をpriorityでソート */
  qsort(State, sizeof(State)/sizeof(struct ST), sizeof(struct ST), compare);

  /* ... */
}
0591584NGNG
>>587
すごくわかりやすいです。
ただ最後って
if(State[c].priority == nmin)
(*State[c].func)(1);
if(State[c].priority == nmin)
(*State[c].func)(0);
じゃなくて
if(State[c].priority == nmin)
(*State[c].func)(1);
else
(*State[c].func)(0);
ですよね?

>>590
う、難しい。
0592コンパイルは通ったのですが…NGNG
/* 最小2乗法による線形近似 */
#include <stdio.h>

#define NUM 9

double linear_lsm(double [], double [], int, double *, double *);

void main(void)
{
double x[NUM]={3.4,1.3,6.1,9.5,8.2,8.9,7.7,2.0,4.8},
y[NUM]={0.20,0.04,1.37,13.73,6.17,8.76,3.77,0.07,0.50};
double a,b,r2;

r2=linear_lsm(x, y, NUM, &a, &b);

printf("y=%fe^%fx\n", a,b);
printf("R^2=%f\n", r2);
}
0593正解の値と異なるんです…NGNG
/* x[n],y[n]のデータから最小2乗法により y=ax+b の a,b を求める */

double linear_lsm(double x[], double y[], int n, double *a, double *b)
{
double xi, yi, x2, xy, d, y2, fy, s;
int i;

/*y=ax+bのa,bを求める部分*/
xi = yi = x2 = xy = 0.0;
for (i=0; i<n; i++) {
xi += x[i];
yi += y[i];
x2 += x[i] * x[i];
xy += x[i] * y[i];
}
d = n*x2 - xi*xi;
*a = (n*xy - xi*yi)/d;
*b = (yi*x2 - xi*xy)/d;
0594592〜593NGNG
すみません、間違えました
0595592〜595NGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1087483609&res=1

どこが間違っているのか教えてください
0596デフォルトの名無しさんNGNG
>>591
そうです。else にしといてください。寝ぼけてました。
# もう今日は寝まつ。
0597デフォルトの名無しさんNGNG
10,000 未満である2のべき乗の数を、1行に4個ずつ並べて、見やすくなるように整形して出力せよ。

とりあえず、以下のようなコードを作ってみたんですけど、
for (;i < 5000;) がすっきりしなくて困っています。
なんかすっきりしたいい方法ないでしょうか?



#include <iostream.h>
int main(void)
{
int i = 1;
for (;i < 5000;)
{
for (int j = 1; j <= 4; j++)
{
if ( i < 5000 )
{
i = i * 2;
cout.width(4);
cout << i << " ";
}
}
cout << "\n";
}
return(0);
}
0598デフォルトの名無しさんNGNG
while使えばいいんじゃ?
0599デフォルトの名無しさんNGNG
>>580
なんか問題文が説明不足な気が・・
0600デフォルトの名無しさんNGNG
>>599
やっぱりそうですかね?
実は模範解答らしきものがあるんですが、何入力しても0しか出ないし、これでいいのか謎です。

#include <stdio.h>
int main(void)
{
int c,d=0;
printf("3桁以内の整数を入力してください\n");
scanf("%c",&c);
if(('0'<=c)&&(c<='9'))
{
d=c-'0';
scanf("%c",&c);
if(('0'<=c)&&(c<='9'))
{
d=10*d+c-'0';
scanf("%c",&c);
if(('0'<=c)&&(c<='9'))
d=10*d+c-'0';
}
}
printf("%d\n",d);
return 0;
}
0601デフォルトの名無しさんNGNG
次の文といわれているものが、全然二進数を求めるものでもなんでもないのだが。
0602デフォルトの名無しさんNGNG
プロセッサ、メモリの視点で考えれば5の2進数表現が確かに得られるわけだが、
C言語の視点では求めていることにならないよな。
0603デフォルトの名無しさんNGNG
「3個以内」なのか「3桁以内」なのかわけわからんしな。
少なくともそんな支離滅裂な質問しか出来ない香具師に論理的思考力があるとは思えない。
0604デフォルトの名無しさんNGNG
アルェー 出題者は国語もCもできてませんNe(・3・)〜♪
0605デフォルトの名無しさんNGNG
日本語を母国語としているのか疑問
0606デフォルトの名無しさんNGNG
1 2 3 4 10
5 6 7 8 26
9 0 1 2 12
3 4 5 6 18
7 8 9 0 24
25 20 25 20 90
を出力するプログラムを作れ
教えて
0607デフォルトの名無しさんNGNG
#include<stdio.h>
int main(){
printf("1 2 3 4 10\n");
printf(" 5 6 7 8 26\n");
printf(" 9 0 1 2 12\n");
printf(" 3 4 5 6 18\n");
printf(" 7 8 9 0 24\n");
printf("25 20 25 20 90\n");
return 0;
}
0608デフォルトの名無しさんNGNG
意味あんのかな・・

#include <stdio.h>
int main(void)
{
printf(
"1 2 3 4 10\n"
"5 6 7 8 26\n"
"9 0 1 2 12\n"
"3 4 5 6 18\n"
"7 8 9 0 24\n"
"25 20 25 20 90\n"
);

return 0;
}
0609デフォルトの名無しさんNGNG
こんなコードで被ってしまったスマソ
0610607NGNG
ところで、>>606 はこの数字の法則性をわかっているのか?
0611290NGNG
初期値をいじろうと思ったのですが、
なかなかうまくいかないので、再度質問したいのですが、

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=105
↑初期値をいじるにはどこを変えればいいのでしょうか?
0612デフォルトの名無しさんNGNG
>>610
2次元配列を使って解いてほしいのですが…
一番右の列と一番下の行がそれぞれの合計になっているとおもいます
0613デフォルトの名無しさんNGNG
とりあえず・・

#include <iostream>

int main(void)
{
std::cout <<
"1 2 3 4 10\n" <<
"5 6 7 8 26\n" <<
"9 0 1 2 12\n" <<
"3 4 5 6 18\n" <<
"7 8 9 0 24\n" <<
"25 20 25 20 90\n";

return 0;
}
0614デフォルトの名無しさんNGNG
#include <stdio.h>
void main(void){
const double e = 2.718281828459045235360287471;
double exp = 1.0;
double factorial = 1.0;
int n;
for (n = 1; n <= 20; n++){
factorial = factorial * n;
exp = exp + 1.0 / factorial;
printf("%.20f  %2d  %.20f\n", exp, n, e - exp);
}
}
0615デフォルトの名無しさんNGNG

#include <iostream>

int main() {
int i = 2,cnt = 1;
std::cout.width(5);
while(i<10000) {
std::cout.width(5);
std::cout << i;
if(cnt % 4 == 0) std::cout << std::endl;
cnt++; i <<= 1;
}
return 0;
}
0616デフォルトの名無しさんNGNG
int main(void)
{
int i,j,tbl[6][5]={
{1, 2, 3, 4, 10},
{5, 6, 7, 8, 26},
{9, 0, 1, 2, 12},
{3, 4, 5, 6, 18},
{7, 8, 9, 0, 24},
{25, 20, 25, 20, 90}
};
for(i=0; i<6; ++i){
for(j=0; j<5; ++j) printf("%d",tbl[i][j]);
putchar('\n');
}
return 0;
}
0617デフォルトの名無しさんNGNG
調べ方が悪いのか、答えがわからないので質問。C言語です。
srandの種子と乱数の関係が宿題です。

─漏れ的考え─
1.でっかい乱数表のなかから種子の値を開始値みたいにつかって乱数を生成
2.乱数表はいくつもあって、種子の値で、表が変わる
3.表などなく、種子の値を使って乱数を生成する

このうちのどれかだとおもうのですが・・・
問題がわかりずらくてすいません。。。
0618デフォルトの名無しさんNGNG
>>617
確かに問題は分かりづらい。

実装に限った話でいえば、「よくある」のは3.
0619617NGNG
えっと、書き忘れです。
標準ライブラリのrandとsrandを使った場合です。
0620デフォルトの名無しさんNGNG
>>617
ここは?
ttp://cutie.dip.jp/pc/report/random/

このX0が「種」にあたる。
0621617NGNG
レスありがとですっ!

>>618
今読み直すとホント分かりにくいですね(汗
>>620
ほほー こんな風にも乱数は生成できるのですねー 勉強になりました

だいぶ問題の書き方が悪かったみたいです^^;;
randとsrandを使った場合、乱数はどのように生成されているのですか?

やっぱり>>620の教えてくれた方法を勝手にやってくれているのかなぁ・・・。
0622デフォルトの名無しさんNGNG
>>616
tbl[5][4]={
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 0, 1, 2},
{3, 4, 5, 6},
{7, 8, 9, 0}}
だけを入力して6行目と5列目は計算で出して欲しいです
s+=tbl[i][j]を使ってた気がします
0623デフォルトの名無しさんNGNG
何故求められているプログラムの仕様を小出しにして伝えるのか。
0624デフォルトの名無しさんNGNG
for文を2重で回せばすぐできるんじゃね?
0625デフォルトの名無しさんNGNG
>>568
>>573の構造体定義をちょこっと流用しますた。
あと入力については何も書いてなかったので自分で書いてくれ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=114
0626デフォルトの名無しさんNGNG
>>623
出題内容を理解せずに質問する人が増えたよね。
0627デフォルトの名無しさんNGNG
int main(void)
{
int i,j,tbl[5][4]={
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 0, 1, 2},
{3, 4, 5, 6},
{7, 8, 9, 0}
};
for(i=0; i<5; ++i){
int s=0;
for(j=0; j<4; ++j){
printf("%d",tbl[i][j]);
s+=tbl[i][j];
}
printf("%d\n",s);
}

{int total=0;
for(j=0; j<4; ++j){
int s=0;
for(i=0; i<5; ++i) s+=tbl[i][j];
printf("%d",s);
total+=s;
}
printf("%d",total);
}
return 0;
}
0628580NGNG
寝てた。おはよう。
>>603
問題と模範解答は問題集から丸写し。
やっぱおかしいよね。
いいやもう。寝る。
0629デフォルトの名無しさんNGNG
>>628
要するに

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

int main(void)
{
  char buff[4];

  printf("3桁以下の数値を入力: ");
  fgets(buff, 4, stdin);
  printf("%d\n", atoi(buff));

  return 0;
}

がやりたいんだろう。
0630デフォルトの名無しさんNGNG
>>611
x=1 y=2 z=3 を初期値にしたい場合、jacob() の方は
ans_xyz newans = { {1, 2, 3}, 0 }, oldans;

gauss_seidel() の方は
ans_xyz oldans = { {1, 2, 3}, 0 };

にする。
0631290NGNG
>>630
なるほど、やってみることにいたしやす。
�dクスでした。
0632C初心者NGNG
>>524
putcharとは?
0633デフォルトの名無しさんNGNG
>>606
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=115
0634デフォルトの名無しさんNGNG
if文で月を入力したら季節を表示するプログラムなんですけどif文の中にはなんといれればいいんでしょうか
ちなみに3月〜5月を「春」、6月〜8月を「夏」、9月〜11月を「秋」、12月〜2月を「冬」です
0635デフォルトの名無しさんNGNG
>>634

if(x>=3 && x<=5){//春
}else if(x>=6 && x<=8){//夏
}else if(x>=9 && x<=11){//秋
}else if(x==12 || (x>=1 && x<=2)){//冬
}
0636デフォルトの名無しさんNGNG
4桁の整数の数当てゲームを作る宿題です。
プログラム側で4桁の乱数(1000〜9999)を発生させて、こちらが4桁の数を入力した時に
桁数と数字が合っていれば+1ホームラン、
桁数は違うが同じ数字が違う桁数に存在すれば+1ヒットという具合です。
ホームランした数字はヒットの検索には含めない。
(例1)乱数;3633
    入力;3663
   2ホームラン!1ヒット!

(例2)乱数;1234
   入力;3303
   0ホームラン!1ヒット!
てな感じです。
一応自分では乱数と入力の4桁のint型の整数を
4つに分割して別々の配列に格納して比較しているんですが…。
{ホームランした数字はヒットの検索には含めない}がうまくいきません。
0637デフォルトの名無しさんNGNG
間違いましたw
(例1)は乱数;3633
     入力;3663
    3ホームラン!0ヒット!
です。
0638デフォルトの名無しさんNGNG
>>636
エスパーでもない限りどう巧くいかないのか判らんのだが。

>>635
最後のifは蛇足。∵それ以前に春夏秋の判定が終わっているのだから。
0639数当てNGNG
すいません、
うまくいかないのは乱数にある1つの数に対して
その数が入力に複数あるような時です。
乱数4344
入力3132
のような時に2ヒットになってしまいます
0640デフォルトの名無しさんNGNG
この類のゲームって
乱数の中に同じ桁の数が入っちゃいけないんじゃないっけ?
0641デフォルトの名無しさんNGNG
0〜9 用の配列を、「ヒットせず」で初期化して、
「ヒット」、「ホームラン」それぞれのフラグを入れていけばいい
ただしホームランをヒットで上書きしない また、ホームランの数は別途数える
最後に、結果的にヒットになった数字がいくつあるか数える
0642デフォルトの名無しさんNGNG
>>639
※乱数と入力文字は、桁ごとに配列に入れてあるとして

int flag[10]; //要ゼロ初期化

for (i = 0; i < 桁数; i++) flag[乱数[i]] = 1;

for (i = 0; i < 桁数; i++) {
if (flag[入力[i]]) {
ヒット++;
flag[i] = 0;
}
}
0643642NGNG
かぶった
0644デフォルトの名無しさんNGNG
>>636
フラグを1個準備するのが妥当かな…
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=116
0645522NGNG
>>556
返事が送れましたがおかげで問題を解くことができました。ありがとうございます。
0646数当てNGNG
教えてくださってありがとうございます。
なんとか終わらせれそうです。
0647デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=78

このプログラムでは辞書順に表示されるが、
これを逆順に表示するようにプログラムを変更せよ。以下のように行う。
(1)入力する場合に逆順に並べておく方法で変更する。
(2)表示するときに逆順に表示する方法で変更する。
0648デフォルトの名無しさんNGNG
>>632
>252 参照
0649デフォルトの名無しさんNGNG
>>572
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=79

ここまで出来たんですがあとは如何すれば仕上がりますか?
0650デフォルトの名無しさんNGNG
>>647
(1) 65行目くらいの、if (strcmp のとこの符号を書き換える
(2) person の仕様を変えないとすれば、再帰かな
main の最後の3行消して代わりに print(root);
関数の実装は
void print(struct person *cur) {
 if (cur->next != NULL) {
  print(cur->next);
 }
 printf("%s\n%s\n%s\n%s\n\n",cur->address,cur->name,cur->hname,cur->phone);
}
1個先以降の表示を先にやって、今のところを表示する
0651デフォルトの名無しさんNGNG
×符号
○不等号
0652568NGNG
>625
 ありがとうございます。問題文はあれで全文なんです。入力については一言も・・・
 scanfをつかえばできますかね? 教科書の例題を見てなんとかやってみます。
 本当に助かりました。
0653デフォルトの名無しさんNGNG
>>635
遅れましたがありがとうございます〜助かりました
0654デフォルトの名無しさんNGNG
>>649
>int print_bin(int num){
> if(num < 2) printf("%s\n",num);
> else if(num >= 2) return print_bin(num/2);
>}
おいおい,その printf, %s に (int) 渡してどうする?

これをやりたいのか?
void print_bin(int value){
if( value ){ print_bin(value>>1); printf("%d", value&1L); }
}
0655デフォルトの名無しさんNGNG
ポインタの問題なんですがちょっと分らないので教えてください。

文字列「ERADRE」を1次元配列に格納し、各配列要素に格納されたデータの番地とその内容をポインタを用いて
表示するプログラムを作成せよ。
また、1次元配列に格納された文字列を「READER」と表示するプログラムをポインタを用いて作成せよ。

と言う問題です。
後半が良く分らないので「また、〜」以降の答えを教えてください。
0656デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
char szStr[] = "ERADRE";
int order[] = {1, 0, 2, 3, 5, 4}, i;

for(i = 0; i<6; i++)
printf("%c", *(szStr+order[i]));
return 0;
}
0657デフォルトの名無しさんNGNG
>>655
某M橋が、「添え字を使ってアクセスしといて、文句言われたら"単なるシンタックスシュガーじゃないですか!"
って反論しなさい」って言ってるタイプの問題そのままな気がw
0658デフォルトの名無しさんNGNG
>>656
>char szStr[] = "ERADRE";
動けばいいというものではない。減点。
>int order[] = {1, 0, 2, 3, 5, 4}, i;
無理に1行に詰め込んで可読性を下げるな。減点。
>printf("%c", *(szStr+order[i]));
空白明けろ。減点。
0659デフォルトの名無しさんNGNG
>>658
putchar()を使えとの指摘がない。減点。
0660デフォルトの名無しさんNGNG
>>658
好みに関わるコーディングスタイルまで採点対象にしない。減点。
模範例を示さない。0点。
0661デフォルトの名無しさんNGNG
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
> 模範例を示さない。0点。
0662デフォルトの名無しさんNGNG
>>655
これだけポインタ使えば,出題者も満足だろう。
int main(){
char *p; int i;
char str[]="ERADRE";
const char *TARGET="READER";
for(TARGET; *TARGET; ++TARGET){
for(i=0,p=str; i<strlen(p); ++i)
if( *TARGET == p[i] ){ putchar(p[i]); braek; }
}
}
0663デフォルトの名無しさんNGNG
>>658
>>char szStr[] = "ERADRE";
>動けばいいというものではない。減点。

これ意味わかんね。
0664デフォルトの名無しさんNGNG
>>char szStr[] = "ERADRE";
>動けばいいというものではない。減点。
これは別にふつーでは?

>>int order[] = {1, 0, 2, 3, 5, 4}, i;
多分そうじゃなくて、二字ずつに区切って後ろから表示するんではなかろうか?

>模範例を示さない。0点。
こんなのはどうですかね?

#include <stdio.h>
#include <string.h>

int main(void)
{
char szStr[] = "ERADRE";
char *p;

for (p = szStr + ((strlen(szStr) - 1) / 2) * 2; p >= szStr; p -= 3) {
putchar(*p);
p++;
if (*p != 0)
putchar(*p);
}
return 0;
}
0665デフォルトの名無しさんNGNG
>>char szStr[] = "ERADRE";
>動けばいいというものではない。減点。

>>658は
char szStr[] = "ERADRE";
と
char *szStr = "ERADRE";
が同じだと思ってるのかな。


とりあえず>>656
>char szStr[] = "ERADRE";
ハンガリアン ダメゼッタイ。減点。
0666デフォルトの名無しさんNGNG
>>658
sizeofだろ。
0667デフォルトの名無しさんNGNG
なんかこれも問題自体の日本語が微妙じゃない?
0668デフォルトの名無しさんNGNG
>>658
>>658
>>658
>>658
>>658
0669デフォルトの名無しさんNGNG
宿題をそのまま貼るとどうしても問題自体の意味がおかしくなるわな
それに似たような問題をやったあとに宿題出されてるんだろうからさ
0670デフォルトの名無しさんNGNG
>>658 はきっと、sizeof(szStr) が 7 になる事にご立腹なんだよ。
0671デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=80&fi=no

(1)このプログラムを改良することにより、読み込んだ英文から単語を切り出すプログラムを作成せよ。
単語の区切りは、スペースやコンマ、ピリオド、ダブルクォーテーションなどを手がかりにすること。
単語に余計な記号が付かないように注意すること。また、出力に関しては1行1単語でファイルに出力せよ。
※空行は除くこと。標準関数(ctype.h)や==演算子を利用する。

(実行例)One two three,four.
(出力ファイル例)
One
two
three
four

(2)(1)で切り出した単語には、大文字と小文字が混じっている。全て小文字で構成される単語に変換する
プログラムを作成せよ。結果は別のファイルに出力せよ。

(3)(2)で切り出した単語をアルファベット順にソートするプログラムを作成せよ。結果は別のファイルへ出力せよ。
※バブルソートを用いるとよい。

お願いします。
0672デフォルトの名無しさんNGNG
>>671
……改良?
0673デフォルトの名無しさんNGNG
>>672
改造でしたw
0674デフォルトの名無しさんNGNG
>>650
実行したら

エラー E2356 list.c 80: 'print' の再宣言で型が一致していない

と出ました・・
0675デフォルトの名無しさんNGNG
ctype.h なんていう関数は聞いたことがない。
0676デフォルトの名無しさんNGNG
>>615
うおおおお
さんくす
あなた天才ね
0677デフォルトの名無しさんNGNG
>>671
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=117
0678デフォルトの名無しさんNGNG
>>664
p[0]とp[1]使えばいいのに。
"ポインタ"変数は既に使っているのだからな。
0679デフォルトの名無しさんNGNG
>>677
有難うございます!
0680デフォルトの名無しさんNGNG
>>678
いや、出題者的には、ポインタの理解と練習のためには p[1] とか使って
ほしくないとか思うんじゃないかなと思ったもんで。
0681CのへたれNGNG
>>614
きれいな解答ありがとです!
0682デフォルトの名無しさんNGNG
>>680
2つ毎の参照という点から出題意図を考えるに
むしろ,使うべきだと思われる。

アドレス演算で変化させた任意のポインタ変数を基準に,
配列と同様の,[]演算子によるインデックス参照が可能 …とな。

char *p;
for (p = szStr + ((strlen(szStr) - 1) / 2) * 2; p >= szStr; p -= 2) { /***ポインタ演算でpの値を変化***/
putchar(p[0]); /*** 配列じゃないけど,インデックス参照 ***/
if (p[1] != '\0') putchar(p[1]); /*** インデックス値が固定で,ポインタのアドレス値が変化する ***/
}
0683デフォルトの名無しさんNGNG
>>665
char szStr[] = "ERADRE";
だと無駄なコピーが発生するね。
0684デフォルトの名無しさんNGNG
>>683
をいをい…、無駄なポインタ変数が出るのは
char *szStr = "ERADRE";
だよ。
0685('A`)<ヒロシです… NGNG
釣れまつか
0686デフォルトの名無しさんNGNG
>>658
このスレで最も間抜けなレスに認定。
0687デフォルトの名無しさんNGNG
>無駄なコピー
>無駄なポインタ変数

……
0688デフォルトの名無しさんNGNG
>>684
無駄なコピーって何だ?

>>655は
>文字列「ERADRE」を1次元配列に格納し
って書いてるけど
0689デフォルトの名無しさんNGNG
見てるほうが恥かしくなるな
0690デフォルトの名無しさんNGNG
結局どう書いたらみんな納得するんだよ!?
0691デフォルトの名無しさんNGNG
682 にはまだ文句が付いてないようだが。
0692デフォルトの名無しさんNGNG
テーラー展開について質問しようと思ってスレ見たら、同じような人がいて、
その人達のソースを参考にして作ってみたら、やっぱできませんでしたorz
自分の場合、x=-5.5のときの真値e^-5.5=0.00408677…と
e^x= 1+x+x^2/2!+x^3/3!+…

e^x=1/e^-x=1/(1+-x+(-x)^2/2!+(-x)^3/3!+…
の二通りで計算し比較せよという課題です。結果が違うらしいけどなんでだろ?
>>459のソース
>>614をいじって改造してみたんですが力不足で上手くいきませんでした・・
どなたか>>614みたいな分かり易いソースをお願いします!

0693デフォルトの名無しさんNGNG
>>614 にあるよ。
0694デフォルトの名無しさんNGNG
>>692
じゃ、その 614 を改造して…

double myexp(double x)
{
double exp = 1.0;
double factorial = 1.0;
double x_n = 1.0;
int n;
for (n = 1; n <= 50; n++) {
factorial = factorial * n;
x_n *= x;
exp = exp + x_n / factorial;
}
return exp;
}

int main(void)
{
const double ans = 0.0040867714384640669934647026847208;
printf("e^-5.5  %.20f  ��=%.20f\n", myexp(-5.5), ans - myexp(-5.5));
printf("1/(e^5.5)  %.20f  ��=%.20f\n", 1 / myexp(5.5),
ans - (1 / myexp(5.5)));
}
0695デフォルトの名無しさんNGNG
作り方のわからないプログラムの課題がでたのでお願いします。
<問題>
英語のフレーズを読み込んで、それをモールス符号に変換するプログラムを書け。また、モールス符号のフレーズを読み込んで、それを英語に変換するプログラムを書け。
ただし、モールス符号の各文字は1個の空白で区切り、各単語は3個の空白で区切ること。

モールス符号の国際規格
A .- B .--- C -.-. D -.. E . F ..-. G--. H .... I .. K -.- L .-..
M -- N -. O --- P .--. Q --.- R .-. S ... T - U ..- V ...- W .--
X -..- Y -.-- Z --..
1 .---- 2 ..--- 3 ...-- 4 ....- 5 ..... 6 -.... 7 --... 8 ---..
9 ----. 0 -----

以上です。どうかよろしくお願いします!
0696デフォルトの名無しさんNGNG
性器表現
0697デフォルトの名無しさんNGNG
>>694
えと、恐縮ですがなんか難しいです、、あと>>614同様
void main(void)だと嬉しい、、
0698デフォルトの名無しさんNGNG
>>696
Jがないのは仕様ですか?


>>697
>void main(void)だと嬉しい、、
ワロタ
0699デフォルトの名無しさんNGNG
void main(void)
{
for(;;);
}
0700698NGNG
>>698のワロタの解説
1.>>699が起こるので省略
2.>>697サン、 エディタ ツカエマスカ?
0701デフォルトの名無しさんNGNG
数字を入力して、その数字と個数を数えるプログラムを作ってるんですけど、
エラーがでます。指摘お願いします。search関数ら辺がエラー見たいです。

ソースここです↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=81&fi=no
0702デフォルトの名無しさんNGNG
>>698
>1.>>699が起こるので省略

わかんね。教えてケロ
0703デフォルトの名無しさんNGNG
>>701
エラーメッセージぐらい貼れよ。
それにしてもインデントの仕方がすごいな。
0704デフォルトの名無しさんNGNG
>>697
元々 614 にあった
  e^x= 1+x+x^2/2!+x^3/3!+…  (1)
と言う計算部分を、myexp() の中に移動しただけです。それは判りますか?

二番目の
  e^x=1/e^-x=1/(1+-x+(-x)^2/2!+(-x)^3/3!+…  (2)
の式は、(x=-5.5 の時、-x=5.5なので)、(1)式を用いて
  =1/mpexp(-x)=1/myexp(5.5)
と書いているだけです。printf() の引数の所にこの記述があります。

なお、OS から呼び出されて起動するようなプログラムでは、必ず int main(〜) で
ないといけないという決まりがあります。void main(void) でも動いているのなら、
それは単にあなたのコンパイラや環境が運に恵まれていただけです。
0705デフォルトの名無しさんNGNG
#include <stdio.h>
#include <string.h>

void main() {

char *codes[] = {
".-", ".---", "-.-.", "-..", ".", "..-.", "--.", "....", "..", "J", "-.-", ".-..",
"--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--",
"-..-", "-.--", "--..",
".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..",
"----.", "-----"
};
char *chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

char *word = "SOS HELP HELP ME 945YEN YARU KARA TASUKETE";

for (int i=0; i<strlen(word); i++) {
char c = word[i];
for (int j=0; j<strlen(chars); j++) {
if (chars[j] == c) {
printf("%s", codes[j]); break;
}
}
printf(" ");
}

}
J がぬけとる
0706デフォルトの名無しさんNGNG
J: .---
0707デフォルトの名無しさんNGNG
>>701
search関数内のnatって・・・
初歩的なミスだな。
0708デフォルトの名無しさんNGNG
問題ろくに読んでなかった(w
0709701NGNG
数字を入力して、その数字と個数を数えるプログラムを作ってるんですけど、
エラーがでます。指摘お願いします。search関数ら辺がエラー見たいです。
エラーは11parase error before cahracter 0201
16`nat` undeclared

ソースここです↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=81&fi=no


0710698NGNG
>>702
ほい。
ttp://www.kouno.jp/home/c_faq/c11.html#14

>>699が起こるってのは

  ______
 |        ↓
 |   「int main(void) が正しい」
 ↑        ↓
 |   「void main(void) でもいいじゃん」
 |        ↓
   ̄ ̄ ̄ ̄ ̄ ̄

という無限ループが繰り返されるってこと。
0711707NGNG
すまそ、707のレスは忘れて
0712デフォルトの名無しさんNGNG
>>703
return を返したかったら int main にしろってこと(>>699)
0713デフォルトの名無しさんNGNG
#include <stdio.h>
#define MAX 100
struct member {
int number;
int count;
}data[MAX];
int datanum = 0;
int search(int nat);
main()
{
省略
return 0;
}


int search(int nat){
int i;

for( i = 0; i < datanum; i++ )
if( nat == data[i].number )
{return ( i );}

return -1;
}
0714デフォルトの名無しさんNGNG
11parase error before cahracter 0201
はウンコ的な文字が入力されてるため。
0715702NGNG
>>698
あぁ、そういうことでつか。了解!
0716714NGNG
ウンコ的な文字とは、
日本語入力の空白文字とか・・・
0717697NGNG
>>700
エディタ?
>>704
運に恵まれた?
intとかvoidとか習ってないんです、、今までずっとvoid main(void) だし。
つってもまだ初めて一月あまりですが、、

0718701NGNG
>>713
>>714

ありがとうございました。無事にできました。
0201はウンコ的ですか(藁)覚えときます。勉強になりました。
0719デフォルトの名無しさんNGNG
>>709
おまいがインデントに全角スペース使ってるからだよ!
あとwhileの中で初回とそうでないときを分ける必要は
別にないかと。
0720デフォルトの名無しさんNGNG
>717
int も知らないやつになぜ実数の数値計算の宿題が出るのかと小一時間(ry
0721697NGNG
>>720
void main は おまじないだと教わりました。いずれわかると。
でもそうもいってられないようなのでどっかで調べます。
ソースを作ってくれた方有難うございました。
0722デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=82

この双方向循環リストのプログラムで、要素が一個もないときに
新たに要素を挿入する場合のプログラムの動きを追い、その様子を図示せよ。
ただし、ポインタの動き、ポインタの変更がわかるように図示しなさい。

と言われたんですがどういう風に描けばいいんですか?
0723デフォルトの名無しさんNGNG
「これはオマジナイだよ」
「赤ちゃんはコウノトリがはこんでくるんだよ」
0724デフォルトの名無しさんNGNG
>>721
int a;
とかは判るよね? float x; もしくは double x; を使う宿題もらうくらいだから。
その int なんだけど。 関数は分かる? 以下分かると仮定して:

int main(〜) { 〜 } と言う風に書く時、それは、main と言う関数が int 型の返り値を返す
と言う意味。int の代わりに void を書くと、(void は中身のない、空の、という意味なので)
何も返さないという意味になる。

ただし、main 関数はプログラムが開始する時に呼び出される特別な関数なので、
勝手な形で作ってはいけなくて、int main (int argc, char *argv[]) と言う形である
こと、と決められてる。

そして、 int argc, char *argv[] の部分は、利用しないんなら省略できることになっ
てるが、だからといって勝手に ***別の型に変更してはいけない***
0725デフォルトの名無しさんNGNG
整数データを接点に持つ二分木は、 
       typedef struct node *Tree
 typedef struct node {
int data;
Tree left_subtree;
Tree right_subtree;
} Node;
という風に定義された構造体を木の接点とし、これらをポインタで繋げることに
   よって表すことができる。 この様に表された二分木の根へのポインタが引数と
   して与えられた時、その二分木の大きさ(接点の個数)を調べて返すCの関数
       int size(Tree t)
を定義せよ。

構造体は習ったばっかりなので、理屈はなんとなくわかりますがプログラムが書けません。
言語はCでお願いします。
0726デフォルトの名無しさんNGNG
>>724
>ただし、main 関数はプログラムが開始する時に呼び出される特別な関数なので、
>勝手な形で作ってはいけなくて、int main (int argc, char *argv[]) と言う形である
>こと、と決められてる。
>
>そして、 int argc, char *argv[] の部分は、利用しないんなら省略できることになっ
>てるが、だからといって勝手に ***別の型に変更してはいけない***

おいおい、規格では

int main(void)
int main(int argc, char *argv[])
上記2つのいずれかと等価な方法
上記3つ以外の処理系定義の方法

と決まっている(C99)。
0727デフォルトの名無しさんNGNG
>>726
>int argc, char *argv[] の部分は、利用しないんなら省略できる

の省略なしの場合が
>int main(int argc, char *argv[])

省略の場合が
>int main(void)

のことのつもりで書いたわけです。

>上記3つ以外の処理系定義の方法
は「運に恵まれた」ってやつね。
0728デフォルトの名無しさんNGNG
int size(Tree t){
if(t)
return 1+size(t->left_subtree)+size(t->right_subtree);
else
return 0;
}
0729デフォルトの名無しさんNGNG
>>705
!!!英語のフレーズを読み込んで!!!
!!!!また、モールス符号のフレーズを読み込んで!!!!
!!!!各単語は3個の空白で区切ること。!!!!!
よって,ボツ
0730デフォルトの名無しさんNGNG
>>728
int size(Tree &t) じゃないの?
あと
> 1+
根はひとつだから再帰に含むと重複してカウントされるかと
0731726NGNG
>>727
>...のつもりで書いたわけです。
了解です。
けど「省略」っていうと

"int main(int argc, char *argv[])" ⊃ "int main(void)"

って感じちゃうな。オレだけかもしれないけど。
前者と後者は対等だと思うのでちょっと引っかかりました。


>>上記3つ以外の処理系定義の方法
>は「運に恵まれた」ってやつね。
んー「処理系定義」と「運がいい」は違う気がする。
例が思いつかなくてごめんなさい。


スレ違いなんでこの辺で失礼します。
0732デフォルトの名無しさんNGNG
>>654
これに従ったもので・・
●与えられた整数を2進数で表示する関数の作成(例えばint print_bin(int num);)
(a)num < 2 の場合: numに対応する文字を出力する(0の場合は'0'、1の場合は'1')。
 (b)num >= 2 の場合: print_binにnum/2を与えて呼び出すことで、2桁目以上の桁を出力し
   そのあと1行目を表示する。
0733デフォルトの名無しさんNGNG
プログラムからフローチャートを書け
って宿題が出た漏れはどうしたらいいのやら・・・OTZ
0734デフォルトの名無しさんNGNG
>>730
>Cの関数
>       int size(Tree t)
>を定義せよ。
C++の国の人はお帰り下さい。
0735デフォルトの名無しさんNGNG
>654
value=0の時に何も表示されませんよ?
0736デフォルトの名無しさんNGNG
>>729-730 >>735
じゃあ,何が正しいの?
ちゃんと,宿題を片付けてあげたら?
0737735NGNG
>736
いや、私572なんですけど。
0738695ですNGNG
>>705
ありがとうございます!助かりました!
0739デフォルトの名無しさんNGNG
最初に四則演算を示すアルファベット1文字を入力し、次に二つの実数を
入力してその演算を行う。これを繰り返すプログラムを作りなさい。
 アルファベット1文字に対して以下の演算を対応付ける。
    p ・・・ +
    m ・・・ −
    d ・・・ ÷
    t ・・・ ×

文字qを入力した場合にプログラムを終了することとする。これ以外の文字
が入力された場合は無視する(何もしない)。

という問題です。文字の授業に入ってからなんかわからなく
なってしまいました・・・。わかる方どうぞよろしくお願いします<(_ _)>
0740デフォルトの名無しさんNGNG
>>733
Latexとか…、たしかフローチャート作成支援のスタイルファイルが落ちてたはず。
0741デフォルトの名無しさんNGNG
>>735=>>737
人二モノヲ尋ネル態度デハナイ 減点10
0742デフォルトの名無しさんNGNG
恥ずかしい741晒しage
0743デフォルトの名無しさんNGNG
なんで t なの
times なの
0744728NGNG
>>730
>> 1+
>根はひとつだから再帰に含むと重複してカウントされるかと
何を言いたいのかわけわからん。
お前さんの正しいと思うコードを晒してくれ。

>int size(Tree &t) じゃないの?
出題がC言語限定な上に,
typedef struct node *Tree;
だぞ。
0745デフォルトの名無しさんNGNG
>>739

#include <stdio.h>

int main(void)
{
int ch;
double x, y;

for (;;){
puts("input operation");
ch = getchar();
if (ch == 'q') break;

printf("x:"); scanf("%lf", &x);
printf("y:"); scanf("%lf", &y);
switch(ch){
case 'p': printf("%f + %f = %f\n", x, y, x+y); break;
case 'm': printf("%f - %f = %f\n", x, y, x-y); break;
case 'd': printf("%f / %f = %f\n", x, y, x/y); break;
case 't': printf("%f * %f = %f\n", x, y, x*y); break;
}
getchar(); /*改行飛ばし*/
}

return 0;
}
0746デフォルトの名無しさんNGNG
このプログラムがVC++6.0で動きません
古い規格で組まれてるコードだと言ってる人もいるんですが
どこをなおさないといけないのやらわかりません。
おしえてください

#include <stdio.h>

#include <string.h>
class String {
protected:
intl;
char*s;
public:
String(char *str) {
l = strlen(str);
s = new char[l+1];
strcpy(s, str);
}

voidset(char *);
String*append(char *);
String *append(String *);
};

0747デフォルトの名無しさんNGNG
void String::set(char *str) {
int len;
if((len = strlen(str))>=l) {
if(s != 0) delete s;
l = len + 1;
s = new char[l];
}
strcpy(s,str);
}

0748デフォルトの名無しさんNGNG
String *String::append(char *str) {
int len;
char *os;
len = strlen(str);
if(s != 0) len += strlen(s);
if(len >= l) {
l = len + 1;
os = s;
s = new char[l];
if(os != 0) {
strcpy(s, os);
delete os;
}
}
strcat(s, str);
return this;
}

String *String::append(String *str) {
String *ps = new String(s);
ps->append(str->s);
return ps;
}

0749デフォルトの名無しさんNGNG
class Pattern: public String {
int d[256];
void setd();
public:
Pattern(char *s):String(s) {
setd();
}
int find(const char *);
};

void Pattern::setd() {
char *pt;
int i;
int length = strlen(s);
for(i = 0; i<256; i++)
d[i] = i;
for(pt=s,i=length-1;i>0;i--,pt++) {
d[(unsigned int)*pt] = i - length + 1;
}
};

0750デフォルトの名無しさんNGNG
int Pattern::find(const char *text)
{
int i,j;
const char *pt;
int textlength;
int nvd;
int maxd;
int length = strlen(s);

textlength = strlen(text);
maxd = 0;
i = 0;
j = length -1;
pt = text + i + j;
0751デフォルトの名無しさんNGNG
while(i + j < textlength) {
while(j>=0) {
nvd = d[(unsigned int) *pt] +j;
if(nvd > maxd)
maxd = nvd;
if(*pt !=s[j]) {
i += maxd;
j= text+i+j;
maxd = 0;
break;
} else {
if(j==0)
return i+1;
else
j--, pt--;
}
}
}
return 0;
}

0752デフォルトの名無しさんNGNG
>>746
エラーメッセージとかは?
あと長いソースを貼るときは>>1とか活用しる。
0753デフォルトの名無しさんNGNG

main(int argc, char** argv)
{
const int maxLen = 200;
char line[maxLen+1];
int len = 1;
int cn;
int n;
Pattern *pp;

if(argc!=2) exit(1);
pp = new Pattern*(argv+1);
while(gets(line)!=0) {
if((n = pp->find(line))>0) {
printf("(%3d):found at %d", ln, n);
cn = n;
while((n = pp->find(line+cn))>0) {
cn += n;
printf(",%d", cn);
}
printf(".\n");
}else
printf("(%3d):not found.\n",ln);
ln++;
}
}
0754デフォルトの名無しさんNGNG
error C2061: 構文エラー : 識別子 'String' がシンタックスエラーを起こしました。
error C2059: 構文エラー : ';'
error C2449: '{' を見つけました (関数のヘッダーがないかもしれません)。
error C2059: 構文エラー : '}'
error C2143: 構文エラー : '{' が '*' の前に必要です。
error C2143: 構文エラー : '{' が ':' の前に必要です。
error C2059: 構文エラー : ':'
error C2143: 構文エラー : '{' が '*' の前に必要です。
error C2143: 構文エラー : '{' が ':' の前に必要です。
error C2059: 構文エラー : ':'
error C2061: 構文エラー : 識別子 'Pattern' がシンタックスエラーを起こしました。
error C2059: 構文エラー : ';'
error C2059: 構文エラー : ':'
error C2143: 構文エラー : '{' が ':' の前に必要です。
error C2059: 構文エラー : ':'
error C2143: 構文エラー : '{' が ':' の前に必要です。
0755デフォルトの名無しさんNGNG
正直読む気せん。>>1のところにかけよボケ
0756デフォルトの名無しさんNGNG
ソース連投キモイ
0757デフォルトの名無しさんNGNG
error C2059: 構文エラー : ':'
error C2057: 定数式が必要です。
error C2466: サイズが 0 の配列を割当てまたは宣言しようとしました。
error C2133: 'line' : サイズが不明です。
error C2065: 'Pattern' : 定義されていない識別子です。
error C2065: 'pp' : 定義されていない識別子です。
warning C4552: '*' : 演算子にプログラム上の作用がありません。作用を持つ演算子を使用してください
warning C4013: 関数 'exit' は定義されていません。int 型の値を返す外部関数と見なします。
error C2065: 'new' : 定義されていない識別子です。
error C2146: 構文エラー : ';' が、識別子 'Pattern' の前に必要です。
error C2297: '*' : 不正な右オペランドです。
error C2223: '->find' : 左側が構造体か共用体に対するポインタではありません。
error C2065: 'ln' : 定義されていない識別子です。
error C2223: '->find' : 左側が構造体か共用体に対するポインタではありません。
0758デフォルトの名無しさんNGNG
嵐認定
0759デフォルトの名無しさんNGNG
>>758

あ、あの〜・・・
0760デフォルトの名無しさんNGNG
ざっとみたところ、コンパイラの問題ではない。
ソースがバグってる。
0761デフォルトの名無しさんNGNG
>>746
まずexit()使うんならstdlib.hもインクルードしとく。
×intl; ○int l;
×voidset ○void set
Pattern::find()内、j= text+i+j;これじゃint型の変数にchar *ポインタ代入してる。
あとmain()の中身にlnとかいう変数がある。lenか?
ついでに122行目が意味不明。pp = new Pattern(argv[1]);のことか?

中身ちゃんと読んでないので悪しからず。
0762デフォルトの名無しさんNGNG
>>761

ありがとうございました。
exit()をreturn()にし、スペースを直し、打ち込みミスを訂正し、
122行目を仰るとおりになおし、
mainの前にint、メインの終わりにreturn 0を書き足し、
lnをlenに直したところ
無事にうごきました!!
しかしちゃんと読んで無くてもそこまで分かるなんて761さんは
すごいですね。
連続ソース投稿どうもご迷惑おかけしました
0763デフォルトの名無しさんNGNG
>>745
おお、これを参考にしつつ文字のプログラムも理解できるように頑張ります
本当にありがとうございました<(_ _)>
0764デフォルトの名無しさんNGNG
ファイルのデータを読み込みたいのですが、
例えばこれはどこが間違っているのでしょうか?
よろしくお願いします。

【suuji.dat】
640 83.7

【main】
#include <stdio.h>
#include <math.h>

int main (void){
  int hatyou;
  double a;
  FILE *S;

  S=fopen("suuji.dat","r");

  fscanf(S,"%d%f",&hatyou,&a);
  printf("%d %f\n",hatyou,a);
  fclose(S);

  return 0;
}

【実行結果】
640 -9255960488578375300000…0.000000

↑になってしまいます。
0765デフォルトの名無しさんNGNG
ぱっと見、%lfにするかaをfloatにするか
かな?
0766デフォルトの名無しさんNGNG
>>765
すっごい!できました!
感激です。ありがとうございました!

1年半Cから離れていただけで、こんなにも忘却している自分が恥ずかしいです。
(ファイル操作は初めてやったんですけど…。)
0767デフォルトの名無しさんNGNG
x-y座標上に点P,点Nがあり、点Pから点Nを見たときの方角を出力するプログラムを作成してください。
なお方角は八方位で北:0 北西:1 西:2 南西:3 南:4 南東:5 東:6 北東:7として数値で表す。
座標は第一象限のみの場合でよい(↓こんな感じです)
     北
     │
     │
     │            ・P(px,py)
     │
     │
     │
     │
     │  ・N(nx,ny)
     │
     │
西.. ─┼─────────────東

多分arctanとか使ってやると思うのですが数学苦手で。
あと例えば東と判定するのは真東だけじゃなく
東北東気味、東南東気味のものも含むようにしなくてはいけないそうです。
言語はCでお願いします。
0768デフォルトの名無しさんNGNG
  fscanf(S,"%d %f",&hatyou,&a);
0769デフォルトの名無しさんNGNG
>>767
構造体で極座標表現しれ
0770デフォルトの名無しさんNGNG
>767
+-----+P
|
|
+
N

角度計算するだけだろ?
0771デフォルトの名無しさんNGNG
積分をする関数って<math.h>に入っていたりしませんか?
それとも自分で作らなくてはならないのでしょうか?
提出期限の迫った課題に追われています。
ご存知の方、教えてください。
よろしくお願いします。
0772デフォルトの名無しさんNGNG
>>767
この場合、角度を求めるならatan2を使えば簡単。
方角が多すぎてここには貼れなかった…。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=118
0773jpgNGNG
WIN32APIで、jpg画像の色情報を読み込んで
R、G、Bごとに画素値のヒストグラムを作るプログラムを作りたいのですが
jpg画像の色情報はどのように取得すればよいのでしょうか?
よろしくお願いします。
0774772NGNG
>>767
すまん、ミス。角度がマイナスになる場合を忘れてた。
double angle = RadToDeg(atan2(ny-py,nx-px));
の次の行に
if(angle<0)angle+=360;
を加えてください。
0775767NGNG
>>769-770,772,774
大体分かりました、ありがとうございます。
予想と南北が逆でしたが理解できました。
0776デフォルトの名無しさんNGNG
NとPがかぶったらどうなるんだろ〜。
0777772NGNG
げっ、角度を数値で表すのだった。
課題をよく読んでなかったです…。

でもatan2で角度を求めたら似たようなことやるだけなので
後はがんがれ…(-_-
0778デフォルトの名無しさんNGNG
>>773
これってそれぞれの色の数の総計がわかればよいのでしょうか
1)IPictureとIStreamを使ってJPGを読みこむ、
2)ビットマップハンドルを取得
3)GetPixelで1ピクセルずつアクセスして色を取得
くらいでいいのかな…
↓クラスにまとめましたが、違ってたら適当に書き直してください。
貼り付けてあるソースではmain関数で"test.jpg"を読むようになっています。
JPGを読みこんで、ビットマップハンドルを取得している時点で
なんとでもできると思います。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=119
0779デフォルトの名無しさんNGNG
gimpでできそう
0780778NGNG
>>773
すまん、ミス。
×#include<olectl.h.>
○#include<olectl.h>
0781デフォルトの名無しさんNGNG
構造体配列って大域変数でも定義できるよね?
0782デフォルトの名無しさんNGNG
age
0783デフォルトの名無しさんNGNG
【問題】
コンピューターがランダムでグー、チョキ、パーを出す、
ジャンケンのプログラムを作成しなさい。
また、勝ち、負け、あいこの結果も表示させなさい。

例)
g(グー)c(チョキ)p(パー)のどれかを入力してください。   (printfで表示させる。)
g   (プレイヤーが入力。)
じゃんけんぽん!   (printfで表示させる。上がgcp以外の時は「エラー」を表示させ、最初の処理に戻る。)
チョキ   (コンピュータがランダムで表示。)
あなた【グー】、コンピュータ【チョキ】で【あなたの勝ち】です。(結果表示。)

よろしくお願いします。
0784デフォルトの名無しさんNGNG
>>783
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_index(int h){
  switch(h){
  case 'g': h = 0; break;
  case 'c': h = 1; break;
  case 'p': h = 2; break;
  default: h = -1;
  }
  return h;
}
int main(){
  char buf[256];
  int h1, h2;
  char *hand[] = {"グー","チョキ", "パー"};
  char *result[] = {"引き分け", "あなたの負け","あなたの勝ち"};
  srand(time(NULL));
  for(;;){
    printf("g(グー)c(チョキ)p(パー)のどれかを入力してください。\n");
    h1 = get_index(*fgets(buf, sizeof(buf), stdin));
    if(h1 == -1){ printf("エラー"); continue;}
    printf("じゃんけんぽん!\n");
    h2 = rand() % 3;
    printf("あなた【%s】、コンピュータ【%s】で【%s】です。\n",hand[h1], hand[h2], result[(h1 - h2 + 4) % 4]);
  }
  return 0;
}
0785デフォルトの名無しさんNGNG
間違ってた・・・

×printf("あなた【%s】、コンピュータ【%s】で【%s】です。\n",hand[h1], hand[h2], result[(h1 - h2 + 4) % 4]);

○printf("あなた【%s】、コンピュータ【%s】で【%s】です。\n",hand[h1], hand[h2], result[(h1 - h2 + 3) % 3]);
0786教えてくださいNGNG
下のソースを動かしたいのですが
VC++6.0では動きませんでした。
どこが変なのでしょうか
どこをどうなおすと動くのか教えてください

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=83
0787デフォルトの名無しさんNGNG
秒数を入力し、○時間○分○秒に変換するプログラムをお願いします。
0788デフォルトの名無しさんNGNG
time
0789教えてくださいNGNG
>>786
せめて何をしようとしているコードなのか説明して、
もう少しコメントのはいったソースにして欲しい…。
漠然と全ソースをULして読めってのは…。
何をやろうとしているのか調べてませんが、
↓以下エラー訂正部分。これらを直したら実行はできました。

class Dimension 宣言内
virtual Dimension* operator-(Dimension+);
→virtual Dimension* operator-(Dimension*);

Input::getToken内
LUNITTIME→未定義

Dimensionクラスのいろんなメソッド
getbaseがメンバではない→getBaseの間違い

int main()内
戻り値が無い→return 0;でも書いて
0790デフォルトの名無しさんNGNG
>>788
timeというのは使ったことがありません。
すいません、もう少し具体的に教えていただけないでしょうか?
0791デフォルトの名無しさんNGNG
>787
閏秒情報が無いので正確に変換できない。
0792デフォルトの名無しさんNGNG
>>791
閏秒は無視してくださって結構です。
0793デフォルトの名無しさんNGNG
>>787
秒数を入力ってことは
取得するのではなくキーで入力するってことですか?
それなら普通にscanfで入力すればいいのでは。

>>791
ワロタ
意地悪っすなw

#include<stdio.h>
int main()
{
 int time,hour,minute,second;
 printf("時間を入力\n");
 scanf("%d",&time);
 second = time % 60;//秒を求める
 time /= 60;//timeを秒以下を切り捨てて分に変換
 minute = time % 60;//分を求める
 hour = time / 60;//分以下を切り捨てて時間に変換
 printf("%d時間%d分%d秒\n",hour,minute,second);
 return 0;
}
0794教えてくださいNGNG
>>789

失礼しました。
これは単位つき電卓のプログラムで、
2m + 3mなどと入力すると Result = 6mとでるようなソースです。
あと、Input::getTokenのLUNITTIMEはLUNITNAMEの間違いでした。
仰るように訂正してみたのですが、
いまだにInput.hの中の
char getToken(Dimension*&);がシンタックスエラーになってしまいます…。
他のエラーはなくなったのですが…
???なぜ???
0795教えてくださいNGNG
>>794
いやそりゃ…Input.h内ではDimensionなんて定義されてないですから。
Input.h内に#include "Dimension.h"を書いてください。

実行したら演算子の優先順位を考慮した電卓として機能しました。
ソースは大丈夫そうです。
0796787NGNG
>>793
コンパイルしたところ、正常に実行できました。
ありがとうございました。
0797デフォルトの名無しさんNGNG
問題
int型変数nに数値(>3)を読み込み、n個分の配列を(動的に)用意し、任意の実数値を入力できるようにせよ。
次に、入力された数値の中から任意の2つの(異なる)数値を取り出し、掛け算、割り算の計算を行い、その結果が最も大きくなる組み合わせと計算結果を表示するプログラムを作成せよ。
ただし、用いる変数はn以外はすべてポインタを用いて表現すること(動的に配列を宣言して使用してもよい)。

Cです。よろしくおねがいします。
0798教えてくださいNGNG
>>795

Input.h内に#include "Dimension.h"を加えると
シンタックスエラーはでなくなりましたが
error C2011: 'Dimension' : 'class' で示される型としてすでに定義されています。
というエラーがでてしまいました…。
頭がウニになってしまいそうです。
今度はどこがいけないんだろう、Dimension.hのインクルードがどっかでかぶってるってことですか???
0799教えてくださいNGNG
>>798
すまん。実は手を抜いて
1つのファイルにコピーしてコンパイルしていた。

多重定義を回避するには
Dimension.h内の一番最初に
#ifndef __DIMENSION__
#define __DIMENSION__
Dimension.h内の最後に
#endif
とでもかいてください。
これは多重定義を回避するために
よく使うので覚えておいた方がいいと思います。

VC6なら↑の代わりにに
最初に#pragma onceとかくだけでもいいです。
0800教えてくださいNGNG
>>799

うお〜無事実行できました。
どうもありがとうございました。
感涙
0801デフォルトの名無しさんNGNG
>>775
>予想と南北が逆でしたが理解できました
180度回して考えるのが普通だと思う。
// 0 ==d000 ==rad -PI
// 4 ==d180 ==rad 0
// 8 ==d360 ==rad PI
int main(){
char buf[1024]; char *string;
double px, py; double nx, ny;
int octal_dir;
printf("input P:"); fgets(buf,sizeof(buf),stdin);
px = atof( strtok(buf,",") ); py = atof( strtok(NULL,",") );
printf("input N:"); fgets(buf,sizeof(buf),stdin);
nx = atof( strtok(buf,",") ); ny = atof( strtok(NULL,",") );

if( px==py && nx==ny )
octal_dir = 0;
else
octal_dir = 4.*atan2(px-nx,py-ny)/M_PI + 4.5;
printf("Octal direction: %d\n",octal_dir);
return 0;
}
0802デフォルトの名無しさんNGNG
>>797
int main(){
int n;
char buf[1024];
fgets(buf,sizeof(buf),stdin);
if( !((n=atoi(buf)) > 3)) return 1;
{ double array[n]; double *p=array,*q;
double div_max=0, mul_max=0;
while(1){
printf("input value:");
fgets(buf,sizeof(buf),stdin);
if( !buf ) break;
*p++=atof(buf);
if( p == array+n ) break;
}
for(p=array; p<array+n; ++p){
for(q=array; q<array+n; ++q){
if(p==q) continue;
mul = p*q; div = p/q;
if(mul>mul_max) mul_max=mul; if(div>div_max) div_max=div;
}
} printf("mul_max:%g div_max:%g\n",mul_max, div_max);
}
return 0;
}
0803デフォルトの名無しさんNGNG
ぼるじょあが・・・片付けますYO!スレなのにぼるじょあが全然片付けてないのは仕様ですか?
0804デフォルトの名無しさんNGNG
仕様というか単純にシンボリックだから
0805デフォルトの名無しさんNGNG
>>802
解答ありがとうございます。しかし私の環境では、コンパイルではじかれてしまいました。


2ch.c: In function `main':
2ch.c:4: `stdin' undeclared (first use in this function)
2ch.c:4: (Each undeclared identifier is reported only once
2ch.c:4: for each function it appears in.)
2ch.c:18: `mul' undeclared (first use in this function)
2ch.c:18: invalid operands to binary *
2ch.c:18: `div' undeclared (first use in this function)
2ch.c:18: invalid operands to binary /

あと、mulやdivについてですが、おそらくこれらもポインタで処理しなければならないようです。
0806デフォルトの名無しさんNGNG
>>805
変更部分のみ

冒頭に付け加える
+#include <stdio.h>
+#include <stdlib.h>

途中を差し替える
- mul = p*q; div = p/q;
- if(mul>mul_max) mul_max=mul; if(div>div_max) div_max=div;
+ if (*p * *q > mul_max)
+ mul_max = *p * *q;
+ if (*p / *q > div_max)
+ div_max = *p / *q;
0807デフォルトの名無しさんNGNG
>>806
ありがとうございました。
無事コンパイルも通り、動作も確認できました。
後は自分でいろいろいじってみようと思います。
0808デフォルトの名無しさんNGNG
整数を2進数で表示するプログラムを作成せよ。
※与えられた整数を2進数で表示するときの桁数を求める関数(再帰的に桁数を求める)と
与えられた整数を2進数で表示する関数(再帰的に表示する)を作成すればよい。
0809デフォルトの名無しさんNGNG
#include <stdio.h>

void dispBinary( unsigned long n )
{
struct Printer
{
unsigned char b;
Printer( unsigned long n ) : b ( (unsigned char)( n & 1 ) ) { if ( !n ) throw b; }
~Printer() { putchar( '0' + b ); }
};
Printer p( n );
dispBinary( n >> 1 );
}

int main()
{
try { dispBinary( 0x1234 ); }
catch( unsigned char ) {}
return 0;
}
0810デフォルトの名無しさんNGNG
ワロタ
0811これでいけるかな?NGNG
#include <stdio.h>

int mona(int num)
{
    int x=0;
    if(num )
        x = mona(num/2) * 10;
    return x + num%2;
}

int main()
{
    int num;
    scanf("%d",&num);
    printf("%d",mona(num));
    return 0;
}
0812デフォルトの名無しさんNGNG
整数データを接点に持つ二分木は、 
       typedef struct node *Tree
 typedef struct node {
int data;
Tree left_subtree;
Tree right_subtree;
} Node;
という風に定義された構造体を木の接点とし、これらをポインタで繋げることに
   よって表すことができる。 この様に表された二分木の根へのポインタが引数と
   して与えられた時、その二分木の大きさ(接点の個数)を調べて返すCの関数
       int size(Tree t)
を定義せよ。

自分Cしか使えないので、Cでわかりやすくお願いします。
構造体やったばかりでよくわからない・・・
0813デフォルトの名無しさんNGNG
>812
すみません。まちがえてもう一回載せてしまいました。無視してください。
0814783NGNG
>>784
ありがとうございました。
0815jpgNGNG
>>778
ありがとうございます。
宿題の内容は、が措置の合計を出す、ではなく
画素値のヒストグラムを作ることなので
Rが100であるピクセルがいくつ、とかRGBごとに数えていくように
したかったんです。

大変参考になりました。これから頑張ってみます。
0816デフォルトの名無しさんNGNG
>815
Cでなくていいなら面倒なことしないでも、適当にツール入れてこんな感じでR値の出現数出せるけどね。(G,Bは -f 1を2,3にする)
%cat HOGE.jpg | jpegtopnm | ppmhist -noheader | sed -e 's/ */ /'g -e 's/^ //' | cut -f 1 -d " " | sort -n | uniq -c
0817デフォルトの名無しさんNGNG
C言語の宿題です.いろいろ指示があってややこしいとは思うのですが,
どうかお願いできますでしょうか.
以下,問題文全文です.
===========================================
1から999間での間の整数N個(つまり整数配列AI[N])をランダムに発生させ
,その平均値と分散(いずれも実数値)を表示するプログラムを以下の仕様
に従って作成しなさい.

・main関数で,整数の配列AI[N]を確保する.

・整数配列AI[]とサイズNを引数にして,その配列の要素全てに題意の
ランダムな整数(1〜999)を格納する初期化関数myinit(...)を作成する.

・整数配列とサイズを引数にして,その配列の全ての要素を10個ずつ
表示する関数mydisplay(...)を作成する.(注:1行に10個ずつという意味.
N=100なら10個×10行)

・整数配列とサイズとフラグ(平均値か分散かを決める)を引数にした
関数mycalc(...)を作成する.戻り値は,フラグによって変わるように設計
すること.

・mainから初期化関数と計算の関数をフラグを変えて呼び出し,すなわち
まず平均値を求めるように指示して呼び出し,次に分散を求めるように
指示して呼び出し,それぞれの結果を表示させる.

注)Nの値ははじめに#defineを用いてN>100の範囲内で適当に与えなさい.
============================
以上です.よろしくお願いします.
0818デフォルトの名無しさんNGNG
大学名・学部名・学科名・講義名を明記しないとヤル気出ないんだけど
0819デフォルトの名無しさんNGNG
>>818
何いってんだおまいは。
0820デフォルトの名無しさんNGNG
だってエンドポイントが分からんかったらヤル気でないもん(・3・)
0821デフォルトの名無しさんNGNG
>>817
これでいいんかな。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=84
0822デフォルトの名無しさんNGNG
あれ、分散って最後に0.5乗しないといけなかったっけ。
0823デフォルトの名無しさんNGNG
>>817
#include <stdlib.h>
#include <stdio.h>
#define N 99999
enum MODE{ AVERAGE, VARIANCE };
void myinit(int *AI,int N){ for(--N;N>=0;--N) AI[N]=1000.*rand()/(RAND_MAX+1.); }
double mycalc(int *AI,int N, enum MODE mode){
double avg=0,var=0; int *p;
for(p=AI;p<AI+N;++p) avg+=*p;
avg/=N; if( mode == AVERAGE ) return avg;
for(p=AI;p<AI+N;++p) var+=pow(*p-avg,2);
var/=N-1; if( mode == VARIANCE ) return var;
return 0;
}
int main(){
int *AI = malloc(sizeof(int)*N);
myinit(AI,N);
printf("Average:%g Variance:%g\n",mycalc(AI,N,AVERAGE),mycalc(AI,N,VARIANCE));
return 0;
};
0824822NGNG
間違い。それは偏差だっけ…
0825823NGNG
かぶった上に{乱数|1...999}だった_| ̄|○
0826817NGNG
どうもありがとうございます!

ただ,ランダムな数を取るやり方が未習なやり方な気がするのですが,
授業ではたとえば0〜9の16個のランダムな数の取り方として

srand(time(NULL));
for (i=0;i<N16;1++){
ai[i]=rand()%10;

みたいなのを習いましたので,もしよろしければこれに準じたバージョンも
作っていただけるとうれしいです.

注文多くてすいません.
0827デフォルトの名無しさんNGNG
気のせいだ。
>>821 であってる。
0828823NGNG
なんだ,821も間違えてるや,ちょっぴり安心。
分散は自由度平均だから /(N-1)
0829デフォルトの名無しさんNGNG
>>817
さすがに、その部分くらいは自分で書き換えた方が…
0830817NGNG
>>829

…そうですね(;´д`)
甘えすぎました.スマソ.
0831デフォルトの名無しさんNGNG
英文のテキストファイルを読み込んで文字列ごとの頻度を表すプログラムを書きたいのですが、教えていただけないでしょうか。
0832デフォルトの名無しさんNGNG
>>831
自己組織化臨界?
0833デフォルトの名無しさんNGNG
nd_ptr から始まる線形リスト中のノードで、
データ値が dt であるものを探してそのノードへのポインタを返す関数
node_t * find_node(node_t * nd_ptr, data_t dt)
を作れ。
C言語でお願いします。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=85
0834デフォルトの名無しさんNGNG


  自  分  で  作  れ


 
0835デフォルトの名無しさんNGNG
>>831
いつかの質問の使いまわしですが、解答を貼りました。
main関数内でとりあえず"test.txt"を読んでいます。
あと、STLを使って楽しています。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=120
0836デフォルトの名無しさんNGNG
>>818
大阪大学・工学部・電子情報エネルギー工学科・計算機システム。

実は何回もここで質問していた俺(;´Д`)
0837デフォルトの名無しさんNGNG
また大阪か
0838デフォルトの名無しさんNGNG
>>836
さらにヤル気がうせました
0839デフォルトの名無しさんNGNG
>>342
多次元配列って言っても内部では一次元配列として存在してるわけで。

3次元配列 int a[10][10][20]; というのは
1次元配列 int a[2000]; と意味は同じ。

x=5、y=9、z=13とおいた場合

a[x][y][z]=13; を一次元配列で書きたい場合は
a[x+(x*y)+(x*y*z)]=13; とすればいい。

空間図形って理解してます?
小学生でも分かると思いますがw
0840デフォルトの名無しさんNGNG
覚えたてほやほやか
0841デフォルトの名無しさんNGNG
>833
むしゃくしゃしてやった。あまり反省する気はない。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=121&fi=no
0842デフォルトの名無しさんNGNG
>>839
4次元以上の表現は?
GUIで
0843デフォルトの名無しさんNGNG
>>839
へぇーへぇーへぇー

でもそれだとa[9][9][2]とa[7][7][4]が
どっちもa[252]になるような。
0844デフォルトの名無しさんNGNG
>>831 をみてて、こんなの考えたんですが、map の second で sort するにはどうすれば良いですか?

#include <iostream>
#include <string>
#include <map>

using namespace std;

int main()
{
map<string, int> hindo;
string str;

while(cin >> str)
hindo[str]++;

for(map<string, int>::iterator i = hindo.begin(); i != hindo.end(); i++)
cout << i->second << " : " << i->first << endl;

return 0;
}
0845デフォルトの名無しさんNGNG
>>839
a[x+(y*MAX_X)+(z*MAX_X*MAX_Y)]=13;
じゃないんですかね
0846839NGNG
スマゾ・・・勘違いしてました。訂正します。

A=10
B=20
C=30

Box[A][B][C]
このような多次元配列の場合、一次元配列で表すと

Box[A*B*C]
となる。上記の設定で

Box[3][7][21]=255
のようなことを一次元配列で表すと

Box[3+(7*A)+(21*(A*B))]=255
となる。
0847389NGNG
>>845
おっと・・・そういうことです。
0848839NGNG
>>845
おっと・・・そういうことです。
0849デフォルトの名無しさんNGNG
修士論文で銀河シミュレーションの初期条件を作成しています。
その過程で、モデルを構成する1000個の粒子のdt毎の位置座標
を二次元配列を用いて算出を行いたいのですが、うまくいきま
せん。具体的には、プログラムのコンパイルとビルドは行える
のですが、実行段階でスタックエラーが発生してしまいます。

使用ソフトは、Visual C++6.0です。また、プログラムの全文
は以下のURLになります。

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=86

ご指導よろしくお願い致します。
0850デフォルトの名無しさんNGNG
>>849
自動変数としてとるには配列が大きすぎる。
VC++6.0ならオプションでスタックの大きさを変更すればもしかしたらできるかもね。
もしくはstaticをつけるか。
0851デフォルトの名無しさんNGNG
>>849
[プロジェクト]→[設定]の[リンク]タブ開く。カテゴリを[アウトプット]に。
[スタックアロケーション]の[予約]のところに0x400000と入力してリビルド。
それでもエラーが出るようだったら値をもっと大きくしてくれ。
あと、178行目rad[i][j]とかなってるぞ。radは一次元配列のようだが。
0852849NGNG
>850
>851

ありがとうございます。早速試してみます。
178行目は、一次元配列に変更するさい、見落としていた
ものと思われます。ご指摘ありがとうございます。
0853849NGNG
無事実行できました。
ありがとうございました。
0854デフォルトの名無しさんNGNG
以下の問題お願いします。

最初に四則演算を示すアルファベット1文字を入力し、次に二つの実数を
入力してその演算を行う。これを繰り返すプログラムを作りなさい。
アルファベット1文字に対して以下の演算を対応付ける。
    p ・・・ +
    m ・・・ −
    d ・・・ ÷
    t ・・・ ×
これ以外の文字を入力した場合に、プログラムを終了することとする。
余力のある人は大文字でも対応できるようにしなさい。
0855デフォルトの名無しさんNGNG
構造体配列って大域変数でも定義できる?
0856デフォルトの名無しさんNGNG
>>854
>>739-辺り。この頃、同じ学校のヤシの質問多いな。

>>855
できる。
0857デフォルトの名無しさんNGNG
ようするにDQN校ってことだな。はやく学校なんてやめちまえばいいのに。
0858デフォルトの名無しさんNGNG
>>854
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=122&fi=no
0859858NGNG
訂正前:Exit(q)
訂正後:q(Exit)
でよろしく
0860フォルトの名無しさんNGNG
整列のアルゴリズムで0〜100までの
乱数を基本挿入法を使ってソートするプログラムを作成してください。
ポインタ使用不可です。

よろしくお願いします。
0861デフォルトの名無しさんNGNG
>>860
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=123&fi=no
0862デフォルトの名無しさんNGNG
投稿しようと思ったらかぶってた、、orz
0863862NGNG
それに何を勘違いしたか選択法使ってたし、、。
貼らなくて良かったけど恥ずかしい、、。すんません独り言で。
0864デフォルトの名無しさんNGNG
>>863
Dont'mind.
0865デフォルトの名無しさんNGNG
ありがとぅ、うう。
0866フォルトの名無しさんNGNG
>858
ありがとうございましたm(__)m
0867フォルトの名無しさんNGNG
訂正。
>861
ありがとうございました^^
0868デフォルトの名無しさんNGNG
1<a<bかつa,bは互いに素であるとき
ユーザーがa,bを入力すると
ax-by=1となるx,yを出力するプログラムをつくれ
ただし、ユーザーが互いに素でない
a,bを入力することを考慮する必要はない

a,bは1<a<bを満たす自然数です
x,yは負でも大丈夫です

どなたかおながいします。
拡張ユークリッドの互除法などを
いろいろと具具って見たのですが
わたしにはユークリッドの互除法を理解することで精一杯でした
0869デフォルトの名無しさんNGNG
すいません追加です
x,yは正となる最小の自然数でお願いします。
0870845NGNG
MAX_X だと 添え字の最大と取られかねないかしらね。ちょっと反省。
0871デフォルトの名無しさんNGNG
>>868
x,yは整数でつか?
0872871NGNG
あ、下にかいてあったね。
0873デフォルトの名無しさんNGNG
>>868
a=49, b=237が入力されたとする。
237と49に対してユークリッド互除法を解くと
237 = 49*4+41 (r1 = 41 = b-4*a)
49 = 41*1 + 8 (r2 = 8 = a-r1)
41 = 8*5 + 1 (r3 = 1 = r1-5*r2)
8 = 1*8
したがって
1 = r1-5*r2 = r1-5*(a-r1) = 6*r1-5*a = 6*(b-4*a)-5*a = 6*b-29*a
したがって
6*b-29*a = 1
これを237*x-49*y=1と比較すると、a=-49, b=237なので
x = 6, y = -49 が1つの解の組だとわかる。
0874デフォルトの名無しさんNGNG
初期状態を除いてプログラム実行時に既存の英単語リストのファイル(list.txt)を読み込み,2次元配列に格納する.
単語登録,リスト表示,終了の各機能が選択可能なメニュー画面を表示する.ただし,登録可能な単語数を表示し,リスト内と同一単語の登録は受付けない.また,リスト表示は登録した英単語を含めるものとする.
0875デフォルトの名無しさんNGNG
出力を小数点二桁に制限したいのですが、どうすればいいんでしょうか?
0876デフォルトの名無しさんNGNG
>>875
printf("%.2f",a);
0877デフォルトの名無しさんNGNG
[実行例]
***** 英単語管理 *****

[1] 英単語登録
[2] 英単語リスト
[99] 終了

機能を選択してください:2

***** 英単語リスト *****
No. 1: programming
No. 2: exercise
No. 3: information
(省略)
No. 19: science
No. 20: function

20個の英単語が登録されています.
0878874NGNG
***** 英単語管理 *****

[1] 英単語登録
[2] 英単語リスト
[99] 終了

機能を選択してください:1

***** 英単語登録 *****
[0] メニューへ戻る

登録可能な英単語数: 80
英単語No. 21:exercise
この英単語は登録済みです.

登録可能な英単語数: 80
英単語No. 21:mathmatics

登録可能な英単語数: 79
英単語No. 22:0

お願いします。
0879デフォルトの名無しさんNGNG
>>876
ありがとうございました〜
0880デフォルトの名無しさん NGNG
scanfで入力した自然数(正の整数)が素数か否かを調べるプログラムを作成しなさい。
割り切れることを判別するのは、%で余りがなければその結果は「真」である。
例えば、5%3は2であるから、5%3は偽(真ではない)である。
a=5;
if(a%3==0)printf(“割り切れる“);
else
printf(“割り切れない“);
となる。

お願いします。
0881デフォルトの名無しさんNGNG
>>880 効率無視。もう少し効率の良い用法を考えることをおすすめする。

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

int main(){
int a,i;
printf("input a=");
scanf("%d",&a);

for(i=2;i<a;i++){
if(!(a%i)){
printf("%dで割り切れる",i);
return 0;
}
}
printf("素数\n");
return 0;
}
0882725NGNG
提出期限が近くてやばいです。
ヒントだけでもおねがいします。
0883880NGNG
>>881
素早いご返信&ご教授ありがとうございました。
0884デフォルトの名無しさんNGNG
>>725=>>882
こんなんでどうでしょう。
再帰を使って、右・左の枝の個数を数える、それに自分の分を足して返す。

int size(Tree t){
int r_num=0,l_num=0;
if(t->right_subtree!=NULL){
r_num=size(t->right_subtree);
}
if(t->left_subtree!=NULL){
l_num=size(t->left_subtree);
}
return (r_num+l_num+1);
}
0885デフォルトの名無しさんNGNG
sscanf を使って以下のプログラムを書くのはどうしたらいいでしょうか?

行単位で、3個以下の単語を入力する。
4個以上の入力には、無効メッセージを出す。

よろしくお願いします。
0886デフォルトの名無しさんNGNG
>>885
こんな感じか。
char buf[256], s1[16], s2[16], s3[16];
char c;
fgets(buf, sizeof buf, stdin);
if (sscanf(buf, "%s%s%s %c", s1, s2, s3, &c) > 3){
puts("無効");
}
0887デフォルトの名無しさんNGNG
できました。
ありがとうございます。
要するに%c の所に何かあったら無効と表示するということですか?
0888デフォルトの名無しさんNGNG
#include <stdio.h>
#include <string.h>

int
main(int argc, char **argv) {
int op_cnt;
char str[1024];
if (argc>4) {
fprintf(stderr,"argument is less than Three");
}
memset(str,0,1024);
for (op_cnt=1;op_cnt<argc;op_cnt++){
sscanf(argv[op_cnt],"%s",str);
printf("%s\n",str);
}
return 0;
}
0889デフォルトの名無しさんNGNG
>>887
そこに入るとsscanfの戻り値が4になるからね。
その前の空白はfgetsのときに入る改行を飛ばすため。
0890デフォルトの名無しさんNGNG
>>888, 889
理解できました。
感謝いたします!!
0891デフォルトの名無しさんNGNG
整数値nを読み込んでn×nの正方形を*を用いて表示するプログラムを次の条件に従い作成せよ
繰り返しにはfor文を用いる

よろしくお願いします。
0892デフォルトの名無しさんNGNG
>>891
#include <stdio.h>

int main(void){
int n, i, j;
printf("n >>"); scanf("%d", &n);
for (i=0;i<n;i++){
for (j=0;j<n;j++){
printf("* ");
}
puts("");
}
return 0;
}
0893891NGNG
>>892
すみません
puts(""); のところの解説をお願いしてもよろしいでしょうか?
0894デフォルトの名無しさんNGNG
改行。
putchar('\n');
でもいいけど。
0895891NGNG
n回横へ、それをn回縦にってことですね
ありがとうございました
0896デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char **argv){
int n,i;
char **matr_2;
char *ptr;
fscanf(stdin,"%d",&n);
if(n<0){
fprintf(stderr,"invalid value!\n");
exit(1);
}
matr_2 = malloc(sizeof(char*)*n);
if (!matr_2) {
fprintf(stderr,"can not allocate\n");
exit(1);
}
for (i=0; i<n; i++) {
ptr = malloc((sizeof(char)*n+1));
if (!ptr) {
fprintf(stderr,"can not allocat\n");
exit(1);
}
memset(ptr,'*',n);
ptr[n] = '\n';
matr_2[i] = ptr;
}
for (i=0;i<n;i++) {
fprintf(stdout,matr_2[i]);
}
return 0;
}
0897デフォルトの名無しさんNGNG
>>725==>>882
おっさん,目ぇ節穴か?
すぐ下の>>728にあるじゃねぇか。
0898デフォルトの名無しさんNGNG
>839を見て考えた。
a[(x * y) * (x * y + 1) / 2 + y] = 13;
とすれば幅(高さ)に関係なく2次元が扱える。
#(10 * 5)の空間だろうが(10 * 20)の空間だろうが関係ない。

これを拡張すれば3次元でもつかえるのだが、
↑の式の分子の部分が(x * y * z) * (x * y * z + 1) * (x * y * z + 2)となった時点で馬鹿馬鹿しくなった。

#でもこれ、なんかに応用できないかなぁ。
0899デフォルトの名無しさんNGNG
何がやりたいのかわけわかめ。

>a[(x * y) * (x * y + 1) / 2 + y] = 13;
3次元扱っているようにしか見えないよぅ。・゚・(ノД`)・゚・。
0900デフォルトの名無しさんNGNG
これをやっていただけませんか↓

次の動作を行うプログラムheap.cを作成せよ.

ファイルに保存された整数データ(データの保存形式は自由)を1つずつ読み込み,ヒープを構成する.
プログラムはデータをひとつ読み込むごとにヒープの状態を表示する.
すべてのデータを読み込んだら,ヒープに保持している最小のデータを1つずつ削除する.この時再構成されたヒープの状態を削除の都度表示する.
表示された結果をソースファイルの最後にコメントとしてつけること
0901デフォルトの名無しさんNGNG
>>898
どこまでも突き詰めて、究極のハッシュ関数に応用すれ
0902874NGNG
誰かお願いしますorz
0903デフォルトの名無しさん NGNG
関数の問題ですお願いします。

まず次のような二つの関数を作成する。
�@一つの正整数を引数として受け取り、その整数の各桁の和(345なら3+
4+5=12)を返す関数。
�A一つの正整数を引数として受け取り、それが3で割り切れなければ0、割り
切れれば0以外を返す関数。

これらの関数を用いて、いくつかの正整数を入力して、それが3で割り切れるか
否かを表示する。入力の終わりは0または負のデータが現れたことで判定する。
(ただしbreak contineは用いない)
0904デフォルトの名無しさんNGNG
>>903
2つの関数使う意味ないけど、使えってことだよな。
ほれ。

#include <stdio.h>

int foo(unsigned int n)
{
if( n )
return n % 10 + foo(n / 10);
return 0;
}

int bar(unsigned int n)
{
return n % 3;
}

int main(void)
{
int n;
do{
scanf("%d",&n);
if( n <= 0 )
return 0;
if( bar( foo(n) ) )
printf("3で割り切れない。\n");
else
printf("3で割り切れる。\n");
}while( 1 );
return 0;
}
0905 NGNG
ここは課題を書き込んで頼んでもいいのですか?
0906デフォルトの名無しさん NGNG
N個の自然数を入力して下記の処理をするプログラムなんですがお願いします。
但し 入力データの終わりを0であらわすものとする。
1 入力されたデータをそのまま表示するプログラム
2 入力されたデータを合計して平均を求めるプログラム
3 MAXとMINを求めるプログラム
初歩的なことだと思うんですが できません 教えてください
0907デフォルトの名無しさんNGNG
うん。
0908デフォルトの名無しさんNGNG
>>900
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int compare_int(const void *a, const void*b)
{ if(*(int*)a==*(int*)b)return 0; return (*(int*)a>*(int*)b)?-1:1; }
void print_heap(int *heap, size_t heap_size){
int *h; printf("\nheap_size: %d\n",heap_size);
for(h=heap; h!=heap+heap_size; ++h) printf("address:%p value:%d\n",h,*h);
}
int main(int argc, char**argv){
int *heap=NULL; size_t heap_size=0;
char buf[1024]; FILE *fp;
if( !(argc>1) || !(fp=fopen(argv[1],"r")) ) return EXIT_FAILURE;
while( fgets(buf,sizeof(buf),fp) ){
char *p;
for(p=strtok(buf," \n"); p; p=strtok(NULL," \n")){
heap=realloc(heap,++heap_size*sizeof(*heap));
heap[heap_size-1]=atoi(p); print_heap(heap,heap_size);
}
}
for(--heap_size;heap_size!=0;--heap_size){
int *h; int *min_h=heap;
for(h=heap; h!=heap+heap_size; ++h)
if( *min_h >= *h ) min_h = h;
if( min_h != heap+heap_size-1 )
memmove(min_h,min_h+1,(heap+heap_size-min_h)*sizeof(int));
heap=realloc(heap,heap_size*sizeof(*heap)); print_heap(heap,heap_size);
}
return EXIT_SUCCESS;
}
0909デフォルトの名無しさんNGNG
>>906
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#define N 10
void print_heap(int *heap, size_t heap_size){
int *h; printf("\nheap_size: %d\n",heap_size);
for(h=heap; h!=heap+heap_size; ++h) printf("address:%p value:%d\n",h,*h);
}
int main(int argc, char**argv){
int *heap=NULL; size_t heap_size=0; char buf[1024];
for( printf("input Number: "); fgets(buf,sizeof(buf),stdin); printf("input Number: ") ){
char *p;
for(p=strtok(buf," \n"); p; p=strtok(NULL," \n")){
heap=realloc(heap,++heap_size*sizeof(*heap));
heap[heap_size-1]=atoi(p);
}
if(heap[heap_size-1]==0){ --heap_size; break; }
if(heap_size >= N){ heap_size=N; break; }
}
print_heap(heap,heap_size);
{ int *h; int *min_h=heap; int *max_h=heap; double sum=0;
for(h=heap; h!=heap+heap_size; ++h){
sum+=*h;
if( *min_h >= *h ) min_h = h;
if( *max_h <= *h ) max_h = h;
}
printf("avg: %g, max: %d, min: %d\n", sum/heap_size, *max_h, *min_h);
}
return EXIT_SUCCESS;
}
0910デフォルトの名無しさんNGNG
>>909
ありがとうございます すみませんが1,2,3の問題でわけるとどうなるんですか? 
どこからどこまでがなにのプログラムかわかりません お手数かけてすみませんが教えてください
0911デフォルトの名無しさんNGNG
たとえば
struct CELL{
char a[10];
char b[10];
char c[10];
char d[10]:
struct CELL *next;
struct CELL *prev;
};
って構造体のリストがあるとして,その要素の中からある文字列s[ ](例えば"asd")ってのを含む
要素をすべて文字列としてとりだして表示するプログラムってどんなのですかね?
0912デフォルトの名無しさんNGNG
>>911
a,b,c,dとsをstrcmp()で比較して、一致したのだけ表示すればいい。
0913デフォルトの名無しさんNGNG
main()
{
int i;
float height[100],x;
i=height[0]=x=0;
while(1){
scanf("%f",&x);
height[i+1]=height[i]+x;
i++;
printf("平均は%f,\n",height[i+1]/i);
printf("入力数は%d,\n",i);
}
}

入力された数の個数とその平均値を求めるプログラムを作ったつもりなのですが
実行結果が

C:\c>height2.exe
100
平均は-1810926403
入力数は1,
200
平均は-2362138731
入力数は2,

となってしまいます、どこがおかしいのでしょうか?
0914デフォルトの名無しさんNGNG
>>913
printf("平均は%f,\n",height[i+1]/i);
↓
printf("平均は%f,\n",height[i]/i);
0915デフォルトの名無しさんNGNG
>どこがおかしいのでしょうか?

printf("平均は%f,\n",height[i+1]/i);
0916デフォルトの名無しさんNGNG
配列使う意味もないね
0917デフォルトの名無しさんNGNG
>>912
次や次の次のCELLの中のaやbなどはどうすれば?
0918デフォルトの名無しさんNGNG
ありがとうございます、さっそくソースを手直ししてコンパイルしたところ正常に動きました
次にx=0のとき直前に入力した値を削除するような機能
例えば実行結果が

C:\c>height.exe
100
平均は100.000000
入力数は1,
200
身長の平均は150.000000
入力数は2,
0
平均は100.000000
入力数は1

となるようにしたいのですが どのようにすればいいでしょうか?
0919デフォルトの名無しさんNGNG
>>917
struct CELL *p = head; // headはリストの先頭
while( p ){
if( !strcmp(p->a,s) || !strcmp(p->b,s) || !strcmp(p->c,s) || !strcmp(p->d,s) )
disp(p); // CELLを表示する関数(自分で定義)
p = p->next;
}
みたいな感じでループまわす。
つか、ポインタ一つ用意してnext使って辿ればいいだけ。
0920デフォルトの名無しさんNGNG
>>919
そんな感じですか、どうも
0921デフォルトの名無しさんNGNG
>>918
if(x!=0){
height[i+1]=height[i]+x;
i++;
} else {
if( i>0)i--
}
0922デフォルトの名無しさんNGNG
std::cout << "Hello World!\n";

今日覚えたよ!!
0923デフォルトの名無しさんNGNG
明日は std::cin を使って入力に挑戦してみると良いでしょう。
0924デフォルトの名無しさんNGNG
>>918
問題を小出しにしないほうがいいような
0925デフォルトの名無しさんNGNG
>>919
あの〜、例えばsが"asd"でaが"ruasdf"の時もaが表示されないといけないのですが
上のプログラムでそれもいけますか?
0926デフォルトの名無しさんNGNG
んじゃstrstr()に直してくれ。
0927デフォルトの名無しさん NGNG
N個の自然数を入力して最頻値を求めるプログラム(ただし、0で入力が終わる)を
C言語であらわすプログラムを教えてください。お願いしますm(__)m
0928デフォルトの名無しさんNGNG
整数nの階乗(n! = n(n-1)…1, ただし、0! = 1)を求める
関数factorialを作り、
それを用いて0から5までの階乗の結果を表示するプログラム

出力例
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120

お願いします。
0929デフォルトの名無しさんNGNG
#include<stdio.h>
int factorial(int n){
int i,f=1;
for(i=1;<=n;i++)
f=f*i;
}
return f;
}

int main(){
int i;
for(i=0;i<=5;i++)
printf("%d\n",factorial(i));
return 0;
}
0930デフォルトの名無しさんNGNG
>>928
#include <stdio.h>

int factorial(int n) {
if (n == 0) return 1;
else return n * factorial(n-1);
}

int main() {
int i;
for (i=0; i<=5; i++) {
printf("%d! = %d\n", i, factorial(i));
}
return 0;
}
0931929 = 飲んだ後NGNG
すまん。最初の「}」は不要。
0932929 = 飲んだ後NGNG
寝ます…
0933デフォルトの名無しさんNGNG
その後に、
928の関数factorialを参考にして、
キーボードから入力した2つの正または0の整数nとmの
組み合わせnCmを計算する関数combinationを作り、
それを用いてnCmを計算するプログラム。

ヒント)

nCm = n!/(n−m)!m!

出力例
Input n: 8
Input m: 6
8C6 = 28
0934デフォルトの名無しさんNGNG
2つも頼んじゃいましたが、
どうかよろしくお願いしますm(__)m
0935デフォルトの名無しさんNGNG
>>933
それってfactorial使うとすぐに桁溢れするぞ。
パスカルの公式(三角形とcombinatorialを結びつけるやつ)使っとけ。
0936デフォルトの名無しさんNGNG
正直に書いてみる。

int combination(int n, int m) {
return factorial(n) / (factorial(n-m) * factorial(m));
}

int main() {
int n, m;
printf("Input n: ");
fflush(stdout);
scanf("%d", &n);
printf("Input n: ");
fflush(stdout);
scanf("%d", &m);

printf("%dC%d = %d\n", n, m, combination(n, m));
return 0;
}
0937デフォルトの名無しさんNGNG
名簿みたいのってどうやってつくったらいいですか?
構造体つかってやろうとおもうのですが、それだけだと新しい人を登録くするときにいちいちコンパイル
しないといけませんよね?
コマンドラインから入力する方法ってどうやってやるんですか?
具体的(プログラム例など)におしえていただけるとうれしいです。
0938デフォルトの名無しさんNGNG
>>937
>新しい人を登録くするときにいちいちコンパイル
(´д`)・・・

ぼくはどうしたらいいんでしょう?
0939デフォルトの名無しさんNGNG
IEEE754の浮動小数点数同士の加減乗除のプログラムを教えてください
入力は二つです。10進数で入力しますy。それを2進に変換して浮動小数点数にして、演算をします。。
出力結果も10進で表示します。
0940デフォルトの名無しさんNGNG
狼狽するね_| ̄|○
0941↑NGNG
C言語でお願いします
0942デフォルトの名無しさんNGNG
#include <stdioh.>
main(){
puts("狼狽するね_| ̄|○ ");
}
0943デフォルトの名無しさんNGNG
>>938
とりあえず>>940しましょう
0944デフォルトの名無しさんNGNG
密告します。

>939
はマルチくんです。
http://pc5.2ch.net/test/read.cgi/tech/1087913517/l50
の3.
0945デフォルトの名無しさんNGNG
> stdioh.
狼狽するね_| ̄|○
0946938NGNG
狼狽するね_| ̄|○
0947デフォルトの名無しさんNGNG
>>944
そのスレってひょっとして次スレ?
スレ番が入ってないけど・・・
0948デフォルトの名無しさんNGNG
/* >>937 */
/* 質問内容を理解できている自信はないが */
/* $ ./program_name Nanashi Mona ItteYoshi */
#include<stdio.h>
int main(int argc, char *argv[]){
int i;
for(i=0;i<argc;i++)
printf("%s\n",argv[i]);
return 0;
}
0949デフォルトの名無しさんNGNG
>>948
それだとコマンドそのものも印字されるよ_| ̄|○
0950デフォルトの名無しさんNGNG
コマンドラインからの入力のサンプルってのが妥当なら別にいいやん。
まぁ、>937 が求めているのは別のことかも知れんけど。
0951デフォルトの名無しさんNGNG
http://pc5.2ch.net/test/read.cgi/tech/1087929711/
スレ番を入れて立て直したよ。
0952デフォルトの名無しさんNGNG
>>939 がここにもいた
http://pc5.2ch.net/test/read.cgi/tech/1076054000/684
0953デフォルトの名無しさんNGNG
ひx致死だな
0954デフォルトの名無しさんNGNG
さらに密告します
>939
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html#1
ここにもいます
┐(´∇`)┌
0955954NGNG
すいませんこっちです
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1087941284&res=1
on_
0956ぼるじょあ ◆yBEncckFOU NGNG
(・3・)
0957デフォルトの名無しさんNGNG
#include<stdio.h>
int factorial(int n){
int i,f=1;
for(i=1;<=n;i++)
f=f*i;
}
return f;
}

int main(){
int i;
for(i=0;i<=5;i++)
printf("%d\n",factorial(i));
return 0;
}

の関数factorialを利用して
キーボードから入力した2つの正または0の整数nとmの
組み合わせnCmを計算する関数combinationを作り、それを用いてnCmを計算するプログラム。

ヒント)

nCm = n!/(n−m)!m!

出力例
Input n: 8
Input m: 6
8C6 = 28

です。
関数を3つ書いてやるらしいです。もう1度お願いします。
0958デフォルトの名無しさんNGNG
factorialあるんなら一瞬だろ
0959デフォルトの名無しさんNGNG
#include<stdio.h>

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

int combination(int a,int b){
return (factorial(a)/factorial(a-b)/factorial(b));
}
int main()
{
int i,n,m;
printf("Input n:");
scanf("%d",&n);
printf("Input m:");
scanf("%d",&m);
printf("%dC%d = %d",n,m,combination(n,m));
return 0;
}
0960デフォルトの名無しさんNGNG
以下に示すプログラムを実行した時に、
画面に表示される数字を答よ。
#include <iostream>
using namespace std;

int main()
{
int i, k;
k = 11 / 4 * 3;
for ( i=0; i<5; i++ ) {
if ( i <= 2 ) {k = k + 2*(i+1);}
else {k = k - i;}
}
cout << k << endl;
}
これって数字いくつになりますか?
0961デフォルトの名無しさんNGNG
>>960
コンパイルしろよ
0962デフォルトの名無しさんNGNG
コンパイルてなんですか?
0963デフォルトの名無しさんNGNG
>>962
ワロタ
0964デフォルトの名無しさんNGNG
>>962
じゃあ>>960を君の好きなスクリプト言語でリライトしれよ
0965デフォルトの名無しさんNGNG
>>939
この宿題は某電機大学の講義で出された課題でつ。
みんな必死だね...
0966デフォルトの名無しさんNGNG
p
0967デフォルトの名無しさんNGNG
>>965
必死なのはいいんだけどね。
必死なだけなのは困るよね。
0968デフォルトの名無しさんNGNG
VC++でコンパイルしてそのままCtrl+F5で実行すると問題なく処理されるのですが,
これをアイコンのダブルクリックで起動するとここの部分で終了してしまいますが,
なぜでしょうか?
char *index[3];
int i,j;
for(i = 0;i < 3 ; i++){
index[i] = (char *)malloc(j+1);
}
0969968NGNG
補足:
jは事前の処理で高々100以下の整数が収まっています.
処理が中断してしまうのはmallocの命令文に問題があるようなのですが.
0970デフォルトの名無しさんNGNG
>>968
プログラムの実行が終了したから
0971デフォルトの名無しさんNGNG
ソース全部出せよ
0972968NGNG
解決しました.m(__)m
0973デフォルトの名無しさんNGNG
>>960
頭の中でやっただけだから間違ってるかも。
6
0974デフォルトの名無しさんNGNG
>>960
脳内インタープリタで実行したところ11が出力されました。
0975デフォルトの名無しさんNGNG
私も>974同様11でした。
ってことで、>973の脳内インタプリタはバグってるらしい。
0976デフォルトの名無しさんNGNG
脳内コンパイルでコンパイルしたところ
バイナリファイルが生成されました
シンボル解決は見てみぬふり
0977デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=87

宿題なんですがコンパイルしたときに
*q[*(p+i)-0x61]+=1;
このへんがおかしいってエラーが出るんですが、何がおかしいんでしょ・・・?
ポインタはムヅイ・・・
0978デフォルトの名無しさんNGNG
×*q[*(p+i)-0x61]+=1;
○q[*(p+i)-0x61]+=1;
○*(q+*(p+i)-0x61)+=1;
0979デフォルトの名無しさんNGNG
*q
0980デフォルトの名無しさんNGNG
>>978
おぉ、即レスどうもです。
うまく動きました。
しかし、どこかが間違ってるのかzの個数がすごいことになる(つД`)
0981デフォルトの名無しさんNGNG
printf("%cは%d個\n"(0x61+i),alpha[i]);
とりあえず,が抜けてるけど
0982デフォルトの名無しさんNGNG
てめえの脳内ではアルファベットは25個しかないのか?
static int alpha[25];
0983デフォルトの名無しさんNGNG
あぁ、俺ってバカ。
助言どもっす・・_ト ̄|○
0984デフォルトの名無しさんNGNG
新たな宿題は次スレにお願いします。
http://pc5.2ch.net/test/read.cgi/tech/1087929711/
0985デフォルトの名無しさんNGNG
985
0986デフォルトの名無しさんNGNG
986
0987今日からC言語始めますた!宜しく!!!NGNG
#include <stdio.h>
void main()
{

printf("俺はロリコン(爆");

}
0988デフォルトの名無しさんNGNG
>>987
・main()は本来int型の値を返すものです。
・標準出力の最後は改行をつけたほうが無難です。
0989デフォルトの名無しさんNGNG
この問題をC言語でお願いします。
直径15cmの円周と面積を求めよ。
0990デフォルトの名無しさんNGNG
この問題をC言語でお願いします。
直径15cmの円周と面積を求めよ。
0991デフォルトの名無しさんNGNG
printf("円周:15π\n", );
printf("面積:56.25π\n", );
0992デフォルトの名無しさんNGNG
#include <stdio.h>
main()
{
printf("円周%f面積%f\n", 15*2*3, 15*3*3

}
0993デフォルトの名無しさんNGNG
>>992
ワロタ
0994デフォルトの名無しさんNGNG
ι(´Д`υ)
0995デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
printf("俺は%d\n",995);
return 0;
}
0996デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void)
{
int i = 996;
while(i<1001) printf("俺は%d\n",i++);
return 0;
}
0997デフォルトの名無しさんNGNG
円周率@小学校って3.14に戻ったんじゃなかったっけ
0998デフォルトの名無しさんNGNG
俺は22/7と習ったぞ。
0999デフォルトの名無しさんNGNG
円周率が3っていうのは完全にデマだぞ?
↓↓1000ゲットどうぞ↓↓
1000デフォルトの名無しさんNGNG
次スレ
ぼるじょあがC/C++の宿題を片づけますYO! 25代目
http://pc5.2ch.net/test/read.cgi/tech/1087929711/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。