C/C++の宿題を片付けます 54代目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。
気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
C/C++の宿題を片付けます 53代目
http://pc8.2ch.net/test/read.cgi/tech/1132102992/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
2デフォルトの名無しさん:2005/12/01(木) 12:20:42
[1] 授業単元:
[2] 問題文(含コード&リンク): gif画像一画素あたりのRGBそれぞれの平均の値を数値で取得するプログラムを書け。
[3] 環境
  [3.1] OS: FreeBSD
[3.3] C
[4] 12月2日まで
[5] とくになし
急いでいます。よろしくお願いします。
3デフォルトの名無しさん:2005/12/01(木) 12:24:18
gifかよw 俺はスルー。
4デフォルトの名無しさん:2005/12/01(木) 12:44:35
>>2
1画素毎にRGB成分の平均値を求めるの …… 10分
画像全体のRGB成分の平均値を求めるの …… 10分
gif 画像の展開ルーチンを0から組むの …… 2-3時間? 素人にはお勧めできない。

>>2の問題文の日本語を理解するの …… measureless
5デフォルトの名無しさん:2005/12/01(木) 12:47:16
>>2
画像ファイルを読み込んで、1画素ずつ取得するところまでが
gifだとどのライブラリを使うか、或いは自力で書くか、など厄介。
そこまで行けば、後は簡単だから自力でがんばれ。
#あーそうか、gifだからパレットカラーなのか。その点も要注意だな。
6デフォルトの名無しさん:2005/12/01(木) 14:18:27
>>2
普通に読むと「それぞれの平均」ってとこから
gifアニメの各フレームのRGB値を時間軸方向で平均するということか
1画素ごとに3つの値がでるわけね
7デフォルトの名無しさん:2005/12/01(木) 14:37:51
俺が出題者なら、GIFなんて使わずpgmやらppmでお茶を濁すな。

まちがいなく要素の平均を求める手間<GIFを扱う手間。
課題をまともにやってくる人間があっという間に減る。
8デフォルトの名無しさん:2005/12/01(木) 14:38:40
>>6
あーそれ、フレーム間時間や、部分フレームまで考慮しろって?
かなり面倒だと思うのだがw
9デフォルトの名無しさん:2005/12/01(木) 15:18:57
>>2が回答もらえないに、3ウォン。
10デフォルトの名無しさん:2005/12/01(木) 16:00:31
[1] 授業単元:プログラミング演習U
[2] 問題文:

http://ysserve.int-univ.com/sugsi/Lecture/c2/e_07-05-03.html

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:12/8まで
[5] その他の制限:初心者にもわかりやすくお願いします。

よろしくお願いします。
11デフォルトの名無しさん:2005/12/01(木) 16:59:26
正直言おう、クソだと。
fscanf("%c %s", &c, &word);

struct q {
 char *word; 単語を記憶する
 struct q *next;
}


while(1) {
 fscanf(.....);
 switch(c) {
  case 'D':
   ....
   case 'Q':
  exit(1);
  default:
   printf(stderr,"コマンド入力エラー\n");
}
}

どんだけ突っ込めばいいんだ?
12デフォルトの名無しさん:2005/12/01(木) 17:05:16
Segmentation Fault

理由:メモリ確保がなされていない。
別の問題もあるが、あとは任せた。
13デフォルトの名無しさん:2005/12/01(木) 17:12:12
例えば...
fscanf("%c %s", &c, &word);
printf(stderr,"コマンド入力エラー\n");

これなんなのさ…… orz

わかった、釣りだな!!きっと釣りなんだよ!!
釣りに決まってるさ、あーはっはっはっは(涙)
14デフォルトの名無しさん:2005/12/01(木) 17:26:12
キーボードから整数 x、y (x < y) を入力する。
また、キーボードから整数 a、b を入力する。
x から y までの整数(x、yを含む)のうち、
a の倍数かつ b の倍数である数の合計を求める

a の倍数かつ b の倍数とする

えろいひと頼む
15デフォルトの名無しさん:2005/12/01(木) 17:26:38
キーボードから整数 x、y (x < y) を入力する。
また、キーボードから整数 a、b を入力する。
x から y までの整数(x、yを含む)のうち、
a の倍数かつ b の倍数である数の合計を求める

a の倍数かつ b の倍数とする

えろいひと頼む
16デフォルトの名無しさん:2005/12/01(木) 17:27:23
だから、>>1を百万回読み直して来いというているだろうが。
俺は確かにエロエロかもしれん。
17デフォルトの名無しさん:2005/12/01(木) 17:29:33
第一案
#define fscanf scanf
#define printf fprintf

第二案
#define fscanf(...) fscanf(stdin, __VA_ARGS__)
#define printf(x,...) printf(__VA_ARGS__)

第三案
えーっと・・・
18デフォルトの名無しさん:2005/12/01(木) 17:30:34
>>16
すまん。OSはLinuxです
えでぃたーはXemacsです
19デフォルトの名無しさん:2005/12/01(木) 17:31:27
20デフォルトの名無しさん:2005/12/01(木) 17:35:52
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1183.txt

>>18
テンプレートを推奨する理由は、
@質問者がどの程度まで習っているかという前提を共有する。
A条件後付による二度手間を回避する
という意味がある。

半年>>1を読み直して来い。
21デフォルトの名無しさん:2005/12/01(木) 17:38:57
22デフォルトの名無しさん:2005/12/01(木) 17:45:56
>>14
例えばこういう嫌がらせが来る可能性もある。

#include <iostream>

int main(int argc, char* argv[])
{
int x,y,a,b;std::cin >> x >> y >> a >> b;
for(argc=0;x<=y;x++){if(x%a==0&&x%b==0&&x!=0){++argc;/*std::cout<<x<<std::endl;*/}}
std::cout<<"count is "<<argc<<"."<<std::endl;
}
23デフォルトの名無しさん:2005/12/01(木) 17:47:01
そのサイト、C基礎編も掻い摘んで見てみたけど
泣きたくなるくらい情けないほど酷いな。
用語はいい加減だし間違いはあるし……
24デフォルトの名無しさん:2005/12/01(木) 17:47:44
>>10
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1183.txt
よろ。ってアンカー付けてないと解りにくかったな、すまんかった。
25デフォルトの名無しさん:2005/12/01(木) 17:55:14
つーか、ダメだこりゃ。
>文字列終端キャラクタEOF(UNIXのシェル環境の場合には、 [Ctrl]+D(コントロールキーを押しながらD))
26デフォルトの名無しさん:2005/12/01(木) 17:57:32
コレやってて単位もらえるんだ...いいなぁ
27デフォルトの名無しさん:2005/12/01(木) 18:02:24
#include <iostream>

int main(int argc, char* argv[])
{
int x,y,a,b;std::cin>>x>>y>>a>>b;
for(argc=0;x<=y;x++)if(x&&!(x%a||x%b))++argc;
std::cout<<"count is "<<argc<<"."<<std::endl;
}

こんなコード書いてくる学生居たらテラコワス
28デフォルトの名無しさん:2005/12/01(木) 18:04:33
うはwww そうするとEOFって何の略なんだろうwww

End Of FILEだと信じ込んでいた俺の人生は無意味だったのかもしれない
俺自身にガッカリです。
29デフォルトの名無しさん:2005/12/01(木) 18:05:52
>>23
コンパイラとアセンブラを混同してるな
他のあら探ししようと思ったがやる気がなくなった
糞杉
30デフォルトの名無しさん:2005/12/01(木) 18:06:33
>>28
EOF=End-of-Fileであってる
31デフォルトの名無しさん:2005/12/01(木) 18:07:21
>>28
End Of File
Ctrl+Dはキーボードからの入力もファイル入力と同じように扱えるよう便宜を図っているだけ。
32デフォルトの名無しさん:2005/12/01(木) 18:12:11
>>30 >>31
マジレスサンクスです。

#include <iostream>
main(){
int c,x,y,a,b;
for(std::cin>>x>>y>>a>>b,c=0;x<=y;++x)if(x&&!(x%a||x%b))++c;
std::cout<<c;
}
俺の限界...
33デフォルトの名無しさん:2005/12/01(木) 18:18:09
>>21
酷いな…
一般サイトか書籍を見ながら、独学でやった方が遥かにマシだぞ…。
こんなのに授業料を払うのは気の毒すぎる。
34デフォルトの名無しさん:2005/12/01(木) 18:20:48
金払って嘘教えられてちゃたまったもんじゃない罠w
35デフォルトの名無しさん:2005/12/01(木) 18:20:53
>>21が見れない
そんなに酷かったの?見たかったな
36デフォルトの名無しさん:2005/12/01(木) 18:21:13
37デフォルトの名無しさん:2005/12/01(木) 18:21:57
削り方ぐらいは少し覚えような
38デフォルトの名無しさん:2005/12/01(木) 18:24:43
所詮信州大か。
39デフォルトの名無しさん:2005/12/01(木) 18:30:00
>>33
もっと恐ろしいのは、コレが大学院過程で卒業後
どこぞのSEとして君臨しそうなところだ。
40デフォルトの名無しさん:2005/12/01(木) 18:38:16
なあに、かえって免疫力がつく
41デフォルトの名無しさん:2005/12/01(木) 18:41:44
KHKH
42デフォルトの名無しさん:2005/12/01(木) 18:51:12
>>10 信大生乙
43デフォルトの名無しさん:2005/12/01(木) 19:14:47
宿題スレなんだからみんな大学生、高専、専門学校生のどれかだ。
44デフォルトの名無しさん:2005/12/01(木) 19:15:04
>>39
大学院ってマジかよ
俺の所(国立)じゃ情報学部じゃないただの工学部ですら1年でCやってるぞ
信州馬鹿ばっか
45デフォルトの名無しさん:2005/12/01(木) 19:15:47
>>44自己レス
どうみても読み違いです。
本当にありがとうございました




('A`)
46デフォルトの名無しさん:2005/12/01(木) 19:24:46
秀逸な自己完結劇で御座いました。拍手!
47デフォルトの名無しさん:2005/12/01(木) 19:50:05
↑ハズカシイヤツガイル...
48デフォルトの名無しさん:2005/12/01(木) 20:02:45
以前お世話になりました。
また、よろしくお願いします。
[1] 授業単元:プログラミング
[2] 問題文:main関数で実数型配列indata[2]とoutdata[4]を宣言し、indata[0],indata[1]にはキーボードから数値を取り込む。
2つの配列、indata,outdataを引数とする関数sisokuを準備し、関数sisokuは戻り値を持たないが、引数の和、差、積、商を計算し
その結果をoutdataに反映させる。main関数内でoutdataをfor文を用いて画面に表示する。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月2日
[5] その他の制限: for文とポインタ
49デフォルトの名無しさん:2005/12/01(木) 20:11:57
こんなん?

#include<stdio.h>
void sisoku(double*,double*);
int main(void){
double indata[2],outdata[4];
int i;
puts("数値を2個入れてね");
scanf("%lf",&indata[0]);
scanf("%lf",&indata[1]);
sisoku(indata,outdata);
for(i=0;i<4;i++)
printf("%f\n",outdata[i]);
return 0;
}
void sisoku(double *in,double *out){
out[0] = in[0]+in[1];
out[1] = in[0]-in[1];
out[2] = in[0]*in[1];
out[3] = in[0]/in[1];
}
50デフォルトの名無しさん:2005/12/01(木) 20:47:01
[1]授業単元:プログラミング
[2]問題文:3個の整数の最大公約数を求める(ユークリッドの互除法を用いる)
[3]環境
 [3.1]OS:Windows
 [3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
 [3.3]言語:C
[4]期限:今週中
[5]その他の制限:
お願いします
51デフォルトの名無しさん:2005/12/01(木) 20:56:03
>>50
#include <stdio.h>

int gcd(int x, int y)
{
  while(y)
  {
   int t = y;
   y = x % y;
   x = t;
  }
  return x;
}

int main(void)
{
  int a, b, c;
  printf("input 3 numbers:\n");
  scanf("%d%d%d", &a, &b, &c);
  printf("gcd: %d\n", gcd(a, gcd(b, c)));
  return 0;
}
52デフォルトの名無しさん:2005/12/01(木) 21:11:25
>>51
エレガントなプログラムです。

ただし、
scanf("%d%d%d", &a, &b, &c);
で入力したa, b, cをa>=b>=cの関係で並び替る必要があると思うけど?

53デフォルトの名無しさん:2005/12/01(木) 21:14:52
>>51
ありがとうございます
54デフォルトの名無しさん:2005/12/01(木) 21:19:31
>>52 何で? gcd は可換だから取る順番に寄らないはずだけど?
55デフォルトの名無しさん:2005/12/01(木) 21:27:38
ありがとうござぃます!
gcdとかwhileとか使わないでできませんか??
56デフォルトの名無しさん:2005/12/01(木) 21:29:27
>>55
じゃあ何を使っていいか書いてくれ.
5752:2005/12/01(木) 21:32:18
>>51 >>54

>ただし、
>scanf("%d%d%d", &a, &b, &c);
>で入力したa, b, cをa>=b>=cの関係で並び替る必要があると思うけど?
取り消します。OKです。

58デフォルトの名無しさん:2005/12/01(木) 21:33:40
>>55
再帰か?
gcdは関数につけただけの名前だからいいんでないの?
59デフォルトの名無しさん:2005/12/01(木) 21:37:07
前スレ1000がばいそんorz
6050:2005/12/01(木) 21:38:41
一応いっときます
>>55は別の人です
>>51さん改めてありがとうございました
61デフォルトの名無しさん:2005/12/01(木) 21:52:10
49番のでできました!
ありがとうございます!!
62デフォルトの名無しさん:2005/12/01(木) 22:02:55
最初からトリップを付けていれば間違いない。
63デフォルトの名無しさん:2005/12/01(木) 23:04:19
[1] 授業単元: プログラミング応用
[2] 問題文(含コード&リンク): 10×10の2次元配列に、平面のビットパターンが入っているとする。
(0と1の整数が入っているとする)左右反転、上下反転して出力しなさい。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 明日の朝9時まで
[5] その他の制限: 特にありません。

すいませんが、よろしくお願いしますm(_ _)m
64デフォルトの名無しさん:2005/12/01(木) 23:17:53
>>63
超適当。多分どっか間違ってるがキニスンナ

#define swap(a,b) {int t=a;a=b;b=t;}

int main()
{
    int array[10][10] = {0};//array[height][width];
    int i,j;
    //左右反転
    for(i=0;i<10;++i)
    {
        for(j=0;j<5;++j)
        {
            swap(array[i][j],array[i][9-j]);
        }
    }

    //上下反転
    for(i=0;i<10;++i)
    {
        for(j=0;j<5;++j)
        {
            swap(array[j][i],array[9-j][i]);
        }
    }

    return 0;
}

65デフォルトの名無しさん:2005/12/01(木) 23:27:12
>>55 できますよ。VC7で動作確認しました。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
  int n = atoi(argv[1]), m = atoi(argv[2]);
  char a[64], b[64];
  if( n != 0 && m != 0 ){
    int tmp = n % m;
    if( tmp == 0 ) n = m; else {n = m; m = tmp;}
    if( n != m ){
      sprintf(a, "%d", n); sprintf(b, "%d", m);
      argv[1] = a; argv[2] = b;
      main(argc, argv);
    }
    else if( argc > 3 ) {
      sprintf(a, "%d", n);
      argv[1] = argv[argc-1]; argv[2] = a;
      main(argc-1, argv);
    }
    else goto END;
  }
  else goto END;
  return 0;
END:
  printf("ans = %d\n", n);
  return 0;
}
6663 ◆.6Hqkk7dyk :2005/12/02(金) 00:24:31
>>64
すいません、超初心者なのでよく分からず…_| ̄|○
とりあえず、自分なりに分解してこんな感じにしてみたんですが…
#include<stdio.h>
int main(void) {
  int array[4][4] = {{0,1,0,1},{1,0,1,0},{0,0,0,0},{1,1,1,1}};//array[height][width];
int i,j,t;
for(i = 0; i < 4; i++){
for(j = 0; j < 4; j++){printf("%d",array[i][j]);}
printf("\n");}
printf("左右反転 \n");
for(i=0;i<4;++i) { for(j=0;j<2;++j)
{t = array[i][j];
array[i][j] = array[i][3-j];
array[i][3-j] = t;
printf("%d%d",array[i][j],array[i][3-j]); } printf("\n");}
printf("\n");
printf("上下反転\n");
for(i=0;i<4;++i) { for(j=0;j<2;++j)
{t = array[j][i];
array[j][i] = array[3-j][i];
array[3-j][i] = t;
printf("%d%d",array[j][i],array[i][3-j]);}
printf("\n");}
return 0; }
なんかうまく表示されず…_| ̄|○ 誰か教えてください…。
6763 ◆.6Hqkk7dyk :2005/12/02(金) 00:25:38
すいません、10×10は多すぎて打つのえんどくさかったんで、
上のプログラムでは4×4でやっています。
分かりづらくて本当に申し訳ないです_| ̄|○
68デフォルトの名無しさん:2005/12/02(金) 00:47:19
>>66 左右反転+上下反転は、180度の回転だよな?
#include <stdio.h>
void print_bitpat(int *a, int height, int width){
  int i;
  for(i = 0; i < height * width; ++i){
    printf("%d ",a[i]);
    if(i % width == width - 1) printf("\n");
  }
  printf("\n");
}

#define WIDTH 4
#define HEIGHT 4
int main()
{
  int a[HEIGHT][WIDTH] = {{0,1,0,1},{1,0,1,0},{0,0,0,0},{1,1,1,1}};
  int *p = &a[0][0], *q = &a[HEIGHT-1][WIDTH-1];
  print_bitpat((int*)a, HEIGHT, WIDTH);
  while( p < q )
  {
    if( *p != *q ) { *p = ! *p; *q = ! *q;}
    p++; q--;
  }
  print_bitpat((int*)a, HEIGHT, WIDTH);
  return 0;
}
6968:2005/12/02(金) 00:49:06
あ、合成しちゃいかんのか。
7063 ◆.6Hqkk7dyk :2005/12/02(金) 00:56:02
>>69
親切にありがとうございます。
でも、>>69さんの言うとおり合成はダメなのです・゚・(ノД`)・゚・
教えてもらったのにすいません…。
71int:2005/12/02(金) 01:47:06
[1] 授業単元:プログラミング基礎
[2] 問題文:銀行にお金を預けると毎年利子がつきます。今年ついた利子も
      そのままにしておくと来年も利子がつきます。
      元金をm、利率(利子の割合)をrとします。一年後の利子は
      mrなので合計はm(1+r)となります。
      二年後の利子はmr(1+r)となります。合計はm×(1+r)の二乗。
      
      しかし実際には毎年利子の1円以下の端数を処理しますのでこ
      の数式にはなりません。
      そこで、元金、利率と年数を入力してもらい1年後〜N年後の利子、
      合計の表を作成するプログラムをつくりなさい。ただし、元金
      は整数型(int)、利率は浮動小数点型(double)とし、利息の計算
      のとき出てくる端数は小数点第1位で四捨五入するものとする。

 例:元金100000,利率0.009とすると
        利子    合計
  1年後   900 100900
  2年後 908 101808
  3年後 916 102724

[3] 環境
 [3.1] OS:Windows
 [3.3] 言語: C
[4] 期限: 2005年12月2日10:00まで
72int:2005/12/02(金) 02:01:47
[1] 授業単元:プログラミング基礎
[2] 問題文:銀行にお金を預けると毎年利子がつきます。今年ついた利子
      もそのままにしておくと、来年には利子にも利子がつきます
 
      元金(預けているお金)、利率と年数を入力してもらい、1年
      後〜N年後の利子、合計の表を作成するプログラムを作成しな
      さい。ただし、元金は整数型(int)、利率は浮動小数点型(dou
ble)とし、利息の計算のときに出てくる端数は、小数点第一位
      で四捨五入するものとする。

 例:元金100000、利率0.009
        利子  合計
   1年後  900 100900
2年後 908 101808
3年後 916 102724
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C
[4] 期限: 2005年12月2日10:00まで
73デフォルトの名無しさん:2005/12/02(金) 02:03:43
>>71 いろんな所は自分で補完しなさい。
#include <stdio.h>
#define N 5
int main(void)
{
double r = 0.009;
int m = 100000, rishi;
int i;
for( i = 0 ; i < N ; i++ ) {
rishi = m * r + 0.5; // rishi = (int)round(m * r); するなら#include <math.h>
m += rishi;
printf("%d年後 %d %d\n", i + 1, rishi, m);
}
return 0;
}
74int:2005/12/02(金) 02:05:46
先生が途中までプログラムを見せてくれましたが分かりませんでした。
一応載せておきます。皆様お願いいたしますm(_ _)m
#include<stdio.h>

int main(void)
{
int printipal, interest, total, year, i;
double rate;

printf("元金");scanf("%d,&principal);
printf("利率");scanf("%if,&rate);
printf("年数");scanf("%d,&year);
printf(" 利子   合計\n");
total = principal
75デフォルトの名無しさん:2005/12/02(金) 02:09:49
;
for( i = 0 ; i < year ; i++ ) {
interest = total * rate + 0.5;
total += interest;
printf("%d年後 %d %d\n", i + 1, interest, total);
}
return 0;
}
76デフォルトの名無しさん:2005/12/02(金) 02:58:24
>>63
http://ccfa.info/cgi-bin/up/src/up20636.txt

理解できる事を最優先に書いた
その代わり多々犠牲にしてる事があるので
出来れば自分が習った範囲で改良してみるべき
77デフォルトの名無しさん:2005/12/02(金) 10:25:41
>>24
実行してみたところ、ちゃんとコンパイルできました。
ありがとうございます。
非常に難解な問題で自力ではさっぱりわからなかったので、
助かりました。
ちゃんと自分でも理解してプログラムが書けるよう、もっと努力しようと思いました。
7810:2005/12/02(金) 10:36:53
すいません、77は僕です。名前入れ忘れてました。

>>33
そんなに酷いんですか…。
まぁわかりにくいとは思っていましたが。
軽く脳天ぶった切られるくらいショックですね。
79デフォルトの名無しさん:2005/12/02(金) 10:50:20
次の4点
(0,0),(1,0),(1,1),(0,1)
を順に通る3次のSPLINE曲線とそのグラフを描くプログラムを誰か作ってください。
始点と終点の接線の方向はそれぞれ(1,1)と(-1,0)です。お願いしまつ
80デフォルトの名無しさん:2005/12/02(金) 10:51:10
>>1(ry
8163 ◆.6Hqkk7dyk :2005/12/02(金) 10:51:49
>>76
ありがとうございます!
結局左右反転しか分からず提出して、
76さんの書き込みに今気付きますた_| ̄|○
このプログラム見ながら考えてみます!
親切にありがとうございました!
8224:2005/12/02(金) 11:00:54
>>10
少なくとも今回の課題のページには、大いに修正する必要がある、と伝えてくれ。
正直これじゃ本来学ぶべきところとは違うところを悩む可能性高い。
それも勉強といえば勉強だが。
83>23=>25:2005/12/02(金) 11:16:52
>>10
折り見てきちんとした本か資料をあたって用語だけでも勉強しなおすことを勧める。
社会に出て現場で困ることになりそうだ。
84デフォルトの名無しさん:2005/12/02(金) 11:21:39
>>80
そういうレス止めないか?

>気に入らない質問やその他や発言はスルーの方向で。
>【質問者へ】
>回答者の便宜のため、質問の際は以下を行うことを推奨します。
85デフォルトの名無しさん:2005/12/02(金) 11:27:20
自治厨乙。

というのは冗談だが、
ここに来ているのは困っている人間だとは思うが、
>>1もろくに読まずに質問 → スルー → ショボーン、って可哀想じゃないか?

で、>>79を回答してやろうと思ったのだが、
SPLINEの計算はできると思うが、グラフを表示する手段が不確定なんでスルーだなwww
86デフォルトの名無しさん:2005/12/02(金) 11:36:21
俺は可哀想だとは思わんが、そういう立場もありだと思う。
87デフォルトの名無しさん:2005/12/02(金) 11:47:27
>>85
「〜が」オオスギテラワロス
88デフォルトの名無しさん:2005/12/02(金) 12:12:42
>>85
止めはしないが、1も読めない奴は回答をもらえたかチェックするの
もままらない気がする。せっかく解答しても無視されるのがオチ。
89デフォルトの名無しさん:2005/12/02(金) 12:13:11
>>2の者ですが。pgm形式ならできるでしょうか?
お返事よろしくお願いします。
90デフォルトの名無しさん:2005/12/02(金) 12:13:48
>>2の者ですが。pgm形式ならできるでしょうか?
お返事よろしくお願いします。
91デフォルトの名無しさん:2005/12/02(金) 12:17:13
(>>1の)諸注意も読まずしてくるのは、現実でもいい加減な依頼・申請を
しているんだろうと思われるのでどうしようもない。
こっちでできるのは>>1に沿った方法で再度依頼するようお願いするだけ。

興味がわけばテンプレに沿ってないのでも回答するかもしれないが
(こっそりと)これだけは言っておきたい。
・stdio.h stdlib.h ctype.h string.h math.h time.h(C言語)ほか
何をincludeするのか初めから全部挙げれ。
わけわからんに対して***.h(学部で独自作成)とかwindows.hとか
includeする必要があったりする

・ソースは全部挙げれ。
問題の切り分けができるのならともかく、切り分けができてないのに
対して大抵別ファイルで宣言したものと整合性がとれてないものが多い。

・入力・出力をどうしたいのかはっきりすれ
1つ入力ごとにEnter押すのか、複数を空白区切りで一括入力するのか
直接入力かコマンド入力かリダイレクトかファイル入力なのかその他なのか
出力も1行に1項目か複数項目か、タブ・空白・コンマ区切りなのか、ラベルいるのか
実際にどう入力してどう出力したいのか説明がほしい。

・Cなのに // なコメント付けないでください
92デフォルトの名無しさん:2005/12/02(金) 12:27:18
>>90 あいわかった。
93デフォルトの名無しさん:2005/12/02(金) 12:29:58
>>90
pgm=portable graymap
94デフォルトの名無しさん:2005/12/02(金) 12:38:52
>>91
C99では//コメント使えるんだし、それくらいは目くじら立てんでも。

>>90
>93も書いているが、グレイ画像でどうやってRGBそれぞれの平均を取れと?
#ぶっちゃけ、全部一緒とも言えるがw
95デフォルトの名無しさん:2005/12/02(金) 12:51:23
>>91
天さんの頭ぐらい禿しく同意。
>>94
厳密には、RGB→GRAYの変換式は単純な平均ではないがな。
9692:2005/12/02(金) 13:14:05
あー、なんだこりゃ?pnm形式として間違ってるのか?

手空いてる人、ヘルプ。
-----------------------------(test.ppm)
P3
4 4 15
0 0 0 0 0 0 0 0 0 15 0 15
0 0 0 0 15 7 0 0 0 0 0 0
0 0 0 0 0 0 0 15 7 0 0 0
15 0 15 0 0 0 0 0 0 0 0 0
15 0 15 0 0 0 0 0 0 0 0 0
------------------------------------------
なんか問題あるか?susie+pluginでで「内部エラー」って出る。
9792:2005/12/02(金) 13:20:33
すまん... GVで試したら見れた。今うpする。
98デフォルトの名無しさん:2005/12/02(金) 13:23:57
>>96
4x5あるような気がするが、それ以外は(pnmとしては)問題なさそうに見える。
問題は、SusiePlugInが深度15をサポートしているかどうかだ。
9992:2005/12/02(金) 13:24:48
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1185.txt

実行ファイル名 入力.ppm 出力.pgm

途中でtemp_aというのが作られるが気にするな。
ppmファイルの場合どこにコメントの#が入るか未確定なので、一度#の無いデータを生成している。
10092:2005/12/02(金) 13:29:18
>>98

どうみても4×5です、
本当にありがとうございました、ってええええ(涙)
しかも直してもやっぱり見れないし...

んー、あとはBSD上のビューアで見れるかどうかが瀬戸際です。
101デフォルトの名無しさん:2005/12/02(金) 13:31:46
>>99
えーと、そもそも>2が回答しないのがいけないわけだが、
画素ごとにRGBの平均を取っている気がするのだが。
漏れが読む限り、RGB各プレーンごとに画像全体の濃度値の平均を出すと言う設問なんジャマイカ。
10292:2005/12/02(金) 13:37:14
>>101
俺も悩んだんですよ、その問題。

>>2
画像一画素あたりのRGB(それぞれ)の平均の値を数値で取得するプログラムを書け。

1画素あたりの平均の値を取得するプログラム、としてみた。
そうでないと、「一画素あたりの」という単語の必要性がなくなるので。

やっぱり>>2の日本語力の問題に帰着するわけだが(笑)
103デフォルトの名無しさん:2005/12/02(金) 13:38:17
>>98
IrfanViewなら4x4で見えたよ。
#これだからSusieは……
104デフォルトの名無しさん:2005/12/02(金) 13:39:23
ハァ?
10592:2005/12/02(金) 13:40:26
>>98さん、>>103さん、ありがとうございます。
それでは多分大丈夫ってーことで。
106デフォルトの名無しさん:2005/12/02(金) 14:35:54
>>91
狂おしいほどに同意だが
残念なことに依頼者の中には
言語についても環境についても知識が皆無、というものもいる
そういう人達はどっからどこまでを提示すればいいのかすら判断できないんだよな

そういう場合はなるべく優しく誘導してあげましょう
このスレは、70%の時間つぶしと30%の良心でできてるのだから
107デフォルトの名無しさん:2005/12/02(金) 16:13:31
それをちゃんと判断できる人はこんなところで質問しない
108デフォルトの名無しさん:2005/12/02(金) 17:13:45
このスレに良心なんて30%もない
109デフォルトの名無しさん:2005/12/02(金) 17:22:25
borland c++ 使ってます。
問題が解けなくて困ってます助けてください。

問題:
毎回違う長さの文字列を取得しながら、それを","で区切って
それぞれ新しい変数を作りながら代入しなさい。

1) abcdef, gh, i, j, klm  (5個)
2) 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日, 日曜日 (定数7個)
3) 10, 100, 1000, 10000 (4個)

自分では、分解式は下記だと思ったんですがうまくいきませんorz
「'char *' 型は 'char' 型に変換できない」とでますし、何か根本で間違ってる気も・・・


char *p, *str, InStrPtr[50]="" ;

int i =0;
while (( p = strtok(str, ",")) != NULL) {
  InStrPtr[i] = p ;
  str = NULL;
  it++;
}
110913:2005/12/02(金) 17:24:27
キーボードから入力された5つの整数を配列の中に保存し、それを表示するプログラムを作れ.
以前この質問で、
#include <stdio.h>

main()
{
int ss[5];
int i;

printf("5つの整数を入力しなさい\n");
for (i=0 ; i<5 ; i++)
{
scanf("%d", &ss[i]);
}
for (i=0 ; i<5 ; i++)
{
printf("%d\n", ss[i]);
}
}
のような回答を頂いたのですが、どなたか詳しい解説をしていただけないでしょうか
111デフォルトの名無しさん:2005/12/02(金) 17:31:05
最初のforループでint型整数5こ読み込んで
次のforループで出力してるだけ
112デフォルトの名無しさん:2005/12/02(金) 17:34:42
>>110
#include <stdio.h>

main()
{
int ss[5]; ←5つの配列を宣言
int i; ←整数型の変数を定義

printf("5つの整数を入力しなさい\n");
for (i=0 ; i<5 ; i++) ←添え字を0〜4まで一個ずつ増やしながらループ
{
scanf("%d", &ss[i]); ←添え字に対応したものをスキャン
}
for (i=0 ; i<5 ; i++) ←これも同じく添え字を増やしながらループ
{
printf("%d\n", ss[i]); ←0〜4までの5つの配列にはいている整数を表示
}
}
113デフォルトの名無しさん:2005/12/02(金) 17:39:50
>>109
char *p;
char str[] = "abcdef, gh, i, j, klm";
char *InStrPtr[50];

int i = 0;
p = strtok(str, ", ");
while (p != NULL) {
    InStrPtr[i] = p;
    i++;
    p = strtok(0, ",")
}
int n = i;
for (int i = 0; i < n; i++)
{
    puts(InStrPtr[i]);
}
114デフォルトの名無しさん:2005/12/02(金) 17:47:18
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):構造体 struct point2d を2つ引数にとり、 2点間の距離を求める関数 len() および、
構造体 struct rectangle を1つ引数にとり、 2点を頂点とする四角形の面積を求める関数 square() を作成しなさい。
また、これらの関数を用いて、長方形の面積と対角線の長さを求めるプログラムを作成しなさい。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語: C
[4] 期限: 2005年12月5日まで
[5] その他の制限: 特になし

初心者です。よろしくお願いします。
115デフォルトの名無しさん:2005/12/02(金) 17:51:56
>>114
構造体の定義は自分でやっても大丈夫?
先生から指示あったんじゃないの?
116デフォルトの名無しさん:2005/12/02(金) 17:52:18
へ?構造体の中身は?
117デフォルトの名無しさん:2005/12/02(金) 17:56:18
すいません貼りつけるの忘れてました。
double len( struct point2d, struct point2d );
double square( struct rectangle );
118114:2005/12/02(金) 17:57:54
すみません、構造体書き忘れました。point2dは極座標であらわします。
struct point2d{
double r;
double c;
};

struct rectangle{
struct point2d a;
struct point2d b;
};

よろしくお願いします。
119デフォルトの名無しさん:2005/12/02(金) 17:59:05
lenの引数の構造体の中身はx、y座標が入ってるのかなって思うが
squeareの引数の構造体の中身なに?
120デフォルトの名無しさん:2005/12/02(金) 17:59:44
あっ既に書いてあった
121デフォルトの名無しさん:2005/12/02(金) 18:08:17
>>114
> [3.1] OS:Linux
> [3.2] コンパイラ名とバージョン:VC 6.0
ここは誰も突っ込まないのか?
122デフォルトの名無しさん:2005/12/02(金) 18:10:48
>>121
その欄ちゃんと見て解答してる奴いるのか?w
123デフォルトの名無しさん:2005/12/02(金) 18:12:23
極座標わからんから投げる┐(´ー`)┌
124ieko:2005/12/02(金) 18:13:51
[1] バイオプログラミング2
[2] 動的計画法による配列のアラインメントの作成
雛形があるので、alignment関数とtraceback関数をうめれば、完成するのですが、文字配列に加えるところ等不明な点が多く、完成に至ってません。 特にtraceback関数が難しいのでお願いしたいのですが、、
擬似コードは以下のようになってます。

void traceback(char x[] , char y[], int i, int j) {
if(i==0 && j==0){ res_xとres_yを空文字行列にする}
else if(trace[i][j]=="M"){
traceback(i-1,j-1);
res_xにx[i]を加える。
res_yにy[j]を加える。 }
else if(trace[i][j]=="IX"){
traceback(i-1,j);
res_xにx[i]を加える。
res_yに"-"を加える。 }
else if(trace[i][j]=="IY"){
res_xに"-"を加える。
res_yにy[j]を加える。}}

ちなみに、res_x,res_yのデータ型は
char res_x[MAX_SEQ*2];/* alignment result of x */
char res_y[MAX_SEQ*2];/* alignment result of y */
となっています。 この部分だけだとものすごい断片的なので、説明を加えてほしいところがあれば、いってください。
お願いします!
[3] [3.1] OS:Windows  [3.3] 言語: C
[4] 期限: ([2005年12月5日13:00まで])
125デフォルトの名無しさん:2005/12/02(金) 18:20:29
初期化はres_x[0]='\0'; もしくはmemset(res_x,0,MAX_SEQ*2);
res_xにx[i]を加えるときは、strcat();で後ろに連結。
文字列を比較するとき(trace[i][j]=="IX")をするときは、strcmp()

と、こんだけヒントあっても無理そう?
126デフォルトの名無しさん:2005/12/02(金) 18:21:40
>>114
#include <math.h>

double len(struct point2d a, struct point2d b)
{
double dr;
dr = (a.r > b.r) ? a.r - b.r : b.r - a.r;
return sqrt(a*a + b*b - 2*a*b*cos(dr));
}

片方だけだが。確かa^2 + b^2 - 2abCos(Δr)のルートで距離が出たような
記憶に頼って作ったから間違ってたらしらなす

それと右辺値として3項演算子って使っても良かったっけ?
127デフォルトの名無しさん:2005/12/02(金) 18:23:37
>>126に訂正
returnのa,bをそれぞれ a.c, b.cに変えてくれ
つーか、rが角度(radian)、cが長さであってるよな?

それと脳内gcc -Wall -ansiなので違っててもシラネ
128デフォルトの名無しさん:2005/12/02(金) 18:24:08
とりあえず、解る範囲でやってみた。
void traceback(char x[] , char y[], int i, int j) {
if(i==0 && j==0){
memset(res_x,0,sizeof(res_x));
memset(res_y,0,sizeof(res_y));
}else if(strcmp(trace[i][j],"M")==0){
traceback(i-1,j-1);
strcat(res_x,x[i]);
strcat(res_y,y[j]);
}else if(strcmp(trace[i][j],"IX")==0){
traceback(i-1,j);
strcat(res_x,x[i]);
strcat(res_y,"-");
}else if(strcmp(trace[i][j],"IY")==0){
strcat(res_x,"-");
strcat(res_y,y[j]);
}
}
129ieko:2005/12/02(金) 18:26:35
>>125
ありがとうございます。
この場合のx[i]は特殊で、x[i]が一文字なのでstrcmpを使わずに、代入する形でもいけるともいわれてるのですが、その場合はどうすればいいでしょうか。
130デフォルトの名無しさん:2005/12/02(金) 18:29:41
>>129
うはwww間違えてたwww 文字の連結じゃねーかwww
ふむ... でも文字列の末端を認識する必要があるのがなぁ...
res_x[strlen(res_x)+1]=x[i];
に変えてくれwww
131デフォルトの名無しさん:2005/12/02(金) 18:32:59
あ、res_xはglobal変数……よね。

void traceback(char x[] , char y[], int i, int j) {
if(i==0 && j==0){
memset(res_x,0,sizeof(res_x));
memset(res_y,0,sizeof(res_y));
}else if(strcmp(trace[i][j],"M")==0){
traceback(i-1,j-1);
res_x[strlen(res_x)+1]=x[i];
res_y[strlen(res_y)+1]=y[j];
}else if(strcmp(trace[i][j],"IX")==0){
traceback(i-1,j);
res_x[strlen(res_x)+1]=x[i];
res_y[strlen(res_y)+1]='-';
}else if(strcmp(trace[i][j],"IY")==0){
res_x[strlen(res_x)+1]='-';
res_y[strlen(res_y)+1]=y[j];
}
}
132ieko:2005/12/02(金) 18:36:48
>>128
>>130
>>131

ありがとうございます!
非常に参考になります!
133131:2005/12/02(金) 18:37:42
あ、実行する前に
traceback(x,y,0,0);
でres_xとres_yを初期化してくれ。xとyの代わりにNULLでもいけるかもしれないが。
これはres_xとres_yがNULL文字(0x00)で初期化されている前提で作っているので。
134131:2005/12/02(金) 18:41:19
動作するかどうかわからないが、スマートにするとこんな感じ?

void traceback(char x[] , char y[], int i, int j) {
static char *x_end,*y_end;
if(i==0 && j==0){
memset(res_x,0,sizeof(res_x));
memset(res_y,0,sizeof(res_y));
x_end=res_x;
y_end=res_y;
}else if(strcmp(trace[i][j],"M")==0){
traceback(i-1,j-1);
res_x[x_end++]=x[i];
res_y[y_end++]=y[j];
}else if(strcmp(trace[i][j],"IX")==0){
traceback(i-1,j);
res_x[x_end++]=x[i];
res_y[y_end++]='-';
}else if(strcmp(trace[i][j],"IY")==0){
res_x[x_end++]='-';
res_y[y_end++]=y[j];
}
}
あと、IYの時はtraceback(i,j-1)いらないの?
135131:2005/12/02(金) 18:46:58
orz もう俺だめ、引退したほうがいいな...

res_x[x_end++] → *(x_end++)
res_y[y_end++] → *(y_end++)
136ieko:2005/12/02(金) 18:48:02
>>131
ありがとうございます。
試してみます。
IXが↑,IYが←をあらわしているんですが、このtracebackだと、いらないみたいです。
137デフォルトの名無しさん:2005/12/02(金) 18:54:34
>>114
double len(struct point2d po1,struct point2d po2){
double x1[2],x2[2];
x1[0]=po1.r; x2[0]=po2.r;
x1[1]=po1.c; x2[1]=po2.c;
zahyou(x1);
zahyou(x2);
return pow((pow(x1[0]-x2[0],2)+pow(x1[1]-x2[1],2)),0.5);
}
double square(struct rectangle rec){
double x1[2],x2[2];
x1[0]=rec.a.r; x2[0]=rec.b.r;
x1[1]=rec.a.c; x2[1]=rec.b.c;
zahyou(x1);
zahyou(x2);
x1[0]=fabs(x1[0]-x2[0]);
x1[1]=fabs(x1[1]-x2[1]);
return(x1[0]*x1[1]);
}
void zahyou(double *x){
double s,c;
s=x[0]*sin(x[1]);
c=x[0]*cos(x[1]);
x[0]=s; x[1]=c;
}
間違っててもシラネ
138デフォルトの名無しさん:2005/12/02(金) 19:39:48
>>114
自分も投入 
間違っててもシラネ
#include <math.h>
double len(struct point2d p0,struct point2d p1){
double a,b;

a = p0.r * p0.r + p1.r * p1.r;
b = 2 * p0.r * p1.r * (sin(p0.c)*sin(p1.c)+cos(p0.c)*cos(p1.c));
return sqrt(a - b);
}
間違っててもシラネ
139118:2005/12/02(金) 19:44:19
俺の良心がチクチク痛むのは、仕様ですか……正直、すまんかった。
140デフォルトの名無しさん:2005/12/02(金) 19:46:38
うはwwwwwww目欄に偽者って書いてあったwwwwwwwwwww
141デフォルトの名無しさん:2005/12/02(金) 19:48:12
ちょwwwwww待てwwwwwwwwwww
ってことは極座標ってのもwwwwwwwwwwwうえwwうえwww
142109:2005/12/02(金) 19:56:52
>>113さんありがとうございます。

char str[] には、 文字列の1)2)3)...x) のどれを入れるか
決まってない(ランダム)な場合の処理はどうしたらよいのでしょうか。

例えば、
3)を代入した File2Str という変数があった場合に、

strcpy(str, File2Str); 
 や
str[] = File2Str;

 としても、「'char *' 型は 'char[]' 型に変換できない」や
「左辺値が必要」とエラーが出てしまいます。


>>113さんの場合でも、[ InStrPtr[i] = p; ] の箇所で、
「'char *' 型は 'char[]' 型に変換できない」というエラーがでます。うーん・・・
143デフォルトの名無しさん:2005/12/02(金) 20:13:14
そりゃ InStrPtr[i] = p; は無理だろ
InStrPtr[i] = *p; にしないと

結局どうゆうことなん?
月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日, 日曜日 ←こうゆう文字列を入力すると
月曜〜日曜まで別々の配列に入れて欲しくてかつ入れる文字列に制限はなくして欲しいてこと?
それともMAXは最初から決めちゃっていいの?
その授業での制限は?
問題はできれば>>1に従って書いて欲しい
144デフォルトの名無しさん:2005/12/02(金) 20:20:34
int i;
char *p;
char str[] = "abcdef, gh, i, j, klm";
char **InStrPtr;
InStrPtr=(char**)malloc(sizeof(char*)*N);
i=0;
p = strtok(str, ", ");
while (p != NULL) {
InStrPtr[i] = (char*)malloc(sizeof(char)*strlen(p)+1);
strcpy(InStrPtr[i],p);
i++;
p = strtok(0, ",")
}
int n = i;
for (int i = 0; i < n; i++)
{
puts(InStrPtr[i]);
}
脳内コンパール
145デフォルトの名無しさん:2005/12/02(金) 20:44:32
よろしくお願いします。

[1] 授業単元:プログラミングII

[2] 問題文(含コード&リンク):
日本人の5歳男児について身長の区間を入力すると全体に占めるその区間の割合を%表示するプログラムを作成せよ。
ただし、身長の確率密度分布は↓
関数 f(x) = (1e/√2π*σ)^-(((x-u)^2)/2σ)^2
(パラメータ u:平均値(110.9cm) σ:標準偏差(4.7) e:自然対数の底(≒2.718))
で与えられているものとする

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C++
[4] 期限: 2005年12月6日10:00まで
[5] その他の制限:
・sqrtを用いること。
・πは3.141592を使うこと。
・自然対数のべき乗 e^a は、 exp を用いること。
146109:2005/12/02(金) 20:50:11
[1] 授業単元:プログラム実習(後期)
[2] 問題文(含コード&リンク):
毎回違う長さの文字列を取得しながら、それを","で区切って
それぞれ新しい変数を作りながら代入しなさい。
1) abcdef, gh, i, j, klm  (5個)
2) 月曜日, 火曜日, 水曜日, 木曜日, 金曜日, 土曜日, 日曜日 (定数7個)
3) 10, 100, 1000, 10000 (4個)
4) 〜10) 傘=1000,カッパ=1500,ウインドブレイカ=2500,なし=0

別々の配列に入れて入れる文字列に制限はありません。
どれを入れても良いようにしなければなりません。毎回違います。

[3] 環境
 [3.1] OS: Windows
 [3.2] bcc551
 [3.3] 言語: C++
[4] 期限: 2005年12月17日07:20まで]
[5] その他の制限:
 if,switch,while,関数 と たぶんポインタのさわりくらいと思います。
 図書館から借りてきた本中に書かれてある二次元配列とか、まだやってません。
147名無し:2005/12/02(金) 20:52:21
[1] 授業単元:二分探索法
[2] 問題文:
<入力>三次方程式f(x)=Ax**3+Bx**2+Cx+D=0の係数4字組み[A,B,C,D]と指定した三次式においてf(a)f(b)が負となる区間[a,b]
<操作>二分探索法で解が存在することが保証された区間を半分にし、区間の幅が10のマイナス6乗より小さくなったら解とする。
<出力>与えられた三次方程式の区間[a,b]に於ける解の近似値。
<説明>連続関数f(x)の方程式f(x)=0を解く。f(a)f(b),(a<b)が負であることが前もってわかっていると仮定すると区間[a,b]に解が少なくとも一つ存在する。
区間[a,b]を二つの区間[a,(a+b)/2]と区間[(a+b)/2,b]に分ける。仮定からf(a)とf(b)の符号(+か-)は異なる(掛けると負より)。
f((a+b)/2)の符号とf(a)かf(b)の符号のどちらかは異なる。符合の異なる方の区間の中に少なくとも一つ解が存在する。このようにして二分探索法を使って区間を小さくしてゆく。
中間点が偶然0になればその値が解、また区間の幅が10のマイナス6乗より小さくなれば、その区間の中の点の値に対してその最下位の桁を四捨五入して解とする。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:[2005年12月7日9:00まで]
[5] その他の制限:特になかったです。
よろしくお願いします。
148デフォルトの名無しさん:2005/12/02(金) 21:00:48
>>145
f が確率密度になってない.括弧の対応に注意して式を書きなおし.
149デフォルトの名無しさん:2005/12/02(金) 21:19:58
>>147
#include <stdio.h>
#include <math.h>
#define EPS 1e-6
double A, B, C, D;
double f(double x) { return A*x*x*x+B*x*x+C*x+D; }
int main() {
  double a, b, c;
  scanf("%lf %lf %lf %lf", &A, &B, &C, &D);
  scanf("%lf %lf", &a, &b); // assume a < b and f(a) f(b) < 0.
  for (; c = (a+b)/2, f(c) != 0 && fabs(a-b) > EPS; 
      f(a)*f(c) < 0 ? b = c : a = c);
  printf("%.6lf\n", c);
}
150145:2005/12/02(金) 22:09:50
申し訳ありませんでした。
自信が無いので、画像にして表記します。

ttp://u.skr.jp/128/files/28218.png
151デフォルトの名無しさん:2005/12/02(金) 22:18:03
【質問テンプレ】
[1] 授業単元: コンピュータ基礎
[2] 問題文:問題1 2桁の数を入力する関数
2桁の数を入力する関数(もし、2桁以外の整数を入力したら
再入力となる)を作成し、main関数では得られた2桁の値の
1の位と10の位の値を掛け算した値を表示するプログラム

      問題2 配列を逆順に格納する関数
要素数がnoであるint型の配列v2の並びを逆順にしたものを
配列v1に格納する関数
void intary_rcpy(int v1[],const int v2[],int no)
を作成せよ。        
      
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月4日20時
[5] その他の制限: 関数を使い、動作を確認するための適切なmain関数も作成する
15279:2005/12/02(金) 22:21:21
[1] 授業単元:生産工学
[2] 問題文(含コード&リンク):
次の4点
(0,0),(1,0),(1,1),(0,1)
を順に通る3次のSPLINE曲線とそのグラフを描くプログラムを作成せよ。
始点と終点の接線の方向はそれぞれ(1,1)と(-1,0)とする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラは何でもいいっていわれました
 [3.3] 言語: C
[4] 期限: 2005年12月10日まで
[5] その他の制限: プログラムリストとそれによってできたグラフを印刷して提出といわれますた。
            グラフのソフト等も特に制限はないそうです。

先ほどは大変失礼しました。よろしくお願いします。
153デフォルトの名無しさん:2005/12/02(金) 22:37:25
>>152
tsvかcsvに出力して、それをExcelで読み込んでグラフに出すんでもいいのかな。
154デフォルトの名無しさん:2005/12/02(金) 22:40:06
>>153 指定無いんだから良いんじゃね?俺なら適当に吐いてgnuplotだけど
155デフォルトの名無しさん:2005/12/02(金) 22:43:06
>>150 f を数値積分.結果はちゃんとチェックしてないので適当に検証しといて.
#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.141592;
double f(double x) {
  const double u = 110.9, sigma = 4.7;
  return 1.0/sqrt(2*PI)/sigma * exp(-(x-u)*(x-u)/2/sigma/sigma);
}
double F(double a, double b) { // F = integrate[f, {x, a, b}]
  const double h = 1e-4;
  double S = 0;
  for (double x = a; x <= b; x += h) 
    S += (f(x)+f(x+h))*h/2; // trapezoid integration method:
  return S;
}
int main() {
  double a, b; cin >> a >> b;
  cout << F(a,b) << endl;
}
156155:2005/12/02(金) 22:45:30
>>155 数値積分の for の中の x <= b を x < b に訂正.細かいとこだけど気になるので.
157デフォルトの名無しさん:2005/12/02(金) 23:10:31
質問です。(低能です)
改行は\n
tabは\t
ではスペースは?
158デフォルトの名無しさん:2005/12/02(金) 23:20:22
' '
159デフォルトの名無しさん:2005/12/02(金) 23:32:16
>>158
ホント?
160デフォルトの名無しさん:2005/12/02(金) 23:33:10
>>159
ホント
161145:2005/12/02(金) 23:56:31
>>155
素早い回答どうもありがとうございます。m(_ _)m
162デフォルトの名無しさん:2005/12/03(土) 00:01:39
システムコールの授業で「標準入力からテキストを入力し、空行を取り除いて標準出力に出力するプログラムを書け。ただし、入出力を行うシステムコールを直接使用すること。」っていう課題が出ました。
下のプログラムを改良すればいいらしいのですが…
#include <stdlib.h>
#include <unistd.h>
main(){
charbuf[1024], buf1[1024], *p;
ssize_tlen, len1, len2;
charc, s = '\n',n;
size_ti,j;
while ((len = read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
len1 = 0;
for (i = 0; i < len; i ++) {
c = buf[i];
if (!(s == '\n' && c == '\n')) {
buf1[len1] = c;
len1 ++;}
s = c;
printf("%c",s);}
p = buf1;
while ((len2 = write(STDOUT_FILENO, p, len1)) >= 0 && len1 > len2) {
len1 -= len2;
p += len2;}
if (len2 == -1) {
exit(1);}}
if (len == -1) {
exit(1);}
return 0;}
よろしくお願いします。

163デフォルトの名無しさん:2005/12/03(土) 01:58:23
テンプレがあるのに無視する奴って、どういう頭の構造をしてるのか見てみたいよな。
164デフォルトの名無しさん:2005/12/03(土) 02:03:38
struct atama
{
int baka;
int aho;
int kitigai;
}
16579:2005/12/03(土) 02:27:01
>>153
はい、おそらく大丈夫です。
166デフォルトの名無しさん:2005/12/03(土) 02:51:56
【質問テンプレ】
[1] 授業単元: 計算機科学
[2] 問題文(含コード&リンク):
NxNの正方形状に並んだ点からなる地図があり、各点は陸か水のどちらかを表している。
地図の周囲を海と見なし、海から縦方向または横方向に水を表す点で結合している点を
海を表す点に置き換えるプログラムを作成せよ。

具体的には陸を0、水を1、海を2で表すと左から右に書き換えるようなプログラムです。
1100   2200
0100 ⇒ 0200
0010   0010
0001   0002

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年12月16日
[5] その他の制限: 基本的な命令語、文字列、配列(2次元含む)、関数、ポインタ、構造体まで

自力では2次元配列で地図データを入力したところで躓いてしまいました。
どなたかご教示お願いします。
167デフォルトの名無しさん:2005/12/03(土) 03:02:25
二次元配列でデータ持ってるんだったら
出来たようなものでは?
168デフォルトの名無しさん:2005/12/03(土) 03:03:49
2次元配列からビットマップ作って
描画系APIで塗り潰して再び
2次元配列に戻すとあら不思議
169デフォルトの名無しさん:2005/12/03(土) 06:36:15
>>164
構造体なのに;がないあたりの完成度高めですね。
170デフォルトの名無しさん:2005/12/03(土) 07:04:29
171デフォルトの名無しさん:2005/12/03(土) 07:36:37
>>170
ちょっとNを大きくして市松模様(4アイテム毎の)みたいなパターンにするとスタックオーバーフロー
172デフォルトの名無しさん:2005/12/03(土) 07:54:57
>>171
宿題だから気にしないw
で、Nがどれくらいでスタックオーバーフローがでた?
173デフォルトの名無しさん:2005/12/03(土) 08:05:48
171 じゃないけど全部 1 で埋め尽くされたものに対して N = 256 くらいでスタックオーバーフロー.
174デフォルトの名無しさん:2005/12/03(土) 08:08:25
172だけど全部1で埋め尽くされたものに対してN=100でスタックオーバーフロー(VC)。
175デフォルトの名無しさん:2005/12/03(土) 08:26:50
>>172 そのアルゴリズム的には市松模様じゃなくて
全部 1 で埋まってる時が一番スタックが深くなりそうなので、

for(y = 0; y < N; y++){
for(x = 0; x < N; x++){
map[y][x] = 1;
}
}

のパターンを作って実験。

N = 192 まで OK
N = 193 だと関数から main に戻ってこないw

Windows XP
VC++ 6.0
リンクオプションは特に書かずデフォルトのままです。
176172:2005/12/03(土) 08:29:45
多分、宿題で出すにはクオリティ高すぎになるかもしれないが、
スキャンラインシードフィルアルゴリズムを使ってみるかwww
177デフォルトの名無しさん:2005/12/03(土) 08:31:11
スキャンの進行方向へ行くときはスタックに積まずに戻る
垂直方向へ行く時だけスタックする
関数再帰呼び出しはせずにデータ専用のスタックを用意する

等の対処が必要ですね
178172:2005/12/03(土) 09:28:44
で、やってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1187.txt

N=300では正常動作してるっぽい。N=400でだめっぽいがw
mallocの限界?
179デフォルトの名無しさん:2005/12/03(土) 09:39:31
>>151
#include<stdio.h>
#define vip 3/*要素数*/

void num_input(int *i){
while(1){
scanf("%d%*[^\n]%*c",i);
if(((*i-99)<0)&&((*i-9)>0)) break;
}
}

void intary_rcpy(int v1[],const int v2[],int no){
int i;
for(i=0;i<no;i++) v1[i]=v2[no-i-1];
}

int main(void){
int num,i,v1[vip];
const int v2[vip];
num_input(&num);
printf("問題1:%d,%d\n",num,(num/10)*(num-(num/10)*10));
puts("\n問題2:");
for(i=0;i<vip;i++){
printf("v2[%d]=",i);
scanf("%d%*[^\n]%*c",&v2[i]);
}
intary_rcpy(v1,v2,vip);
for(i=0;i<vip;i++){
printf("v1[%d]=%d\n",i,v1[i]);
}
return 0;
}
180172:2005/12/03(土) 09:42:36
はううう(汗)やばっ、くだらないミスしてた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1188.txt
181デフォルトの名無しさん:2005/12/03(土) 09:59:23
>>172
ローカル変数で
struct point2d{
int x,y;
}stack[N*N];
ってやっぱりスタックが・・・
182デフォルトの名無しさん:2005/12/03(土) 10:07:19
struct point2d{
int x,y;
}stack[N*N];

グローバルに持っていったらN=800でもOKのようです。
ここの部分もmallocで確保してもよさそうです。
183172:2005/12/03(土) 10:13:07
めんどうで手抜きした、正直すまんかった。

あとこのサイズってN*Nが最適値じゃないし、、、まあ動くからいっかw
だれか数学的に求められる人居たらヘルプ。
184デフォルトの名無しさん:2005/12/03(土) 11:04:39
>>172
とりあえずその実装だと N^2 はかなりギリギリで、実際全て 1 の入力に対して N^2 使ってる.

……って,これ実装おかしいだろ.次のスタック積んだ後の for(;cx<=rx && map[my-1][cx]!=src;cx++); は,
どうせスキャンラインで消えるところの読み飛ばしを意図してんじゃないの?

まあそれを訂正した後だとしても,少なくとも N^2/2 は必要( map[y][x] = (y % 2 ? 1 : x % 2); ) .
平均の意味でメモリ使用量をケチるなら,多分連結リストがベター.
185184:2005/12/03(土) 11:06:23
訂正の意味は !=src を ==src にすることね.今の実装だとこの for は全く回らない.
186デフォルトの名無しさん:2005/12/03(土) 11:34:10
大きさを気にするくらいならスタックじゃなくてヒープに配置すりゃいいのに
187デフォルトの名無しさん:2005/12/03(土) 13:05:40
[1] 授業単元: プログラム入門
[2] 問題文(含コード&リンク):次のプログラムを作成せよ。ただし各関数は
指定された書式に従って呼び出されるものとし、それにあわせて関数の戻り値および
引数を設定すること
・半径rの円の円周の長さlおよび面積sを算出する関数circle()を定義し、半径10cmの
円についてそれぞれの値を求める。(πは3.1415926536)
書式:void circle(double r , double *l , double *s)

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月4日昼12時

ようやくポインタを習い始めました・・・。よろしくです。
188デフォルトの名無しさん:2005/12/03(土) 13:14:02
>>187
#define PI 3.1415926535
void circle(double r, double *l, double *s) { *l=(2.0*PI*r);*s=(PI*r*r); }
main() { double l, s; circle(10,&l,&s); printf("%lf %lf\n", l, s); }
189デフォルトの名無しさん:2005/12/03(土) 13:15:01
void circle(double r , double *l , double *s) {
*l=2*r*3.1415926536;
*s=r*r*3.1415926536;
}
int main(){
double r,l,s;
r=10;
circle(r,&l,&s);
printf("%fの円の長さは%f, 面積は%f",r,l,s);
return 0;
}
190デフォルトの名無しさん:2005/12/03(土) 13:15:05
半径rはどうやって得るんだ?
出力はどうなればいいんだ?
191172:2005/12/03(土) 13:19:08
>>185 thx.
for(;cx<=rx && map[my-1][cx]!=src;cx++){printf("#");};
ってやったら、確かに全く意味がなかったですねw
for(;cx<=rx && map[my-1][cx]==src;cx++);
サンクスです。
192187:2005/12/03(土) 13:22:04
rは標準入力から入力し、
標準出力にlとsを出力させていただきたいです
193デフォルトの名無しさん:2005/12/03(土) 13:22:44
[1] 授業単元:プログラミング処理
[2] 問題文(含コード&リンク):ファイルから連立方程式を読み込み、行列の計算を利用して解を求めるプログラムを作成する。
[3] 環境
 [3.1] OS:標準環境はソラリス8
 [3.2] コンパイラ名とバージョン:gcc バージョンは申し訳ないですが判りません。
 [3.3] 言語:C言語です。
[4] 期限:2006年1月11日まで
[5] その他の制限:解はLU分解法とガウスザイデル法でそれぞれ求める。読み込むファイルはax1+bx2+…=y1のa,b…をすべて一行に記入し、スペースで区切る。

二次元配列を動的確保するサブ関数とファイルからstrtok関数などを用いた一行の要素を二次元配列の行要素にそれぞれ格納するサブ関数がわかりません。
よろしくお願いします。
194デフォルトの名無しさん:2005/12/03(土) 13:39:52
195デフォルトの名無しさん:2005/12/03(土) 13:44:37
>>192
>>189のr=10の部分を変えるだけだから頑張れ
196デフォルトの名無しさん:2005/12/03(土) 14:15:54
>>189,195
助かりました。あろがとうございます。
197デフォルトの名無しさん:2005/12/03(土) 15:31:48
[1] 授業単元:
[2] 問題文:
二分検索を使った英文和訳プログラムを作成せよ

問題文は長いので以下にアップしました。
http://www.geocities.jp/ryo_haruka2002/kadai9_mondai.txt

[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:cygwin
[3.3] 言語: /C++
[4] 期限: [2005年12月6日9:00まで]
[5] その他の制限: 書き出しは#include<iostream>から始めてください。
198197:2005/12/03(土) 15:42:05
一応短いですが書いたところまでです。
#include<iostream >
#include<fstream>
using namespace std;

int search_dic(string a[][3],int last,string word){
int first=0,ans=-1;
while(first<=last){
int middle=(first+last)/2;
if(a[middle][0]==word){
ans=middle;
break;}
if(a[middle][0]<word)
first=middle+1;
else
last=middle-1;}
return ans;}
199デフォルトの名無しさん:2005/12/03(土) 15:43:29
異次元配列テラワ
200デフォルトの名無しさん:2005/12/03(土) 16:30:32
>>197
なんちゅうか縛りが多すぎんだよな
その結果出すだけなら簡単なんだが
201151:2005/12/03(土) 16:39:09
【質問テンプレ】
[1] 授業単元: コンピュータ基礎
[2] 問題文:問題1 2桁の数を入力する関数
2桁の数を入力する関数(もし、2桁以外の整数を入力したら
再入力となる)を作成し、main関数では得られた2桁の値の
1の位と10の位の値を掛け算した値を表示するプログラム

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月4日20時
[5] その他の制限: 関数を使い、動作を確認するための適切なmain関数も作成する
202151:2005/12/03(土) 16:40:51
【質問テンプレ】
[1] 授業単元: コンピュータ基礎
[2] 問題文: 問題2 配列を逆順に格納する関数
要素数がnoであるint型の配列v2の並びを逆順にしたものを
配列v1に格納する関数
void intary_rcpy(int v1[],const int v2[],int no)
を作成せよ。        
      
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月4日20時
[5] その他の制限: 関数を使い、動作を確認するための適切なmain関数も作成する

書き方が悪かった模様。
それぞれ別のプログラムとして作ってください。
203デフォルトの名無しさん:2005/12/03(土) 16:56:26
Windowsでgcc。。。ずいぶんハイカラな環境でやってますね。

>>201
int f(int a){
int a10,a1;
if(a<10||99<a)return -1;
a10=a/10;a1=a%10;return a10*1;
}
>>202
void intary_rcpy(int v1[],const int v2[],int no){
int i;
for(i=0;i<no;i++)v1[i]=v2[no-i-1];
}
自分でmainを作ってくれ。
それから「書き方が悪かった模様」なんて他人事みたいにいうのはイク(・д・)ナイ
204デフォルトの名無しさん:2005/12/03(土) 16:57:39
>>203
おいおい、201にバグがあるよ...まあいい。それは>>201への宿題ということで。
両方とも脳内コンパイルにつき動作保障しません。
205デフォルトの名無しさん:2005/12/03(土) 16:58:25
>>201
それくらい自分でやれ
#include<stdio.h>
void num_input(int *i){
while(1){ scanf("%d%*[^\n]%*c",i);
if(((*i-99)<0)&&((*i-9)>0)) break; }
}
int main(void){
int num;
num_input(&num);
printf("2桁数字入力:%d,%d\n",num,(num/10)*(num-(num/10)*10));
return 0;
}
#include<stdio.h>
#define vip 3//要素数
void intary_rcpy(int v1[],const int v2[],int no){
int i;
for(i=0;i<no;i++) v1[i]=v2[no-i-1];
}
int main(void){
int num,i,v1[vip]; const int v2[vip];
for(i=0;i<vip;i++){
printf("v2[%d]=",i);
scanf("%d%*[^\n]%*c",&v2[i]);
}
intary_rcpy(v1,v2,vip);
for(i=0;i<vip;i++){
printf("v1[%d]=%d\n",i,v1[i]);
}
return 0;
}
206デフォルトの名無しさん:2005/12/03(土) 17:02:34
>>201
こうかな…。
#include<stdio.h>
int get2(void) { int v;
do{ scanf("%d", &v); } while(1 != (int)(log(v) / log(10)));
return v;
}

int main(void) {
int r = get2();
printf("結果: %d", r%10 + r/10);
return 0;
}
207デフォルトの名無しさん:2005/12/03(土) 17:05:32
あっかけ算かぁ…。でも既に回答済だからいいか…。
208デフォルトの名無しさん:2005/12/03(土) 17:37:07
>>197
こういう問題見ると、「イギリスでは、こうです」てCM思い出すな。
日本の教育ってのは、大学に至ってまで小学生と同じなのかね。

教育者が間違った親切心を持っているのか、単に答えあわせを
簡単にしたいだけなのか。
209デフォルトの名無しさん:2005/12/03(土) 17:55:47
>>197 テストをサボりまくってるので正しく動くかは未保障と言うことで
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1189.cpp
210166:2005/12/03(土) 18:40:03
>>168
2次元配列からビットマップを作成する方法は習っていないのでちょっと分かりませんでした。
リア厨のときに習ってたBASIC使えばその方法で解けそうなんですけど、C言語は
つい最近大学で習い始めたばっかりなので…。

>>172,185
ありがとうございます。助かりました。
211デフォルトの名無しさん:2005/12/03(土) 22:09:22
[1] 授業単元: cプログラミング
[2] 問題文:7文字程度の文字列の集合を対象としたクイックソートのプログラムを作成せよ
入力は data.txt ファイルを使用し、ソート結果は出力せず 要素の交換回数と実行時間を出力するようにせよ
また、同様の操作を実装したシェルソートのプログラムを作成せよ
入力ファイル(data.txt):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1190.txt
↑このファイルはデータ数が100個程度ですが、1万〜50万程の数を扱えるようにして下さい。
[3] 環境
 [3.1] OS:Linux
 [3.2] gcc
 [3.3] 言語:c
[4] 期限: 月曜まで
お願いしますm(__)m 何か質問がありましたら仰ってください。
212デフォルトの名無しさん:2005/12/03(土) 22:41:33
>>211
グーグルって知ってるか?
213:2005/12/03(土) 23:00:28
[1] 授業単元:情報処理U
[2] 問題文:補間のプログラムを作りなさい
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C++
[4] 期限:2006年12月05日12:00まで
[5] その他の制限:ラグランジェ補間、スプライン補間を使わず、
初心者でも理解できるようなのをお願いします
214:2005/12/03(土) 23:10:49
すみません、間違えました。
『2005年の12月05日』までにお願いします。
215デフォルトの名無しさん:2005/12/03(土) 23:12:37
>>213
入力はどんな形式なんだよ
216デフォルトの名無しさん:2005/12/03(土) 23:15:28
>>213
>ラグランジェ補間、スプライン補間を使わず、
>初心者でも理解できるようなのをお願いします

直線補完はで決まり!
217デフォルトの名無しさん:2005/12/04(日) 01:09:49
[1] プログラミング基礎
[2] 英単語が入力されたデータをアルファベット順に並べ替えよ。
[3] 環境
 [3.1] Windows
 [3.2] VC++6.0
 [3.3] C++
[4] 月曜提出ですが出来れば明日の朝までにお願いします。
[5] バブルソートしか習ってないのでそれを使うのだと思います。

データは
apple
table
diff
directory
みたいに並んでいて制限は100単語です。
よろしくお願いします。
218デフォルトの名無しさん:2005/12/04(日) 01:13:43
プログラミングの課題ですOTL
1,000,000円を年利 r %で預金し、そのまま預けぱなしにしておいたら何年で2倍になるか知るためのプログラムを書け。年利が何%か はキーボードから読み込むものとする。
もぅ何がなんだか。。。
219デフォルトの名無しさん:2005/12/04(日) 01:16:52
>>217
1単語あたりの制限とかない?
酔っ払ってて動的メモリ確保やりたくない

>>218
計算方法は?
単純にr%分かけてきゃいいの?
220217:2005/12/04(日) 01:21:14
>>219
特に書いてないです。
221デフォルトの名無しさん:2005/12/04(日) 01:23:22
>>220
で、入力方法は?
って思ったけど俺C++使えないやwww
ダメじゃん
222デフォルトの名無しさん:2005/12/04(日) 01:36:50
>>218
#include<stdio.h>
int main(void){
double kane=1000000.0,n,hon;
long nen=0;
hon = kane*2;
printf("で?金利何%?:");
scanf("%lf",&n);
while(hon>kane){
kane = kane*(1+n/100.0);
nen++;}
printf("%d年で2倍ですが何か?",nen);
return 0;}
うんこ
223217:2005/12/04(日) 01:47:12
入力方法は予めtxt形式で書かれたものを指定して読み込というものです。
あと本当はこれはあるプログラムの一部で、本来は英単語の後ろにスペース空けて
訳もついていますが、並べ替える部分がわからなかったので省略してしまいました。
もし関係あったらすみません。
224デフォルトの名無しさん:2005/12/04(日) 01:49:30
strcmpで比較してバブルソートかな
二次元配列100個用意して
for文でまわすか
疲れててネムス
>>218
#include <stdio.h>
#define MONEY 1000000
int main(void){
int year;
double buff,interest;

scanf("%lf",&interest);
buff=MONEY;
for(year=0;;year++){
buff= buff*(1+interest/100);
if(buff>MONEY*2){
break;
}
}
printf("%d",year);
return(0);
}
225デフォルトの名無しさん:2005/12/04(日) 01:56:47
>>218
元金いくら預けるかは関係ないぞ
226デフォルトの名無しさん:2005/12/04(日) 01:58:11
>>224
普通バイナリーツリー使うだろ
227デフォルトの名無しさん:2005/12/04(日) 02:43:17
>>217さん
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1191.txt
VisualStudio.net2003で作成しましたがVC++6.0でも動くと思います。
あとstlを使っていますが書いている内容的にはC言語です…。
オブジェクト指向を意識しないとダメですよね?
大変申し訳ございません。
228デフォルトの名無しさん:2005/12/04(日) 02:47:48
バブルソートとか言っている時点でC++じゃねーよ。
質問者のレスみても分かるように、どう考えてもCのレベル。
229217:2005/12/04(日) 02:53:39
>>227
自分の環境では動きませんでした…
コンパイルは出来ますが実行不可になります。
オブジェクト指向とか難しいことはちょっとわからなくて…こちらこそすみません。
よく配列で言われるアドレスやらポインタやらも未習でして。
普段大学ではcygwinを使用しているのですが、それと関係あるのでしょうか。
230218:2005/12/04(日) 03:36:39
みなさんありがとうございます、最近プログラミングを授業で始めたばかりなので
あまり難しいことはやらないと思うのですが簡単なのがありませんか?
231デフォルトの名無しさん:2005/12/04(日) 04:17:17
>>222が究極に簡単だと思うよ。
232227:2005/12/04(日) 04:21:47
>>217さん
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1192.txt
これで勘弁してください。
途中ダメダメな関数がありますので自分で修正なさってください。
233デフォルトの名無しさん:2005/12/04(日) 04:50:37
#include<stdio.h>

int main( void ){

    double yokin = 1000000;// 預金。
    double r;// 年利r。あとでキーボードから入力してもらう。
    int year = 0;// 何年経過したかを数えるためのカウンタ。

    printf("年利を入力してください。\n");// 入力を促す。
    scanf("%lf", &r);// 年利をキーボードから入力してもらう。

    while( yokin < 2000000 ){// yokin が 2000000 より少ない間(while)、 { } 内部を繰り返す。
        yokin = yokin * ( 1 + r/100 );// yokin に「yokin * 年利」(1+〜云々は、年利をそのままかけたら減るってことわかるだろ?)を代入する。
        year++;// 年数のカウンタを一年増やす。
    }
    printf( "預金が2倍になるまでに %d 年かかります。\n", year);// 結果を表示する。

    return 0;
}


これなら猿でもわかるだろ
234デフォルトの名無しさん:2005/12/04(日) 04:53:06
猿にはわからんだろうがヒトならわかるはずだね。
235218:2005/12/04(日) 05:21:49
詳しい解説ありがとうございます、これなら
さっきよりわかった気が・・・します。
最初からこんなに難しそうなの課題に出すなんてOTL
236デフォルトの名無しさん:2005/12/04(日) 05:27:46
int とか doubleの意味がわからんのなら、
本を読むとか、解説サイトを見るとかして自分で調べとけ。
237デフォルトの名無しさん:2005/12/04(日) 05:28:27
やってることは算数だろ。全然難しくねぇよ。
238デフォルトの名無しさん:2005/12/04(日) 07:13:36
おまいらループ回すことしか思いつかんのか

r = 100 のとき 1 年で 2 倍

r != 100 のとき n 年で
 (1 - (r/100)^(n+1)) / (1 - (r/100)) 倍

つまり r が与えられたとき
 2 <= (1 - (r/100)^(n+1)) / (1 - (r/100))
となる n を求めればいい

ここで
 2 == (1 - (r/100)^(n+1)) / (1 - (r/100))
の場合の n について解くと

 n' == (log((2r/100) - 1) / log(r/100)) - 1
(解は整数とは限らないのでとりあえず実数で計算して n' とする)

が得られる

与えられた r から n' を求めて n' を超える最小の整数 n を求める場合

 n == (int)(n' + 1);

つまり

 n == (int)(log((2r/100) - 1) / log(r/100));

で一回の計算で求まるじゃないか
239デフォルトの名無しさん:2005/12/04(日) 07:47:50
>>238
めどい
240デフォルトの名無しさん:2005/12/04(日) 07:48:35
>>233
>>238
常識的に考えたら毎年の利子は小数切捨てだと思うんだけど、
それだと小数の出てくる預金が出ることになりませんか?
241デフォルトの名無しさん:2005/12/04(日) 07:53:06
C++についての質問です。

ビルドまではうまくいくのですが、実行時に

"問題が発生したためa.exeを終了します。ご不便をおかけして申し訳ありません"

という、エラー報告送信を聞くエラーがでます。

これはコード自体(単にプログラムの記述のミス)の問題なのでしょうか?
それともメモリ不足などの問題なのでしょうか?

初歩的な質問で申し訳ありません。

ちなみにWindowsのMicrosoft C++です。

よろしくお願いします。
242デフォルトの名無しさん:2005/12/04(日) 07:56:25
Microsoft C++とはまた古風な…
243デフォルトの名無しさん:2005/12/04(日) 07:57:31
ぬるぽ
244デフォルトの名無しさん:2005/12/04(日) 07:58:05
Microsoft Basicの親戚ですか?

ついでに、ソースを晒さないと具体的にはわからん。
多分>>241が全面的に悪い。
245デフォルトの名無しさん:2005/12/04(日) 07:58:25
十中八九、プログラムのミス。
246デフォルトの名無しさん:2005/12/04(日) 07:59:59
迷惑かけてるのはお前の方なのに

OSに謝らせるなんて可哀想とは思わないか?
247241:2005/12/04(日) 08:02:36
回答ありがとうございます。

ビルドできるけど、実行できないようなプログラムのミスというのはどのようなものがありますか?

一概には言えないと思いますが、例でいいのでなにかあれば教えてください。
248デフォルトの名無しさん:2005/12/04(日) 08:05:39
超たくさんありすぎる。ソース晒せないなら帰れ。 あと >>1
249デフォルトの名無しさん:2005/12/04(日) 08:21:57
>>247
ぬるぽ
250デフォルトの名無しさん:2005/12/04(日) 08:29:39
char *buf;FILE*fp;fgets(buf,sizeof(buf),fp);
251デフォルトの名無しさん:2005/12/04(日) 08:33:25
>>250
なにそのツッコミどころ満載のコード片は?
252デフォルトの名無しさん:2005/12/04(日) 08:33:48
>>181-183
>グローバルに持っていったらN=800でもOKのようです。

おまいらそんな安直なことすんなよ

void fillitem(int **map, int mx, int my, int src, int dst)
{
 static struct point2d{
 int x,y;
 }stack[N*N];
 ・・・以下略
の方がいいだろ?


まあ俺もmalloc/連結リストに賛成だが。

スタック気にするくらいならmallocの戻り値チェックもしろよな。
253デフォルトの名無しさん:2005/12/04(日) 08:34:20
>>247
ぬるぽ
254デフォルトの名無しさん:2005/12/04(日) 08:59:07
はじめてだ……
こんなに「ぬるぽ」「ぬるぽ」いっても一度も「ガッ」されないなんて。

>>247
OSさんに謝れ!!そしてガッ
255デフォルトの名無しさん:2005/12/04(日) 09:28:46
>>235
プログラミング初心者対象の授業だと、大体2,3回授業を受けた後に出される程度の課題かな
プログラミング未経験で、1回目の授業でこんな課題を出されりゃちょっと辛いかもな
3,4回受けてこれが難しいと感じるなら、勉強しなおしておいた方がいいぞ
256デフォルトの名無しさん:2005/12/04(日) 09:34:10
>>247
1 scanfの指定子が間違っている
2 アドレスが入ってないのにポインタ使っている

俺はこれくらいしかシラネ
257デフォルトの名無しさん:2005/12/04(日) 09:39:33
配列の要素数を越えた位置を扱おうとしているとか
C++でそんなことがあるのかどうか知らんがね
258デフォルトの名無しさん:2005/12/04(日) 09:56:25
ある
259デフォルトの名無しさん:2005/12/04(日) 10:07:10
なぁ、問題丸投げしないで考えて分からなかったらここで聞けよな。
じゃないと、プログラミング技術あがらないぞ?
コードは書けば書くほど良い。
260デフォルトの名無しさん:2005/12/04(日) 11:03:57
>>211お願いしますm(__)m
261デフォルトの名無しさん:2005/12/04(日) 11:29:23
>>238
log 使うんなら単に n' = log(2)/log(1+r) でいいと思われ。
262261:2005/12/04(日) 11:33:31
補足:ここで使った r はパーセントじゃなくて比の数(5% なら r=0.05)ね。
263218:2005/12/04(日) 11:33:45
色々とアドバイスありがとうございます、教科書と皆さんの解説を調べつつ
少し勉強したいと思います。
教科書が少しわかりくいのですが皆さんはどのような参考書?
を読んでいるのでしょうか?
またお勧めの参考書などがあれば教えていただけるとうれしいです。
264デフォルトの名無しさん:2005/12/04(日) 11:38:26
>>261
n' = log(2)/log(1+r/100)
265デフォルトの名無しさん:2005/12/04(日) 11:40:11
266デフォルトの名無しさん:2005/12/04(日) 11:58:18
>>211>>260
ほれ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1193.zip

ちょっと遊んだから適当に書き直してから提出した方がいいかも知れない。
267デフォルトの名無しさん:2005/12/04(日) 12:16:29
268デフォルトの名無しさん:2005/12/04(日) 12:30:17
いきなりで申し訳ありません。

[1] プログラミング論U
[2] 問題文:
  演習3: 汎用クラス
  汎用クラスを使って, (配列版スタック以外の) 何らかのデータ構造を定義し,
  動作を確認してみよう。

  データ構造は,線形リストを使ったスタック, キュー (queue; スタックとは逆
  に, 最初に入れたデータが最初に取り出されるデータ構造。 待ち行列とも呼ば
  れる), 二分探索木など, 各自で自由に選びます。


[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 2.9
 [3.3] 言語:C++
[4] 期限: 2005年12月5日11:30まで
[5] その他の制限:C++を習い始めて二ヶ月の初心者です。C言語は一年ほど習いました。

269デフォルトの名無しさん:2005/12/04(日) 12:31:42
[3] 環境 [3.1] OS: Windows[3.2] コンパイラ名とバージョン: VC 5.0 [3.3] 言語: C++
[4] 期限:明日下のプログラムでエラーがでる意味がわかりません。
よろしくお願いします。
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{double Cu[19600][101];
for(int t=0; t<=100; t++){
int i = 0;
for(int sh=0; sh<=47; sh++){
for(int mi=sh+1; mi<=48; mi++){
for(int lo=mi+1; lo<=49; lo++){
Cu[i][t] = i;
i = i + 1;
    }

}

}

}
return 0;
}
270デフォルトの名無しさん:2005/12/04(日) 12:40:35
>>269
C++はさっぱりわからんが、全角スペースを消せばとりあえずエラーはでないぞ?
271デフォルトの名無しさん:2005/12/04(日) 12:42:08
>>269
どんなエラーが出たかしらんが、とりあえずプログラムが間違ってるんだろうな。
272269:2005/12/04(日) 12:45:33
ビルドはできますが、実行時にエラーがでます。
というか、強制終了されます。
273デフォルトの名無しさん:2005/12/04(日) 12:48:37
これだと実行時にもエラーはでないはずだ
一部だけを抜き出して書いてるんじゃないのか?
274デフォルトの名無しさん:2005/12/04(日) 12:48:56
>>268
まずデータ構造を自由に選んでくれ。さもなくば絶対お前が書いたと思われないくらいの変態的なものを書くが?
275デフォルトの名無しさん:2005/12/04(日) 12:51:14
>>269
配列が大きすぎる。
・VCのプロジェクトの設定でスタックサイズを増やす。
・VC限定の手法でコード内にスタックサイズを明示してやる。
・どうせmain()が二重に呼ばれることは無いから静的にする。
・真面目に動的確保にする。
・vectorなどのコンテナを使う。
お好きな対策をどうぞ。
276デフォルトの名無しさん:2005/12/04(日) 12:53:02
>>272
配列のサイズが大きすぎてまともに確保できてないんじゃね?
277デフォルトの名無しさん:2005/12/04(日) 12:56:26
>>269
配列Cu[][]は、newで確保して、最後にdeleteするか、
std::auto_ptr<std::auto_ptr<double> >に入れるとか。
278デフォルトの名無しさん:2005/12/04(日) 12:58:27
>>277
new []で確保したものをdeleteで消すのはご法度。
279269:2005/12/04(日) 12:58:52
やっぱりそうですか・・・

VCはちょっと触れたくないので、動的確保でがんばります。

ほんとに助かりました。ありがとうございました☆
280デフォルトの名無しさん:2005/12/04(日) 13:05:52
>>278>>279
悪い。std::auto_ptrは配列には使えないんだった。
boost::shared_arrayでも使ってくれたまい。
281デフォルトの名無しさん:2005/12/04(日) 13:14:54
>>280
boost::scoped_arrayもあるぞと言ってみる。
282268 ◆DVK.5LaLT6 :2005/12/04(日) 13:16:30
>>274
>>268です。レスありがとうございます。

二分探索木で宜しくお願いします。
283デフォルトの名無しさん:2005/12/04(日) 13:20:50
>>282
汎用クラスって何?
284デフォルトの名無しさん:2005/12/04(日) 13:25:56
>>283
templateを使っていればいいんじゃないかな。
285デフォルトの名無しさん:2005/12/04(日) 13:29:10
213と微妙にかぶるんですが…
[1] 授業単元:プログラミング演習U
[2] 問題文:最小二乗近似を使って補間せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:12月06日12:00まで
[5] その他の制限:C++を習い始めて半年の初心者です。
286デフォルトの名無しさん:2005/12/04(日) 13:38:12
>>281
STLのコンテナに入れないのなら、scoped_atrでもいいね。小さいし速いし。
ところで、一つ分からない事があるんだが、scoped_ptrなりshared_ptrで
二次元配列を確保するには、どうすればいいんだろ?
287もう投げたい:2005/12/04(日) 13:53:04
http://www.econ.kyoto-u.ac.jp/~nakashim/htdocs-unix2/mgp/lect07/Html/index.html
の今日の課題ってやつが解けない…初心者をヘルプ!
288デフォルトの名無しさん:2005/12/04(日) 13:57:42
>>285
対象が与えられてないんじゃなぁ
289デフォルトの名無しさん:2005/12/04(日) 13:58:15
>>286
 const int M = 19600, N = 101;
 boost::shared_array<boost::shared_array<double> > Cu(new boost::shared_array<double>[M]);

 for (int i = 0; i < M; i++)
  Cu[i].reset(new double[N]);

スレ違いだな。
290デフォルトの名無しさん:2005/12/04(日) 14:01:21
>>269
VCの標準スタックサイズは1MB
対してdouble cuは4*19600*101 ≒ 8MB
291デフォルトの名無しさん:2005/12/04(日) 14:04:23
>>289
サンクス。これなら、delete[]の必要がありませんね。
コンテナに入れないのであれば、boost::scoprd_arrayでいいわけですね。
これで行ってみます。
292デフォルトの名無しさん:2005/12/04(日) 14:10:49
単にRAIIがやりたいんだったらBoost.MovePtrを使えば
何も指定しなくても勝手にdelete[]してくれる
293デフォルトの名無しさん:2005/12/04(日) 14:34:13
294デフォルトの名無しさん:2005/12/04(日) 14:39:30
>>287
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1197.txt

こんな感じだろうと思います。
悪いけど、設問2の、「平均待ち時間が何倍になるか」は、ご自分で試してちょ。
俺だったら、プログラムを作りかえて、コンピュータにやらせるんだが、設問とは
違う意図になってプログラムの提出ができなくなるし。
295もう投げたい:2005/12/04(日) 15:22:50
>>294
ありがとうございます!あとはやってみます。感謝感激です◎
296デフォルトの名無しさん:2005/12/04(日) 15:24:37
>>283
Genericsと思われ・
297デフォルトの名無しさん:2005/12/04(日) 15:52:17
>>269
#include <fstream>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
static double Cu[19600][101];
for(int t=0; t<=100; t++){
int i = 0;
for(int sh=0; sh<=47; sh++){
for(int mi=sh+1; mi<=48; mi++){
for(int lo=mi+1; lo<=49; lo++){
Cu[i][t] = i;
i = i + 1;
}
}
}
}
return 0;
}
298デフォルトの名無しさん:2005/12/04(日) 16:06:04
なんかでかいサイズの配列をスタティックエリアに配置するのがはやってるな
299デフォルトの名無しさん:2005/12/04(日) 16:36:57
>>295
バグ発見した。
if (i > siml_time / 2 && queue_length && rand() < RAND_MAX * m * 2) /* 前半はサービス停止、後半は倍速 */

if (i >= siml_time / 2 && queue_length && rand() < RAND_MAX * m * 2) /* 前半はサービス停止、後半は倍速 */
にして欲しい。
siml_timeが大きい時はそんなに気にならないが、小さい時で偶数の時は明らかに
おかしいとわかる。
300デフォルトの名無しさん:2005/12/04(日) 16:50:11
[1] 授業単元: プログラミング演習
[2] 問題文:
例の様に、ポインタの配列を用いて3 次元の配列cube[3][3][3]をつくる。
要素に順に{0〜26}のデータを代入し、cube[1][1][1]の値を出力せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: lcc win
 [3.3] 言語: C
[4] 期限:火曜日
[5] その他の制限:
例とは、
#include <stdio.h>
int main(){
int a[4][4];
int *c[4];
int c0[4]={0,1,2,3};
int c1[4]={4,5,6,7};
int c2[4]={8,9,10,11};
int c3[4]={12,13,14,15};
c[0]=c0;c[1]=c1;c[2]=c2;c[3]=c3;
  printf("%d %d\n", c[3][3], sizeof c);
return 0;}
このようなプログラムです。
初心者でもできるような簡単なプログラムでお願いします。
301デフォルトの名無しさん:2005/12/04(日) 16:56:16
>>300
#include <stdio.h> 
int main(){ 
  int cube[3][3][3], i, *p = (int*)cube;
  for(i = 0; i <3*3*3; i++) p[i] = i;
  printf("%d\n", cube[1][1][1]); 
  return 0;
}
302デフォルトの名無しさん:2005/12/04(日) 16:58:12
>>301
ポインタの配列じゃないとダメだぞ。
それに、コンパイルエラー出ないか?それ。
303デフォルトの名無しさん:2005/12/04(日) 16:59:19
あ、キャストで強引にエラー消してるのか。でもダメだな。
304デフォルトの名無しさん:2005/12/04(日) 17:09:16
>>285
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1198.txt

ガウス・ザイデル法でやったのは、実装が楽だったから。
n次式固定なのがダサいのは仕様です。仕様書に書いてなかったので。
305217:2005/12/04(日) 17:27:42
>>232
遅くなりましたがありがとうございました。
メモリ云々はわかりませんでしたが、ソート部分等を参考にしたら出来ました。
306デフォルトの名無しさん:2005/12/04(日) 18:06:07
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
7×7の2次元配列の中に1〜49の数値を入力し、実行結果を出力しなさい。
配列の初期値は全て0とする。
ただし、縦、横、斜めの各列の数値の合計が同じになるように入力しなさい。
数値の入力順及び数値の入力を開始する列は自由とする。
[3] 環境
 [3.1] OS:WindowsXp
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C++
[4] 期限:2005年12月6日10:00まで
[5] その他の制限:C言語は8ヶ月習いましたが、配列がいまいちよく解りません。
         お手数ですが、よろしくお願いします。_(_ _)_  
     
         
307デフォルトの名無しさん:2005/12/04(日) 18:30:22
int i,j,k;
static int a[N][N];

k=0;
for(i=-N/2;i<=N/2;i++)
for(j=0;j<N;j++)
a[(j-i+N)%N][(j+i+N)%N]=++k

from C言語による最新アルゴリズム(奥村晴彦著)
308デフォルトの名無しさん:2005/12/04(日) 18:35:09
309デフォルトの名無しさん:2005/12/04(日) 18:44:29
[1] 授業単元:C言語U
[2] 問題文(含コード&リンク):char型が表現できる全ての整数を、2進・8進・16進で表示するプログラムを再帰を使い作成せよ
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC++6.0
 [3.3] 言語:C
[4] 期限:2005年12月6日まで
[5] その他の制限:特に無し

よろしくお願いします
310デフォルトの名無しさん:2005/12/04(日) 19:03:46
>>309
char型は負数も扱えるわけだが、その表示はどうすればいい?
311デフォルトの名無しさん:2005/12/04(日) 19:16:35
>>309
#include <stdio.h>
int pow10(int i){
if(i==0)return 1;
return 10*pow10(i-1);
}
int dec2bin(unsigned char d){
long b=0,i=0;
while(d>0){
b+=(d%2)*pow10(i);
d=(int)(d+0.5)/2;
i++;
}
return b;
}
void c_show(unsigned char d){
printf("10(%03d) = 2(%08d) 8(%03o) 16(%02x)\n",d,dec2bin(d),d,d);
if(d<255)c_show(d+1);
}
int main(){
c_show(0);
return 0;
}
312デフォルトの名無しさん:2005/12/04(日) 19:22:33
>>309 負数の表現が相当インチキだが,気に食わなかったら言ってくれ.

int t[]={2,8,16};
char *s = "0123456789ABCDEF";
void g(int n, char c) { if (c > 0) g(n, c/t[n]), putchar(s[c%t[n]]); }
void h(int n, char c) { if (n+1) { printf(" %s", c<0?"-":""), g(n, c>0?c:-c), h(n-1, c);} }
void f(char c) { if (c > -0x7f) f(c-1), c ? h(2,c) : printf(" 0 0 0"), putchar('\n'); }
int main() { f(0x7f); }
313デフォルトの名無しさん:2005/12/04(日) 19:25:39
>>309 311 に倣って unsigned char バージョン.
int t[]={2,8,16};
char *s = "0123456789ABCDEF";
void g(int n, unsigned char c) { if (c) g(n, c/t[n]), putchar(s[c%t[n]]); }
void h(int n, unsigned char c) { if (n+1) { putchar(' '), g(n, c>0?c:-c), h(n-1, c);} }
void f(unsigned char c) { if (c) f(c-1), c ? h(2,c) : printf(" 0 0 0"), putchar('\n'); }
int main() { f(0xff); }
314デフォルトの名無しさん:2005/12/04(日) 19:29:53
>>313 unsigned char なら c で正負場合わけいらなかった. h を以下に訂正.
void h(int n, unsigned char c) { if (n+1) { putchar(' '), g(n, c), h(n-1, c);} }
315211:2005/12/04(日) 19:43:14
>>211です

>>266のが全く分からんとです
もっと一般的な初心者に分かるコードをお願いしますm(;__)m
316309:2005/12/04(日) 20:11:45
解答ありがとうございました
317デフォルトの名無しさん:2005/12/04(日) 20:19:05
[1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク): 10個の1から100までの整数値を入力し、その整数値を
          (あ) 0以上25以下
          (い) 26以上50以下
          (う) 51以上75以下
          (え) 76以上100以下
の四つに分類し、そのれぞれの範囲にある整数値の個数を表示するプログラムを作成せよ
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C言語
[4] 期限:12月5日午後5時まで
すいません、さっぱりわからなくて、よろしくおねがい致します。
318デフォルトの名無しさん:2005/12/04(日) 20:27:29
#include <stdio.h>

int main(){
int a1,a2,a3,a4;
int i,d;
a1=a2=a3=a4=0;
for(i=0;i<10;i++){
scanf("%d",&d);
if(0<=d&&d<=25) a1++;
if(26<=d&&d<=25) a2+;
if(51<=d&&d<=75) a3+;
if(76<=d&&d<=100) a4+;
}
printf(" 0- 25:%d\n",a1);
printf("26- 50:%d\n",a2);
printf("51- 75:%d\n",a3);
printf("76-100:%d\n",a4);
return 0;
}
319デフォルトの名無しさん:2005/12/04(日) 20:28:19
>>318
a2+; -> a2++; に書き直してくれ。他も同じように
320デフォルトの名無しさん:2005/12/04(日) 20:31:23
#include <stdio.h>

int main(){
int a1,a2,a3,a4;
int i,d;
a1=a2=a3=a4=0;
for(i=0;i<10;i++){
scanf("%d",&d);
if(0<=d&&d<=25) a1++;
if(26<=d&&d<=50) a2++;/* こぴぺの弊害が... */
if(51<=d&&d<=75) a3++;
if(76<=d&&d<=100) a4++;
}
printf(" 0- 25:%d\n",a1);
printf("26- 50:%d\n",a2);
printf("51- 75:%d\n",a3);
printf("76-100:%d\n",a4);
return 0;
}
321デフォルトの名無しさん:2005/12/04(日) 20:41:10
>>317
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
int main(){
  int ans[4] = {0}, cnt = 0;
  char buf[1024], *p;
  while(1){
    printf("input nums> ");
    if( fgets(buf, sizeof(buf), stdin) && NULL != (p = strtok(buf, " \t\n,"))){
      while( p ){
        int n = atoi(p);
        assert(n > 0 && n <= 100);
        if(n <= 25) ans[0]++; else if(n <= 50) ans[1]++;
        else if(n <= 75) ans[2]++; else if(n <= 100) ans[3]++;
        p = strtok(NULL, " \t\n,");
        if( ++cnt >= 10 ) goto BREAK;
      }
    }
  }
BREAK:
  {
    int i;
    for(i = 0; i < 4; i++) printf("%3d以上%3d以下 : %d\n", i*25+1, (i+1)*25, ans[i]);
  }
  return 0;
}
322デフォルトの名無しさん:2005/12/04(日) 20:48:23
[1] 授業単元:情報技術基礎(実教出版)
[2] 問題文(含コード&リンク):キーボードから「c」を入力した時に「OK!」、それ以外の時には「NG!」と出力するプログラムをつくりなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:BCC
 [3.3] 言語:C
[4] 期限:今日中
323デフォルトの名無しさん:2005/12/04(日) 20:51:41
>>322
#include<stdio.h>
int main(void)
{
char a,b;
a='c';
scanf("%c",&b);
if(a==b){
printf("OK!\n");
}
else{
printf("NG!\n");
}
return 0;
}
324デフォルトの名無しさん:2005/12/04(日) 20:54:16
>>322
#include <stdio.h>
int main(){
  puts((int)'c' == getchar() ? "OK!" : "NG!");
  return 0;
}
325322:2005/12/04(日) 21:03:28
>>324
>>323ぐらいでお願いします。
>>323でやってみたら、「cc」でも「OK!」と出てしまいました。
326デフォルトの名無しさん:2005/12/04(日) 21:05:23
お前俺の書き込み読んでないだろ
配列やってないなら2文字以上の場合は考えなくてもいいって言ったじゃないか
327デフォルトの名無しさん:2005/12/04(日) 21:06:33
>>325
#include <stdio.h>
int main(){
  puts((int)'c' == getchar() && (int)'\n' == getchar() ? "OK!" : "NG!");
  return 0;
}
328デフォルトの名無しさん:2005/12/04(日) 21:09:49
>>327
cEOFだった場合は?
329デフォルトの名無しさん:2005/12/04(日) 21:12:43
EOFってgetchar()で戻り値帰ってこないの?
330329:2005/12/04(日) 21:14:18
あ、そうか。EOFならOKじゃないのか?ってことね。
考えてなかった。
331デフォルトの名無しさん:2005/12/04(日) 21:16:54
ああでもキーボードから入力した場合か
それならEOFは考えなくてもいいのか
332デフォルトの名無しさん:2005/12/04(日) 21:18:20
unixならそれも可能だけど、BCCって言ってるし。まぁいっしょ。
333デフォルトの名無しさん:2005/12/04(日) 21:20:13
>>327
(int)'c' == getchar() とかじゃなくてscanfを使ってもらえませんか?
334デフォルトの名無しさん:2005/12/04(日) 21:20:47
もう寝るので、勝手にやって。
335デフォルトの名無しさん:2005/12/04(日) 21:22:32
>>322 条件後出しテラウザスとだけ言っておこう。
336デフォルトの名無しさん:2005/12/04(日) 21:27:26
条件後出しする奴に答えると、これからもそういうのに解答しないといけなくなるからな。
337デフォルトの名無しさん:2005/12/04(日) 21:28:10
322 の言う条件なら↓に書いてある。全部かどうかは知らんが。
http://pc8.2ch.net/test/read.cgi/tech/1129043264/977-999
338322:2005/12/04(日) 21:30:23
>>333は僕じゃありませんよ。
339デフォルトの名無しさん:2005/12/04(日) 21:30:26
マルチかよ
340デフォルトの名無しさん:2005/12/04(日) 21:30:50
>>338 トリップ付けないお前が悪い
341デフォルトの名無しさん:2005/12/04(日) 21:31:07
>>315
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define __BUFFER_LENGTH 30
#define __DATA_SIZE 100000
int swap_count = 0;
void str_swap(char **data,int l,int r){
char* temp;
temp = data[r];data[r] = data[l];data[l] = temp;
swap_count++;}
void quick_sort(char** data, int l, int r){
int pivot = (l+r)/2,i=l,j=r;
while(i<j){
while (strcmp(data[i],data[pivot])<0)i++;
while (strcmp(data[pivot],data[j])<0)j--;
if (i >= j)break;str_swap(data, i++, j--);}
if(l < i-1)quick_sort(data,l,i-1);if(j+1 < r)quick_sort(data,j+1,r);}
int main(){
char buf[__BUFFER_LENGTH];
char **data = (char**)malloc(sizeof(char*)*__DATA_SIZE);
int i,wc = 0;
while((fgets(buf,30,stdin))!=NULL){
data[wc] = (char*)malloc(sizeof(char)*(strlen((buf)+1)));
sscanf(buf,"%s\n",data[wc++]);}
quick_sort(data,0,wc-1);
printf("swap count = %d\n",swap_count);
for(i=0;i<wc;i++)free(data[i]);free(data);
return 0;}
342デフォルトの名無しさん:2005/12/04(日) 21:31:56
うっは、前スレの最後に書いてたのかよwww
しょうがねーな。解決してやるか。
343342:2005/12/04(日) 21:37:52
int main(int argc, char* argv[]){
char c,d;
scanf("%c%c",&c,&d);
if(c=='c' && d=='\n'){
printf("OK\n");
}else{
printf("NG\n");
}
return 0;
}
344322:2005/12/04(日) 21:37:53
因みに高1レベルです。
345デフォルトの名無しさん:2005/12/04(日) 21:38:13
というか、回答者の回答に満足できないなら
自分でやれ、といいたい
346デフォルトの名無しさん:2005/12/04(日) 21:39:11
Cに高校レベルとか大学レベルとかあるのかね、昨今は。
347デフォルトの名無しさん:2005/12/04(日) 21:40:11
>>322の脳みそが小1レベル、ということはよくわかった
348322:2005/12/04(日) 21:40:46
釣りでした
349デフォルトの名無しさん:2005/12/04(日) 21:41:07
>>347
謝れ!! 小学一年生に切腹して謝れ!!
350342:2005/12/04(日) 21:42:13
orz 前スレかと思ったら違うじゃんか... やって損した。
351デフォルトの名無しさん:2005/12/04(日) 21:42:32
ID無いと荒れるな
352デフォルトの名無しさん:2005/12/04(日) 21:44:15
>>350
もし前スレならマルチにはならんだろw
353342:2005/12/04(日) 21:46:07
>>352 全くだw 俺の馬鹿……
354322:2005/12/04(日) 21:47:13
引数無しでお願いします。
355デフォルトの名無しさん:2005/12/04(日) 21:48:34
本人、偽者を問わず
これ以降はスルーの方針で
356322:2005/12/04(日) 21:50:50
できないんですか?
357デフォルトの名無しさん:2005/12/04(日) 21:52:33
どれが偽物でどれが本人?
俺が本人。
358デフォルトの名無しさん:2005/12/04(日) 21:52:55
俺がお前で
359デフォルトの名無しさん:2005/12/04(日) 21:53:10
お前が俺
360デフォルトの名無しさん:2005/12/04(日) 21:53:17
角川かよ
361デフォルトの名無しさん:2005/12/04(日) 21:53:58
ワラタ
362322 ◆AAAAAiFA6M :2005/12/04(日) 21:54:30
また一週間後ぐらいに来ます。
もちろん、違う問題ですけどね
363デフォルトの名無しさん:2005/12/04(日) 21:55:50
>>362
OK、NG登録しておいた
364デフォルトの名無しさん:2005/12/04(日) 21:55:56
来るな。
365268 ◆DVK.5LaLT6 :2005/12/04(日) 21:55:57
>>293

ご丁寧に本当ありがとうございました。
366デフォルトの名無しさん:2005/12/04(日) 23:58:28
[1] 授業単元:
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1199.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1200.txt     
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:VC6
 [3.3] 言語:C
[4] 期限:12月8日まで
[
よろしくお願いします
367デフォルトの名無しさん:2005/12/05(月) 00:13:46
多分ものすごいすぐできそうだけど
もう酔っ払って眠いから明日帰ってくるまでに誰もやってなかったらやるよ
368218:2005/12/05(月) 00:13:50
ちょっと教科書でわからないことがあるのですがmain(void)このvoidは
引数のない関数の定義となっているのですがよくわかりません、
重要な指定なのでしょうか?
369デフォルトの名無しさん:2005/12/05(月) 00:15:41
main()
とやってみてから聞け
370218:2005/12/05(月) 00:21:29
main()でやってみてもできました、あまり重要では
ないということなのでしょうか?
371デフォルトの名無しさん:2005/12/05(月) 00:28:38
いいや、重要だ。なぜ重要かこのスレ的に答えてあげよう。
main(void) と書くべき所を main() と書いて提出すると

減 点 の 対 象 と な る こ と が あ る !
372デフォルトの名無しさん:2005/12/05(月) 00:32:10
int main(void)
main(void)
int main()
main()
どれだろうが別に教授は気にしないと思うがな
373デフォルトの名無しさん:2005/12/05(月) 00:35:43
コンパイラによっては警告をだすがな
374デフォルトの名無しさん:2005/12/05(月) 00:38:54
>>368
Cでは必要。C++では必要無い。
375デフォルトの名無しさん:2005/12/05(月) 00:42:07
voidは引数がないことを明示的に宣言すること。
コンパイラがチェックしなくても、引数がないときはvoidとしておく習慣をつけたほうがいいな。
376218:2005/12/05(月) 00:43:31
アドバイスありがとうございます、引数がない〜としか
書いてないのですが具体的に引数とはどんなものなのでしょうか?
377デフォルトの名無しさん:2005/12/05(月) 00:54:51
>>376
たとえばmain関数でコマンド引数を受け取りたいときは

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

と定義します。

>hoge 1 2

と入力すると、argc=2でargv[0]="1"、argv[1]="2"が格納されてmain関数
に飛びます。

378デフォルトの名無しさん:2005/12/05(月) 00:59:59
>>377 バカが身の程知らずに・・・
379デフォルトの名無しさん:2005/12/05(月) 01:02:11
>>378
違いましたっけ?ご指摘を!
380デフォルトの名無しさん:2005/12/05(月) 01:05:00
[1] 授業単元: c言語
[2] 問題文:ファイル入力で文字列を読み込み 、
マージソートor挿入ソートし、要素の交換回数を標準出力するプログラムを作成せよ
[3.1] Linux  [3.2] gcc
[4] 期限: 無期限
[5] その他:マージソートでも挿入ソートでも両方実装してるものでもいいです。
初心者でも見て分かるようなコードであればありがたいです。
381377=379:2005/12/05(月) 01:05:24
一個ずれてた!

>hoge 1 2

と入力すると、argc=3でargv[0]="hoge"、argv[1]="1"、argv[2]="2"が格納されてmain関数
に飛びます。

そうですよね!>>378
382デフォルトの名無しさん:2005/12/05(月) 01:05:28
>>379
環境依存だけど、一般的にはargv[0]には実行ファイル自身のパスが入ります。
main関数の返値はintです。
383377=379:2005/12/05(月) 01:09:26
>>382
サンクス!
384378:2005/12/05(月) 01:15:32
>>381
あまりにもありがちな間違いばかりなんで悪意あるレスかと誤解してた。
きつい言い方してごめんね。おかしいというとこは >>382 のいう通り。
ただし環境依存というよりは標準Cならそうに決まってるということです。
385デフォルトの名無しさん:2005/12/05(月) 01:16:25
>>380
(1)ファイル名は?
(2)ソートする対象は文字?それとも行?
(3)(特にこのスレで質問するような)初心者ならマージソートや挿入ソートの
  コードを見ても分からないと思うんだが君は分かっているか?
386382:2005/12/05(月) 01:17:33
>>384
あれ、標準で決まってましたっけ(;´Д`)
てっきり処理系依存かと・・・
薄知スマソ。
387380:2005/12/05(月) 01:19:42
(1)なんでもいいですが・・・じゃあDATA.txtで
(2)アルファベットがこんなふうに入ってます↓
jhuch
rwuovghcuw
oikhxtyfr
fcuhgy
hiufhw
・・・
(3)それは大丈夫です。コメントで関数の操作をちょいと教えてくれたらうれしいです。
388377=379:2005/12/05(月) 01:20:12
>>384
いえいえ!
私はしばらくCのコーディングをしていないものですから、
つい、いいかげんなことを書いてしまいました。
ご指摘ありがとうございます。
389385:2005/12/05(月) 01:26:32
>>387
もう1つ質問。CかC++か。それによって処理量がかなり違う。
390384:2005/12/05(月) 01:33:59
JIS X3010:2003(ISO/IEC 9699: 1999) の 5.1.2.2.1 に明記してある。
http://www.jisc.go.jp/app/pager?%23jps.JPSH0020D:JPSO0010:/JPS/JPSO0020.jsp=
を開いて一番上のエディットボックスに X3010 と打ち込むただでみれる。

このスレだと無用の情報だろうけど。
391デフォルトの名無しさん:2005/12/05(月) 01:34:35
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
1つの文字列を文字型ポインタで初期化し、別に入力した文字列と比較します。
入力した文字が、初期化した文字列より大きい場合は”LARGER”と出力し、
小さい場合は”SMALLER”と出力するプログラムを作りなさい。
ここでは、2つの文字型ポインタs,t引数として、2つの文字列を比較し、以下の値を返す関数(mycmp)
を作り、main関数ではその関数を呼び出すようにしなさい。
  sの指す文字列>tの指す文字列 ならば正の値を返す
  sの指す文字列<tの指す文字列 ならば不の値を返す
 sの指す文字列=tの指す文字列  ならば0を返す

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年12月5日提出です・・。
[5] その他の制限: 配列、ポインタの基礎、標準入出力くらいしかやってません・・。

よろしくおねがいします。もうボロボロです・・・。
392デフォルトの名無しさん:2005/12/05(月) 01:47:05
>>391
mycmpは標準のstrcmpと同等みなしていいか?
393218:2005/12/05(月) 01:47:08
レスを参考に教科書と照らし合わせて作ってみました、
#include <stdio.h>
int main()
{
double yokin=1000000.0,hon;
double i;
int year=0;
hon = yokin*2;
printf("年利は何%ですか?:");
scanf("%lf",&i);

while(hon>yokin)
{
yokin = yokin*(1+i/100.0);
year++;
}
printf("%d年で2倍です。",year);
return 0;
}
なにかここがダメだ〜ってところはあるでしょうかOTL
394デフォルトの名無しさん:2005/12/05(月) 01:53:40
さっきから気になってるんだが、貴様(ら)は金を小数で扱うつもりか?年は整数で扱っておいて。
あと"2倍です。"が正しいということはほとんどあり得ないだろうから"初めて2倍以上になります。"が適切かと思う。
395デフォルトの名無しさん:2005/12/05(月) 01:56:32
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク): 整数データがn個は行っている配列data[]に、整数a以上、
整数b以下のデータがいくつあるかを返す関数、int countbetween(int data[], int n, int a, int b)を記述せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: 今日の夕方5時まで
[5] その他の制限: 特にありません。
よろしくお願いしますm(_ _)m
396デフォルトの名無しさん:2005/12/05(月) 02:03:43
int countbetween(int data[],int n,int a, int b){
int i,c=0;
for(i=0;i<n;i++){
if(a[i]>=a && a[i]<=b)c++;
}
return c;
}
397デフォルトの名無しさん:2005/12/05(月) 02:04:29
a[i]じゃなくてdata[i]だな
これだから脳内コンパイラは・・・
398392:2005/12/05(月) 02:05:11
>>391
ま、いいや。酔ってるからけど、多分こんな感じ。
#include <stdio.h>
int mycmp(const char *s, const char *t)
{
    unsigned char uc1, uc2;
    while (*s != '\0' && *s == *t) s++, t++;
    uc1 = (*(unsigned char *) s);
    uc2 = (*(unsigned char *) t);
    return uc1 < uc2 ? -1 : uc1 > uc2;
}
int main(void)
{
    const char *compared = "hoge";
    char input[1024];
    int result;
    printf("input?:"); scanf("%s", input);
    result = mycmp(input, compared);
    if (result > 0)
        printf("LARGER");
    else if (result < 0)
        printf("SMALLER");
}
399デフォルトの名無しさん:2005/12/05(月) 02:05:42
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
(1)2が1番小さい素数、3が2番目に小さい素数、、、
i番目に小さい素数を返す関数nthprime(i)をつくり、
500番目に小さい素数を求めよ。
ただし関数nthprimeは再帰呼び出しを用いて作成すること

(2)入力された整数n以下の素数の個数を求める関数prcount(n)をつくり、
1000以下の素数の個数を求めよ。
ただし関数prcountは再帰呼び出しを用いて作成すること

[3] 環境
 [3.1] OS: WIN XP
 [3.2] コンパイラ名とバージョン: borland
 [3.3] 言語: C
[4] 期限: 12月9日まで
[5] その他の制限:
効率は特に望みません。
初心者でも分かる簡単なプログラムでお願いします。
400デフォルトの名無しさん:2005/12/05(月) 02:11:16
もう素数系はあきたよ
めんどいから(2)だけ

#include <math.h>
int prcount(int n){
int i;
if(n==3) return 2;
if(n%2 == 0 ) return prcount(n-1);
for(i=3;i<=sqrt(2)+1;i++){
if(n%i==0)return prcount(n-2);}
return 1+pcount(n-2);}
401デフォルトの名無しさん:2005/12/05(月) 02:15:29
>>398
すいません、ありがとうございます。
しいごとが早くて助かりました!
402392:2005/12/05(月) 02:17:18
>>401
それは「酔ってるからけど」へのあてつけか?ま、いいけど。
403400:2005/12/05(月) 02:19:34
int prcount(int n){
int i;
if(n<2) return 0;
if(n==2) return 1;
if(n==3) return 2;
if(n%2 == 0 ) return prcount(n-1);
for(i=3;i<=sqrt(n)+1;i+=2){
if(n%i==0)return prcount(n-2);}
return 1+prcount(n-2);}

適当すぎた
404218:2005/12/05(月) 02:19:40
return 0;とは関数から値を返すとなっているのですが
抜いてやってみても出来ることができました、具体的には
どのような意味があるのでしょうか?
405デフォルトの名無しさん:2005/12/05(月) 02:22:03
>>397さん、ありがとうございます。
>>397さんのプログラムをちょっといじって作ってみたんですが…
int countbetween(int data[], int n, int a, int b)
{
int i, count = 0;

printf("整数の個数:"); scanf("%d", &n);

for(i = 0; i < n; i++){
printf("NO.%d", i + 1); scanf("%d", data[i]);

printf("aの値:"); scanf("%d", &a);
printf("bの値:"); scanf("%d", &b);

if(data[i] > a){
if(data[i] < b){
count = count + 1;
}
else{
count = count;
}}
else{
count = count;
}}
return count;
}
これでも平気でしょうか?
main内でさっきからエラーが出てるのですが…。
406デフォルトの名無しさん:2005/12/05(月) 02:23:01
すいません、mainの方も載せておくの忘れてました…_| ̄|○
int main(void)
{

extern int data[];
int i;

printf("%d個\n",countbetween(data[i]));

return 0;
}
エラーがどうしても解決できないので、おねがいしますm(_ _)m
407デフォルトの名無しさん:2005/12/05(月) 02:23:14
>>404
C++では、main関数に限りreturn 0;を省略することが出来る。
VC++でコンパイルしているなら、デフォルトのコンパイルはC++として行われる(拡張子がcppなら)ので
抜いても警告が出ないのだと思われ。
0を返すのは正常終了の意
408387:2005/12/05(月) 02:27:46
>>389
cです
409デフォルトの名無しさん:2005/12/05(月) 02:28:33
>>404
俺は>>407ではないが補足。
ISO/IEC 9899:1999というC言語の最新の(ただしその全ての機能を実装
しているコンパイラは少ないが)国際規格によれば、C言語でも>>407と同じ
意味を持つ。すなわち、returnに行き着くことなくmain関数の}にたどり着いた
場合にはreturn 0;と同じ意味を持つ、と決められている。
410385:2005/12/05(月) 02:29:44
>>408
んじゃメンドクサイからやめとく。誰かよろしく。
411デフォルトの名無しさん:2005/12/05(月) 02:31:21
>>405
なにそれ・・・
ちょっといじったどころか別物じゃん
改悪されすぎ・・・
412デフォルトの名無しさん:2005/12/05(月) 02:32:33
>>409
上のほうにクイックソート版の同じようなのがあるぞ
413デフォルトの名無しさん:2005/12/05(月) 02:32:59
>>405
俺は>>379じゃないけど
突っ込みどころ多すぎ
まず
printf("整数の個数:"); scanf("%d", &n);

for(i = 0; i < n; i++){
printf("NO.%d", i + 1); scanf("%d", data[i]);

printf("aの値:"); scanf("%d", &a);
printf("bの値:"); scanf("%d", &b);
はmain関数内にあるべきだし、そもそもmain関数内の変数配列dataの要素数が宣言されていない
countbetween関数の呼び出しにしても定義では
int countbetween(int data[], int n, int a, int b)
となっているにも関わらず、最初のdataしか引数に与えてない上、いきなり定義されてないi番目の要素を渡している
関数に配列を渡す場合は配列の最初の要素のポインタ(&data[0]って書くかdataと書く、普通はdata)
を渡さないといけない
414デフォルトの名無しさん:2005/12/05(月) 02:34:45
>>411
すいません、やっぱりいじりすぎでしたよね_| ̄|○
あとで見てすぐに分かるように書いたんですけど、
やっぱこんなんじゃダメですよね。
スレ汚しすいませんでした_| ̄|○
415デフォルトの名無しさん:2005/12/05(月) 02:38:50
>>414
int main(void)
{

int* data;
int n,a,b,i;

printf("整数の個数:");scanf("%d", &n);
data = (int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++){printf("NO.%d:",i+1);scanf("%d", &data[i]);}
printf("aの値:");scanf("%d", &a);
printf("bの値:");scanf("%d", &b);
printf("%d個\n",countbetween(data,n,a,b));

return 0;
}
いじるならサブルーチンじゃなくてメインをいじれ
416409:2005/12/05(月) 02:48:30
>>412
417デフォルトの名無しさん:2005/12/05(月) 04:36:59
>>380
マージソートは普通の実装なら「要素の交換」は行わないんだが。
418デフォルトの名無しさん:2005/12/05(月) 05:16:31
>>380
単純に strcmp と strcpy の回数を表示してみた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1201.c
419デフォルトの名無しさん:2005/12/05(月) 08:44:25
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
適当な長さの文字列を初期設定として設定し、
sent[100] = {"This is the test program ......
キーボードから何か文字列を入力して、入力した
文字列が初期設定として設定した文字列(上の例ではsent)
に含まれるかどうか判定するプログラムを strchrを
使って作りなさい。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年12月10日12:00まで
[5] その他の制限: 特にありません。よろしくお願いします。
420380:2005/12/05(月) 08:50:39
>>418
何故か実行するとエラーメッセージが出るとです・・・
コンパイラは通ります
421デフォルトの名無しさん:2005/12/05(月) 09:30:24
>>420
"data.txt"という、100行で、一行255文字以内のデータを入れたファイルが
ないとエラーが出るよ。
422デフォルトの名無しさん:2005/12/05(月) 09:46:47
>>421
高々100行 高々255文字ね.自分が用いるファイルにあわせて適当に変えてください.
そっちも可変にしろ,といわれたら,ちょっと頑張んないと駄目ぽ.
423デフォルトの名無しさん:2005/12/05(月) 09:49:46
[1] 授業単元: プログラム入門
[2] 問題文(含コード&リンク):次のプログラムの配列版とポインタ版を作成せよ。ただし各関数は
指定された書式に従って呼び出されるものとし、それにあわせて関数の戻り値および
引数を設定すること
・点の座標値(x,y)が要素数2の配列で管理されるとき、2つの点a,bを結ぶ直線上
にあるそれらの中点cの座標を求める関数midp()を定義せよ。x,yは標準入力から
入力するとする。
(配列版)書式:void midp(double a[] , double b[] , double c[])
(ポインタ版)書式:void midp(double *a , double *b , double *c)

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月5日夜8時

長文で申し訳ないですが、よろしくおねがいします。
424デフォルトの名無しさん:2005/12/05(月) 10:08:46
>>419
#include <stdio.h>
#include <string.h>
int main(void)
{
  char sent[100] = {"This is the test program"};
  char buf[256], str [256];
  char* p = sent;
  char* q = str;
  printf("検索ワード入力 :");
  fflush(stdout);
  fgets(buf, sizeof(buf), stdin);
  sscanf(buf, "%s", str);
  while ((p = strchr(p, *q)) != NULL)
    {
      while (*++q != '\0')
        {
          if (*++p != *q)
            {
              break;
            }
        }
      if (*q == '\0')
        {
          printf("%s は見つかりました。", str);
          break;
        }
      q = str;
    }
  return 0;
}
425420:2005/12/05(月) 10:11:53
>"data.txt"という、100行で、一行255文字以内のデータを入れたファイルが
>ないとエラーが出るよ。
data.txtの中はこんな感じです
ujyhtgfred
fefdir
jrehifj
fjoi3ujf
・・・
・・
(100行くらい)

#define SIZE 100→#define SIZE 10000
と変えてみたらエラーは出なかったのですが実行しても
なーんにも出力されません orz 何故に・・・。
キッチリ100行とかにしないといけないとか?そんな感じですかね
426デフォルトの名無しさん:2005/12/05(月) 10:32:13
1] 授業単元: C言語
[2] 問題文(含コード&リンク):
以下のクラス Visible と Point を派生して, クラス VisiblePoint を実装して下さい. クラス Visible の get_str() はオブジェクトの内容を文字列として返すメンバ関数であり, VisiblePoint はこれをオーバーライドして実現します.
これを実行するためのmain文も書いてください。
#include <iostream>
#include <string>
using namespace std;
class Visible {
public:
Visible() {}
virtual ~Visible() {}
virtual string get_str() const = 0;
virtual void show () { cout << get_str() << endl; }
};
class Point {
protected:
int x;
int y;
public:
Point(int a=0, int b=0) {
x = a;
y = b;
}
virtual ~Point() {}
virtual int get_x() const { return x; }
virtual int get_y() const { return x; }
};
[3] 環境 [3.1] OS: XP[3.2] コンパイラ名とバージョン: Microsoft Visual Studio[3.3] 言語: C++
[4] 期限: 12月12日
[5] その他の制限: これは多重継承の課題です。
427デフォルトの名無しさん:2005/12/05(月) 11:01:42
>>425
そしたら、下のプログラムに替えてみて。
data.txtもプログラム中で作るようにしてある。
merge_sort()の中の、string b[SIZE], c[SIZE];が、再帰呼び出しの
度にメモリを消費して、あっという間にスタックが無くなってしまうので、
ヒープに替えてある。それでも環境によるが、100文字で10000行は
俺の所では無理だった。

ソースは>>418さんのを勝手に改造した。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1202.txt
428デフォルトの名無しさん:2005/12/05(月) 11:13:13
429デフォルトの名無しさん:2005/12/05(月) 11:15:05
>>426
オブジェクトの内容を文字列として返す、って所がわからん。
もしかして
cout << "x = " << vp.get_x() << ", y = " << vp.get_y() << endl;
のような出力を string に入れて返すという事か?
430デフォルトの名無しさん:2005/12/05(月) 11:24:34
>>426
もし>>429のような事だったら、こっちな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1204.txt
431デフォルトの名無しさん:2005/12/05(月) 11:28:01
あと、public継承してるから、VisiblePoint内の

//void show() { cout << get_str() << endl; }
//int get_x() const { return x; }
//int get_y() const { return y; }

この三行はオーバーライドしなくてもよい。コメントアウトするか、
ばっさり削除してもよい。
432425:2005/12/05(月) 12:46:36
>>427
実行してもなにも出力されません orz
marge < data1_5 みたいにファイルを選べるようにできませんかね?
あと言い忘れましたが、一行は8文字程度です
でも行数は1万から50万行あります
433デフォルトの名無しさん:2005/12/05(月) 13:11:39
ファイルから可変長可変個の文字列を読み込むとき
配列を使うのは愚の骨頂

スワップする際もstrcpyでコピーするのではなく
アドレスを交換したほうがいい
そうすりゃ文字列の長さぶんだけバッファ確保してもエラーはおきない

ファイル一行増えるごとにreallocするのがいやなら
1000行とかごとにやればいい

こうすりゃファイルの長さも単語の長さも気にしなくていい
434デフォルトの名無しさん:2005/12/05(月) 16:10:07
[1] 授業単元:プログラミング演習2
[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/13th.html
[3] 環境
 [3.1] OS: WindowsXp
 [3.2] VC6.0
 [3.3] 言語: C++
[4] 期限: 早ければ早いほど助かります。よろしくおねがいします。




435デフォルトの名無しさん:2005/12/05(月) 16:30:18
>>432
このプログラムは、再帰呼び出しの数が多分log(SIZE)に比例している
と思うので、SIZEが大きくなると、急激ではなくなだらかとは言え、増加します。

私の環境(VC7.1)では、SIZE=500000、LEN=9をエラーなく実行するためには、
プロパティ→リンカ→システム→スタックサイズの設定とスタックのコミットサイズを
それぞれ 120000000(約115MB程度) にして、ようやく動きました。ヒープの方は、
デフォルトの 1MB で十分でした。Debugモードでの話です。Releaseだとまた
違ってくるかも知れません。

425さんがLinux上のgccを使っておられるとの事なので、スタックサイズの
オプションを調べて、大きくしてみてください。

データを標準入力から入れるなら、fopen()とfclose()を取り除いて、fpを
stdin にすればそのまま行けます。
436デフォルトの名無しさん:2005/12/05(月) 16:39:20
>>435
最適化すると、ローカル変数が消費するスタックを大幅に減らせることは覚えておくといい。
437デフォルトの名無しさん:2005/12/05(月) 17:08:11
>>436
しかしそれに依存したプログラムを書くことはやめておくといい。
438デフォルトの名無しさん:2005/12/05(月) 17:20:10
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
四桁の乱数を発生させ(プレーヤーには見えない)12回以内で四桁の数字を
当てる、HIT&BLOWゲームを作りなさい。
乱数は、重複してはならないものとする。
数字をすべて当てたとき、"正解です"と表示、正解も表示し、
ゲームを終了する。
12回を超えたときは"残念でした"と表示、正解も表示し、ゲームを終了する。
乱数による四桁の数字の発生、入力された数字のHIT数とBLOW数の判定は
それぞれ関数として作成しなさい。
出力例 :
**** ←プレーヤー入力
???? ←見えない
HIT = 1 BLOW =1
[3] 環境
 [3.1] OS: Windows XP
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 2005年12月12日10:00まで
[5] その他の制限: 条件:特にありません。
ttp://www.harukitchen.com/programming/src/hit.c
↑近いのは、ここにありました。よろしくお願いします。
439デフォルトの名無しさん:2005/12/05(月) 17:34:23
[1]C言語
[2]
#include <stdio.h>

int main(void)
{
int i;
int vc[5] = {10, 20, 30, 40, 50};
int *ptr;

ptr = vc;
for (i = 0; i < 5; i++) {
printf("*(ptr+%d) = %d\n", i, *(ptr+i));
}

return 0;
}

課題1:int ptr[5]; に変更したプログラムを書く
課題2:int (*ptr)[5]; に変更したプログラムを書く
[3]環境
[3.1]Windows
[3.2]
[3.3]C
[4]できるだけ早くやってもらえれば光栄です。PCについて無知な者なのでお願いしますm(__)m
[5]文字列
440デフォルトの名無しさん:2005/12/05(月) 17:36:00
441デフォルトの名無しさん:2005/12/05(月) 17:39:16
CreateMainWindow(600,550,"クライアントとサーバーを通信する",hInstance,nCmdShow,(WNDPROC)WindowProc,
WS_OVERLAPPEDWINDOW,WS_EX_CONTROLPARENT | WS_EX_WINDOWEDGE,NULL,LoadIcon(NULL,MAKEINTRESOURCE(IDI_APPLICATION)));
これの最大化、最小化、閉じるボタンはどこを弄るんでしょうか。
弄り方も教えてくださいな。
442よしお:2005/12/05(月) 17:40:15
[1] 授業単元:C言語入門
[2] 問題文:2元配列ichi[5][5]を作成し2重ループにて配列にデータを入力する
プログラムを作成しなさい。入力の順番は[0][0],[0][1],[0][2]・・・[0][5],[1][0][1][1]・・・
となるようにループを作成しなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:Visual Windows for BC++
 [3.3] 言語: C言語
[4] 期限: [無期限]

443デフォルトの名無しさん:2005/12/05(月) 17:48:16
>>439 できるだけ早くやったので品質は知らないよん
課題1
#include <stdio.h>
int main(void)
{
int i;
int vc[5] = { 10, 20, 30, 40, 50 };
int ptr[5];
for (i = 0; i < 5; i++) {
ptr[i] = vc[i];
}
for (i = 0; i < 5; i++) {
printf("ptr[%d] = %d\n", i, ptr[i]);
}
return 0;
}

課題2
#include <stdio.h>
int main(void)
{
int i;
int vc[5] = { 10, 20, 30, 40, 50 };
int (*ptr)[5];
ptr = &vc;
for (i = 0; i < 5; i++) {
printf("(*ptr)[%d] = %d\n", i, (*ptr)[i]);
}
return 0;
}
444デフォルトの名無しさん:2005/12/05(月) 18:11:21
>>442
配列に何のデータいれていいかわからないからとりあえず1を入れといた。

#include<stdio.h>

int main(void)
{
int ichi[5][5];
int i, j;

for(i = 0; i < 5; i++){
for(j = 0; j < 5; j++){
ichi[i][j] = 1;
}
}

return 0;
}
445デフォルトの名無しさん:2005/12/05(月) 18:14:42
>>424
ありがとうございます。さっそく試してみます。
446デフォルトの名無しさん:2005/12/05(月) 18:17:37
>>440
ありがとうございます。
学籍番号を3桁以外で入力したときに、氏名入力に行かないようにしたいのですが、どの辺をいじればいいですか?
447よしお:2005/12/05(月) 18:18:26
>>444
ありがとうございます。
説明不足だったようですいません。
データは1か0を自分で1個づつ入力していきます。
それを[0][0]から[5][5]までの25個のデータを入力します。
448よしお:2005/12/05(月) 18:26:54
自分なりにやって出来たのですが表示が変なんでどこが悪いか
見てもらえませんか?

#include<stdio.h>

main(void){

int ichi[5][5];
int i=0;
int j=0;

for (i=0; i<5; i++){
printf("ichi[%d][%d]の値は?\n",&i,&j);
scanf("%d",&ichi[i][j]);
for(j=0;j<5;j++){
printf("ichi[%d][%d]の値は?\n",&i,&j);
scanf("%d",&ichi[i][j]);
}
}
return 0;
}

これで結果は

ichi[1245064][1245060]の値は?

って出てしまいます。なんでiの初期値がこんな数字になってしまうのでしょうか?
449デフォルトの名無しさん:2005/12/05(月) 18:36:07
>>443さん

どうもありがとうございました^^
450デフォルトの名無しさん:2005/12/05(月) 18:39:39
>>448
printfの&が原因じゃね?
451デフォルトの名無しさん:2005/12/05(月) 18:40:53
452デフォルトの名無しさん:2005/12/05(月) 18:43:18
>>446
do {printf("学籍番号: > ");
if((fgets(buf,40,stdin))==NULL)continue;}
while((sscanf(buf,"%d\n",&stu[i].id))!=1);



do {printf("学籍番号: > ");
if((fgets(buf,40,stdin))==NULL)continue;
if((sscanf(buf,"%d\n",&stu[i].id))!=1)continue;}
while(stu[i].id <= 100 || stu[i].id >= 1000);
453デフォルトの名無しさん:2005/12/05(月) 18:49:50
>>444,450
ありがとうございました。
&を消したらちゃんとできました。
454デフォルトの名無しさん:2005/12/05(月) 18:52:16
>>451
ありがとうございました。
455デフォルトの名無しさん:2005/12/05(月) 19:08:27
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
四桁の乱数を発生させ(プレーヤーには見えない)12回以内で
四桁の数字を当てる、HIT&BLOWゲームにおいて、
最大でも7回の質問で正解を導き出せることを証明せよ。

乱数は、重複してはならないものとする。

[3] 環境
 [3.1] OS: 特に指定なし
 [3.2] コンパイラ名とバージョン: 特に指定なし
 [3.3] 言語: C/C++
[4] 期限: 2005年12月16日10:00まで
[5] その他の制限: 条件:特に指定なし
456デフォルトの名無しさん:2005/12/05(月) 19:11:35
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語C
[4] 期限: (12月7日hh:17時まで
課題内容 encode.c decode.cの2種類のプログラム、暗号化、複合化を
作成せよ。
お願いします。
457デフォルトの名無しさん:2005/12/05(月) 19:13:50
458デフォルトの名無しさん:2005/12/05(月) 19:17:05
>>456
暗号化について詳しく
459デフォルトの名無しさん:2005/12/05(月) 19:18:43
>>457
違う問題なんですけど

あなた早押しクイズでお手つきするタイプですね
460デフォルトの名無しさん:2005/12/05(月) 19:20:05
>>432
実際の入力をupしてくれ
461デフォルトの名無しさん:2005/12/05(月) 19:23:52
>>456

/* encode.c */
int main(void){
char c;
while((c=fgetc(stdin))!=EOF){
fputc(((c << 4) & 0xF0) | ((c >> 4) & 0x0F), stdout);
}
return 0;
}

/* decode.c */
int main(void){
char c;
while((c=fgetc(stdin))!=EOF){
fputc(((c << 4) & 0xF0) | ((c >> 4) & 0x0F), stdout);
}
return 0;
}
462デフォルトの名無しさん:2005/12/05(月) 19:46:07
>>456
曖昧すぎるだろ
シーザー暗号でも実装しとけ
463デフォルトの名無しさん:2005/12/05(月) 19:50:43
なんでもいいから暗号化すればいいんじゃないの?
数ビットずつずらすのが一番らくだ
464デフォルトの名無しさん:2005/12/05(月) 20:01:58
何でもいいんだったらビット差とるだけでいいんでないの?
465デフォルトの名無しさん:2005/12/05(月) 20:11:03
それならXORだろ
466300:2005/12/05(月) 20:12:29
すっかり忘れ去られている>>300をどなたかお願いしますm(__)m
467もみお:2005/12/05(月) 20:17:37
この条件分岐をもっとスマートにしろと言われたのですがこれ以上スマートに出来るものでしょうか?現在地と目的地を入力して目的地がx-y座標でどの位置に
あるかを表示するプログラムです。

if(x1==x0 && y1==y0){
printf("移動ナシ");}
if(x1==x0 && y1!=y0){
if(y1-y0<0){
printf("目的地は[0][-]方面");}
else{
printf("目的地は[0][+]方面");}}
if(y1==y0 && x1!=x0){
if(x1-x0<0){
printf("目的地は[-][0]方面");}
else{
printf("目的地は[+][0]方面");}}
if(x1-x0>0 && x1-x0!=0 && y1-y0!=0){
if(y1-y0>0){
printf("目的地は[+][-]方面");}
else{
printf("目的地は[+][+]方面");}}
if(x1-x0<0 && x1-x0!=0 && y1-y0!=0){
if(y1-y0>0){
printf("目的地は[-][-]方面");}
else{
printf("目的地は[-][+]方面");}}
468デフォルトの名無しさん:2005/12/05(月) 20:31:24
int cube[3][3][3];
int i,j,k,d=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<3;k++)cube[i][j][k]=d++;

printf("%d\n",cube[1][1][1]);
469デフォルトの名無しさん:2005/12/05(月) 20:41:13
>>467
(x0, y0) に対して (x1, y1) がどっちにあるかを表示すればいいんだろ?
char *s = "-0+";
int xdir = (x0 < x1) + (x0 <= x1);
int ydir = (y0 < y1) + (y0 <= y1);
if (xdir == 1 && ydir == 1) {
printf("移動ナシ");
} else {
printf("目的地は[%c][%c]方面", s[xdir], s[ydir]);
}
470デフォルトの名無しさん:2005/12/05(月) 20:57:36
>>366
/*下のプログラムに
char cc[3];
int x,y,z;
を追加してアドレスを表示して変数と領域の関係を示しなさい*/
#include <stdio.h>
int nx;
int main(void){
static double dx;static int vc[3];
int x,y,z;char cc[3];
printf("nx のアドレス:%p\n",&nx);
printf("dx のアドレス:%p\n",&dx);
printf("vc[0]のアドレス:%p\n",&vc[0]);
printf("vc[1]のアドレス:%p\n",&vc[1]);
printf("vc[2]のアドレス:%p\n",&vc[2]);
printf("x のアドレス:%p\n",&x);
printf("y のアドレス:%p\n",&y);
printf("z のアドレス:%p\n",&z);
printf("cc[0]のアドレス:%p\n",&cc[0]);
printf("cc[1]のアドレス:%p\n",&cc[1]);
printf("cc[2]のアドレス:%p\n",&cc[2]);
return (0);}
/*教師はグローバル変数とかstatic変数とかのプログラムの終了まで開放されない変数と
ローカル変数は別々のまとまりとしてメモリに領域を確保される
とでも言いたいのか?*/
471デフォルトの名無しさん:2005/12/05(月) 20:58:09
>>366
/*下のプログラムの各変数のアドレスとポインター型変数の値を表示させなさい*/
#include <stdio.h>

void sum_diff_mu1(int n1,int n2,int *sum,int*diff,int *mu1){
*sum=n1+n2;
*diff=(n1>n2)?n1-n2:n2-n1;
*mu1=n1*n2;
printf("n1 のアドレスは:%p\n",&n1);
printf("n2 のアドレスは:%p\n",&n2);
printf("*sum の値は:%d\n アドレスは:%p\n",*sum,sum);
printf("*diff の値は:%d\n アドレスは:%p\n",*diff,diff);
printf("*mu1 の値は:%d\n アドレスは:%p\n",*mu1,mu1);}
int main(void){
int na,nb;
int wa,sa,seki;
puts("二つの整数を入力してください。");
printf("整数A:"); scanf("%d",&na);
printf("整数B:"); scanf("%d",&nb);
sum_diff_mu1(na,nb,&wa,&sa,&seki);
printf("和は%dです。\n差は%dです。\n積は%dです。\n",wa,sa,seki);
printf("整数A のアドレスは:%p\n",&na);
printf("整数B のアドレスは:%p\n",&nb);
printf("wa のアドレスは:%p\n",&wa);
printf("sa のアドレスは:%p\n",&sa);
printf("seki のアドレスは:%p\n",&seki);
return (0);}
472もみお:2005/12/05(月) 21:16:49
>>469
そうなんです。記述していただいたプログラム実行しましたが
ちょっとおかしい感じです。目的地が[5][1]で現在地が[4][3]の時の表示が
目的地は[+][0]方面と出てしまいます。
正しくは[+][+]方面なんですが・・・。
473デフォルトの名無しさん:2005/12/05(月) 21:20:27
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1211.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1212.txt ←例題っぽい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1213.txt ←データ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1214.txt ←データ
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005/12/8

fgetsは改行\nまで含んでしまうので、どうすればいいのかよく分かりません。
fscanfを使ってもうまくいきませんでした。よろしくお願いします
474デフォルトの名無しさん:2005/12/05(月) 21:22:05
その場合は[+][-]じゃねーの?
どちらにしろ正しく評価されてないようだがq
475デフォルトの名無しさん:2005/12/05(月) 21:23:32
[1] 授業単元: WEBプログラミング
[2] 問題文(含コード&リンク):
新規にユーザアカウントを追加するプログラミングを作りなさい。入力フォームは、HTMLで作成し、処理は、C言語で作りなさい。
また、追加されたユーザアカウントは、ファイルに書き込み(CVSまたはtxt)、
もしユーザが、他のユーザの同じユーザアカウントを登録するとエラーで返すように(例、このユーザは、常に存在しています。)
し、再度入力させる形式にしなさい。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (6.0等)
 [3.3] 言語: (C)
[4] 期限: ([2005年12月07日00:00まで] または [無期限] のいずれか)

HTMLで入力フォームは完成したのですが、それをC言語で処理するのが分かりません。


よろしくお願いします。
476デフォルトの名無しさん:2005/12/05(月) 21:24:10
>>472
全く同じプログラムを走らせた結果「目的地は[+][-]方面」と表示されたんだが。
477デフォルトの名無しさん:2005/12/05(月) 21:54:03
>>473
fgets(buf,len,stdin);
sscanf(buf,"%s\n",data);
478デフォルトの名無しさん:2005/12/05(月) 21:57:22
>>475
課題が意味不明すぎる
CGIプログラム作れって事か?それ以外でHTMLからCで書いたのを呼び出して
処理させる方法なんて思いつかないが
479デフォルトの名無しさん:2005/12/05(月) 22:01:01
HTMLからCの実行ファイルに引数つけて呼び出して、
csvファイルを操作すればいいんだろ?
480デフォルトの名無しさん:2005/12/05(月) 22:06:08
>>479
そんなことできたっけ?
481456:2005/12/05(月) 22:10:52
なんでもいいと言われたので困ってます。
数ビットずつずらすとどんなプログラムになるんでしょうか?
encodeとdecodeの二つに分けて実行するとtxtファイルが作成されてそこから
読み込むとのことなんですがよくわかりません。
482デフォルトの名無しさん:2005/12/05(月) 22:16:01
>>481
暗号化の解き1文字づつ文字コード+1して
複合化は1文字づつー1してくだけでよくね?
なんでもいいって言ったんだとことん楽してやろう
483デフォルトの名無しさん:2005/12/05(月) 22:17:43
>>456
その問題に物凄く見覚えがあるんだが。
もしかして銀杏臭い大学に通ってる?
484456:2005/12/05(月) 22:17:50
おねがいします。
485デフォルトの名無しさん:2005/12/05(月) 22:18:14
>>481
じゃあ、厳密には暗号じゃないけど base64 とかいかが?
486デフォルトの名無しさん:2005/12/05(月) 22:19:59
雨がよく降る某大学です。
487デフォルトの名無しさん:2005/12/05(月) 22:23:31
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):平方和分割問題
数が5であれば 5 = 1^2 + 2^2 とできるように、与えられた数をいくつかの数の平方和の形で表わすことができる場合がある。
このように、与えられた正整数 n に対して、n を平方和の形で表わすすべての方法を求めよ。(total number は 表すことが出来るパターンの合計数)
なお、使われる数はすべて異なるものとし ( 2 = 1^2 + 1^2 であるが、同じ 1 を使っているので要求を満たす平方和とみなさない)、順序が異なるだけのものは同じとみなす。
次の実行例が示すように、 n の値を入力してそのすべての平方和の形とその個数を出力し、
入力値が 0 で終了するプログラムが書け。

長いので分けます、すいません。
488487:2005/12/05(月) 22:24:01
実行例
n ? 5
1^2 + 2^2
total number = 1
n ? 2
total number = 0
n ? 9
3^2
total number = 1
n ? 65
1^2 + 8^2
2^2 + 3^2 + 4^2 + 6^2
2^2 + 5^2 + 6^2
4^2 + 7^2
total number = 4
n ? 0

また、このプログラムを利用して (必要ならば僅かな変更をして)、 1〜100 の中で最も平方和の形が多い数と、その数に対するすべての平方和の形を見つけよ。
(ヒント): * 最も平方和の形が多い数を求めるには、main 部分を変更するのがよい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 出来るだけ早いとありがたいです orz
[5] その他の制限: 条件:1〜100 の中で最も平方和の形が多い数と、その数に対するすべての平方和の形を見つけよ>バックトラックプログラミングを利用するとよい
489デフォルトの名無しさん:2005/12/05(月) 22:25:51
>>485
encodeとdecodeの二つといわれてtxtに書き出し
読み込みって意味がわかんないのでお願いします。
490デフォルトの名無しさん:2005/12/05(月) 22:35:23
XORでいいじゃん
491デフォルトの名無しさん:2005/12/05(月) 22:42:06
>>456
じゃあ>>482方式で。
encode(a,b):aに文字コード+1したやつをbに格納
decode(c,d):-1したのをうんぬん
mainは適当にやって。

void encode(char a[],char b[])
{
int c,i=0;
while((c=a[i])!=0){
b[i]=c+1;
i++;
}
b[i]=0;
}

void decode(char c[],char d[])
{
int n,i=0;
while((n=c[i])!=0){
d[i]=n-1;
i++;
}
d[i]=0;
}
492デフォルトの名無しさん:2005/12/05(月) 22:52:54
[1] 授業単元: プログラミングIII
[2] 問題文(含コード&リンク):
英文テキストファイルを入力して、指定されたファイル中にあるすべての文字について、指定された方法で文字の種類 (大文字、小文字) を変更しあるいは変更せずにそのまま、
標準出力に出力するプログラム chngcase を作ることを考える。
なお、アルファベット以外の文字はそのまま出力される。ファイル中には日本語文字を含まないと仮定してよい。
このプログラムは次のように起動することができ、その時の動作は説明文として記述されている。
* chngcase -h
次のメッセージを出力して終了する

chngcase [-hlu] [infile]
入力ファイルにある文字種を変更して標準出力に出力する
infile :入力ファイル (省略時は標準入力)
option
-h :このメッセージを出力
-l :大文字をすべて小文字に変換する
-u :小文字をすべて大文 * chngcase
標準入力からの入力テキストをそのまま標準出力に出力する。
* chngcase -l in.txt
in.txtファイルから入力し、すべての大文字を小文字に変換したものを標準出力に出力する。
* chngcase -u < in.txt > out.txt
in.txtファイルから入力し、すべての小文字を大文字に変換したものをout.txtに出力する。
( in.txt からの入力、および out.txt への出力は shell が行なってくれる。
プログラムから見ることのできるコマンドラインにはリダイレクト部分はなく、
従って chngcase -u に対する動作と同一で、標準入力から入力し標準出力に出力する形となる。)
* chngcase -lu
標準入力から入力し、すべての小文字を大文字に、すべての大文字を小文字に変換したものを標準出力に出力する。
[3] 環境
 [3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 2.9[3.3] 言語: C
[4] 期限: 2005年12月7日11:00まで
[5] その他の制限:大文字・小文字の判別、大文字・小文字への変換については、 ctype.h に含まれるライブラリ関数 islower, isupper, tolower, toupper を使うのがよい
493デフォルトの名無しさん:2005/12/05(月) 23:18:38
>>487
mainってどこだよ pgr
494デフォルトの名無しさん:2005/12/05(月) 23:24:43
>>489
じゃあ、base64 方式で。使い方間違えるとファイルをぶっ壊すので注意
# 作成日見たら 1996/11/26 だった…

encode.c:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1217.c
使い方: encode 元ファイル 符号書き出し用ファイル.txt

decode.c:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1218.c
使い方: decode 出力ファイル 符号読み込み用ファイル.txt
495487:2005/12/05(月) 23:25:39
mainとはプログラムのmainですか?話のメインですか?

問題内容については直ぐ下の>>484にあります。
問題文は全てコピペしてますので形式指定等は特にありません。
496デフォルトの名無しさん:2005/12/05(月) 23:30:57
>>487
(ヒント): * 最も平方和の形が多い数を求めるには、main 部分を変更するのがよい。
497デフォルトの名無しさん:2005/12/05(月) 23:34:29
誰かパケットの暗号解除組めよ。
498487:2005/12/05(月) 23:38:55
>>496
意味がわかりました、すいません。

また、最初に作ったプログラムを利用して (必要ならば僅かな変更をして)、
1〜100 の中で最も平方和の形が多い数と、その数に対するすべての平方和の形を見つけろ。
、という設問に対するヒントで最初に作ったプログラムのmain関数を指しているようです。
他には特にプログラムに対する制約はないのであまり気にしなくても大丈夫な部分になります。

484 ではなく >>487 でした o...rz
499デフォルトの名無しさん:2005/12/05(月) 23:44:15
>>497
とりあえず地球シミュレータ用意しろ
500485:2005/12/05(月) 23:44:59
>>494
すみませんが使い方がよくわかりません。
501デフォルトの名無しさん:2005/12/05(月) 23:45:03
おk
502デフォルトの名無しさん:2005/12/05(月) 23:45:13
>>498の日本語を三回読み直しても意味が解らないのは俺だけか?
「最初に作ったプログラム」って何のことだ?
503デフォルトの名無しさん:2005/12/05(月) 23:47:52
>>492 適当......
#include<stdio.h>
#include<ctype.h>
int main(int argc,char**argv){
 FILE*fp = NULL;
 int ch, toLower = 0, toUpper=0;
 while(*++argv)
  if(**argv=='-'){
   char*p=*argv;
   while(*++p)switch(tolower(*p)){
    break;case 'l':toLower=1;
    break;case 'u':toUpper=1;
    break;case 'h':
     puts(
     "chngcase [-hlu] [infile]\n"
     "入力ファイルにある文字種を変更して標準出力に出力する\n"
     "infile :入力ファイル (省略時は標準入力)\n"
     "option\n"
     "-h :このメッセージを出力\n"
     "-l :大文字をすべて小文字に変換する\n"
     "-u :小文字をすべて大文\n"
     );
    return 0;
   }
  }else if(!fp)fp = fopen(*argv,"r");
 if(!fp)fp=stdin;
 while((ch=getc(fp))!=EOF)
  putchar(toLower && isupper(ch) ? tolower(ch) :toUpper && islower(ch) ?  toupper(ch) : ch);
 return 0;
}
504487:2005/12/05(月) 23:54:26
わかりにくくてすいません…
設問は2問に分かれていて

(i)
最初に作ったプログラムとは
、数が5であれば 5 = 1^2 + 2^2 とできるように、与えられた数をいくつかの数の平方和の形で表わすことができる場合がある。
このように、与えられた正整数 n に対して、n を平方和の形で表わすすべての方法を求めよ。(total number は 表すことが出来るパターンの合計数)
なお、使われる数はすべて異なるものとし ( 2 = 1^2 + 1^2 であるが、同じ 1 を使っているので要求を満たす平方和とみなさない)、順序が異なるだけのものは同じとみなす。
次の実行例が示すように、 n の値を入力してそのすべての平方和の形とその個数を出力し、
入力値が 0 で終了するプログラム を指します
になります。(実行例は>>488

(ii) (i)で作成したプログラムを書き換え、そしてn = 1〜100 の中で最も平方和の形が多い数と、その数に対するすべての平方和の形を見つけよ。

これでも文章おかしいでしょうか(汗)
自分も意味を理解するのに時間が掛かりました orz
505デフォルトの名無しさん:2005/12/05(月) 23:56:12
分かりにくいなぁ
506485:2005/12/05(月) 23:59:10
>>491
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define IN_FILE "in.txt"
#define OUT_FILE "out.txt"

void encode(char a[105],char b[107])
{
int c,i=0;
while((c=a[i])!=0){
b[i]=c+1;
i++;
}
b[i]=0;
}

void decode(char c[105],char d[107])
{
int n,i=0;
while((n=c[i])!=0){
d[i]=n-1;
i++;
}
d[i]=0;
}

これでもしてみたんですが実行できません・・・
507487:2005/12/06(火) 00:01:38
すいませ…orz
元の問題文は更に意味がわからない感じです
もう少しわかり易い文章を書いてくれ、教授!
508デフォルトの名無しさん:2005/12/06(火) 00:03:13
>>504
十分分かるよ。
509デフォルトの名無しさん:2005/12/06(火) 00:07:04
>>500
encode.c をコンパイルしてできた実行ファイルを encode という名前だとすると、
実行ファイル名に続いて符号化したいファイル名、符号化された結果を書き
込みたいファイル名を空白で区切って並べるという意味です。

Linux 的にはこんな感じ

$ gcc -o encode encode.c
$ ./encode himitu.txt angou.txt
$ cat angou.txt

ZW5jb2RlLmMggvCDUoOTg3CDQ4OLgrWCxILFgquCvY7AjXODdINAg0ODi4LwIGVuY29kZSCC
xoKigqSWvJFPgr6CxoK3gumCxoFBCo7AjXODdINAg0ODi5a8gsmRsYKigsSVhI2GibuCtYK9
gqKDdINAg0ODi5a8gUGVhI2GibuCs4Lqgr2Mi4nKgvCPkYKrjZ6C3QqCvYKig3SDQINDg4uW
vILwi/OUkoLFi+aQ2ILBgsSVwILXgumCxoKigqSI05ahgsWCt4FCCgo
$
510デフォルトの名無しさん:2005/12/06(火) 00:07:54
511485:2005/12/06(火) 00:12:39
>>500
そうなのですか。今LinuxないんでWindowsで実行したらよくわかんなかったので・・・
Linuxでないと起動しないということですよね?すみませんでした。
512デフォルトの名無しさん:2005/12/06(火) 00:14:38
>>511
Windows でも動作しますよ、コンパイルができれば。
513510:2005/12/06(火) 00:14:55
FILE* fin = NULL;
がぬけてた
514485:2005/12/06(火) 00:17:08
>>512
実行したんですがどうやってプログラム終了するんですか?
コマンドプロンプトでの入力が延々と続くので・・・
515デフォルトの名無しさん:2005/12/06(火) 00:23:27
>>514
コマンドプロンプトが「出ずに」入力待ちが延々と続くということでしょうか。

もしそうなら、ファイルを二つ指定しなかったためにキーボードからデータを
読み込んでいるんだと思われます。

Ctrl キーを押しながら Z を押し、「^Z」が表示されたらエンターで終了しませんか?
516485:2005/12/06(火) 00:32:41
>>515
ありがとうございます。実行できました。
517485:2005/12/06(火) 00:49:50
うひゃ
518デフォルトの名無しさん:2005/12/06(火) 01:22:32
>>487
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1221.c

二つの課題にそれぞれ対応したmainが二つあるので、適当に編集してくれ。
519デフォルトの名無しさん:2005/12/06(火) 01:23:48
>二つの課題にそれぞれ対応したmainが二つ
二つの課題それぞれに対応したmainがある、ね。
520sage:2005/12/06(火) 01:25:17
標準入力から誕生日を入力し、対応する星座を出力するプログラムを作成せよ。このとき、日付の入力は[mm/dd]のような形式で行い、
正しく入力できたか確認するためにJan. 23のように出力する。ただし日付として間違っている場合はエラーメッセージを出力する。
また、星座名および月の名前を管理するために文字配列へのポインタの配列を用いることとする。
521デフォルトの名無しさん:2005/12/06(火) 01:47:32
522sage:2005/12/06(火) 01:52:00
[1] 授業単元:Software
[2] 問題文: 標準入力から誕生日を入力し、対応する星座を出力するプログラムを作成せよ。このとき、日付の入力は[mm/dd]のような形式で行い、
正しく入力できたか確認するためにJan. 23のように出力する。ただし日付として間違っている場合はエラーメッセージを出力する。
また、星座名および月の名前を管理するために文字配列へのポインタの配列を用いることとする。
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語C
[4] 期限: (12月6日:06時まで
課題内容 問題文に同じ
523デフォルトの名無しさん:2005/12/06(火) 02:14:49
524デフォルトの名無しさん:2005/12/06(火) 02:18:27
>>423でスルーされてしまったのでもういちど・・・
[1] 授業単元: プログラム入門
[2] 問題文(含コード&リンク):次のプログラムの配列版とポインタ版を作成せよ。ただし各関数は
指定された書式に従って呼び出されるものとし、それにあわせて関数の戻り値および
引数を設定すること
・点の座標値(x,y)が要素数2の配列で管理されるとき、2つの点a,bを結ぶ直線上
にあるそれらの中点cの座標を求める関数midp()を定義せよ。x,yは標準入力から
入力するとする。
(配列版)書式:void midp(double a[] , double b[] , double c[])
(ポインタ版)書式:void midp(double *a , double *b , double *c)

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:12月5日夜8時

長文で申し訳ないですが、よろしくおねがいします
525デフォルトの名無しさん:2005/12/06(火) 02:22:51
標準入力から誕生日を入力し、対応する星座を出力するプログラムを作成せよ。
このとき、日付の入力は[mm/dd]のような形式で行い、
正しく入力できたか確認するためにJan. 23のように出力する。
ただし日付として間違っている場合はエラーメッセージを出力する。
また、星座名および月の名前を管理するために文字配列へのポインタの配列を用いることとする。
526デフォルトの名無しさん:2005/12/06(火) 02:25:16
>>524
配列は
void midp(double a[], double b[], double c[])
{
int i;
for( i = 0 ; i < 2 ; i++ ) c[i] = (a[i] + b[i]) * 0.5;
}
で、ポインタは
void midp(double *a, double *b, double *c)
{
int i;
for( i = 0 ; i < 2 ; i++ ) c[i] = (a[i] + b[i]) * 0.5;
}
でもいいけど
void midp(double *a, double *b, double *c)
{
int i;
for( i = 0 ; i < 2 ; i++, a++, b++, c++ ) *c = (*a + *b) * 0.5;
}
が想定解だろう。
527デフォルトの名無しさん:2005/12/06(火) 02:26:56
>>520=522=525
ウザい。連投するくらいなら12星座だか13星座(蛇遣い座入り)の日付の範囲でも探して提示しとけ。
528デフォルトの名無しさん:2005/12/06(火) 02:30:49
うざいんでもう誰もやりませんw
529デフォルトの名無しさん:2005/12/06(火) 04:44:48
標準入力から誕生日を入力し、対応する星座を出力するプログラムを作成せよ。
このとき、日付の入力は[mm/dd]のような形式で行い、
正しく入力できたか確認するためにJan. 23のように出力する。
ただし日付として間違っている場合はエラーメッセージを出力する。
また、星座名および月の名前を管理するために文字配列へのポインタの配列を用いることとする。
530デフォルトの名無しさん:2005/12/06(火) 05:21:09
ttp://hp.vector.co.jp/authors/VA014370/jscript/astro/about13.htm
【星座と誕生日の対応表】

星座名 12 星座 13 星座
牡羊座 3/21 - 4/19 4/19 - 5/13
牡牛座 4/20 - 5/20 5/14 - 6/20
双子座 5/21 - 6/21 6/21 - 7/19
蟹座 6/22 - 7/22 7/20 - 8/10
獅子座 7/23 - 8/22 8/11 - 9/15
乙女座 8/23 - 9/22 9/16 - 10/29
天秤座 9/23 - 10/23 10/30 - 11/22
蠍座 10/24 - 11/22 11/23 - 11/29
蛇使い座 x 11/30 - 12/17
射手座 11/23 - 12/22 12/18 - 1/18
山羊座 12/23- 1/19 1/19 - 2/15
水瓶座 1/20 - 2/18 2/16 - 3/10
魚座 2/19 - 3/20 3/11 - 4/18

531デフォルトの名無しさん:2005/12/06(火) 06:26:52
#include <stdio.h>

#define MAX_BUF 1024

struct _month {
char name[4];
int days;
};

struct _period {
char start[5];
char end[5];
};

struct _hscope {
char name[7];
struct _period p12;
struct _period p13;
};

532デフォルトの名無しさん:2005/12/06(火) 06:27:16
int main(void)
{
struct _month m[] = {
{"Jan", 31}, {"Feb", 29}, {"Mar", 31}, {"Apr", 30},
{"May", 31}, {"Jun", 30}, {"Jul", 31}, {"Aug", 31},
{"Sep", 30}, {"Oct", 31}, {"Nov", 30}, {"Dec", 31}
};
struct _hscope h[] = {
{"牡羊", {"0321", "0419"}, {"0419", "0513"}},
{"牡牛", {"0420", "0520"}, {"0514", "0620"}},
{"双子", {"0521", "0621"}, {"0621", "0719"}},
{"蟹", {"0622", "0722"}, {"0720", "0810"}},
{"獅子", {"0723", "0822"}, {"0811", "0915"}},
{"乙女", {"0823", "0922"}, {"0916", "1029"}},
{"天秤", {"0923", "1023"}, {"1030", "1122"}},
{"蠍", {"1024", "1122"}, {"1123", "1129"}},
{"蛇使い", {"0000", "0000"}, {"1130", "1217"}},
{"射手", {"1123", "1222"}, {"1218", "0118"}},
{"山羊", {"1223", "0119"}, {"0119", "0215"}},
{"水瓶", {"0120", "0218"}, {"0216", "0310"}},
{"魚", {"0219", "0320"}, {"0311", "0418"}}
};

char buff[MAX_BUF];
int month, day;
int result;

533デフォルトの名無しさん:2005/12/06(火) 06:27:50
do{
fprintf(stdout, "誕生日を月/日の形式で入力してください。 mm/dd = ");
fgets(buff, MAX_BUF, stdin);
result = sscanf(buff, "%d/%d", &month, &day);
if(result != 2){
fprintf(stdout, "入力の形式が不正です。\n");
result = 0;
continue;
}
if(month < 1 || month > 12){
fprintf(stdout, "月は 1〜12 までの数字を入力してください。\n");
result = 0;
continue;
}
if(day < 1 || day > m[month - 1].days){
fprintf(stdout, "日は 1〜%d までの数字を入力してください。\n",
m[month - 1].days);
result = 0;
continue;
}
result = 1;
}while(!result);

sprintf(buff, "%02d%02d", month, day);
fprintf(stdout, "%s.%3d [%s]\n", m[month - 1].name, day, buff);

534デフォルトの名無しさん:2005/12/06(火) 06:28:23
for(result = 0; result < sizeof(h) / sizeof(struct _hscope); result++){
if((strcmp(h[result].p12.start, h[result].p12.end) < 0
&& strcmp(h[result].p12.start, buff) <= 0
&& strcmp(h[result].p12.end, buff) >= 0)
|| (strcmp(h[result].p12.start, h[result].p12.end) > 0
&& (strcmp(h[result].p12.start, buff) <= 0
|| strcmp(h[result].p12.end, buff) >= 0))){
fprintf(stdout, "12星座は %s座\n", h[result].name);
}
if((strcmp(h[result].p13.start, h[result].p13.end) < 0
&& strcmp(h[result].p13.start, buff) <= 0
&& strcmp(h[result].p13.end, buff) >= 0)
|| (strcmp(h[result].p13.start, h[result].p13.end) > 0
&& (strcmp(h[result].p13.start, buff) <= 0
|| strcmp(h[result].p13.end, buff) >= 0))){
fprintf(stdout, "13星座は %s座\n", h[result].name);
}
}
}

535デフォルトの名無しさん:2005/12/06(火) 06:30:13
>>522
>[4] 期限: (12月6日:06時まで

釣りっぽいんだが作ったよ
536デフォルトの名無しさん:2005/12/06(火) 06:43:23
4レスも使うくらい長くなるなら素直にうpろだ使おうぜ
537デフォルトの名無しさん:2005/12/06(火) 07:07:40
>>524
(配列版)書式:void midp(double a[] , double b[] , double c[]){
c[0]=(a[0]+b[0])/2.0; c[1]=(a[1]+b[1])/2.0;
}
(ポインタ版)書式:void midp(double *a , double *b , double *c){
*c=(*a+*b)/2.0; *(c+1)=(*(a+1)+*(b+1))/2.0;
}
538デフォルトの名無しさん:2005/12/06(火) 07:09:32
1] 授業単元: プログラム演習II
[2] 問題文(含コード&リンク):
カレントフォルダからの相対パスを文字列でユーザーに入力させ
指定したフォルダ内のファイル一覧を出力するコードを作れ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++.net2003
 [3.3] 言語: C++
[4] 期限: 12/06 11:15まで
[5] その他の制限:
VC++.net2003に標準で入ってないライブラリ(たとえばBoostとか)は不可

朝まで粘っては見ましたがうまくいかず・・・どうかお願いします。
539デフォルトの名無しさん:2005/12/06(火) 07:11:27
めどいさんなので、マイクロソフトに助けてもらってくれ。
ttp://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findfirstfile.htm
540デフォルトの名無しさん:2005/12/06(火) 07:22:07
1] 授業単元: プログラム演習
[2] 問題文(含コード&リンク):
data.txtから20個の整数を読み込んで、それらを配列に格納
せよ。その配列の全要素を逆順にoutput.txtへ出力せよ。こ
の時、各要素は空白で区切られるものとする。
ttp://up.viploader.net/mini/src/viploader1073.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC++.
 [3.3] 言語: C
[4] 期限: 12/06 0830
[5] その他の制限:



541デフォルトの名無しさん:2005/12/06(火) 07:28:13
int i,a[20];
for(i=0;i<20;i++)fscanf(infp,"%d",&a[i]);
for(i=19;i>=0;i--)fprintf(outfp,"%d",a[i]);
542デフォルトの名無しさん:2005/12/06(火) 07:50:33
543デフォルトの名無しさん:2005/12/06(火) 07:52:18

番号間違えた
あっちの貼り方も間違うし
漏れアフォだな orz

再々あげ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1223.c
544デフォルトの名無しさん:2005/12/06(火) 07:53:30
>>540
for(count=0;count<READ;count++){
fscanf(fp1,"%d",&buff[count]);
printf("%d",buff[count]);
}
for(count=READ-1;count>=0;count--){
fprintf(fp2,"%d ",buff[count]);
printf("%d",buff[count]);
}
何も足さない、何も引かない、それがVIPクオリティ。
545デフォルトの名無しさん:2005/12/06(火) 07:56:44
>>544 fprintfのときにミスってるようです
546デフォルトの名無しさん:2005/12/06(火) 09:24:08
[1] 授業単元:情報基礎実習
[2] 問題文(含コード&リンク):キーボードから文字列と一つの検索文字を入力する。
このとき、入力した文字列の中にある、検索文字の個数を表示するプログラムを作成せよ。ただし、プログラムの関数の定義部分以外は、以下にあげるものを変更せずそのまま利用すること。
また、プログラム中に出てくる関数「search_letter」は、第一引数で与えた文字列へのポインタで示される文字列の中から、
第二引数で与えら得れた文字の個数を計算する関数である。なお、このプログラムでは大文字、小文字を区別して処理する。

#include <stdio.h>

int search_letter( char *str, char letter );

int main( void ) {
int cnt;
char in[100];
char ch;

printf("Input a string: ");
gets( in );
printf("Input a letter: ");
scanf("%c", &ch);

cnt = search_letter( in, ch );

printf("# of letter '%c' is %d\n", ch, cnt);

return 0;
}
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C言語
[4] 期限: 12月7日9:00まで
課題で出されたのですがさっぱりわからなくて、何卒よろしくおねがいします。
547デフォルトの名無しさん:2005/12/06(火) 09:50:29
cube[3][3][3]という3次元配列に0〜26までの数字を順に入れてcube[1][1][1]を
の値を出力するのに、自分で
#include<stdio.h>
int main(){
**cube[3][3],
cube0[3][3]={"0,1,2,3,4,5,6,7,8"},
cube1[3][3]={"9,10,11,12,13,14,15,16,17"},
cube2[3][3]={"18,19,20,21,22,23,24,25,26"};

cube[0]=cube0; cube[1]=cube1; cube[2]=2;
printf("%d" ,cube[1][1][1],cube);
}
と作ってみたんですけど、成功はするんですけど、画面に数字が出力されません。どこがおかしいでしょうか??
548ああああ:2005/12/06(火) 09:50:39
#include<stdio.h>
main(){
int x[]={-5,8,6,-3,0,-2,2,9,0,7};
int i,c,d,s;
double ave;
c=0,d=0,s=0;
for(i=0;i<10;i++){
{if(x[i]>0){c++;}
};};
for(i=0;i<10;i++){
{if(x[i]<0){d++;}
};};
printf("正の数 %d\n",c);
printf("負の数 %d\n",d);
for(i=0;i<10;i++){
s=s+x[i];}
ave=s/8.0;
printf("ave %f\n",ave);
return 0;
}
549デフォルトの名無しさん:2005/12/06(火) 10:05:15
微分の数値計算です。減衰振動をルンゲ・クッタ法で数値計算するプログラムです。
振幅が最初の1/2になるときの時間を求めたいのですが、どうもうまく行きません。
できれば早急に指摘お願いします…
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1224.txt
550デフォルトの名無しさん:2005/12/06(火) 10:45:46

int search_letter(const char* str, char c) {
int count = 0;
while(*str) if(*str == c) count++;
return count;
}
551デフォルトの名無しさん:2005/12/06(火) 12:11:22
552524:2005/12/06(火) 12:30:04
>>526 >>537
すみませんが、main文の部分をどう構築すれば良いか教えていただけないでしょうか・・・?
553デフォルトの名無しさん:2005/12/06(火) 12:45:23
>>549
まず計算が間違ってる
  k[4]=dxdt(v+l[3]*0.5*h);
  l[4]=dvdt(x+k[3]*0.5*h,v+l[3]*0.5*h);

  k[4]=dxdt(v+l[3]*1.0*h);
  l[4]=dvdt(x+k[3]*1.0*h,v+l[3]*1.0*h);

 return -(omega*omega*x)+(6.0*pai*r*nensei*v/m);
ホントに減衰するの?

あと刻み幅h=1.0とかちょっとひどすぎる。0.1とかに

あとはmax,minを新たに設けて
xがmaxより大きかったらmax更新
xがminより小さかったらmin更新で
max-minが特定の値になったらループ抜けるとか
554553:2005/12/06(火) 12:48:52
>>553
>あとはmax,minを新たに設けて 
あたりは勘違いです。もうちょっと工夫が必要

555デフォルトの名無しさん:2005/12/06(火) 13:03:43
>>549
double dxdt(double v){
return v;
}
これって無駄じゃない?
556デフォルトの名無しさん:2005/12/06(火) 14:31:50
将来の拡張考えて置いてあるんだよ
557デフォルトの名無しさん:2005/12/06(火) 14:44:34
たまたま計算対象の偏導関数 ∂x/∂t が v と等しいんでないの?
558デフォルトの名無しさん:2005/12/06(火) 15:20:16
[1] 授業単元: C言語
[2] 問題文:
文字列"ABCDEFG"がある
開始位置、終了位置を入力させ、'*'一文字に置きかえ表示させよ
置きかえた文字列は、一旦、変数に入れる事

(例)開始位置=1 終了位置=4
"A*EFG"
(例)開始位置=0 終了位置=0
"*ABCDEFG"

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C言語
[4] 期限: [05/12/8]

先生、お願いします!!
559デフォルトの名無しさん:2005/12/06(火) 15:38:18
>>558
ポインタは習ってんの?
560558:2005/12/06(火) 15:42:00
>>559
ポインタ習いました
561デフォルトの名無しさん:2005/12/06(火) 15:51:54
[1] プログラミング論U
[2] 問題
コンテナを利用して,次のようなプログラムを作ってみよう。

入力: 英語で書かれた文書 (テキストファイル)。
出力:入力に含まれる単語をアルファベット順に並べ替えて出力
注意: 大文字と小文字は区別しない(すべて小文字として処理する)。
   同じ単語を2度以上出力しない。
  ピリオドなど アルファベット以外の文字は表示されないように削除する。

入力ファイル|sample.txt|
『The specification defines a detailed configuration structure in ROM that
the boot up processor can read to find the full configuration of the
processors and busses. It also defines a procedure for starting up the
other processors.』

ヒント
string 型を要素とするコンテナを使います。
 文字 (char 型の値) がアルファベットかどうか判定するには C の文字関
数 isalpha が使えます。 アルファベットを小文字に変換するには, 関数tolower が使えます。

[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc 2.9
[3.3] 言語:C++
[4] 期限: 2005年12月9日12:30まで
[5] その他の制限:初心者です。

宜しくお願いします。
562デフォルトの名無しさん:2005/12/06(火) 16:12:01
>>561
大文字で入った文字も小文字で出力するの?
563561:2005/12/06(火) 16:15:38
>>562
そうです。
大文字を関数tolower を使って小文字にしなさいと言われました。
564デフォルトの名無しさん:2005/12/06(火) 16:27:45
#include <iostream>
#include <fstream>
#include <string>
#include <set>
#include <cctype>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;
// gcc のバグ避け
struct isalpha_ : unary_function<char, bool> {
  bool operator()(char c) const { return isalpha(c); }
};
struct tolower_ : unary_function<char, char> {
  char operator()(char c) const { return tolower(c); } 
};
int main() {
  ifstream ifs("sample.txt");
  set<string> S;
  for (string s; ifs >> s; ) {
    // VC7 以上ならこっちで通る
    // transform(s.begin(), s.end(), s.begin(), tolower);
    // s.erase(remove_if(s.begin(), s.end(), not1(ptr_fun(isalpha))), s.end());
    transform(s.begin(), s.end(), s.begin(), tolower_());
    s.erase(remove_if(s.begin(), s.end(), not1(isalpha_())), s.end());
    if (s.length() > 0) S.insert(s);
  }
  copy(S.begin(), S.end(), ostream_iterator<string>(cout, "\n"));
}
565561 ◆.yJUiUE8UM :2005/12/06(火) 16:27:49
【質問テンプレ】
[1] 授業単元:プログラム演習3
[2] 問題文(含コード&リンク):
(1)これまでのプログラムを参考にリストの最後にデータを追加するaddToTail関数を作成しなさい。
Entry *addToTail(Entry *top,char *name,char *tel);
さらに同じ名前の人のデータが登録されていたら要素を追加するのではなく、データ(電話番号)を更新するようにしたaddData関数を作成してみよう。
Entry *addData(Entry *top,char *name,char *tel);
又addToHead(main関数に書いてあります)の代わりにaddData関数を使うようにmain関数を書き換えてテストせよ。

(2)このプログラムは動かすたびに新しくデータを入れ直さなければならないので、
プログラム終了前にファイルを記録し、次回起動時にはファイルからデータを読み込めると便利である。
次のような方針でファイルを読み書きする関数を作ってみよう。
void writeData(char *filename,Entry *top);
1.filenameで指定された名前のファイルを書き込みでオープン
2.リストが終了でなければオープンしたファイルに氏名と電話番号を読み込む。
3.リストの次の要素をたどり、2から繰り返す。

Entry *readData(char *filename);
1.filenameで指定された名前のファイルを読み込みでオープン
2.ファイルの終でなければ、オープンしたファイルから氏名と電話番号を読み込む。
3.addToHead関数を使ってデータをリストに追加する。
4.2から繰り返す
5.作成されたリストの先頭のポインタを関数値として返す。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc 2.9
 [3.3] 言語: C
[4] 期限: 2005年12月9日17:30まで
[5] その他の制限:とくになし
566561 ◆.yJUiUE8UM :2005/12/06(火) 16:28:35
(>>561の続きです)問題文中のmain関数は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1225.c
にうpしました。もしよろしければ宜しくお願いします。
567デフォルトの名無しさん:2005/12/06(火) 16:29:57
>>566 561??
568564:2005/12/06(火) 16:33:34
>>564>>561
569名無し:2005/12/06(火) 16:34:15
>>149のプログラムなのですが
11行目:error: invalid lvalue in assignmentというエラーが出ます。
どのようにしたらよいですか?
570561:2005/12/06(火) 16:37:07
>>564

こんなに早く教えて頂き、本当にありがとうございます。
571564:2005/12/06(火) 16:37:15
確認するの忘れてたけど、例えば 「ho3ge」 とかいう入力が入ってたら、それはどう出力したらいいの?
今はこれから 3 を erase して「hoge」にして出力してるんだけど。
572デフォルトの名無しさん:2005/12/06(火) 16:38:39
>>569
10行目11行目を以下のように変更:
for (; c = (a+b)/2, f(c) != 0 && fabs(a-b) > EPS; )
if (f(a)*f(c) < 0) b = c; else a = c;
後学のために gcc のバージョンを教えてください。手元の 3.4.4 では通ってしまうので。
573561 ◆.yJUiUE8UM :2005/12/06(火) 16:40:25
>>561ではなく>>565でした。。
すみません。
また補足したmain関数を
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1226.c
にうpしなおしました。
何度もすみませんでした。
574561:2005/12/06(火) 16:47:29
>>571
c01% _a.out < sample.txt_
a
also
and
boot
busses
can
configuration
defines
detailed
find
for
full
in
it
of
other
procedure
processor
processors
read
rom
specification
starting
structure
that
the
to
up
575名無し:2005/12/06(火) 16:48:01
>>572
学校のなのでバージョンとか今はわかりません。
わかり次第、報告します。
576561:2005/12/06(火) 16:48:34
>>571

うえの>>574
が求められている実行結果の例です。
577デフォルトの名無しさん:2005/12/06(火) 16:50:45
578デフォルトの名無しさん:2005/12/06(火) 16:53:24
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文(含コード&リンク):
課題2
ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または数字である文字列を抽出し、辞書順に並べ、その文字列が何行目に現れるか列挙するプログラムを作成したい。以下の設問にしたがって回答しなさい。
http://edu.net.c.dendai.ac.jp/ad/1/2005/kadai.html

なお辞書順とは、文字列の比較法の一つで、文字列の先頭から順に比較していき、最初に異なった文字の大小関係とします。但し、途中で文字が無くなった場合は無い方が小さいとします。


0<9<A<Z<a<z
aaa<aaaa
aaa0<aaa1
[3] 環境
 [3.3] 言語: C/C++/Javaのいずれか、WindowsのAPI使用不可
[4] 期限: [2005年12月20日まで]

よろしくお願いします
579デフォルトの名無しさん:2005/12/06(火) 16:53:30
[1] 授業単元:情報工学実験(TCP/IPネットワークプログラミング)
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1227.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1228.c
上のプログラムにselectシステムコールを使って非同期入出力を実装する
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年12月15日まで
[5] その他の制限:
selectシステムコールの使い方をいろいろ調べてみましたがよくわかりませんでした。
教えてもらえますでしょうか。
580デフォルトの名無しさん:2005/12/06(火) 16:55:01
ま た 電 気 大 か

いや、悪いわけではないけれど
581デフォルトの名無しさん:2005/12/06(火) 16:56:27
ワロッシュ。坂本先生ご指名のようだな
582デフォルトの名無しさん:2005/12/06(火) 16:57:24
>>561
#include <string>
#include <vector>
#include <cctype>
#include <cstdio>
#include <algorithm>

using namespace std;

int main()
{
  vector<string>        sv;
  FILE*                 fp = fopen("sample.txt", "r");
  char                  buf[1024];
  while (fscanf(fp, "%[^a-zA-Z]", buf), fscanf(fp, "%[a-zA-Z]", buf) == 1) {
    string      s;
    transform(buf + 0, buf + strlen(buf), back_inserter(s), (tolower));
    sv.push_back(s);
  }
  fclose(fp);
  sort(sv.begin(), sv.end());
  copy(sv.begin(), unique(sv.begin(), sv.end()),
       ostream_iterator<string>(cout, "\n"));
}
583デフォルトの名無しさん:2005/12/06(火) 17:11:55
>>558
暇な高校生が脳内コーディング
汚いソースで晒すのは恥ずかしいが一応動くとは思うので、適当に自分でいじってから提出してくれ
#include<stdio.h>
#define kArraySize (256)
int main (void)
{
int i;
int start, end;
char str[kArraySize]="ABCDEFG";
char tmp[kArraySize];
char *p=str,*q=tmp;

printf("開始位置を入力");
start=(int)(getchar()-'0');
getchar();

printf("終了位置を入力");
end=(int)(getchar()-'0');
getchar();

for( i=0; *p!='\0' && i < kArraySize; i++ ){
if( i == start ) *q++='*';
if( i < start ) *q++=*p++;
else if( i < end ) p++;
else *q++=*p++;
}
*q=\0;
printf("%s\n",tmp);

return 0;
}
584デフォルトの名無しさん:2005/12/06(火) 17:13:20
お前ら下手に出てれば調子に乗ってシカトしやがって。
こんなんだからいつまで経ってもうだつの上らないんだよ。こんな時間にお人好しになってるのもお前らニートだからか(pgr
585デフォルトの名無しさん:2005/12/06(火) 17:16:02
>>584
どれをシカトした?流れが速いときは見逃されることが多々あるので指定どぞ
586デフォルトの名無しさん:2005/12/06(火) 17:17:00
>>585
ほっとけ
587デフォルトの名無しさん:2005/12/06(火) 17:17:43
588デフォルトの名無しさん:2005/12/06(火) 17:19:13
589デフォルトの名無しさん:2005/12/06(火) 17:19:20
>うだつの上がらないんだよ

文法おかしいぞ
590582:2005/12/06(火) 17:24:10
>>574を見てなかった。修正
12行目
FILE* fp = fopen("sample.txt", "r");
と19行目
fclose(fp);
を削除。
14行目
while (fscanf(fp, "%[^a-zA-Z]", buf), fscanf(fp, "%[a-zA-Z]", buf) == 1) {

while (scanf("%[^a-zA-Z]", buf), scanf("%[a-zA-Z]", buf) == 1) {
に変更
ついでにtolowerの()は不要

gccのto-関数やis-関数のバグは
実装が関数形式マクロなのが原因。
>>564(のコメントアウト部分)や>>582のような使い方ならバグは出ない。
591デフォルトの名無しさん:2005/12/06(火) 17:31:11
[1] プログラミング演習U
[2] 問題文:
隣接リストを使った深さ優先探索プログラムを作成しなさい。

実行例

c01% _a.out < G1 _ 0 -> 1 1 -> 3 3 -> 5 5 -> 6 6 -> 4 4 -> 2
c01% _a.out< G2 _ 0 -> 1 1 -> 3 3 -> 2 4 -> 6 6 -> 5

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 2.9
 [3.3] 言語:C++
[4] 期限: 12月7日17時
[5] その他の制限:初心者
592デフォルトの名無しさん:2005/12/06(火) 17:32:19
>>589
うだつの上がらないなんなのか気になるところだ
593デフォルトの名無しさん:2005/12/06(火) 17:32:38
>>591
G1, G2 をうぷろだにうp
594558:2005/12/06(火) 17:35:24
>>583
おお!ありがとうございます!
595デフォルトの名無しさん:2005/12/06(火) 18:31:44
[1] 授業単元:コンピュータ演習
[2] 問題文(含コード&リンク):
1.複数のデータを入力し、入力したデータの平均値を計算できるプログラムを作成せよ。
  入力する値:データの数、データ(データの数分)
  例 5つのデータがあるとき
  入力
   データ数=5
   データ1=2.6 データ2=6.3 データ3=9.1 データ4=-6.1 データ5=3.7
  出力
   平均値=3.12
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: [2005年12月08日23:00まで]
[5] その他の制限:for文のみ使用。配列・ポインタはまだ習っていません。
596デフォルトの名無しさん:2005/12/06(火) 18:37:39
for文のみでどうやってデータを入力しろというのだ……
597デフォルトの名無しさん:2005/12/06(火) 18:41:14
いや、べつにできるだろ
scanfとかも使っちゃいけないと思ってるならお前があほなだけだ
598デフォルトの名無しさん:2005/12/06(火) 18:44:42
>>595
脳内コンパイルだが、多分動く。

#include <stdio.h>

int main(void)
{
int n, i;
double in, total;
char buf[256];

printf("the number of data ?> ");
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d", &n);

total = 0;
for(i = 0; i < n; i++){
printf("data %d> ", i);
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%lf", &in);
total += in;
}

printf("average = %lf\n", total / n);

return 0;
}
599デフォルトの名無しさん:2005/12/06(火) 18:45:23
>>595
#include<stdio.h>
int main(void){
int i,n;
double data,heikin=0.0;
printf("データの個数を入力して:");
scanf("%d",&n);
for(i=0;i<n;i++){
printf("%d個目のデータ入力:",i+1);
scanf("%lf",&data);
heikin = (heikin*i+data)/(i+1);
}
printf("平均は%fです\n",heikin);
return 0;
}
600デフォルトの名無しさん:2005/12/06(火) 18:57:04
#include <stdio.h>

int main(void)
{
int i,kosuu=0;
float nyuryoku,gokei=0;

printf("個数を入力:");
scanf("%d",&kosuu);

for(i=0;i<kosuu;i++)
{
printf("データ%d:",i+1);
scanf("%f",&nyuryoku);
gokei += nyuryoku;
}

printf("平均値:%f",gokei/kosuu);

return 0;
}

一応VS2003でコンパイル・実行うまくいった。
601595:2005/12/06(火) 19:03:46
>>596
すみません。説明不足でした。処理の繰り返しにはwhile文やdo-while文
は使わないということです。まだ習っていないので・・・
>>598
>>599
>>600
こんなに早く教えてくださり、本当にありがとうございます!!
みなさんのプログラムを参考にして、自分なりに作ってみます。
602デフォルトの名無しさん:2005/12/06(火) 19:37:29
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1232.txt

>>473の続きです。>>473はなんとかできました。
でもこれはどうすればいいのか分かりません。ポイントだけでもいいのでお願いします。
603デフォルトの名無しさん:2005/12/06(火) 19:42:50
>>602
strtok使用してもok?
604デフォルトの名無しさん:2005/12/06(火) 19:43:43
あ、一応書いておくか
>>602
>>1 半世紀嫁。
605デフォルトの名無しさん:2005/12/06(火) 19:51:08
>>603
なんでもおkです
>>604
すいません
606デフォルトの名無しさん:2005/12/06(火) 20:15:34
>>602 がんばれ。こんな感じであとはオリジナリティ加えて拡張してくれ。

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

int main(int argc, char* argv[])
{
FILE *infp;
char buf[1000],buf2[1000];
int n = atoi(argv[1]);
infp = fopen(argv[2],"r");
fgets(buf,sizeof(buf),infp);
n=2;
do{
int i,j;
j=0; /* 何個目? */
for(i=0;i<strlen(buf);i++){
if(buf[i]==' '){ /*ここをstrncmpしたりすると仕切り文字拡張が可能 */
j++;
}
if(j==n) break; /* 目標個数見つかったです */
}
if(j==n){ /* n回ちゃんと見つかった */
sscanf(&(buf[i]),"%s",buf2);/* 最初のカラムだけあればいい */
printf("%s\n",buf2);
}
fgets(buf,sizeof(buf),infp);
}while(!feof(infp));
return 0;
}
607デフォルトの名無しさん:2005/12/06(火) 20:16:31
>>606
n=2はdebug用に書いたので削除してくれ。
608デフォルトの名無しさん:2005/12/06(火) 20:54:20
unsigned char image_in[999][999]という配列分のメモリを確保するにはどうしたらいいのでしょうか?

609デフォルトの名無しさん:2005/12/06(火) 20:55:34
>>608
static を付けるのがはやってるらしいぞ、この板では。
610デフォルトの名無しさん:2005/12/06(火) 20:57:12
ヒープに配置するのが普通だ
611デフォルトの名無しさん:2005/12/06(火) 21:14:21
>>609 ×板 ○スレ
612デフォルトの名無しさん:2005/12/06(火) 21:19:45
[1] 授業単元: セキュリティ
[2] 問題文(含コード&リンク):
換字式暗号(Caesar暗号)・XOR暗号以外の方法で、独自の暗号化・複合化プログラムを作ること。
また、どのような暗号化の方法を使ったかを簡単に説明すること。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C言語
[4] 期限:12月7日19時まで

お願いします
613デフォルトの名無しさん:2005/12/06(火) 21:21:47
独自だからまず暗号化の方法をお前が考えろ
話はそれからだ
614デフォルトの名無しさん:2005/12/06(火) 21:26:33
>>612
強力なのが作りたいなら今月号のCマガ読むことをお勧めする
確か特集でDESとAESのアルゴリズムが解説してあったはず
615デフォルトの名無しさん:2005/12/06(火) 21:36:01
612じゃないが、簡単なのがいいだろ。

データをbit列で表して、bit shiftで暗号化する。
[0][1][2][3][4][5][6][7]
鍵 +4
[4][5][6][7][0][1][2][3]

こんなんでどう?
616デフォルトの名無しさん:2005/12/06(火) 21:36:08
1] 授業単元: プログラミング
[2] 問題文(含コード&リンク): アルファベットaをpの割合、アルファベットbを1-pの割合で10000文字出力し、
それをファイルに格納するプログラムを作成せよ。ただし、0≦p≦1とする。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc 
[3.3] 言語: C
[4] 期限: 12/7
お願いします。
617デフォルトの名無しさん:2005/12/06(火) 21:36:39
独自の暗号化って、シビアだなあ。本当に独自のが作れたら卒論くらいにはなるんじゃね?
618デフォルトの名無しさん:2005/12/06(火) 21:36:42
>>614
載ってる時点で独自じゃないじゃん
619デフォルトの名無しさん:2005/12/06(火) 21:37:33
>>612
あれだ!
カエサル暗号が1つずらす(だったよな?)ならお前は2つずらすんだ!
これだ!これしかない!
620デフォルトの名無しさん:2005/12/06(火) 21:39:29
>>619
どう見ても換字式暗号です。
本当にありがとうございました。
621デフォルトの名無しさん:2005/12/06(火) 21:40:17
>>616
#include <stdlib.h>
int p = rand();
int i;
for(i=0;i<10000;i++)
putchar((rand()>p)? 'a' : 'b');
622デフォルトの名無しさん:2005/12/06(火) 21:40:51
>>619
シーザー暗号はN文字ずらし
623デフォルトの名無しさん:2005/12/06(火) 21:44:02
>>618
独自って(独自)実装の意味かと思った
今は反省している


簡単な変換テーブル作って、転字法にすりゃいいんじゃね?
624デフォルトの名無しさん:2005/12/06(火) 21:49:23
文字を逆から並べて終わり、とかw
625デフォルトの名無しさん:2005/12/06(火) 21:50:04
>>622
もっと言うと、環 R の直積 R×...×R の元として平文をとらえて、適当な a ∈ R を固定して f: R → R を f(x) = x+a と定めて
これを自然に拡張して得られる R×...×R 上の変換も、 Caesar 暗号とみなすことが多い。

>>623
それは「単換字式暗号」ってやつなので独自ではない。
さらに言えば、環の同型が作れるので、それも暗号理論的には Caesar 暗号と同じとみなすことが多い。
626デフォルトの名無しさん:2005/12/06(火) 21:50:14
誰か実装してやれよ
627デフォルトの名無しさん:2005/12/06(火) 21:57:22
>>625
それ拡張とかじゃないの?
628デフォルトの名無しさん:2005/12/06(火) 21:58:14
そもそも独自とか言ってる教師がおかしいんだから適当にやれよ
そんな暗号試論しりませんでしたって感じで
629デフォルトの名無しさん:2005/12/06(火) 22:03:06
>>612

/* encode.c */
#include <stdio.h>

int main(void){
  char c;
  while((c=fgetc(stdin))!=EOF){
    fputc(((c << 4) & 0xF0) | ((c >> 4) & 0x0F), stdout);
  }
  return 0;
}

/* decode.c */
#include <stdio.h>

int main(void){
  char c;
  while((c=fgetc(stdin))!=EOF){
    fputc(((c << 4) & 0xF0) | ((c >> 4) & 0x0F), stdout);
  }
  return 0;
}
630デフォルトの名無しさん:2005/12/06(火) 22:17:18
#include <stdio.h>
#include <string.h>

char crypt(char a,int n){
unsigned char c = a;return (c<<n)+(c>>(8-n));
}
char decrypt(char a,int n){
return crypt(c,8-n);
}

int main(int argc, char* argv[]){
char buf[100]="ABC";
int i;
int n=strlen(buf)+1;
int key=3;
for(i=0;i<n;i++){ printf("[%d]",buf[i]); } printf("\n");
for(i=0;i<n;i++){ printf("[%d]",crypt(buf[i],key) );}printf("\n");
for(i=0;i<n;i++){ printf("[%d]",decrypt(crypt(buf[i],key),key) );}printf("\n");
return 0;
}
631デフォルトの名無しさん:2005/12/06(火) 22:22:56
char decrypt(char a,int n){
return crypt(a,8-n);
}
632デフォルトの名無しさん:2005/12/06(火) 22:56:02
学部で研究しています。
交通工学分野で、料金所混雑について調べています。
料金所利用車を、ETC利用車と人による料金支払いをする車に分けて、後者の車による渋滞にETC利用車が
巻き込まれる事象をシミュレートしたいと思っています。
到着率やETC普及率を変化させ、車の平均滞在時間がどのように変化してゆくのかを調べるために、プログラム
を書こうとしているのですが、Visual C++で表現できるのでしょうか?
滞在時間を2次元のグラフィックで表したいのですが。
633デフォルトの名無しさん:2005/12/06(火) 22:57:11
できるよ
634デフォルトの名無しさん:2005/12/06(火) 23:00:13
どんな感じなんでしょうか?
プログラムは初心者同然なもので。。
635デフォルトの名無しさん:2005/12/06(火) 23:00:37
初心者にVCは無理だ
あきらめろ
636デフォルトの名無しさん:2005/12/06(火) 23:01:10
パケの暗号複号作れるの?
637デフォルトの名無しさん:2005/12/06(火) 23:02:14
>>632
マルチ?誤爆したならその旨書くこと
638デフォルトの名無しさん:2005/12/06(火) 23:03:14
おとなしくコンソールで作って
値を吐かせてGnuplotやエクセルにでもよませろ
あとすれ違いだよ
639デフォルトの名無しさん:2005/12/06(火) 23:06:25
マルチなら、どちらからも回答得られないよ
二兎を追う者は一兎をも得ず
640デフォルトの名無しさん:2005/12/06(火) 23:11:07
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク): int型の値を文字列に変換する関数itoa()を
作成せよ。ただし、itoa()は、変換後の文字列を格納する配列へのポインタ
および変換されるint型の値の2つの引数としてとることとする。
また、itoa()を用いて、標準入力から入力した整数を文字列として出力する
プログラムを作成せよ

[3] 環境
 [3.1] OS:Unix
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12/7 午後8時

よろしくお願いします。
641デフォルトの名無しさん:2005/12/06(火) 23:12:55
void itoa(int n,char* dest){
itoa(n/10,dest+1);
*dest = '0'+n%10
}
642デフォルトの名無しさん:2005/12/06(火) 23:14:25
おっと末尾'0'が入ってないなハハハ
643デフォルトの名無しさん:2005/12/06(火) 23:18:04
それだと逆順に入っちゃうね
644デフォルトの名無しさん:2005/12/06(火) 23:19:04
void itoa(int n,char* dest){
sprintf(dest,"%d",n);
}
645デフォルトの名無しさん:2005/12/06(火) 23:19:15
終了条件なくね?
646デフォルトの名無しさん:2005/12/06(火) 23:19:34
>>632
ネットワークシミュレータ ns-2 が役に立つ可能性があるが、言語は
Object tcl だ。
あと、非集中システムという本で交通渋滞のシミュレーションをする話が
載っているが、言語は StarLogo だ。
どう見てもすれ違いです。
本当にありがとうございました。
647デフォルトの名無しさん:2005/12/06(火) 23:39:39
バッファオーバーフローを推奨するようなプログラムを課題にするなよ
648デフォルトの名無しさん:2005/12/06(火) 23:52:52
632です
確かにスレ違いでした。
すみませんでした
649デフォルトの名無しさん:2005/12/06(火) 23:56:42
ファイルを読み込み、英字のみか、先頭が英字で二文字目以降が英字または
数字である文字列を抽出し、辞書順に並べ、その文字列が何行目に現れるか
列挙するプログラムを作成したい。なお辞書順とは、文字列の比較法の一つで、
文字列の先頭から順に比較していき、最初に異なった文字の大小関係とします。
但し、途中で文字が無くなった場合は無い方が小さいとします。
650デフォルトの名無しさん:2005/12/06(火) 23:57:24
651デフォルトの名無しさん:2005/12/07(水) 00:01:48
>>649
それもうおれが上のほうで答えだしたぞ

あと>>1よめ
652デフォルトの名無しさん:2005/12/07(水) 00:52:26
612ではありませんが
データをbit列で表して、bit shiftで暗号化する。
[0][1][2][3][4][5][6][7]
鍵 +4
[4][5][6][7][0][1][2][3]
で実行するプログラムをおねがいします。
653デフォルトの名無しさん:2005/12/07(水) 01:22:07
>>652
>>630のnに4を入れりゃそれじゃね?
654デフォルトの名無しさん:2005/12/07(水) 01:27:08
>>653
すみませんがencodeとdecodeにプログラムをわけたいのですがどうすればよろしいのでしょうか?
655デフォルトの名無しさん:2005/12/07(水) 01:30:13
>>649
STL練習がてらやってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1233.txt
一行に同じ単語が複数あると、その数だけ同じ行数を出力します。そういう仕様です。

std::stringが、アルファベットor数字のみで構成されているかって調べる関数は無いのかな?
とりあえず、find_if と isalnum を組み合わせてやってみたけど・・・。
656デフォルトの名無しさん:2005/12/07(水) 02:15:26
>>655
つboost::algorithm::all(something, boost::algorithm::is_alnum)
657デフォルトの名無しさん:2005/12/07(水) 02:17:44
>>656
boost っすか。標準じゃ、無理なんすね。


>vector<int> v;
>v.push_back(count);
>m.insert(Pair(word, v));

は冗長でした。

m.insert(Pair(word, vector<int>(1,count)));

と。
658デフォルトの名無しさん:2005/12/07(水) 03:06:32
>>655
f(x,y) = x & isalnum(y) として accumulate
659デフォルトの名無しさん:2005/12/07(水) 04:21:31
[1] 授業単元: cプログラミング
[2] ファイル入力で文字列の集合を読み込みアルファベット順にシェルソートして
要素の交換回数を出力するプログラムを作成せよ
[3] 環境
 [3.1] Linux [3.2] gcc [3.3] c
[4] 無期限
[5] 入力ファイルはこんなのです↓
dinbnorih
hiodishe
oenouinnko
ufrenyjmd
fhagummn
・・・
660デフォルトの名無しさん:2005/12/07(水) 06:26:28
時間だ! 答えを聞こう!
661デフォルトの名無しさん:2005/12/07(水) 07:06:45
>>660
どれの?
662デフォルトの名無しさん:2005/12/07(水) 07:08:12
>>659
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1234.txt

#if 0 〜 #endif で囲んだ部分は、入力ファイルを作成する所です。
#if 1 とかに変えると、data.txt という名前で、テスト用ファイルを作ります。
663yuu ◆qMuXz8UNv6 :2005/12/07(水) 11:23:22
[1] プログラミング入門
[2] • キーボードから実数を5個入力し,その入力デー
タのうち3つのデータから実数の平均値をもとめ
る.
• 求める平均は最初のデータから3個分,次のデー
タから3個分および3番目のデータから3個分の
計3種類とする.
• 平均をするプログラムは関数化すること.このとき,
どのようにプログラムを分割するかを熟考するこ
と.引数で値を渡すようにすること。
• 入力データ
– 1.1 1.2 1.3 1.4 1.5
– さらに自分で考えた値
[3] 環境
 [3.1] Windows
 [3.2] コマンドプロンプト 秀丸
 [3.3]C
[4] 本日中
[5] 初心者っぽくお願いします。
上のデータを入力すると1.2 1.3 1.4が出力されるという意味です。
よろしくおねがいします
664デフォルトの名無しさん:2005/12/07(水) 11:46:05
#include<stdio.h>
double heikin(double*,int);
int main(void){
double num[5];
int i;
for(i-0;i<5;i++)
scanf("%lf",&num[i]);
for(i=0;i<3;i++)
printf("%f\n",heikin(num,i));
return 0;}
double heikin(double *num,int i){
double sam=0.0;
int j;
for(j=0;j<3;j++,i++)
sam+=num[i];
return sam/3;}
665デフォルトの名無しさん:2005/12/07(水) 11:47:30
666デフォルトの名無しさん:2005/12/07(水) 11:48:42
かぶった
667yuu ◆qMuXz8UNv6 :2005/12/07(水) 11:57:58
ありがとうございます。今回は664を使わせてもらいました
また次回もお願いします。
668デフォルトの名無しさん:2005/12/07(水) 16:19:56
[1] プログラミング入門
[2] n個の数字をキーボードから入力し、その中で最大の数字を出力するプログラムを作成せよ。
[3] 環境
 [3.1] Windows
 [3.2] Microsoft Visual C++
 [3.3]C
[4] 本日中
[5] scanfは使わずに。あとMAXも使わずにだそうです。
自分ではgetch()を使ってやってる途中です。
一応出力結果として
input data 0: 123←この数字を入力する
input data 1: 21
    …
input data n: ←enterのみで終了させる
最大値は○○です。
という形で。
またCを始めて間もないのでわかりやすくお願いします。
669デフォルトの名無しさん:2005/12/07(水) 16:30:23
『3×3型の二つの行列A=[aij],B=[bij]を読み込み、
積ABとBAを 求めるプログラムを作成せよ。また一般的にはABとBAが
等しくならない ことを確認せよ。』ですがどなたか教えてくれませんか?
CでもPascalでもいいのでお願いします。
670デフォルトの名無しさん:2005/12/07(水) 16:42:55
マルチ市ね
671デフォルトの名無しさん:2005/12/07(水) 17:33:34
>>668
こういうのじゃだめかな

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

int main(void)
{
int max=0, data, i =0;
char temp[80];

for(;;){
printf("input data%d:", i++);
gets(temp);
if(temp[0] == '\0')break;
data = atoi(temp);
if(data > max)
max = data;
}

printf("\n最大値は%dです\n", max);
return 0;
}
672デフォルトの名無しさん:2005/12/07(水) 17:51:09
>>671
Enterで終了するなら if(temp[0] == '\0')break; じゃなくて if(temp[0] == '\n')break; じゃね?
673668:2005/12/07(水) 18:19:23
>>671
これでできました。ありがとうございました。

>>672
"\0"を"\n"にしてやってみたんですが改行されてそのままi++がループされるままになりました。
このままでよかったようです。
674デフォルトの名無しさん:2005/12/07(水) 18:23:28
getsの仕様を知らずに恥をかいた、fgetsと違って\nは捨てるのねorz
675デフォルトの名無しさん:2005/12/07(水) 18:24:50
getsのほうが便利だよな
676デフォルトの名無しさん:2005/12/07(水) 18:30:26
[1] プログラミング基礎
[2] 下記
[3.1] windowsXP
[3.2] Visual Studio 6.0
[3.3] C++
[4] 明日まで
[5] 初心者レベルです。

instreamとoutstreamを習っていてそれの練習問題なんですが、ご指導お願いします。
まずgradebook.txtという名のinput fileに以下の文があるとします。
A B 40 50 60 70 60 80 75 83 90 56
C D 67 36 94 26 78 46 83 38 46 88
E F 67 98 67 89 66 75 38 47 90 68
G H 60 52 93 36 84 53 82 94 22 34
最初のローマ字2つは生徒の姓・名、あとの数字はテストのスコアです。
このテストのスコアをinstream>>を使ってまず配列にあてはめて、
それから各生徒の平均スコアを計算し、average.txtという名のoutput fileに
上の情報+平均値を各ラインの最後に付け足して保存させる、といった具合です。
A B 40 50 60 70 60 80 75 83 90 56 66.4←平均値追加
といった感じです。
よろしくお願いします。
677デフォルトの名無しさん:2005/12/07(水) 19:33:21
getsなんて使うなよ
678デフォルトの名無しさん:2005/12/07(水) 19:37:37
>>580
×気○機
679デフォルトの名無しさん:2005/12/07(水) 19:40:19
>>676
C++はよくわからんけど作ってみた
間違ってたらすまん

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1236.txt
680デフォルトの名無しさん:2005/12/07(水) 20:02:01
C言語を習い始めている者なんですが
「10個の配列a[10]に「0,1,2,3,4,5,6,7,8,9」とループで代入し、
その後に別ループで配列a[0]〜a[9]のすべてを表示するプログラム」
という問題が分かりません
どなたかお願いします
681デフォルトの名無しさん:2005/12/07(水) 20:05:49
>>680

#include<stdio.h>

int main(void)
{
int a[10], i;

for(i = 0; i < 10; i++){
a[i] = i;
}

for(i = 0; i < 10; i++){
printf("a[%d]:%d\n", i, a[i]);
}

return 0;
}
682デフォルトの名無しさん:2005/12/07(水) 20:07:44
ありがとうございます!!

return 0;

って必要なんですか?
683680:2005/12/07(水) 20:08:59
>>681
お早い回答ありがとうございました〜
684デフォルトの名無しさん:2005/12/07(水) 20:10:24
>>682
次からは>>1のテンプレに従うように
return 0;がなんのことかわからないなら
#include<stdio.h>
main()
{
int i;
int a[10], i;
for(i=0;i<10;i++){
a[i]=i;
}
for(i=0;i<10;i++){
printf("a[%d]:%d\n",i,a[i]);
}
}
とでもすればいい
685680:2005/12/07(水) 20:28:11
再びお願いしますm( __ __ )m
「配列data[5]={3,6,2,9,1}の内容をdata2に代入(コピー)して出力するプログラム」
686デフォルトの名無しさん:2005/12/07(水) 20:29:49
>>685
テンプレと書き込みを無視して、しかも思考放棄をしている人間に答える人はいません
687デフォルトの名無しさん:2005/12/07(水) 20:37:23
>>686 もう少し優しく行こうぜ。

int data[5]={1,2,3,4,5};
int *data2; // *data2と書くと配列の数を省略できる
int i;
data2=&(data[0]); // &は全部のデータをコピーするおまじない。
for(i=0;i<5;i++){printf("%d",data2[i]);}
return 0;
688デフォルトの名無しさん:2005/12/07(水) 20:39:04
>>687
ちょwwwwwwwwwwww
689デフォルトの名無しさん:2005/12/07(水) 20:40:59
690デフォルトの名無しさん:2005/12/07(水) 20:44:08
>>687
#include<stdio.h>
#include<stdlib.h>
#define True 0
#define False !0
#define kArraySize 5
int main(int argc, char *argv[]){
int *data2,*p,i,data[5]={3,6,2,9,1},*q;
data2=(int*)malloc(sizeof(int)*kArraySize);
if(data2==NULL){
fprintf(stderr,"error: cannot allocate memory");
return False;
}
p=data;
q=data2;
for(i=0;i<kArraySize;i++) *q++=*p++;
for(i=0;i<kArraySize;i++) printf("data2[%d]=%d\n",i,*data2++);
return True;
}
691デフォルトの名無しさん:2005/12/07(水) 20:48:24
>>690
mallocとか習ってないの使っても>>686は解らないだろうが。
んなもん出したら「私は2ちゃんで聞いてきました」丸出しだっつーのwwww
多分授業でも&は基礎中の基礎だから習ってるだろうし、
悪いことは言わないから>>687で出しとけ。
692691:2005/12/07(水) 20:49:24
>>686じゃなかったな、すまんかった。>>685か。
693名無し:2005/12/07(水) 20:50:28
>>149のプログラムを>>572のようにし実行したのですが、
A,B,C,Dやa,bの値をどのように入力したらよいのでしょうか?
プログラムを実行し、1,-24,185,-450と入力しEnterキーを押すとと、a,bの値を入力する前に
0.000000という実行結果が表示されます。
694デフォルトの名無しさん:2005/12/07(水) 20:52:08
カンマ区切りってscanfできたっけ?
スペースで区切ってみて。
695デフォルトの名無しさん:2005/12/07(水) 20:55:14
scanf("%lf,%lf,%lf,%lf",&A,&B,&C,&D);ならできたかな?
696デフォルトの名無しさん:2005/12/07(水) 20:59:18
いっそscanfやめてargvを使うというのはどうだろう
697名無し:2005/12/07(水) 21:00:21
>>694
ありがとうございます。
試してみます。
698285:2005/12/07(水) 21:23:09
[1] 授業単元:プログラミング演習U
[2] 問題文: http://id18.fm-p.jp/gamen/s_scr.php?dir=26&uid=hanon0220&num=7
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:本日23:00まで
[5] その他の制限:なぜか動きません…どこがおかしいのでしょうか?
699デフォルトの名無しさん:2005/12/07(水) 21:28:19
ポインタを理解してない香具師が知ったかで回答しているスレはここですか?
700デフォルトの名無しさん:2005/12/07(水) 21:28:55
double s1,s2,xb,yb,x[50],y[50],a,b,x,y;

double s1,s2,xb,yb,x[50],y[50],a,b,x2,y2;
701591:2005/12/07(水) 21:29:46
>>591です。もう一度書き直します。

[1] プログラミング演習U
[2] 問題文:
隣接リストを使った深さ優先探索プログラムを作成しなさい。

実行例

c01% _a.out < G1 _ 0 -> 1 1 -> 3 3 -> 5 5 -> 6 6 -> 4 4 -> 2
c01% _a.out< G2 _ 0 -> 1 1 -> 3 3 -> 2 4 -> 6 6 -> 5

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 2.9
 [3.3] 言語:C++
[4] 期限: 12月7日17時
[5] その他の制限:初心者

下にG1とG2書きます。
702591:2005/12/07(水) 21:30:23
>>591のG1とG2です。

G1

7
0 1
1 2
1 3
2 4
3 5
4 5
4 6
5 6

G2

7
0 1
1 2
1 3
2 3
4 5
4 6
5 6
703デフォルトの名無しさん:2005/12/07(水) 21:32:18
>>698
アップローダーが阿呆なコード吐くからちょっと>>1のであげなおして。
704285:2005/12/07(水) 21:34:45
>>703
あげなおしました
705デフォルトの名無しさん:2005/12/07(水) 21:35:28
>>704
ちょwww どこを見ろというんだwww
706デフォルトの名無しさん:2005/12/07(水) 21:37:06
ワロタw
707デフォルトの名無しさん:2005/12/07(水) 21:40:15
>>704
 { scanf("%lf,%lf",&x[i],&y[i]); }の全角スペースを消す
変数の重複をなんとかする(x→xx,y→yyとか適当なのに)
最後にreturn 0;を追加

で完成
708285:2005/12/07(水) 21:44:16
709デフォルトの名無しさん:2005/12/07(水) 21:58:07
>>708
うはwww なんかうpろだにごみが...
とりあえず修正版。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1241.txt
710デフォルトの名無しさん:2005/12/07(水) 22:00:59
return 0;
711デフォルトの名無しさん:2005/12/07(水) 22:02:52
>>710 さんくす。

int main()なんで、
最後の}の前にreturn 0;を入れるほうがいいな。
712デフォルトの名無しさん:2005/12/07(水) 22:14:00
×ほうがいいな。
○のが必須。
713デフォルトの名無しさん:2005/12/07(水) 22:17:01
>>712
ハイハイソウデスネヨカッタデスネ
714713:2005/12/07(水) 22:20:28
すまん、誰か700解いてやってくれ。
やる気なくなった...
715デフォルトの名無しさん:2005/12/07(水) 22:24:31
>>712
ISO/IEC 9899:1999 5.1.2.2.3 Program termination 1
reaching the } that terminates the main function returns a value of 0.
716640:2005/12/07(水) 22:27:28
期限は過ぎてしまいましたが、どなたか
>>644の続き、もしくは新しいプログラムを教えてもらえないでしょうか・・・
717デフォルトの名無しさん:2005/12/07(水) 22:36:07
>>716
実際使ってみるとか
718デフォルトの名無しさん:2005/12/07(水) 22:39:16
>>715
ええい。手持ちのCコンパイラでそういうのを持ってる奴はどれくらいいるかっつーの。
C99は死んだ規格だ。Intel C++についてるくらいしかないだろ今。
719デフォルトの名無しさん:2005/12/07(水) 22:42:39
>>718
715と同様の規定はC++にもある。
C++なら山ほど居るだろう。
720デフォルトの名無しさん:2005/12/07(水) 22:43:55
>>719
説明になってない。C99に準拠している処理系を列挙してみろよ。
Intel C++、gcc(但し準拠率は80%程度)ぐらいしかないぞ。
721デフォルトの名無しさん:2005/12/07(水) 22:48:02
>>719
そこまで言うなら、Cと書かれたプログラムには、これから_Complexとか
使ってもいいんだな。restrictとか、コンパウンドリテラルとか使っていいんだな。
出題者から文句が来るだけだぞ。

C++だって、ほとんどの処理系で実現されていないexportなどは皆避けて
いるし、不具合は大抵workaroundするのが普通だろ。規格規格言っても
コンパイルできないソース、現実のコンパイラに即してない規格は宿題スレ
には不要だ。
722719:2005/12/07(水) 22:49:23
>>720
別にC99準拠の処理系の話をするつもりではなかったんだけど。
単にC++ではこうだと書いただけで。
723デフォルトの名無しさん:2005/12/07(水) 22:51:43
>>722
違うだろ。論点をずらすのが目的だった。>>719は。見えすいた嘘をつくな。
724デフォルトの名無しさん:2005/12/07(水) 22:52:08
>>721
粘着乙。
725デフォルトの名無しさん:2005/12/07(水) 22:52:39
C++の規格は9899:1999ではなく、14882:2003ですから。
そちらを出しましょう。
726デフォルトの名無しさん:2005/12/07(水) 22:53:31
>>724
粘着で片付けるなヴォケ。何だ>>715の糞レスは。
727デフォルトの名無しさん:2005/12/07(水) 22:53:39
>>720
準拠している処理系がどうあれ、C99が最新のC言語規格であること
に変わりはなく、それはISOが定めている。
もしその点を問題としないのであれば、C++を一切解釈できない純粋な
Cコンパイラを現在どれだけの人間が使っているかを気にしてみては
どうか。
現実問題、ほとんどのコンパイラはreturn 0;なしのmain関数を解釈できる。
728デフォルトの名無しさん:2005/12/07(水) 22:55:26
>>715の正しい書き方はこうすべきだ。

>ISO/IEC 9899:1999 5.1.2.2.3 Program termination 1
>reaching the } that terminates the main function returns a value of 0.
>ただしこれはC99の規格。C89ではreturn 0;が必要。
729デフォルトの名無しさん:2005/12/07(水) 22:56:23
>>727
コンパイル時に警告出るぞ。大抵のCコンパイラは。
C++モードだと当然出ないが。
730デフォルトの名無しさん:2005/12/07(水) 22:58:03
>>727
俺も論点をずらさせてもらうが、お前は、exportを平気で使うC++プログラムを
書いて、「だって規格通りでしょう」と平然と言って、周囲の人間を辟易させる
人間だ。去れ。
731デフォルトの名無しさん:2005/12/07(水) 22:58:25
698 :285:2005/12/07(水) 21:23:09
[1] 授業単元:プログラミング演習U
[2] 問題文: http://id18.fm-p.jp/gamen/s_scr.php?dir=26&uid=hanon0220&num=7
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限:本日23:00まで
[5] その他の制限:なぜか動きません…どこがおかしいのでしょうか?

C++だってさ。これで満足したかい、粘着君。
732デフォルトの名無しさん:2005/12/07(水) 22:59:51
733デフォルトの名無しさん:2005/12/07(水) 23:05:53
>>730
つComeau
734デフォルトの名無しさん:2005/12/07(水) 23:07:44
>>733
わざわざ書かれなくても知ってる。
735デフォルトの名無しさん:2005/12/07(水) 23:17:42
http://www.research.att.com/~bs/bs_faq2.html#void-main

In C++, main() need not contain an explicit return statement. In that case, the value returned is 0, meaning successful execution. For example:

#include<iostream>

int main()
{
std::cout << "This program returns the integer value 0\n";
}

Note also that neither ISO C++ nor C99 allows you to leave the type out of a declaration. That is, in contrast to C89 and ARM C++ ,"int" is not assumed where a type is missing in a declaration. Consequently:
#include<iostream>

main() { /* ... */ }

is an error because the return type of main() is missing.

真偽の程はしらん。
736デフォルトの名無しさん:2005/12/07(水) 23:22:17
[1] 授業単元:コンピューター演習
[2] 問題文(含コード&リンク):
下記の出力結果を得るプログラムをfor文を用いて簡潔に書きなさい。
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * *
* * * * * *
* * * * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *

(* の数は縦横9×9です)
[3] 環境: OS:windows コンパイラ:BorlandC++Compiler 言語:C
[4] 期限:12/8朝
[5] その他の制限:C言語習い始め for文で

宜しくお願いします
737デフォルトの名無しさん:2005/12/07(水) 23:23:48
う・・図形が違いました

* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
* * *    * * *
* * *    * * *
* * *    * * *
* * * * * * * * *
* * * * * * * * *
* * * * * * * * *
738デフォルトの名無しさん:2005/12/07(水) 23:27:22
多分本当は中央に空白があると推定。
#include <stdio.h>
int main(int argc, char* argv[])
{
int x,y;
for(y=0;y<9;y++){
for(x=0;x<9;x++){
if((2<=x&&x<=6)&&(2<=y&&y<=6)) printf(" ");
else printf("* ");
}
printf("\n");
}
return 0; /* 満足したか? */
}
739デフォルトの名無しさん:2005/12/07(水) 23:28:22
>>736
適当にifのとこの数字を変えてくれ。
740デフォルトの名無しさん:2005/12/07(水) 23:29:34
>>736
if((3<=x&&x<=5)&&(3<=y&&y<=5)) printf(" ");
741デフォルトの名無しさん:2005/12/07(水) 23:30:21
>>735
C++はC89のすべてを包括しているわけではないが、C99もそうだって事だね。
これからC99の規格書を持ち出して議論する馬鹿はことごとく非難してやる。
742デフォルトの名無しさん:2005/12/07(水) 23:30:30
[1] 授業単元:コンピュータ演習
[2] 問題文(含コード&リンク):
  複数のデータを入力し、入力したデータの最大値を計算できるプログラムを作成せよ。
  入力する値:データの数、データ(データの数分)
  [例] 3つのデータがあるとき
   入力
    データ数=3 データ1=10.5 データ2=4.3 データ3=-8.5
   出力
    最大値=10.5
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語: C
[4] 期限: [2005年12月8日23:30まで]
[5] その他の制限:繰り返し文はfor文のみ使用。if 文・if-else文は習っています。
            while文・ポインタ・配列はまだ習っていません。
>>制限が多くて大変申し訳ないのですが、どなたかご教授ください。お願いします。
743デフォルトの名無しさん:2005/12/07(水) 23:31:59
>>741 キモ
744デフォルトの名無しさん:2005/12/07(水) 23:33:45
>>742
データの入力はどうやるの?
>>671を参考にすればほとんど出来たようなものだと思うけど
745デフォルトの名無しさん:2005/12/07(水) 23:35:22
#include <stdio.h>
int main(){
int max;
printf("データ数=");scanf("%d",&n);
printf("データ%d=",0);scanf("%d",&max);
for(i=1;i<n;i++){
printf("データ%d=",i);scanf("%d",&input);
if(max<input)max=input;
}
printf("最大値=%d\n",max);
return 0;
}
746デフォルトの名無しさん:2005/12/07(水) 23:36:26
>>738 >>739 >>740
満足です
どうもありがとうございました
747デフォルトの名無しさん:2005/12/07(水) 23:37:34
>>742
int max; → int i,max,input;

あー、データ%dは1からスタートか。
printf("データ%d=",1);scanf("%d",&max);
printf("データ%d=",i+1);scanf("%d",&input);
748デフォルトの名無しさん:2005/12/07(水) 23:40:30
って、入力値実数か。忘れてた。

#include <stdio.h>
int main(){
int i,n;
double max,input;
printf("データ数=");scanf("%d",&n);
printf("データ%d=",1);scanf("%lf",&max);
for(i=1;i<n;i++){
printf("データ%d=",i+1);scanf("%lf",&input);
if(max<input)max=input;
}
printf("最大値=%lf\n",max);
return 0;
}
749デフォルトの名無しさん:2005/12/07(水) 23:43:27
どう見ても>>741はキモいです。
本当にありがとうございました。
もう宿題スレに来ないで下さい。
750デフォルトの名無しさん:2005/12/07(水) 23:50:15
>>749
お前が来るなC99厨
751742:2005/12/07(水) 23:55:28
>>744
すみません。説明不足でした。>>671はif 文の部分がわかりませんでした。。
>>745 >>747 >>748
どうもありがとうございます!これを参考にして自分なりに作ってみます。
752デフォルトの名無しさん:2005/12/08(木) 00:11:45
[1] 授業単元:情報演習
[2] 問題文:1、引数として渡された文字を、もしその文字が小文字であれば大文字に、
大文字であれば小文字に置き換える関数を定義し、実行せよ。
2、引数として渡された文字列(英文)の英単語の数を返す関数を定義せよ。
ただし、英単語は、isspace関数が真となる文字の並びで区切られているものとする。
[3] 環境
 [3.1] OS:Linux 
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限:12月10日
[5] その他の制限:ポインタはまだやってません
よろしくお願いします。
753デフォルトの名無しさん:2005/12/08(木) 00:15:18
[1] 授業単元:生産工学
[2] 問題文(含コード&リンク):
次の4点
(0,0),(1,0),(1,1),(0,1)
を順に通る3次のSPLINE曲線とそのグラフを描くプログラムを作成せよ。
始点と終点の接線の方向はそれぞれ(1,1)と(-1,0)とする。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラは何でもいいっていわれました
 [3.3] 言語: C
[4] 期限: 2005年12月10日まで
[5] その他の制限: プログラムリストとそれによってできたグラフを印刷して提出といわれますた。
            グラフのソフト等も特に制限はないそうです。

よろしくお願いします。
754デフォルトの名無しさん:2005/12/08(木) 00:27:48
>>752
ctype.hは利用していいの?
あと2番の引数にchar *strとか使っちゃだめなの?
755デフォルトの名無しさん:2005/12/08(木) 00:29:11
>>752
(1)
#include<stdio.h>
#include<ctype.h>
int xchg_ascii(int c){
    if(islower(c))return toupper(c);
    return tolower(c);
}
int main(){
    int ch;
    while((ch=getchar())!=EOF)putchar(xchg_ascii(ch));
    return 0;
}
756デフォルトの名無しさん:2005/12/08(木) 00:29:40
>>752
(2)
#include<stdio.h>
#include<ctype.h>
int count_word(char string[]){
    int i,count=0;
    if(string[0]=='\0')return 0;
    for(i=1;string[i]!='\0';++i)
        if(isspace(string[i]) && !isspace(string[i-1]))
            ++count;
    if(!isspace(string[i-1]))++count;
    return count;
}
int main(){
    char buf[80];
    gets(buf);
    printf("%d\n",count_word(buf));
    return 0;
}
757デフォルトの名無しさん:2005/12/08(木) 00:34:03
>>752
#include <stdio.h>
#include <ctype.h>
int swap_uplow(int ch){                 /* 問1 */
  if( isupper(ch) ) return tolower(ch);
  if( islower(ch) ) return toupper(ch);
  return ch;
}
int count_words(char **data, int size){ /* 問2 */
  int i, count = 0;
  for(i = 0; i < size; ++i){
    char *p;
    int is_space_flag = 1;
    for(p = data[i]; *p; ++p){
      if( is_space_flag && !isspace(*p) ){is_space_flag = 0; count++;}
      else if( !is_space_flag && isspace(*p) ) {is_space_flag = 1;}
    }
  }
  return count;
}
int main(int argc, char **argv){
  int i;
  for(i = 1; i < argc; ++i){
    char *p;
    for(p = argv[i]; *p; ++p) putchar(swap_uplow(*p));   /* 問1動作確認 */
    putchar(' ');
  }
  puts("");
  printf("count = %d\n", count_words(argv+1, argc-1));   /* 問2動作確認 */
  return 0;
}
758752:2005/12/08(木) 00:36:42
>>755
申し訳ございません。(1)はctype.hを使わないという条件を忘れていました。
(2)は大丈夫です。ありがとうございます。
759755:2005/12/08(木) 00:49:33
>>758
ascii決め打ちで良いなら(1)(2)のどちらか。
万が一それ以外も考えなくてはならない場合は(3)を使ってください
(1)
int xchg_ascii(int c){
    return c ^ ((c|0x20)-'a'<=25u)<<5;
}
(2)
int xchg_ascii(int c){
    if('a'<= c && c <= 'z')return c-'a'+'A';
    else if('A' <= c && c<='Z')return c-'A'+'a';
    else return c;
}
(3)
char lower[]="abcdefghijklmnopqrstuvwxyz";
char upper[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int xchg_ascii(int c){
    int i;
    for(i=0;lower[i];++i)
        if(lower[i]==c)return upper[i];
        else if(upper[i]==c)return lower[i];
    return c;
}
760デフォルトの名無しさん:2005/12/08(木) 00:55:41
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
大きさ500×500ドットの画像(PBM形式)を作成し、 パイプにてdisplayコマンドで表示する。
画像は左上を原点とし、右にx軸、下にy軸とする。
コマンドライン引数からx、y座標と半径rを入力し 中心がx、yで、半径r以下の点を黒く塗り潰す。
二次元平面の点については構造体を定義し、構造体を使用する。
なお、上記黒丸が例2のように画像からはみ出す場合も ちゃんと表示出来るようにすること。
コマンドラインから得られた文字列を数字(int型)にするには、 <stdlib.h>の中の関数atoi を使用する。文字列strに文字列"123"が入っているとき、 atoi(str)の戻り値はint型の123と言う値になる
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 500
#define BLACK '1'
#define WHITE '0'
typedef struct{
int x,y;} XYdata;
main(int argc, char *argv[])
{XYdata base;
int r;
init();
/* 円の範囲を黒くする */circle(base, r);
/* 表示 */ disp();}
/* 画像データ初期化 総ての点を白に初期化 */void init(void){}
/* 引数で指示された座標を黒くする */void draw(XYdata a){}
/* 引数で指示された座標を中心に,半径r以内の点を黒くする */void circle(XYdata c, int r){}
/* Plain PBM形式で画像データを出力する */void disp(void){}
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] c言語 Cのみで
[4] 期限: 2005 12 8 20:00
[5] その他の制限: 構造体のところです。よろしくお願いします。m(==)m
761752:2005/12/08(木) 00:56:10
>>755
ご丁寧にありがとうございます。
解決しました。
762デフォルトの名無しさん :2005/12/08(木) 01:27:28
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
自然数2コの最大公約数を計算する関数を作成し、それを利用して以下のプログラムを作成する

標準入力から自然数M, N, dm, dnを入力し
自然数M〜M+dmとN〜N+dnとの最大公約数を求める
結果は標準入力で表形式で示し、出力終了後これらの中で互いに素である自然数の組を
標準出力にしめす
763デフォルトの名無しさん:2005/12/08(木) 01:29:46
>>762
期限とCかC++かくらい書いてはどうかね
今日はもう寝るから答えんが
764デフォルトの名無しさん:2005/12/08(木) 01:30:00
>>762
すいません、Cのみで
765デフォルトの名無しさん:2005/12/08(木) 01:31:05
Cとか言うと、また荒れるかもしれんからなぁ。
どっかのバカが。
766752:2005/12/08(木) 01:33:13
>>756ですが、実行すると何を入力しても結果が1にしかなりません。
どこを変更すればよいでしょうか?何度もすみません。
767デフォルトの名無しさん:2005/12/08(木) 01:35:01
>>762
> 結果は標準入力
本当?
768デフォルトの名無しさん:2005/12/08(木) 01:40:17
実行したときの選択肢の選択で、scanf文を用いて1か2を入力させて、その結果によって、
計算結果に用いるパラメータを変えるようにしたいのですが、1,2以外の数字を入力したときに
「その選択肢は間違っている」と表示した後に、また同じ入力のメッセージを表示するにはどうしたらよいでしょうか?
1,2を入力した場合にはちゃんと計算されます。
769デフォルトの名無しさん:2005/12/08(木) 01:43:17
>>767
本当ですけど・・
770デフォルトの名無しさん:2005/12/08(木) 01:47:37
んなわきゃねぇ
771755:2005/12/08(木) 01:52:52
>>766
自分の環境だと上手く動くからちょっと分かんない。
とりあえず結果が変になる入力文字列を1個でいいから教えてくれ。
それを聞いたら原因も分かるかもしれないから。
772デフォルトの名無しさん:2005/12/08(木) 01:57:37
>>770
じゃあ問題が間違ってるんですかね・・・
問題文にはこう書いてあるんですけど・・
773752:2005/12/08(木) 02:02:34
>>771
あ、すみません、多分今実行してる環境が宿題を提出する環境と違うからうまくいかないのかもしれません。
明日提出する環境で実行してみます。
774デフォルトの名無しさん:2005/12/08(木) 02:41:16
EBCDIC とか
775676:2005/12/08(木) 02:45:36
>>679>>689
面倒な問題に素早くお答えいただきありがとうございました!!
679は「お〜なるほど!」って感じで理解できたのですが689は難しすぎて
初心者の自分にはさっぱりでした・・・。
今から早速試してみます。
776デフォルトの名無しさん:2005/12/08(木) 05:05:19
[1] 授業単元: プログラミングII
[2] 問題文(含コード&リンク): http://ysserve.int-univ.com/sugsi/Lecture/c2/e_07-05-04.html
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2005年12月12日10:00まで
[5] その他の制限: ホームページの下部に注釈があるので、それに沿った形で解いていただけると助かります。
777デフォルトの名無しさん:2005/12/08(木) 05:39:17
>>776
出来ました
778デフォルトの名無しさん:2005/12/08(木) 05:56:39
>>776
そのサイトちょっと見てみたが酷くないか?
こんなのを大学の講義で使ってんの?
779デフォルトの名無しさん:2005/12/08(木) 06:33:25
>>778
>>10以降でつっこみずみ。
780デフォルトの名無しさん:2005/12/08(木) 07:03:18
781デフォルトの名無しさん:2005/12/08(木) 07:08:18
つっこみたくなる気持ちはわかる。
酷い
782デフォルトの名無しさん:2005/12/08(木) 11:07:15
>>780
stdafx.hの
中身は何でしょうか?
783しぃ:2005/12/08(木) 11:42:47
〈問題文〉
a[1][1] a[1][2] a[1][3] a[1][4]
a[2][1] a[2][2] a[2][3] a[2][4]
a[3][1] a[3][2] a[3][3] a[3][4]
a[4][1] a[4][2] a[4][3] a[4][4]
この様な配列に1か0のデータが入っているものとする。現在地がa[x0][y0]から目的地a[x1][y1]まで移動するとき
の1番早い辿り方を求めるプログラムを作成する。ただしデータに1が入っている所には移動できない。0と入っている所のみ移動可能とする。
また移動は[3][1]→[3][2]のように1つの数字の加減しか出来ない。([3][3]→[2][2]のように斜めはダメ)
〈環境〉
Visual Windows for BC++ / C
784デフォルトの名無しさん:2005/12/08(木) 11:54:44
「早い」を定義してください。
785デフォルトの名無しさん:2005/12/08(木) 12:43:36
最短手数って意味だろ.幅優先探索.
786デフォルトの名無しさん:2005/12/08(木) 12:45:39
問題文
曜日ごとに設定された時間になったらダイアログを表示し、知らせる
設定した時間をカウントダウンして、ダイアログを表示し、知らせる
上記の2機能を併せ持つタイマーを作れ
環境
OS:XP
コンパイル:Visual C++ 6.0
言語:C++のみ
期限:2006年12月25日
その他の制限は特みありません
787助けてください・・・:2005/12/08(木) 12:51:13
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
「あなたはビデオ店のオーナーである。」という問題。
オブジェクト
メンバーカードを定義する。
メッセージ
メンバー登録:会員番号を出力
借りた時:借りる時に借りた本数を出力
返した時:返す時に返した本数を出力
借りているかの確認:「レンタル中は1」、「非レンタル中は0」を出力
レンタル総数の確認:何本レンタルしているか出力

実行時にメンバー会員ナンバーをキーボードから読み込んで
その条件に合致する会員情報(上記の内容)を出力する。

788助けてください・・・:2005/12/08(木) 12:52:08
メンバー登録

メンバーNo.入力

メンバー情報出力

1.借りる 2.返す 3.状態確認 4.作業終了をwhile文で回す。

作業終了

というのが問題の流れです・・・。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C++
[4] 期限: 来週の12/15まで。
[5] その他の制限: #include<iostream.h>から書き初めてwhile文などを使用して書くのをお願いします。
789デフォルトの名無しさん:2005/12/08(木) 13:32:23
[1] 授業単元: C言語/配列について
[2] 問題文(含コード&リンク): 9×9の2次元配列の中身を九九で埋め、出力する
プログラムを作成せよ。ただし、九九は初期化で与えるのではなく、計算によって配列に格納すること。
各データの出力は整数3桁とすること

実行結果

XXXX [00:00] >> a.out
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81


[3] 環境
 [3.1] OS:Linux
 [3.2] gcc(?)
 [3.3] 言語:C
[4] 期限:2005年12月8日
[5] その他の制限:
790デフォルトの名無しさん:2005/12/08(木) 13:43:10
>>789
#include <stdio.h>
int main(void)
{
int kuku[9][9], i, j;
for( i = 0 ; i < 9 ; i++ ) for( j = 0 ; j < 9 ; j++ ) kuku[i][j] = (i + 1) * (j + 1);
for( i = 0 ; i < 9 ; i++ ) {
for( j = 0 ; j < 9 ; j++ ) printf("%3d", kuku[i][j]);
puts(""); /*改行なのでprintf("\n");でもOK*/
}
return 0;
}
791デフォルトの名無しさん:2005/12/08(木) 13:46:07
>>790

ありがとうございます。これからは自分で勉強します
792しぃ:2005/12/08(木) 14:48:01
どなたか
>>783
の回答お願いします。
793752:2005/12/08(木) 14:50:40
2、引数として渡された文字列(英文)の英単語の数を返す関数を定義せよ。
ただし、英単語は、isspace関数が真となる文字の並びで区切られているものとする。
[3] 環境
 [3.1] OS:Linux 
[3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
#include<stdio.h>
#include<ctype.h>
int count_word(char string[]){
int i,count=0;
if(string[0]=='\0')return 0;
for(i=1;string[i]!='\0';++i)
if(isspace(string[i]) && !isspace(string[i-1]))
++count;
if(!isspace(string[i-1]))++count;
return count;
}
int main(){
char buf[80];
gets(buf);
printf("%d\n",count_word(buf));
return 0;
}
何度もすみません。提出する環境で実行してみましたが、値が1にしかなりませんでした。
どんな文字列を入力しても結果は一緒でした。助けてください。

794デフォルトの名無しさん:2005/12/08(木) 15:16:41
>>792
期限は今日中だろ?急かしても回答するやつが減るだけだぞ.
795デフォルトの名無しさん:2005/12/08(木) 15:17:21
どんな入力してんだ?
796しぃ:2005/12/08(木) 15:49:31
>>794
期限は今日まででは無いのですが出来るだけ早く作成したかったので・・・
一応期限は今月の20日までとなっています。

〈問題文〉
a[1][1] a[1][2] a[1][3] a[1][4]
a[2][1] a[2][2] a[2][3] a[2][4]
a[3][1] a[3][2] a[3][3] a[3][4]
a[4][1] a[4][2] a[4][3] a[4][4]
この様な配列に1か0のデータが入っているものとする。現在地がa[x0][y0]から目的地a[x1][y1]まで移動するとき
の1番早い辿り方を求めるプログラムを作成する。ただしデータに1が入っている所には移動できない。0と入っている所のみ移動可能とする。
また移動は[3][1]→[3][2]のように1つの数字の加減しか出来ない。([3][3]→[2][2]のように斜めはダメ)
配列に入る数値は任意に変えられるものとする。
〈環境〉
Visual Windows for BC++ / C

とっても難しいらしく自分では全く考えも浮かびませんでした。
よろしくお願いします。

797デフォルトの名無しさん:2005/12/08(木) 15:53:32
>>796
悪い期限は俺の見間違いだった.

が,こんな時間に急かしても意味ねーぞ.落ち着いて待て.
798デフォルトの名無しさん:2005/12/08(木) 16:07:42
>>797
でも、ここって1回ヌルーされたらそのまま回答出ないのほとんどじゃね?
799デフォルトの名無しさん:2005/12/08(木) 16:15:33
辺のweightが1か0だけなら、単に幅優先探索をするだけ。
斜めへの移動を禁止するには、そういう辺を作らなければよい。
データ構造はそのまま隣接行列になっている。
800デフォルトの名無しさん:2005/12/08(木) 16:18:52
>>798
俺もそんな希ガス

もっとも、それはあまりにくだらない課題であったり、誰もがまだ
未回答なのに気づかず忘れられていたり、質問者がなんどもポストするからだと思われ
801デフォルトの名無しさん:2005/12/08(木) 16:18:53
>>796
0100
1100
0000
0000
こんな場合で始点1,1、終点4,4の場合はエラー?
802デフォルトの名無しさん:2005/12/08(木) 16:23:58
>>800
軽めの問題ならいいんだけどね
半分暇つぶしできてるんだろうし
803デフォルトの名無しさん:2005/12/08(木) 16:29:30
804デフォルトの名無しさん:2005/12/08(木) 16:40:02
>>803
お見事
805デフォルトの名無しさん:2005/12/08(木) 17:32:25
>>803
C++でコンパイルせずにCでコンパイルすると、「右辺値には代入できない」
エラーが出るね(・∀・)
806しぃ:2005/12/08(木) 18:47:44
>>801
どの方向にもいけない場合は考えなくてもよいみたいです。
>>803
はい・・・。
Cでコンパイルすると「エラー E2277 ・・・ 39: 左辺値が必要(関数 solve )」
とエラーが出てしまいます。。
807803:2005/12/08(木) 18:56:49
これ C++ からの書き方だったんだ.知らずに使ってたよ…….
というわけで (h += 1) %= M みたいなのを全部 ++h; h %= M; にでも書き換えてください.
808デフォルトの名無しさん:2005/12/08(木) 19:08:16
場違いだったらごめんなさい。
「Visual Studio .NET 2003」Windowsアプリを始めて作ります。
言語は、C#で作ってます。

サーバー上のMySQLからデータを取得して表示させたりしたいのですが、
そもそもDBへの接続の仕方が解りません。
一応、MySQLのODBCはインストールしてあります。

どなたかアドバイス頂けないでしょうか。

ちなみに私は、Windowsアプリの開発は始めてであり、
今まで、PHP+MySQLでの開発をメインに行ってました。
PHP+MySQL開発歴は、3年ぐらいになります。
Windowsアプリ開発歴は、1ヶ月も満たないです。

Googleに聞いてもSQL Serverの事例ばっかで
なかなか参考になるページがありませんでした。

MySQL接続に関して、参考になるページがご存知でしたら
そちらも合わせて宜しくお願い致します。
809デフォルトの名無しさん:2005/12/08(木) 19:09:23
>>808
長文乙 でも使ってる言語すらスレ違いなので他を当たってください
810デフォルトの名無しさん:2005/12/08(木) 19:09:52
すみません。。。。
808に書いた者です。
よくよく見たらC#相談室なるスレッドが…。
そちらで再度質問してみます。
すみませんでした。
811デフォルトの名無しさん:2005/12/08(木) 19:11:25
>>809
ですよね。
810でも書いた様に他のスレッドに移ります。
汚してしまって申し訳ないです。
812しぃ:2005/12/08(木) 19:40:51
>>803,807
すごいプログラムどうもありがとうございました。
自分じゃなかなか理解できそうにもないですが
また何かありましたらよろしくお願いします。
813デフォルトの名無しさん:2005/12/08(木) 19:59:15
>>730
exportはオプション扱いだろ?
exportを実装してない処理系でもC++の規格通りである可能性がある。

と、揚げ足をとってみるテスト
814デフォルトの名無しさん:2005/12/08(木) 20:32:39
>>813
また変な生ゴミが沸くからそういうのはやめてくれ。頼む。
815デフォルトの名無しさん:2005/12/08(木) 20:34:59
>>813
論点ずれてるよ、と突っ込みを入れてみるテスト。
816デフォルトの名無しさん:2005/12/08(木) 20:35:13
>>782
それいらね。
817デフォルトの名無しさん:2005/12/08(木) 20:53:51
>>787
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1244.zip
要求とはちと違うが必要と思って変更した。
818デフォルトの名無しさん:2005/12/08(木) 21:13:15
すごいなー
819デフォルトの名無しさん:2005/12/08(木) 21:26:18
>>786って放置で良いだろ一年あるんだ
820デフォルトの名無しさん:2005/12/08(木) 22:03:51
[1]授業単元:プログラミング
[2]問題文:名前、年齢、住所をメンバーとする構造体をつくり、学籍番号下二桁を引数として値を返す関数をもつプログラムを作成せよ(三名の情報)
[3]環境
 [3.1]OS:Windows
 [3.2]コンパイラ名とバージョン:Visual C++ .NET 2003 コマンドプロンプト
 [3.3]言語:C
[4]期限:今週中
[5]その他の制限:適当に値など入れて下さい
お願いします
821820:2005/12/08(木) 22:04:50
改行し忘れました
すいませんがお願いします
822デフォルトの名無しさん:2005/12/08(木) 22:11:52
構造体はまあこんなもんだろう。
struct student{
char name[100];
int age;
char address[100];
};
で、どうやって学籍番号の二桁を引数?値を返す?三名の情報?
意味が全く解らないぞ、この問題。
823デフォルトの名無しさん:2005/12/08(木) 22:14:08
>>822の「どうやって」も意味が解らないな。
824デフォルトの名無しさん:2005/12/08(木) 22:16:12
実行結果として3名のデータを提示しておけって事だと・・・
825デフォルトの名無しさん:2005/12/08(木) 22:17:04
>>824
それでも学籍番号下二桁だけでデータを特定できるのか疑問
826820:2005/12/08(木) 22:18:25
引数は30とか適当に
>>824そうです
827デフォルトの名無しさん:2005/12/08(木) 22:19:23
学籍番号下3桁目は英字の学校もあるだろうからそういう変な考えにいたらせないための配慮じゃなかと?
828デフォルトの名無しさん:2005/12/08(木) 22:20:21
>>824
入力データとして三名分のデータを用意するって事じゃめーか?

課題内容を>>820がもっと解りやすく説明してくれることを要求する。
以下は勝手な妄想。

@データをファイルから読み込む or プログラムにべた書き。
A学生情報を入れる構造体の配列に入れる
BAをソートする
C学籍番号を引数に渡すと、構造体のポインタor構造体そのものを返す関数を作成する。
DCを表示する。

こんなかんじか?
829デフォルトの名無しさん:2005/12/08(木) 22:21:24
Aにおいて、名前でソートを行う。
これに基づいて学籍番号を付ける。

を追加。
830デフォルトの名無しさん:2005/12/08(木) 22:23:26
>>819
タイプミスorz
今年の25日まででした
831デフォルトの名無しさん:2005/12/08(木) 22:23:38
値を返す関数ってのは、データがないときにデータが無いからエラーを返しておくとかそういうもので良いかと・・・
生徒は50人しかいないのに80番指定したとか・・・
832デフォルトの名無しさん:2005/12/08(木) 22:29:24
俺たちはエスパーではないからとっとと説明しる! >>820
833820:2005/12/08(木) 22:29:27
>>828
>>829
100%把握できてる訳じゃないですがそんな感じだと思います
プログラムにべた書きです
834820:2005/12/08(木) 22:36:41
ヒントをもらったので以下↓
struct student request(int sn)
{
struct student xx[..];

xx.zz[0] = ......;

}

int main()
{

scanf.....

xx = request(yy);

printf("%s",xx.zz);
};
835デフォルトの名無しさん:2005/12/08(木) 22:40:10
>>834
余計意味がわからないがw
836820:2005/12/08(木) 22:43:42
なんかぐだくだになってしまいましたが
>>822のやつとあらかじめ三名のデータをプログラムに書いておくことははっきりしてます
整理します
自分もパニックですorz
837デフォルトの名無しさん:2005/12/08(木) 22:47:35
820 が整理するまで待機
838デフォルトの名無しさん:2005/12/08(木) 22:48:26
タイプミス発見orz
修正します

問題文
曜日ごとに設定された時間になったらダイアログを表示し、知らせる
設定した時間をカウントダウンして、ダイアログを表示し、知らせる
上記の2機能を併せ持つタイマーを作れ
環境
OS:XP
コンパイル:Visual C++ 6.0
言語:C++のみ
期限:2005年12月25日
その他の制限は特にありません
839デフォルトの名無しさん:2005/12/08(木) 22:49:57
>>836
とりあえず問題文をそのままうpしてみてはどうか?
840820:2005/12/08(木) 22:53:50
>>839
その問題文が>>820なんですorz
最初見たとき皆ハァ?って感じでしたよ
今、言われたことを整理してます
841デフォルトの名無しさん:2005/12/08(木) 22:59:27
struct student{
char name[100];
int age;
char address[100];
};

int hoge(int d1, int d0)
{
return 1;
}
842デフォルトの名無しさん:2005/12/08(木) 23:00:58
あれだろ、曖昧な客からの理不尽な要求から
仕様記述してプログラム化する訓練じゃないか?
843820:2005/12/08(木) 23:03:30
実行結果が
名前=田中太郎
年齢=21
住所=埼玉県越谷市

学籍番号32田中太郎の情報↑
とりあえず一つ一つ
844デフォルトの名無しさん:2005/12/08(木) 23:06:43
一つ一つにすんな読みづらい。

全部まとめて、長くなったらアップローダ使え。
845デフォルトの名無しさん:2005/12/08(木) 23:10:00
学校で、
「キーボードから西暦の年、月、日の値をy/m/dの形式で入力すると、その次の
日の年、月、日を画面に

_年_月_日の次の日は_年_月_日です。

と表示するプログラム」
と言う課題が出たんですが、みなさんならどういうやり方でしますか?
先生は、配列を使えって言ってたんですが、switch文&if文を使う方法しかわからなくて・・・
配列を使うプログラムって・・・??
846デフォルトの名無しさん:2005/12/08(木) 23:13:58
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&y);
scanf("%d",&m);
scanf("%d",&d);
if(month[m-1]==d)
{m++;d=1;}
printf("%d年%d月%d日",y,m,d);
とかそんなところ。
847デフォルトの名無しさん:2005/12/08(木) 23:15:56
days[12]={31,28,31,30,31,30,30,31,30,31,30,31};
if(day+1 > days[month-1]){
day-=days[month-1];month++;
}
こんなイメージ。2月と12月だけ特殊。これは自分で考えてくれ。
848820:2005/12/08(木) 23:16:23
実行結果が
名前=田中太郎
年齢=21
住所=埼玉県越谷市

学籍番号32田中太郎の情報↑
これは32を引数として値を返した
数字入力してプログラムにあれば出力
なければエラーですと表示するなど
これでわかりますかね?
849デフォルトの名無しさん:2005/12/08(木) 23:16:41
>>846
すばやいレスありがと。
うるう年が入っていませんねぇ・・・
自分で考えるか・・・
850デフォルトの名無しさん:2005/12/08(木) 23:20:07
>>820 に説明能力がないってことはよく分かった
851820:2005/12/08(木) 23:25:34
入力データとして三名分の名前、年齢、住所を
数字を入力してプログラム内にあれば
実行結果が
名前=田中太郎
年齢=21
住所=埼玉県越谷市

学籍番号32田中太郎の場合↑
22を入力したらプログラムになかったらエラーですと表示
これを構造体と関数を用いて書く
>>850
よく言われますorz
852デフォルトの名無しさん:2005/12/08(木) 23:29:09
うぜえなこいつ
853デフォルトの名無しさん:2005/12/08(木) 23:34:20
>>820
もし本当に問題といてほしいなら、問題文を完璧にまとめてから書き込みな。
こんな情報を小出しにされたら誰も解けんし、解く気も起きん。
854デフォルトの名無しさん:2005/12/08(木) 23:34:44
[1] 授業単元:プログラミング
[2] 複数の数値のデータの書かれたファイルを読み込み、上限・下限・幅を指定して
  データの数値ごとに数をカウントし、ファイルに出力する
  (上限1、下限0、幅0.01だと 0.00 0個 0.01 2個…1.00 1個となるような)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 12月9日
[5] とくになし

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1245.c
このような元のプログラムがあり、これは入力データ・上限・下限・幅が整数限定なので
少数対応にしたいのですが、どのようにすればよいでしょうか。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1246.c
自分なりにやってみたのですが、Segmentation faultになってしまいました。
855デフォルトの名無しさん:2005/12/08(木) 23:43:18
今日は問題の説明すらできない奴が多いな
856デフォルトの名無しさん:2005/12/08(木) 23:46:39


「入力データとして三名分の名前、年齢、住所を 数字を入力してプログラム内にあれば 実行結果が 」

10回読み返してみて、それでもこの日本語が正しいというのなら、お前はチョン。
857820:2005/12/08(木) 23:47:46
@学生三名の名前年齢住所のデータをプログラムに書く
A学生情報を、構造体の配列にいれる
BAをソートする
C学籍番号を引数に渡すと、構造体そのものを返す関数を作成する
DCを実行結果として表示する
わからないところがあれば指摘してもらえると助かります
それを改めて自分が講師にききます
858デフォルトの名無しさん:2005/12/08(木) 23:50:19
>>854
とりあえずnum_stepの値が正しいか確認してみれ
それとhistの初期化はmemset(hist, 0, num_step)の方がスマートだな
859デフォルトの名無しさん:2005/12/09(金) 00:06:04
>>858
ありがとうございます。
num_stepはどうやら正しい値が出ているようなのですが、
その正しい値でint hist[N]とすると入力データが全て0とされてしまい上手くいきません。

while(fscanf(f_in,"%f",&data)!=EOF){
hist[(int)((data - minvalue) / step)]++;
}
部分が問題なのでしょうか?
860デフォルトの名無しさん:2005/12/09(金) 00:16:16
>>859
(data-minvalue)/stepの値は正しいのか?
とりあえず少しでもアヤシイと思った値は全て出力させてみれ
861デフォルトの名無しさん:2005/12/09(金) 00:18:33
%f → %lf だな
862デフォルトの名無しさん:2005/12/09(金) 00:22:19
それがあったか。そういやそうだよな
scanf系がprintf系より変換指定子に五月蝿いこと忘れてたぜ'`,、 ( ´∀`)ノ '`,、


しかし>>859みたいにやる気のある奴の質問は答えがいがあるな
863854:2005/12/09(金) 00:29:38
みなさま丁寧な回答どうもありがとうございました。
どうにか解決できそうです。
864820:2005/12/09(金) 00:45:15
知恵が足りなくて説明する能力もありませんが、
本気でこの問題を解きたい、理解したいと
思っていることだけはわかってほしいです
まず、与えられた問題情報は>>820の情報だけだったんです
皆さんにもわからないなら問題を出した講師側に
もしかしたら足りないところがあったのかもしれない
そう思ったので指摘をお願いしました
スレ汚して申し訳ないです
865デフォルトの名無しさん:2005/12/09(金) 00:47:18
おーい,他になんか解き残した問題ないか?
866デフォルトの名無しさん:2005/12/09(金) 00:50:06
ネトゲでも作ってろ
867デフォルトの名無しさん:2005/12/09(金) 00:52:25
>>864
とりあえずあれだ、その講師止めさせろ
構造体メンバとして学籍番号が無いのに、学籍番号が与えられて結果を返すルーチン作れって言われても
何をどうすりゃいいのかなんて分かるわけがない
868デフォルトの名無しさん:2005/12/09(金) 01:04:05
>>864
教師をぶっ飛ばせ!
メールアドレスあるならフリーの垢から教師辞職しろボケとでも送って下さい
869820:2005/12/09(金) 01:04:08
実はその講師がつくった問題がもう一つ
[2]問題文:ファイルからx座標、y座標のペアを二つ読み込み、二点間の距離を求めて出力するプログラムを作成せよ

1つ目のx座標
1つ目のy座標
2つ目のx座標
2つ目のy座標

ファイルの内容は
2
7
6
13.9
でした
これは問題として成立していますか?
C言語の実力があれば見抜けると思うんですが今回を期に
より一層気合いが入りました
870学生:2005/12/09(金) 01:04:19
初めまして。早速ですが、質問させていただきます><。

学校の課題でpgm形式の画像ファイルを入力する関数と出力する関数を作成せよという課題がでました。

ヘッダ部分を読み込むのはできたのですが、それ以降が自分には難しすぎて手におえません。

どなたかアドバイスなどをいただけたらと思うのですが。。。
よろしくお願いします><

ただいま入力関数を作成中で出力は手をつけていません。


お粗末ですが、作成中のプログラムを載せさせていただきます。

ちなみに扱うのはP5形式のファイルで、255階調です。

ヘッダファイル
#include <stdio.h>

typedef struct picture{
int w; /*横幅*/
int h; /*縦幅*/
int **gs; /*グレイスケール*/
}
871学生:2005/12/09(金) 01:05:07
ソースファイル1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pic.h"
void read_pic(Pic *p){
FILE *fp;
char buf[2000];
int i,j;
if((fp = fopen("pic1.pgm","r")) == NULL){
puts("file open error.");
exit(0);
}
fgets(buf,1024,fp);
if(strncmp(buf,"P5",2) != 0){
puts("This picture cannot treat.");
exit(0);
}
fgets(buf,2000,fp);
sscanf(buf,"%d %d",&p->w,&p->h);
fgets(buf,2000,fp);
p->gs = (int **)malloc(sizeof(int *)*p->h);
for(i=0;i<p->h;i++){
fread(buf,sizeof(int),p->w,fp);
*(p->gs + i) = (int *)malloc(sizeof(int)*(p->w+1));
buf[p->w]='\0';
strcpy(*(p->gs+i), buf);/*エラー部分*/
}
fclose(fp);
}
872学生:2005/12/09(金) 01:05:49
ソース2
void free_pic(Pic *p){
int i;
for(i=0;i<p->h;i++)
free(*(p->gs)+i);
free(p->gs);
}
int main(void){
Pic p;
read_pic(&p);
free_pic(&p);
return 0;
}
873デフォルトの名無しさん:2005/12/09(金) 01:06:01
>>869
それは全然OK
874デフォルトの名無しさん:2005/12/09(金) 01:08:00
なんか>>870-872にデジャヴが感じられるんだが気のせいか?
875学生:2005/12/09(金) 01:08:54
テンプレ使用するのを忘れてました。申し訳ないです。

[1] 授業単元: プログラミング(c言語)
[2] 問題文(含コード&リンク): 上に記載
[3] 環境
 [3.1] OS: UNIX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 来週の月曜日まで。
[5] その他の制限: 構造体を使用すること
876820:2005/12/09(金) 01:09:15
>>873
すいませんこれもお願いします
今回で相当実力がやばいことがはっきりしました
+ あの講師はポンコツだったんですね
877学生:2005/12/09(金) 01:12:57
>>874
すみません。提出が迫っていて焦っていたもので;;
半日パソコンにしがみついて、ネットでも検索してしたのですがわからなくて。。。

画像処理は初めてなので・・・。
878デフォルトの名無しさん:2005/12/09(金) 01:13:59
>>877
おそらく誤爆のことだと思うが、デジャヴってのはそうじゃなくてここの過去スレでも
見たことがあるなと

pgm人気なのか?
879デフォルトの名無しさん:2005/12/09(金) 01:16:03
>>876
P1(x,y)とP2(x2,y2)の距離を求めるには?
あとはファイルから
FILE *fp=fopen("data.txt","r");
fscanf(fp,"%lf",&x1);
fscanf(fp,"%lf",&y1);
fscanf(fp,"%lf",&x2);
fscanf(fp,"%lf",&y2);
r=distance(x1,y1,x2,y2); /* 自分で作る */
ってなかんじで。
880デフォルトの名無しさん:2005/12/09(金) 01:17:38
>>870
fgets+sscanfで解いてもいいけど、単純にscanfで解いたほうが楽じゃね?
881デフォルトの名無しさん:2005/12/09(金) 01:20:23
つーか、sscanfつかっても、エラーチェックしないんじゃ意味無いじゃん。
882デフォルトの名無しさん:2005/12/09(金) 01:24:12
あと補足。
pgmファイルの横幅は70文字以下という制限がある.
これだとその制限無視?まあ別に気にしなくていいが。
883820:2005/12/09(金) 01:25:13
>>879
本当にありがとうございます
早速とりかかります
884学生:2005/12/09(金) 01:29:50
>>877
pgmが人気なのかどうかはわからないですが、今日突然学校で出題されました。

>>880
scanfですか?fscanfじゃなくてですか?

>>881
まだC言語の…というかプログラミング自体の経験が浅いのです。
どのようなエラーが出てどのようなエラーチェックが必要かがまだ覚えてないことが多くて…。
885デフォルトの名無しさん:2005/12/09(金) 01:32:08
>>881
どっちでもえーやんただの宿題だし
886デフォルトの名無しさん:2005/12/09(金) 01:33:21
>>870
昔、使ったPGMの読み込み書き込み関数だ
構造体使ってないが、参考になると思う


http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1247.txt
↑読み込み関数

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1249.txt
↑書き込み関数
887学生:2005/12/09(金) 01:33:33
>>882
pgmファイルの横幅に制限があるのは初めて知りました。
けど今日使用していたpgmファイルは横幅370とか書いてあったような。。。

jpgをUNIXのconvertコマンドでpgmに変えたのですが。
888デフォルトの名無しさん:2005/12/09(金) 01:36:05
>>884
おお、そういやそうだな。
単純な方法。

fscanf("%d %d",&height,&width); // 順番どうだっけ?
g=(int**)malloc(sizeof(int*) * height);
for(y=0;y<height;y++){
g[y] = (int*)malloc(sizeof(int) * width);
for(x=0;x<width;x++){
fscanf(fp,"%d",&(g[y][x]) );
}
}
これだけでもいけるはず。
889デフォルトの名無しさん:2005/12/09(金) 01:38:13
pgmが面白そうだから調べてみたんだが、規格書というかフォーマットの説明どこかにない?
日本語ドキュメントは元々期待してないから英語でいいんだけど
890デフォルトの名無しさん:2005/12/09(金) 01:38:38
891学生:2005/12/09(金) 01:40:52
>>886
ありがとうございます><
がんばって解読してみます!


あと、ソースファイル1の下の方のエラー部分なんですが、ここはどう直してもエラーメッセージが外れないのです。
型が第一引数に問題ありのようなのですが・・・・・・。

どなたかわかりますか?
892デフォルトの名無しさん:2005/12/09(金) 01:44:34
int **gs; /*グレイスケール*/
で宣言しているんだったら、gs+iもint**型。
893学生:2005/12/09(金) 01:54:54
>>886
このpgm読み書き関数はP2のものですか?これはP5にも使えるのでしょうか?

>>888
ありがとうございます!fscanfで1文字とるのなら、fgetcとかも使えるのかな・・。

>>892
うーん・・・自分がまだ理解不足なようで、中々しっくりこないですOTL
strcpyは使えないのでしょうか?
というか一気に読み取ろうとするのがだめなのかな・・・。


あと、友達が「バイナリファイルだバイナリファイル。」とかいってたから
fopenの第二引数を"rb"にしてるのですが問題ないのでしょうか?
バイナリファイルだから、使ったこともないfreadも使っちゃってるし・・・。
894デフォルトの名無しさん:2005/12/09(金) 02:22:14
895デフォルトの名無しさん:2005/12/09(金) 02:35:11
テキストpgmの横幅は大抵70桁制限を無視している希ガス。
実用上も1ライン分横に並んでる方が便利だしね。
896820:2005/12/09(金) 02:40:05
度々すいません
どなたか>>869を解いてもらえませんか?
>>879で助けてもらったのですが
cannot convert from 'FILE *'となりうまくできませんでした
勉強不足でした
今パソコンから書き込めず携帯からなので文を打つのが非常に大変なので
失敗したプログラムを書くのは辛いので出来れば解いてもらいたいです
897デフォルトの名無しさん:2005/12/09(金) 02:56:44
>>896 エラーがでた場合はどの行でエラーが出たのか(本当はエラーの出力全部)書いてほしい。というか書かなきゃ分からん。
898デフォルトの名無しさん:2005/12/09(金) 03:35:23
ある計算の式に2から100までを代入して結果を表記する(2〜100まで)プログラムを作りたいんですがあとすこしのところが出来ません。
よろしければ教えて下さい
#include<stdio.h>
int main(void){
unsigned num, times, x;

for(x = 1; x< 100; x++)         ←この2行が間違って
printf("%3dのときは%3d回\n",times);   ←いると思います。

x = num;
times = 0;
for (; x != 1; ){
if (x % 2 == 0){
x = x / 2 ;
} else {
x = 3 * x + 1 ;
}
times++;
}
printf("%3dのときは%3d回\n",num, times);
return(0);
}
結果
2のときは1
3のときは7
4のときは2


100のときは〜 。という結果になればOKらしいです
899デフォルトの名無しさん:2005/12/09(金) 03:52:46
#include<stdio.h>
int main(void){
unsigned num;
for(num = 2; num <= 100; ++num) {
unsigned x = num;
unsigned times = 0;
for (; x != 1; ){
if (x % 2 == 0){
x = x / 2 ;
} else {
x = 3 * x + 1 ;
}
times++;
}
printf("%3dのときは%3d回\n",num, times);
}
return 0;
}
900デフォルトの名無しさん:2005/12/09(金) 05:03:30

[1] 授業単元: 基礎プログラミング演習
[2] 問題文
 オセロゲームの盤面を表示するプログラムを作成せよ。
 人間が二人で対戦し,その盤面の結果を表示するプログラムを作成せよ。
 (コンピュータが相手をするものも追加してもよい)
[3] 環境
 [3.1] OS: LINUX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限: 12月13日まで
[5] その他の制限: プログラムは適当な関数を定義して、盤面は2次元配列を用いること。

かなり長くなるかもしれませんが、途中まででもいいのでどうかお願いします。
901デフォルトの名無しさん:2005/12/09(金) 07:37:39
>>884
あ、すまん。P5ならバイナリか。それならfreadだな。
帰ってきたら解くか...
902デフォルトの名無しさん:2005/12/09(金) 09:48:21
[1] 授業単元:プログラム言語
[2] 問題文(というか疑問点):
#include "stdafx.h"
int _tmain()
{
int dio[100];
printf("%d\n", dio[99]);
}
これでコンパイルして実行するとThe variable 'dio' is being
used without being defined.とエラーがでます。ちなみに99を
1に変えてもエラーがでました。でも次のように
#include "stdafx.h"
int _tmain()
{
int dio[100];
dio[99] = 9;
printf("%d\n", dio[99]);
}
と初期値を与えてやると動きます。Linux g++でためした所
エラーはなく両方正常に動きました。VC++だと値を一度与えないと
データにアクセスできないような規則でもあるんでしょうか?ファイル
から読み込んだ値を配列に保存するプログラムを作っていて、fscanf
で配列に代入しようとしたところエラーがでて気づきました。
[3] 環境
 [3.1] OS: Windows
 [3.2] VC .NET framework ver 1.1.4322
 [3.3] C++
[4] 期限: 無期限
[5] その他の制限: 無し。
903デフォルトの名無しさん:2005/12/09(金) 09:50:20
>>902
エラー(error)でなくて警告(warning)だろ。
904902:2005/12/09(金) 10:04:38
すいません。今コンパイルしなおしたら動きました。さっきは
ファイルから読み込んで配列に代入ができなかったんですが、徹夜で
つかれてた?みたいです。もうしわけありません。
905デフォルトの名無しさん:2005/12/09(金) 10:06:14
dio変数は何も設定せずに使われているがいいんかいな? っていう警告だろ。
中学英語だぞ。
906デフォルトの名無しさん:2005/12/09(金) 10:08:48
ゴゴゴ
907デフォルトの名無しさん:2005/12/09(金) 10:12:24
[1] 授業単元: 基礎プログラミング言語
[2] 問題文(含コード&リンク): キーボードからfloat型の数値(小数)を入力して、その数値の小数第一桁の数値を四捨五入するプログラムを作成せよ
[3] 環境
 [3.1] OS:WindowsXP pro (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: VC++ 6.0またはgcc(gcc 2.9 VC 6.0等)
 [3.3] 言語: C言語(C/C++/どちらでも可 のいずれか)
[4] 期限:2005/12/10 9:00まで ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: 特になし(どこまで習っているか、標準ライブラリは使ってはいけない等々)

よろしくお願い致します。
908デフォルトの名無しさん:2005/12/09(金) 10:28:30
第一桁の四捨五入:0.5を足してintにキャスト。
負の数なら0.5を引いてintにキャスト。終わり
909デフォルトの名無しさん:2005/12/09(金) 11:30:40
[1] 授業単元:プログラミング演習U
[2] 問題文:

双方向リストにおける追加、挿入、削除のアルゴリズムを考察し、そのプログラムを作れ。
追加、挿入、削除はそれぞれ関数の形をとるものとする。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ(バージョン):gcc
 [3.3] 言語:C
[4] 期限:12/15まで
[5] その他の制限:初心者にもわかりやすいようお願いします。

どなたかご教授お願いします。
910デフォルトの名無しさん:2005/12/09(金) 11:54:56
>>909
双方向リストの実装にもいくつかパターンがあるわけだが,どう実装すれば?
911学生:2005/12/09(金) 12:09:23
今携帯から書いてます!

>>884
よろしくお願いします。 fread(buf,sizeof(int),1,fp);
で繰り返し文でまわしたらできるかな…
912デフォルトの名無しさん:2005/12/09(金) 12:34:54
[1] 授業単元:プログラミング演習
[2] 問題文:

data.txt には0 以上100 未満の整数が10000 個格納されている。これを全て読み込んで
x,x + 1,x + 2 という具合にデータが並んでいる部分を探し,あればx が何番目のデー
タかを返し(一番はじめのデータは1 番目),なければ"no"を出力せよ。複数のデータが条
件を満たす場合には,1 番目のデータに一番近い位置にあるものを出力せよ。
例: 10 11 12 のような並びを探す。この時,10 が740 番目のデータであれば740 を出力
する。
自作ソース
http://up.viploader.net/mini/src/viploader1203.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ(バージョン):vc++
 [3.3] 言語:C
[4] 期限:12/13まで
[5] その他の制限:
913912:2005/12/09(金) 12:35:47
括弧が間違ってるとこが一つあるんですが、そこは直しました
914デフォルトの名無しさん:2005/12/09(金) 13:06:25
>>912
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const static char *filename = "data.txt";
const static char *delimit = " \t\n";
int main(){
  char buf[1024];
  int cnt = -1, x[3] = {200,200,200};
  FILE *fp = fopen(filename, "r");
  if( !fp ) return 1;
  while(fgets(buf, sizeof(buf), fp)){
    char *p;
    for(p = strtok(buf, delimit); p; p = strtok(NULL, delimit)){
      x[0] = x[1]; x[1] = x[2]; x[2] = atoi(p);
      if(x[2] == x[1] + 1 && x[1] == x[0] + 1){
        printf("ans : %d\n", cnt);
        goto END;
      }
      cnt++;
    }
  }
 END:
  fclose(fp);
  return 0;
}
915914:2005/12/09(金) 13:12:48
見付からないときの表示を忘れてた。まいいか。
916デフォルトの名無しさん:2005/12/09(金) 13:29:53
>>912
とりあえず作ってあるプログラムベースにやってみた。
data.txtはくわせてないから合ってるかは分からん。
#include <stdio.h>
#define MAX 10000
int cont_value_search(int data[],int maxi){
int i;
for(i=0;i<maxi;i++){
if(data[i]==data[i+1]-1&&data[i]==data[i+2]-2)
return i;
}
return 0;
}
int main(void){
FILE *fp;
int i,j,data[MAX];
if((fp =fopen("data.txt","r"))== NULL){
printf("data.txtが存在しません\n");
return(-1);
}
for(i=0;i<MAX;i++){
fscanf(fp,"%d",&data[i]);
}
j=cont_value_search(data,MAX);
if(j<=0){
printf("NO\n");
}
else{
printf("%d\n",j);
}
return(0);
}
917デフォルトの名無しさん:2005/12/09(金) 13:53:52
>>907
四捨五入の定義は1つじゃないってことを出題者は知らないのか?
#include <stdio.h>

int half_adjust(double value)
{
  int sign = value > 0 ? 1 : -1;
  int res;

  value /= sign;
  res = value;

  return sign * (res + (value - res == 0.5 ? res % 2 : value - res > 0.5));
}

int main(void)
{
  float x;
  while (scanf("%f", &x) == 1) {
    printf("%d\n", half_adjust(x));
  }

  return 0;
}
918デフォルトの名無しさん:2005/12/09(金) 13:56:26
>>916
main()の戻り値に負の値は使わない方がいい。
どうせOSによってはunsigned char相当になってしまうし、
わざわざダイアログをポップアップしてくれるコマンドインタプリタもあるから。
それと、ファイルを読み終わったらできるだけ早い段階でfclose()を忘れずに。
更に、cont_value_search()のループ回数を二回分減らしておかないとバッファオーバフローする。
919デフォルトの名無しさん:2005/12/09(金) 14:00:09
>>917
それは所謂JIS(ISO)丸めだね?
それを四捨五入と言うかどうかは微妙だと思うのだが。
920912:2005/12/09(金) 14:01:34
>>916 data.txtがあるけど読めないんですけど何か問題ありですかね?
921デフォルトの名無しさん:2005/12/09(金) 14:03:26
>>920
「読めない」の意味がわからない.どういう状況でおまいは「読めない」と判断したのか?
922デフォルトの名無しさん:2005/12/09(金) 14:06:20
fp=fopen("data.txt","r"))がNULLを返しているんでプログラムがファイルを読んでないと推測しました。
ファイル自体は存在するんですが…
923デフォルトの名無しさん:2005/12/09(金) 14:07:46
>>922
data.txtと実行ファイルは同じフォルダに置いてある?
924912:2005/12/09(金) 14:10:41
置いてあります。ファイル名もdata.txtですし
925デフォルトの名無しさん:2005/12/09(金) 14:15:14
俺の環境では普通に動いた。たぶん作業パスか何かが間違ってる。
926912:2005/12/09(金) 14:27:35
コンパイラによって出来なかったりエラーしますね
bccではできたんですがXcodeではエラーがでました。
ちなみにテストファイルがあります
http://up.viploader.net/mini/src/viploader1204.txt
927デフォルトの名無しさん:2005/12/09(金) 14:28:38
>>924
もしVisualStudioなどを使っているのなら、実行ファイルと同じ場所ではなく
実行時のカレントディレクトリにファイルを置け。
928デフォルトの名無しさん:2005/12/09(金) 14:33:30
>>912
MAX-1まで回すと、最後と最後の一つ前は、もしかしたら配列の範囲外を
差すこともあるね。
MAX-3まで回すといいと思う。
929デフォルトの名無しさん:2005/12/09(金) 14:35:11
>>926
いや悪い。「もしかしたら」じゃなくて、「必ず」指すわ。
i<maxi;をi<maxi-2; にしたらどうかな?
930デフォルトの名無しさん:2005/12/09(金) 14:47:00
見つからないときに 0 を返してるのもよくないね.ファイルの先頭に条件を満たすものがあったときに NO になる.
931909:2005/12/09(金) 14:54:10
>>910
双方向リストを使ったプログラムであれば
どんなものでも構いません。
932912:2005/12/09(金) 14:56:30
>>927 おお、できました!感謝です
>>930 exit(-1)にでもかえておきます
933デフォルトの名無しさん:2005/12/09(金) 14:56:35
漏れも勉強のためにやってみた。

#include <stdio.h>
#define MAX 10000
int cont_value_search(int data[], int maxi)
{
  int i;
  for (i = 0; i+2 < maxi; ++i) {
    if (data[i+2] == data[i+1]+1) {
      if (data[i+1] == data[i]+1) {
        return i;
      }
    } else {
      ++i;
    }
  }
  return maxi;
}
934デフォルトの名無しさん:2005/12/09(金) 14:56:56
int main() 
{
  int i, n, a[MAX];
  FILE *fp;
  fp = fopen("data.txt", "r");
  if (fp == NULL) {
    fprintf(stderr, "ファイルが見つかりません");
    return 1;
  }
  for (i = 0; i < MAX; ++i) {
    fscanf(fp, "%d", &a[i]);
  }
  fclose(fp);
  n = cont_value_search(a, MAX);
  if (n < MAX) {
    printf("%d\n", n);
  } else {
    printf("NO\n");
  }
  return 0;
}
935デフォルトの名無しさん:2005/12/09(金) 15:04:21
&&は短絡評価なので、if文を二重に重ねなくてもよいね。
効率を追求したら、B&M法とかになっていくが・・・・
936デフォルトの名無しさん:2005/12/09(金) 15:08:43
>>935
>>934 がBM法じゃねーの? if 重ねてるのは場合によって添え字の増加の具合を変えるためみたいだし。
937デフォルトの名無しさん:2005/12/09(金) 15:15:34
B&M法は、何文字かすっ飛ばす方法だったと記憶してるが・・・
938デフォルトの名無しさん:2005/12/09(金) 15:19:37
Boyer-Moore法についてはここら当たりが参考になる。
http://www2.starcat.ne.jp/~fussy/algo/algo7-4.htm
939デフォルトの名無しさん:2005/12/09(金) 15:23:13
>>937
完璧に実装した BM 法はスキップテーブルと逆順比較の組合せ。

だけどこの問題の場合、比較する文字列が無数に存在するからナイーブなテーブルは作れない。
で、差に着目したテーブルを作れるかだけど、少し考えれば三文字しかないので、テーブル立てても
効果がない。というわけで逆順比較だけ導入すると >>935 みたいになる。

まあ完璧に実装してない逆順比較だけの方法でも BM 法って書いてある本は少なくはないしね。
940デフォルトの名無しさん:2005/12/09(金) 15:23:44
>>838
タイマー関連だろ?
もうちょい情報ねえのか?
941デフォルトの名無しさん:2005/12/09(金) 15:25:14
>>939
そういう事か。了解。勉強になった。
942デフォルトの名無しさん:2005/12/09(金) 15:37:31
>>838
GUI なプログラムなら、せめてMFC可かとか、wxWindows可とか、そういうこと書いてくれないと困る。
943デフォルトの名無しさん:2005/12/09(金) 15:54:09
>>838
とりあえず、時計表示プログラム作ってみろ
時間取得はわかるよな?
944デフォルトの名無しさん:2005/12/09(金) 15:56:23
>>943
わかりません!><
945デフォルトの名無しさん:2005/12/09(金) 16:14:24
要は宿題じゃなくて自分の欲しいプログラムなんだろ。
946デフォルトの名無しさん:2005/12/09(金) 16:51:31
>>869をプログラム全文
お願いします
947デフォルトの名無しさん:2005/12/09(金) 16:53:57
>>946
よし!分った!
飯食って風呂入って散発してくるから2時間待てw
948デフォルトの名無しさん:2005/12/09(金) 16:55:37
>>947
はい。もう自分限界なんで夜中まででも待ちます
949デフォルトの名無しさん:2005/12/09(金) 17:44:53
風呂はやめて髪切ってきた
言っとくけど>>869だけです
>>820はやらないお( ^ω^)
950デフォルトの名無しさん:2005/12/09(金) 17:52:45
>>948
#include<stdio.h>
#include<math.h>
float leng(float,float,float,float);
int main(void)
{
FILE *fp;
float x1,x2,y1,y2;
fp=fopen("data.txt","r");
if(fscanf(fp,"%f%f%f%f",&x1,&y1,&x2,&y2));
printf("(%2.1f,%2.1f)と(%2.1f,%2.1f)の距離は %2.2fです\n",x1,y1,x2,y2,leng(x1,y1,x2,y2));
return 0;
}
float leng(float x1,float y1,float x2,float y2)
{
return sqrt(pow(x1-x2,2)+pow(y1-y2,2));
}
コンパイルエラーはないがまともにテストはしてない風呂入る
951デフォルトの名無しさん:2005/12/09(金) 18:09:14
>>950
実行しようとしたら
問題が発生したため、〇〇.exeを終了します。ご不便をおかけして申し訳ありません
と出ました
自分のPCに原因?
952デフォルトの名無しさん:2005/12/09(金) 18:11:54
>>951
いやそれ多分data.txtが見つからないじゃない?
データをdata.txtから読み込むにしてるから
953デフォルトの名無しさん:2005/12/09(金) 18:21:51
>>952
問題の意味すらわからなくてなっていたw

感謝します
>>820はワカラネーヨヴォケ(´・ω・`)
ってことで放棄します
954デフォルトの名無しさん:2005/12/09(金) 18:27:38
>>953
放棄するのもったいないから、

#include <stdio.h>
int main()
{
printf("設問が不十分です。私はエスパーではありませんからそのようなプログラムはできません。");
return -1;
}

とでも書いといたら?
955デフォルトの名無しさん:2005/12/09(金) 18:31:40
return -1; ワロスww
明らかに問題はエラーで終了です
本当にありがとうございました
956デフォルトの名無しさん:2005/12/09(金) 18:58:18
>>954
これで
#include<stdio.h>
#include<string.h>
int main()
{
int str[]={144,221,150,226,130,170,149,115,143,92,149,170,130,197,130,183,
129,66,142,132,130,205,131,71,131,88,131,112,129,91,130,197,130,205,
130,160,130,232,130,220,130,185,130,241,130,169,130,231,130,187,130,
204,130,230,130,164,130,200,204,223,219,184,222,215,209,130,205,130,
197,130,171,130,220,130,185,130,241,129,66},i;
for(i=0;i<79;i++)
printf("%c",str[i]);
return 0;
}
957954:2005/12/09(金) 19:00:30
>>956
return -1; は譲れません

for (i=0; i<sizeof(str)/sizeof(str[0]); i++)
のほうがかっこよくね?
958デフォルトの名無しさん:2005/12/09(金) 19:07:25
>>957
あ、sizeofなんて忘れてたw
ところでreturn EXIT_FAILURE で手を打たない?
959デフォルトの名無しさん:2005/12/09(金) 19:10:19
>>958
その話乗った。 EXIT_FAILURE は stdlib.h あたりかな?
960デフォルトの名無しさん:2005/12/09(金) 19:13:07
abort() でいいんじゃね?
961デフォルトの名無しさん:2005/12/09(金) 19:13:40
>>959
よっしゃ・・・・・で、stdlib.hで定義されてたんだね
includeしないでやったらエラーした(´・ω・`)
962デフォルトの名無しさん:2005/12/09(金) 19:20:41
 ┌─────────┐
 │ 基地外問題!!!  |
 │   基地外問題!! |
 └―――──――――┘
      ヽ(´ー`)ノ
         (  へ)
          く

                     |\
┌──────────┘- \
│   強制的にOSに          \
│                     /
└──────────┐- /
      ヽ(´ー`).ノ       |/
        (  へ)
        く
                  - = ≡三                    |\
               - = ≡三  ┌──────────┘- \
               _ = ≡三    │                     \
                ̄ = ≡三    │        戻ります         /
               - = ≡三  └──────────┐- /
        (´ー`)        - = ≡三                     |/
      ( ヽ ヽ)
       /  >
963デフォルトの名無しさん:2005/12/09(金) 19:43:23
>>957
わざわざsizeof演算子使ったら速度落ちるんじゃね?と思って
混合モードでアセンブリ確認してみたが一緒だな

考えてみれば配列サイズなんてコンパイル時に決定されるから当然といえば当然なんだが・・・
まぁ勉強にはなった
964デフォルトの名無しさん:2005/12/09(金) 19:54:05
#include <stdio.h>
#include <string.h>

struct human{
char name[20];
int age;
char address[50];
}

int main(void){
struct human giko,sii,hattousin;

strcpy(giko.name,"ギコ");
giko.age = 3;
strcpy(giko.address"2ちゃんねる");

strcpy(sii.name,"シィ");
sih.age = 4;
strcpy(sii.address"2ちゃんねる");

strcpy(hattousin.name,"八頭身");
hattousin.age = 34;
strcpy(hattousin.address"2ちゃんねる");

return -1
}
965デフォルトの名無しさん:2005/12/09(金) 19:54:36
C99の可変長配列でも定数なのかな。
966964:2005/12/09(金) 19:58:09
携帯から電車のひつまぶしw
配列使うのわっけてた
まぁいいか
967デフォルトの名無しさん:2005/12/09(金) 20:00:42
>>965
可変長配列の sizeof() ってポインタサイズ返しそうな予感
968デフォルトの名無しさん:2005/12/09(金) 20:14:37
>>965
ISO/IEC 9899:1999 6.5.3.4 The sizeof operator 2
If the type of the operand is a variable length array type,
the operand is evaluated;
ちゃんと数えてくれるそうだ。そんな実装見たことないけど。
969デフォルトの名無しさん:2005/12/09(金) 20:35:13
[1] 授業単元: C/C++の宿題を片付けます
[2] 問題文(含コード&リンク):
 誰かそろそろ次スレ(Nr.55)を立ててください :-)
[3] 環境
 [3.1] OS: 2chに書けるOS
 [3.2] コンパイラ: 問わず
 [3.3] 言語: 日本語
[4] 期限: ([2005年12月09日23:59まで]
[5] その他の制限:
 重複を避けるため、可能なら次スレを立てる前に作業開始宣言をお願いします。
970デフォルトの名無しさん:2005/12/09(金) 20:39:50
立ててみる
971デフォルトの名無しさん:2005/12/09(金) 20:43:28
#include<stdio.h>
int main(void){
puts("立てますた\nhttp://pc8.2ch.net/test/read.cgi/tech/1134128493/");
return 0;
}
972969:2005/12/09(金) 20:45:47
>>971
ありがとうございます。
自分でやった時は立てられなかったので大変助かりました。
973デフォルトの名無しさん:2005/12/09(金) 23:48:21
もまいら、こちらのスレを先に使いきってください
974デフォルトの名無しさん:2005/12/10(土) 00:14:42
それじゃ、整理するか
>>820
>>838
>>912
このぐらいか?
問題出てるの?
975デフォルトの名無しさん:2005/12/10(土) 00:42:10
>>909
以前、某スレで書いたものを再利用したから構造体とか関数名は書き換えて提出しる。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1251.zip
976デフォルトの名無しさん:2005/12/10(土) 04:59:15
>>974

>>820 は問題文不明瞭でスルー
>>912 は解決済みだな

>>838
>>900
や ら な い か ?
977デフォルトの名無しさん:2005/12/10(土) 05:40:45
>>976
外出
978業務連絡:2005/12/10(土) 09:30:14
>>870
convertで変換した画像うpしてもらえませんか?
979909:2005/12/10(土) 11:40:40
>>975
ありがとうございます。助かりました。
980デフォルトの名無しさん:2005/12/10(土) 15:09:39
[1] 授業単元: 脳内コンパール
[2] 問題文(含コード&リンク):米国産牛肉輸入防止プログラムを作成せよ
[3] 環境
 [3.1] OS: Windows3.1
 [3.2] コンパイラ: gcc
 [3.3] 言語: 多分日本語
[4] 期限: ([2005年12月11日23:59まで]
[5] その他の制限:はよ埋めろ
981デフォルトの名無しさん:2005/12/10(土) 15:21:57
gcc って NE-i386 って吐けたっけ?
982デフォルトの名無しさん:2005/12/10(土) 15:22:19
>>980
くだらねぇんだよ、氏ね!
983デフォルトの名無しさん:2005/12/10(土) 15:22:51
そんな埋めたければ一人で1000取り合戦でもしてくれ
984デフォルトの名無しさん:2005/12/10(土) 15:29:36
>>982
はい、脅迫罪成立ガクブリながらまってろよ
985デフォルトの名無しさん:2005/12/10(土) 15:36:23
( ´,_ゝ`)プッ
986デフォルトの名無しさん:2005/12/10(土) 21:26:11
987デフォルトの名無しさん:2005/12/10(土) 21:26:48
988デフォルトの名無しさん:2005/12/10(土) 21:33:09
jmp 01H
989デフォルトの名無しさん:2005/12/10(土) 21:59:59
埋め
990デフォルトの名無しさん:2005/12/10(土) 22:03:56
982 :デフォルトの名無しさん :2005/12/10(土) 15:22:19
>>980
くだらねぇんだよ、氏ね!

の問題について
991デフォルトの名無しさん:2005/12/10(土) 22:06:41
( ´,_ゝ`)プッ 必死すぎw
992デフォルトの名無しさん:2005/12/10(土) 22:09:28
埋め
993デフォルトの名無しさん:2005/12/10(土) 23:54:00
994デフォルトの名無しさん:2005/12/11(日) 00:00:28
995デフォルトの名無しさん:2005/12/11(日) 00:02:59
996デフォルトの名無しさん:2005/12/11(日) 03:12:10
>>900
これ適当にいじればいいだろ。

http://pc8.2ch.net/test/read.cgi/tech/1130431335/193
>193 :デフォルトの名無しさん :2005/11/03(木) 00:44:59
>[1] 応用C言語
>[2] 8×8のオセロゲームを作る。1手ごとに盤面の表示を更新する。
>  <条件>
>  ・コマの置かれていない状態を0、黒を1、白を2で表現する。
>  ・起動時に中央に交差する形で黒2個、白2個を置く
>  ・黒(1)を先手とし、行と列番号(0〜7)を指定する。
>  ・すでにコマが置かれてる場合・挟めない位置を指定するとエラーを表示。
>  ・コマを置いたら相手のコマを裏返し(数字を変更し)結果を表示。
>  ・全てのコマが埋まったら結果を表示して終了。
>  ・その際黒と白の個数をカウントして表示すること。
>[3] 環境
> [3.1] WindowsXPがメイン、稀にLinux。
> [3.2] 自宅だとbcpad、学校はgcc。バージョンは失念。
> [3.3] C言語。
>[4] 2005年11月いっぱい。
>[5] 特に制限なし。自由に作ってよいとのことなので
>  ここで受けたアドバイスを元にアレンジできれば効かせたい。

>197 :デフォルトの名無しさん :2005/11/03(木) 02:53:31
>>>193
>ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1039.c

997デフォルトの名無しさん:2005/12/12(月) 04:36:27
埋めようぜ
998デフォルトの名無しさん:2005/12/12(月) 04:40:38
埋め
999デフォルトの名無しさん:2005/12/12(月) 04:50:43
1000デフォルトの名無しさん:2005/12/12(月) 04:55:48
10000000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。