宿題手伝いますYO!!

このエントリーをはてなブックマークに追加
宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
・キーワードが分かっているなら、http://www.google.co.jp を活用すること。
・質問内容がちゃんと日本語になっていること。
・言語名を入れること。
・自分の力で頑張ってみたことを伝えられる人。
・どこまでわかったのかを書くこと。
以上です。

前スレ http://pc3.2ch.net/test/read.cgi/tech/1029422194/



http://pc3.2ch.net/test/read.cgi/tech/1027756023/
http://pc3.2ch.net/test/read.cgi/tech/1026138039/
http://pc.2ch.net/test/read.cgi/tech/1024592344/
http://pc.2ch.net/test/read.cgi/tech/1007902384/
http://pc.2ch.net/tech/kako/1003/10038/1003838158.html
http://pc.2ch.net/tech/kako/982/982853418.html
http://piza.2ch.net/tech/kako/972/972032579.html



長いソースを張れるBBS
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
2デフォルトの名無しさん:02/11/23 13:17
2げっとん
3|4 getwon!
4|got!
5デフォルトの名無しさん:02/11/23 14:58
前スレの977ですが、表はAddress、その中にAge列があるので
大文字とかの間違いは無いと思いますが
括弧ってどこにつけるのでしょうか?
6デフォルトの名無しさん:02/11/23 17:04
締切が25日なのは正直辛いので伸ばして欲しいのですが
8 ? age : sage
>>8
aged
10manko_chinko ◆GLc2rpKRNM :02/11/23 18:19
10 ? "奈良":"北九州";
>>10
manko
12manko_chinko ◆GLc2rpKRNM :02/11/23 18:25
kasei ? "風呂入ったらちゃんと洗え":sinsei ? "保険きくよ":kanton ? "ティムポ画像upしてください.":"むけたのいつ?";
y=-(゚Д゚)・∵ターン・・・・
14manko_chinko ◆GLc2rpKRNM :02/11/23 18:52
ああ、兄弟よ。
左のこめかみを撃つならば、私は右のこめかみをだすであろう。
15デフォルトの名無しさん:02/11/24 08:47
JSPで時刻を取得したいんですが
Calendar cal = Calendar.getInstance();
int time = cal.get(Calendar.HOUR_OF_DAY);
とやっても「クラス Calendar が見つかりません。」
と出てしまうんですが、どうすればよいのでしょうか?

1615:02/11/24 15:20
解決しました
y=-(゚Д゚)・∵ターン・・・・
>>15
そろそろJavaもコピペ厨なPGに汚染されはじめたのか。
y=-(゚Д゚)・∵ターン・・・・
20デフォルトの名無しさん:02/11/24 16:12
だから手伝うって。
JPSで時刻を取得したいんですが...
どうしたらよいのでしょうか?
22ssss:02/11/25 11:01
中和滴定曲線を描くプログラムをActiveBasicで作ってほしんですが・・・。
>>22
作りました
24ssss:02/11/25 11:10
どこにありました?探したんですが・・・
25ssss:02/11/25 11:12
教えてください、お願いします。
26デフォルトの名無しさん:02/11/25 12:00
>>18
こぴぺじゃないっすよ〜
importの仕方がServletとちょっと違ってたので
出来なかったみたいです
28デフォルトの名無しさん:02/11/26 01:07
次式にしたがってfn(x)を定義する。このfn(x)を計算するアルゴリズム(再起呼び出しを用いたもの)を与え、スタックがどのように利用されるか説明せよ。
f1(x)=1/1+x
f2(x)=1/1+(1/1+x)
f3(x)=1/1+(1/1+(1/1+x))

お願いします
>>28
ハァ?
式が変だけど、連分数ね
template<int N>double f(double x){return 1/(1+f<N-1>(x));}
template<>double f<0>(double x){return x;}
3128:02/11/26 01:38
f1(x)=1/(1+x)
f2(x)=1/(1+1/(1+x))
f3(x)=1/(1+1/(1+1/(1+x)))

こう書くべきだったかな?
ここってlispでも大丈夫ですか?
>>31
再帰関数で考えれや
34アフォ:02/11/26 22:11
n節点を持つ有向木を(1)配列(2)ポインタ(3)配列とポインタの両方、で記憶するとき、それぞれの場合について、木のなぞりを実行するアルゴリズムを考察し、計算に要する時間量と領域量を評価せよ
35アフォ:02/11/26 22:12
6文字のアルファベットからなる名前、
   x=a1,a2,・・・,a6
に対しハッシュ関数を
h(a1a2・・・a6)=俳rd(aj)modB
と定める。ただし、ord(aj)はアルファベットにおけるajの番号とする。Bはハッシュ法の大きさである。
(A)M=11、B=12として、名前の例を作り、内部ハッシュ法に従ってINSERTを11回実行し、ハッシュ表を完成させよ。ただし、Mは名前の個数である。
(B)いくつかの名前xについてMEMBER(x)を実行し、その様子を示せ。

どなたか教えていただけませんか?
>>34
最大n節点か、それとも完全n分木か?
なぞりは幅優先でもいいのか?
>>35
Mって何?
あと、「アルファベット」は形式言語でいうアルファベットか、
それとも英字のことか?
>>35
ハッシュテーブル+挿入関数+検索関数自作しろってさ。
どこかにコード転がってんじゃないかねえ。
39アフォ:02/11/26 22:23
>>36
最大n節点で、なぞりは深さ優先です
40アフォ:02/11/26 22:24
>>37
Mは名前の個数です。アルファベットは英字のことです。
41アフォ:02/11/26 23:16
どなたか教えてください
42お茶:02/11/26 23:27
こんばんわ、Javaです。
じゃんけんゲームでコンピュータを強くしろという課題です。
何処をいじればいいのでしょうか?
変数?
当方プログラミング暦一週間です。
>>42
プレイヤーの入力をとってから、出す手を決定するようにする。
44D:02/11/26 23:47
じゃんけんする前に勝ち・負け・引き分けを判定
”ポン”で相手の選択したものの勝ち・負け・引き分けにあたるものを表示
あとは勝ち・負け・引き分けそれぞれの比率を変えてやれば強くもなるし、弱くもなる
45お茶:02/11/26 23:53
>>43
>>44
レスサンクスです!
難しそうですね〜(汗
とりあえずノーマルなじゃんけんゲームのソースはあるんで、
どういじればよいのでしょうか??
ヒントとかでもいいので教えて下さい!
46お茶:02/11/26 23:54
package janken;

import java.io.*;

public class janken{
public static void main (String[] args){
BufferedReader reader = new BufferedReader (new InputStreamReader (System.in),1);
char y,c;
double x=0;

try{
System.out.println ("じゃーん、けーん、・・・");
System.out.println ("[g はグー、c はチョキ、p はパー]");
String st=reader.readLine();

if( st.equals("g") || st.equals("c") || st.equals("p") ){
y=st.charAt(0);
x=Math.random();
47お茶:02/11/26 23:55
if( x >= 0 && x < 0.4 ){
c='g';
System.out.println("ぽん! コンピュータは グー");
}
else if( x >= 0.4 && x < 0.7 ){
c='c';
System.out.println ("ぽん! コンピュータは チョキ");
}
else if( x >= 0.7 && x < 1 ){
c='p';
System.out.println ("ぽん! コンピュータは パー");
}

else{
System.out.println ("乱数エラー! コンピュータの反則負け");
c='z';
}
48お茶:02/11/26 23:55
if( y == c ){
System.out.println ("引き分け!");
}
else if( y == 'g' && c == 'c' ){
System.out.println ("あなたの勝ち!");
}
else if( y == 'c' && c == 'p' ){
System.out.println ("あなたの勝ち!");
}
else if( y == 'p' && c == 'g' ){
System.out.println ("あなたの勝ち!");
}
else{
System.out.println ("g,c,pのどれかを入力してください!");
}
}
else{
System.out.println ("g,c,pのどれかを入力してください!");
}
}
catch(IOException e){
System.out.println(e);
}
}
}
該当個所を下のように変えれば完璧。
if( y == 'c' ){
c='g';
System.out.println("ぽん! コンピュータは グー");
}
else if( y == 'p' ){
c='c';
System.out.println ("ぽん! コンピュータは チョキ");
}
else if( y == 'g' ){
c='p';
System.out.println ("ぽん! コンピュータは パー");
}
コンピュータ強すぎw
51お茶:02/11/27 00:24
>>49
ありがとうございます!
まだ何で強くなったのか分からないですけど解読してみます。
Javaがんばるぞー!
後出しかよ、それも超高速
53あほ:02/11/27 01:26
めっちゃ初心者的な質問で申し訳ないのですが・・・
「日数と曜日(0=日、1=月、2=火、3=水、4=木、5=金、6=土)
を入力してカレンダーをつくれ
実行例 日数;30 曜日;0
   S M T W T F S
   1 2 3 4 5 6 7
   8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 」
という問題なのですが・・・
caseなどにわけてやってみたり、for文でやってみたりしているのですが、
どうも途中でいきづまってしまって・・・全然わからない状態なんです・・・(;;)
たすけてください
54デフォルトの名無しさん:02/11/27 01:46
if(j=0;j<=10;j++)

と書いてコンパイルすると、
「パーサーエラー ;は間違っています」
と出ます。
パーサーエラーとかでぐぐってもよーわからんのです。
どなたか教えてくださいませんか。
55D:02/11/27 01:48
>>42 さんへ
別にどうでもいいんでしょうけど元ネタのプログラムを

x=Math.random();を(Xはint型にしておく)
x=Math.random() * 3;
if( x >= 0 && x < 0.4 ){とかを
if( x == 0 ){、if( x == 1 ){、if( x == 2 ){
にしたほうがずっと綺麗だし乱数エラーなんかも発生しない
この方が動作が分かりやすいのでは。
56D:02/11/27 02:02
>>53
言語が分からないのでサンプルは無し。
曜日コード*2個の半角スペースを用意し、その後ろに2文字分に揃えた1日〜30日までの文字列を
変数に格納する。さらに14個の半角スペースを追加する
左から14文字ずつとれば出来上がり。


5753:02/11/27 02:10
>>D
すいません言語のほうはC言語、かな?
自分が何をやっているのかわからないほどのあほなんで・・・
今、「C言語によるアルゴリズムとプログラム」の「制御構造」のとこを
勉強していまして、そこでいきずまったといった感じです・・・
できればサンプルをいただければうれしいんですが・・・
もー長時間悩んでます(;;)
ほんと初心者ですんません
58お茶:02/11/27 02:32
>>55
まだそんな余裕無いですよ〜!
今ちょっと思いついてはダメの繰り返ししてます…。
なんか繋がりがこんがらがってきちゃって。
自分が出した手を設定しておいた乱数で出す手を決めるって
感じにしたいんですけど…。
if文がめちゃくちゃに…。
59D:02/11/27 03:22
風呂入って酒飲んでて気が付かなかった
>>57
制御構造という意味ではこんな感じでしょうか。
  int a,b,c;
    a=30;b=3;
    for (c = -b;c <= a-1;c++){
      if (c>=0){
        printf("%2d ",c+1);
      }
      else{
        printf(" ");
      }
      if ((c+b) % 7 == 6){ //改行位置:(印字した数-1)/6の余り
        printf("\n");
      }
     }
     printf("\n");
この場合、a:日数 b:曜日で考え方は”今月は-3日から始まり”です。よく考えてみて。
他にも方法はいっぱいあるから別にこの方法が一番というわけではないよ。
>>58
気にしなくてもそのうち出来るようになる。今のうちに失敗やら汚いコード書きまっくて
それを”もっと簡単に出来る方法は無いか"って考えられるようになればいいと思ってる。
簡略化したコードが書けると全体もつかみやすいしひょんなことから問題の答えが見つかることもある。
とりあえずその方法の1つということで。
がんばるべし!
60D:02/11/27 04:05
>>58
おまけ
強くするということはあくまで”勝ち”と”負け”との比率
勝ち:引き分け:負け=5:2:3とすると
>>52の方法で
xが勝ち:引き分け:負けが0〜4:5〜6:7〜9となれば言い訳ですよね。
それとなくイカサマしてください。宿題出した奴談にとっては"ばれなきゃ犯罪じゃない"そうです。
61デフォルトの名無しさん:02/11/27 04:06
62お茶:02/11/27 04:25
>>Dさん
夜遅く(朝)?までありがとうございます!
がんがります!
63お茶:02/11/27 04:44
やったー!自分で工夫したのが動きました!
っていっても>>52さんのとの元のソースの二つを
乱数にしただけですけど(汗
確実に負けるやつではなくなったので宿題出せそうです!
プログラムって達成感ありますよね!?
ちょっとはまりそうです(w
Dさんの言ってたものもこれから試してみます!
64デフォルトの名無しさん:02/11/27 06:41
次式にしたがってfn(x)を定義する。このfn(x)を計算するアルゴリズム(再起呼び出しを用いたもの)を与え、スタックがどのように利用されるか説明せよ。
f1(x)=1/(1+x)
f2(x)=1/(1+1/(1+x))
f3(x)=1/(1+1/(1+1/(1+x)))


お願いします
6553:02/11/27 10:14
>Dさん
なるほどー一回やってみますね
ほんとありがとうございましたー(^−^)
それを参考にしてまた考えてみます
後だしじゃんけんのまま話が終了してしまったようだが、
多分先生が期待しているのはマルコフ連鎖がどうとかそういうのでわ。。。
>>64
せめて漸化式ぐらい書いたら?
68デフォルトの名無しさん:02/11/27 12:48
言語はCです。x,y,zの値を入力して最小値を示すプログラムです。
教授はif else のみでできて簡単だといってたんですが、よくわかりません。
私がやった雑なプログラムです↓ 簡単にするにはどうしたらいいでしょうか?
#include<stdio.h>
main()
{
int x,y,z;
int min;

printf("x、y、z、の値を入力してください。\n");
printf("x= :");
scanf("%d",&x);
printf("y= :");
scanf("%d",&y);
printf("z= :");
scanf("%d",&z);

min=x;
if(min > y){
min=y;
if(min > z){
printf("最小値はzの%dです。\n",z);
}
else{
printf("最小値はyの%dです。\n",y);
}
}
else{
printf("最小値はxの%dです。\n",x);
}
}
69D:02/11/27 13:25
>>68
それきちんと動く?

if (x > y){
  if (y > z){
    printf("最小値はzの%dです。\n",z);
  }
  else{
    printf("最小値はyの%dです。\n",y);
  }
else{
  if (x > z){
    printf("最小値はzの%dです。\n",z);
  }
  else{
    printf("最小値はxの%dです。\n",x);
  }
}
こんな感じでどお?
switch ((x > y)*4+(x>z)*2+(y>z)) {
case ...
}
>>70
うーむ、ベーマガあたりに載っていそうなコードだ…。

>>68
こういうのはどう? 「第2問 配列に拡張せよ」とか言われたときに改造しやすいぞ。

min=x;
name="x";

if(min > y){
 min=y;
 name="y";
}
if(min > z){
 min=z;
 name="z";
}

printf("最小値は%sの%dです。\n",name,min);
72デフォルトの名無しさん:02/11/27 16:59
<<69,70,71 ありがとうございます。参考になりました!
73デフォルトの名無しさん:02/11/27 21:51
すみません。どこかに隠れマルコフモデルについてサンプルコードや、わかりやすく解説してるサイトはないでしょうか?
74デフォルトの名無しさん:02/11/27 22:21
Cなんですが、何回やってもfor君が繰り返しをしてくれません。

問題は、2つの西暦を入力して、AとBの西暦の間のうるう年の年を出力して
さらに回数を求める問題なんですが、どうすればいいでしょうか?
僕が書いたなんちゃってソースは↓

main()
{
int year_a,year_b,kaisu,big,small,i,count;
printf("西暦AとBを入力"); scanf("%d%d",&year_a,&year_b);

 if(year_a > year_b) big=year_a,small=year_b;   
elase if(year_b > year_a) big=year_b,small=year_a;
 
 kaisu=(big-small)/4

for(i == small;i <= big;i++){     ←こいつです。
count=small;
count++;
if(count%4==0) printf("%d",count);
}

printf("うるう年の回数=%d",kaisu);
}

よろしく願いします
75デフォルトの名無しさん:02/11/27 22:23
forのところはfor(i == small;i >= big;i++)   でした

またネタか.........トホホ
ネタのつもりはないんですが・・・

もう1度練り直してみます。
>>75
for(i == small;i >= big;i++)   
i==small
'=='は変だろ。

>>64
double func(double x,int n){
  return (1/(1.0+func(x,--n)));
}
こんなやつか?
79まいった(;;):02/11/27 23:51
あらゆる正の偶数は2つの素数で表記するというプログラムをC++言語で作って
います。N=prime1+prime2 N:正の偶数 prime1&2:素数
       例100 = 3 + 97
= 11 + 89
= 17 + 83
= 29 + 71
= 41 + 59
= 47 + 53 といった感じです。素数だけを求める関数(2,3,5,7,9,11...)
はできたのですが、その後どのように求めた素数をprime1,prime2に代入すればいいのか分から
ないので、誰か教えてください。
素数の小さい方から取りだし、
それに対して和を取った時に、
Nになるような物が素数に在るか探す?

prime1を小さい方から取りだし、
prime2を大きい方から、(←無理?)
和がNにならないか確認しつづける。
値Nの半分まで繰り返す。
81まいった(;;):02/11/28 00:09
>>80 例えばfor(int i=2;i<=n;i++){
   if((i==2||i==3)||(i%3!=0&&i%2!=0))
          cout<<i<<" ";←あくまで素数に振り分けられているか確認のため
}
結果:2 3 5 7 9 11 13...て表れるんですけど、ここからprime1, prime2に代入できないんです。
できればソースコードを書いて教えていただきたいんですがm(--)m お願いします。
C++知らんの。配列に入れて確保しておくとか出来ないの?
>>81
まてや・・・9は素数ちゃうやろw ってか、それ動かしても9は出ない
だろうけど。
でも、それ全然正しくないと思うよ。例えば35とか素数と判定しそうな
予感。
84はあ…:02/11/28 03:10
以下のプログラムはデータベースにある情報をC言語で操作する、というプログラムなんです
データベースのアドレス、ユーザー名などの入力を構造体を使ってユーザーがデータベース名などを打ちこむ形で作りなおしたいのですが、
どうすればよろしいのでしょう
卓越した技術を持つ皆様、初心者のためにご教授ください…

/* PostgreSQL のフロントエンドライブラリである libpq のCプログラム */
#include <stdio.h>
#include <pgsql/libpq-fe.h>

void exit_nicely(PGconn *conn){
PQfinish(conn);
exit(1);
}
85はあ… つづき:02/11/28 03:10
main(){
/* 構造体を使わずに書いた方法 */
charpghost[]="abcd",
pgport[]="0000",
usr[] ="abcd",
passwd[]="abcd",
pgoptions[]= "",
pgtty[]= "",
dbName[]= "abcd";
PGconn *conn;
/* データベースへ接続 */
conn = PQsetdb(pghost, pgport,pgoptions, pgtty, dbName);
/* バックエンドとの接続が成功したことを確認 */
if(PQstatus(conn) == CONNECTION_BAD){
fprintf(stderr, "Connection to database '%s' failed.\n\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
else if(PQstatus(conn) == CONNECTION_OK)
printf("Connection to database '%s' successed.\n\n", dbName);
PQfinish(conn);
}
>>79

#include <iostream>
#include <set>
typedef std::set<int> Cont ;
const max=10000 ;
int get_prime_number(int n, Cont &pl){
if(pl.empty()) pl.insert(2) ;
for(int c=*pl.rbegin()+1;c<=n;c++){
Cont::iterator vi ;
for(vi=pl.begin();*vi**vi<=c;vi++) if(!(c%*vi)) break ;
if(c%*vi) pl.insert(c) ;
}
return pl.size() ;
}
int is_sum_of_prime(int n, Cont &pl){
for(Cont::iterator vi=pl.begin();vi!=pl.end()&&(n-*vi)>=*vi;vi++)
if(pl.find(n-*vi)!=pl.end()) return *vi ;
return 0 ;
}
main(){
Cont v ;get_prime_number(max,v) ;
for(int n=4;n<=max;n+=2)
if(int p=is_sum_of_prime(n,v)) std::cout<<n<<"="<<p<<"+"<<n-p<<"\n" ;
else {std::cout<<n<<"=すごい発見!"<<std::endl ;break ;}
}
87お茶:02/11/28 03:51
マルコフ連鎖…。
やっぱり大学でみんなに言われますた。
ちょっと調べたんですけど、相手の手を学習して、
手を読んで出すようにするってことですか?
88デフォルトの名無しさん:02/11/28 04:08
>>79
1)2〜N/2までの素数を用意する。このときの最大素数をmとする。
 mはN/2以下。   
2)(2,N-2)、(3,N-3)・・・・・(m-1,N-m+1)、(m,N-m)
  の組み合わせで2つの数が素数であるか1)の結果を使って
  判定する。
>>87
マルコフ連鎖とかNグラムモデルとか。
相手の癖を見抜くんだろうね。
先生がどこまで要求してるかは授業のレベルによると思う。
プログラム初心者向けの授業だったら、後出しでいいと思うよ。
素数の列を作るなら、「エラトステネスのふるい」っていう手法が有名です。
googleで検索してみましょ。
>>79
「ゴールドバッハ予想 printf」でググッて見たら、ちらほらとサンプルあったぞ。
92デフォルトの名無しさん:02/11/28 10:14
ロジスティック写像
yn+1=ayn(1−yn) (0<yn<1)
を考える。
a=3.95,y1=0.1に対して、y200をコンピューターを用いて小数点以下6桁まで正しく求めるためには、十進数で何桁程度の数値が扱えるプログラムが必要か?

お願いします
93デフォルトの名無しさん:02/11/28 11:50
perlで
二次式を与え、それを因数分解するプログラムをお願いします。
二次式の与え方は、たとえば、

X^2の係数は?
Xの係数は?
定数項は?
などのように
出力は、
( X - 2 )( X + 3 )
整数の範囲で因数分解できない場合は、
その旨のメッセージを出すように。
x^2の係数は1でも結構です

お願いします
94デフォルトの名無しさん:02/11/28 11:52
D
>>92 以下の感じでいいんじゃないかな。ちなみに当方素人っす。

漸化式y'=a*y*(1-y)に対して、Y'=y'+P',Y=y+Pと誤差を付与した式を考える。
Y'±P'=a*(Y±P)*(1-(Y±P))
これを展開してP'をPで表す。このとき、
・Pの二乗は小さい値とみなして無視。
・Pの係数にy[n]がある場合はy[n]=1と置き換える。
・±P-(±P)は0ではなく±2Pなので注意。
そうすると、aが定数であることからP'=α*P(α=定数値)という式が得られるはず。
X回の繰返しで累積誤差はα^Xになるので、0.000001/(α^X)を表せる精度が必要、となる。

定数値との演算で誤差が発生するか、とか、計算方法にもよるけど。
96デフォルトの名無しさん:02/11/28 18:13
画像表示に関してですが、   
     int i, j;
int base1 = 64; //
 int base2 = 128; //
  int base3 = 192;

2値画像に変換するプログラムのbaseの部分を上のように変えて、
画像を4値化するときの色を分ける基準となる値を決めて、条件部分を
if (pixcell[i][j] < base1) modified[i][j] = 0;
else if (pixcell[i][j] < base2) modified[i][j] = 86;
else if (pixcell[i][j] < base3) modified[i][j] = 172;
else modified[i][j] = 255;

にして、原画像を4値化して、画像を4階調で表示するときの基準の値を自分で計算したので、
結果が正しいと判断したのですが、実際のプログラム実行時に,
元の値に対し正しい値が割り当たえられている確証がないので正しいとは言えないそうです。
どうしたら結果が正しいと判断できるのでしょうか。教えてください、お願いします。



>>96
二値画像をbase1~3を境界に四段階に区切れる理由がよくわからない
>>96
ループで生成した0から255の値を、そのルーチンで処理して、
ちゃんと4値になっているかどうか確かめれば?
この程度なら画像で確認しなくても大丈夫でしょ。

>>97
もとの2値化プログラムを4値化に改造したいのだと思ふた。
99デフォルトの名無しさん:02/11/29 00:24
ホントに困ってます。もう6時間くらい進んでません。

前にjavaでとサーバーを作る課題がでました。
内容は、クライアント側からnameと入力するとサーバーから決まった名前が帰ってきて、numberと入力すると決まった番号が帰ってきます。byeを入力すると終了になります。
で、そのサーバーのプログラムはサンプルを変えるだけでできました。
そのときはクライアントについてはサンプルを使うだけでできました。

今回は、それをGUIベースのクライアントにするのが課題です。(アプレットではない)
簡単なものでよく、nameボタンとnumberボタンがあって、どちらかを押したら対応した文字が出る、くらいのものでいいと思います。
もちろん、このときにサーバーからデータを受け取り、それを表示する形です。

100デフォルトの名無しさん:02/11/29 00:25
とりあえず完成しているサーバーのプログラムを書きます。
import java.util.*;
import java.io.*;
import java.net.*;

class MyServer {
public static void main(String args[]) {
if(args.length != 1) {
throw new IllegalArgumentException("Usage: java MyServer portnumber");
}
int port = Integer.parseInt(args[0]);
try {
ServerSocket ss = new ServerSocket(port);
while(true) {
Socket client = ss.accept();
new ServerThread(client).start();
}
}
catch(Exception e) {
System.err.println(e);
}
}
}
101デフォルトの名無しさん:02/11/29 00:27
class ServerThread extends Thread {
private Socket client;
private BufferedReader file_in;
private BufferedReader from_client;
private PrintWriter to_client;
static int live_count=0;

public ServerThread(Socket c) {
super();
client = c;
}

synchronized void count_up() {
live_count++;
}

synchronized void count_down() {
live_count--;
}

public void run() {
count_up();
System.out.println(ServerThread.live_count);
try {
from_client =
new BufferedReader(new InputStreamReader(client.getInputStream()));
to_client =
new PrintWriter(client.getOutputStream());

102デフォルトの名無しさん:02/11/29 00:28
System.out.println("connecting from " +
client.getInetAddress());
String line;
while(!(line = from_client.readLine()).equals("bye")) {
if(line.equals("name")){
to_client.println("名前");
}

else if(line.equals("number")){
to_client.println("番号");
}
else{
to_client.println("\n");
}
to_client.flush();

}
to_client.println("ok");
to_client.flush();

from_client.close();
to_client.close();
client.close();
count_down();
}
catch(Exception e) {
count_down();
System.err.println(e);
}
}
}
103デフォルトの名無しさん:02/11/29 00:30
そして これがCUI版のクライアントです。
import java.io.*;
import java.net.*;

public class MyClient {
public static void main(String[] args) {
if(args.length != 2) {
throw new IllegalArgumentException("Usage: java MyClient IPaddress portnumber");
}
String host = args[0];
int port = Integer.parseInt(args[1]);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
try {
Socket server = new Socket(host, port);
BufferedReader from_server =
new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter to_server =
new PrintWriter(server.getOutputStream());

System.out.println("Client: Connected to " +
server.getInetAddress() +
":" + server.getPort());

104デフォルトの名無しさん:02/11/29 00:31
while(true) {
System.out.print("> ");
String send_str = input.readLine();
to_server.println(send_str);
to_server.flush();
String line = from_server.readLine();
System.out.println(line);
if(send_str.equals("bye")) {
break;
}
}

from_server.close();
to_server.close();
server.close();
}
catch (Exception e) {
System.err.println(e);
}
}
}

これで一通りは終わりです。
10599:02/11/29 00:36
自分ではこういうのを作ってみたのですが、GUIで作るのは初めてなので本とか参考にしてもうまくいきません・・・

class lis extends JPanel implements ActionListener{
JButton button1,button2;

lis(){
JButton button1 = new JButton("名前");
JButton button2 = new JButton("番号");
add(button1);
add(button2);
button1.addActionListener(this);
button2.addActionListener(this);
mainrepaint;
}

public void actionPerformed(ActionEvent e){
if(e.getSource() == button1){

}
else if(e.getSource() == button2){
}
}
10699:02/11/29 00:41
まずはif文を使い、どちらのボタンを押したのか見分け、それに対応したプログラムが書ける状態にしたいのです。
10799:02/11/29 01:28
とりあえず全然進まないので、今日は寝ることにします。
1をよく見ず書いたので、「長いソースを張れるBBS」というとこに目がいきませんでした。
ごめんなさい。
荒らすだけ荒らしておねんねか。
109ぱぱ:02/11/29 02:47
碁石モデルのプログラムをC言語で作ろうと思っています
どういったものかというと
1・二次元の正方格子(碁盤のようなもの)を考える
2・まず最初に1つだけ白いしを格子点に置く
3・その周りの四つの格子点に確率Pで白石を置く。そうでない場合は黒石をおく
4・次に白石に隣接する何も置いていない格子点に、3と同じ思考をする。
5・以上の操作をすべての白石が黒石に囲まれるまで繰り返す

このアルゴリズムを考えています。考え方のきっかえでももらえないでしょうか?
よろしくお願いします
>>109
http://pc3.2ch.net/test/read.cgi/tech/1024024666/l50
このスレ参考になるかも。

>1・二次元の正方格子(碁盤のようなもの)を考える
2次元配列で。

>2・まず最初に1つだけ白いしを格子点に置く
配列へ値を代入。(例:白=1、黒=2、なし=0)

>3・その周りの四つの格子点に確率Pで白石を置く。そうでない場合は黒石をおく
確率Pはrand()で。

>4・次に白石に隣接する何も置いていない格子点に、3と同じ思考をする。
それを関数化しておくと楽だね。
int think(int color);みたいに。

>5・以上の操作をすべての白石が黒石に囲まれるまで繰り返す
whileループで実現。
>>108
反省してるしいいんじゃない。

>>105
ほとんど問題ないように思うけど、気になる点が一点。

class lis extends JPanel implements ActionListener{
JButton button1,button2;

 lis(){
 /*JButton*/ button1 = new JButton("名前");
 /*JButton*/ button2 = new JButton("番号");
 ...

クラス変数と同名のローカル変数を宣言すると、別の変数として扱われてしまう。
ていうかどう上手くいかないのか書こうYO!!
112デフォルトの名無しさん:02/11/29 09:44
>98
ルーチンで処理するのではなく、数例を具体的数値とともに調べることが必要なよう
なのですが、いまいち意味がわかりません。どうしたらいいのでしょうか?
113一年生:02/11/29 11:36
C言語です。誰か教えてください。
あられ数というものがあります。次のルールに従って次の数が決まっていく
数列のことです。
1. はじめに勝手に数を与えます。
2. その数が偶数なら2で割り、奇数なら3倍して1を足すことによって次の
 数を決めます。
3. 新たに決まった数に対して、2を繰り返します。
たとえば、はじめに、7を選んだとしましょう。これは奇数ですから次の
数は7×3+1=22。22は偶数だから2で割って11。11は奇数だから3倍して1を足して34。これを順々に続けていくと
7,22,11,34,17,52,26,13,40,
20,10,5,16,8,4,2,1,4,2,1、・・・
と、最後に4,2,1を繰り返すようになります。途中の数は大きく
なったり小さくなったりと、雲の中で成長する霰(あられ)のように
振舞うので、霰数という名前がついています。
課題1:整数を入力すれば、あられ数を順々に計算して表示するプログラム
  を作りなさい。このとき、あられ数に1が出てきたら、プログラムは終了するようにしなさい。
課題2:あられ数が1に落ち着くまでに何ステップかかるのかを表示するプロ
  グラムを作成しなさい。(7の例だと16ステップで1になっています。)
課題3:3〜30に対するあられ数のステップ数を表示するプログラムを作
  成しなさい。

ifとかdo〜whileとか色々使ってみましたが、うまくいきませんでした、誰か教えてください。
>>113
> ifとかdo〜whileとか色々使ってみましたが、うまくいきませんでした、誰か教えてください。
どこまでやってみたんだ。できたとこまで貼ってみろ。
for (i=1; n!=0; i++) {
printf("%d %d\n", i, n);
if (n%2) n/=2;
else n = 3*n + 1;
}
116:02/11/29 12:00
voidarare()
{
unsigned int value;
unsigned char count_1;
unsigned char count_2;

//valueにどうにかして数字を入れておく

count_1 = 0;
count_2 = 0;
while(value != 1){
count_1++;
if((value >= 3) && (value <= 30)){
count_2++;
}
if(!(value % 2)){
value /= 2;
}
else{
value = value * 3 + 1;
}
//ここでvalueを表示
}
//ここでcount_1を表示(ステップ数)
//ここでcount_2を表示(3〜30までのステップ数)
}
117:02/11/29 12:02
voidarare()
{
unsigned int value;
unsigned char count_1;
unsigned char count_2;

//valueにどうにかして数字を入れておく

count_1 = 0;
count_2 = 0;
while(value != 1){
count_1++;
if((value >= 3) && (value <= 30)){
count_2++;
}
if(!(value % 2)){
value /= 2;
}
else{
value = value * 3 + 1;
}
//ここでvalueを表示
}
//ここでcount_1を表示(ステップ数)
//ここでcount_2を表示(3〜30までのステップ数)
}
118:02/11/29 12:03
タブもうまくいってないし、2重カキコしてしまってスマソ。
for (i=3; i<30; i++) {
for (j=0, k=i; k != 1; j++)
k = arare(k);
printf("%d %d", i, j);
}
>>116-118
なんで課題3からやってんだ。
121文系一年生(113):02/11/29 12:43
課題1
#include <stdio.h>

main()
{
int i,j;
do
{
scanf("%d",&i);
if(i%2)
{
j=i*2;
}else
{
j=i*3+1;
}while(1!)

}

この辺までしか分かりませんでした。
122文系一年生(113):02/11/29 12:44
課題1
#include <stdio.h>

main()
{
int i,j;
do
{
scanf("%d",&i);
if(i%2)
{
j=i*2;
}else
{
j=i*3+1;
}while(i!=1);

}

この辺までしか分かりませんでした。
>>122
ループの中で毎回iを書き換えちゃ意味ないじゃん。
あとインデントしてくれ。
もひとつ、「その数が偶数なら2で割」るんだろ?
125文系一年生(113):02/11/29 12:53
>>122-123
はい、*と/を間違えました。

インデントって何ですか?
字下げ。ブロックの中の行頭を下げること。

#include <stdio.h>

main()
{
    int i, j;
    do {
        scanf("%d", &i);
        if (i % 2) {
            j = i * 2;
        }
        else {
            j = i * 3 + 1;
        }
        while (i != 1);
    }
}
127文系一年生(113):02/11/29 13:02
課題1
#include <stdio.h>

main()
{
int i,j;
do
{
scanf("%d",&i);
if(i%2)
{
j=i/2;
}else
{
j=i*3+1;
}while(i!=1);

}

コンパイル通らないだろ。いや漏れも>126で間違えちゃったけどさ。
それと>123ちゃんと読んだ? あ、あと計算結果毎回捨ててるし。
課題1
#include<stdio.h>
main()
{
int arare;
scanf("%d",&arare);
while(arare != 1){
if(!(arare%2)) arare/=2;
else arare=arare*3+1;
printf("%d\n",arare);
}
return 0;
}
>>130
scanf()の戻り値をチェックしてないのはともかく、0を与えると無限ループする。
132デフォルトの名無しさん:02/11/29 13:46
int arare(int n) { return (n%2) ? n/2 : n*3+1; }
//課題1
void main() {
 int n;
 scanf("%d", &n);
 for (; n != 1; n = arare(n))
  printf("%d\n", n);
}
//課題2
void main() {
 int n, i;
 scanf("%d", &n);
 for (i=0; n != 1; i++, n = arare(n))
  printf("%d %d\n", i, n);
}
//課題3
void main() {
 int i, j, n;
 for (i=3; i<=30; i++) {
  for (j=0, n=i; n != 1; j++, n = arare(n))
   ;
  printf("%d %d\n", i, j);
 }
}
課題2って回数だけ表示するんじゃないの?
>>131
そういえば、0以下考慮してなかった。
135デフォルトの名無しさん:02/11/29 18:56
8クィーン問題で、穴を埋める課題がでました。

まず、col[]は1なら縦列にはクィーンを置けない。
queen[]は行を示している。
up[]が一なら斜めには置けない。
downが1なら斜めには置けない。
136デフォルトの名無しさん:02/11/29 18:56
まずはクィーンの位置を表示するプログラムです。
#include <stdio.h>

#define N 8

int col[N+1],queen[N+1],up[2*N+1],down[2*N+1];
int num=1;

void queen_n(int i){
int j,k;
if(i>8){
printf("%d\n",num++);
for(j=1;j<=N;j++){
for(k=1;k<=N;k++){
if(queen[j]==k){
printf("Ω");
}
else{
printf("+");
}
}
printf("\n");
}
getchar();
}
137デフォルトの名無しさん:02/11/29 18:58
136で書いた、位置表示のプログラムはどうでもよく、ポイントは次です。
else{
for(j=1;j<=N;j++){
if(col[j]==0 && up[i+j]==0 && down[i-j+N]==0){
printf("%d",j);
queen[i]=j;
col[j]=1;
up[i+j]=1;
down[i-j+N]=1;
queen_n(i+1);

}
}
}
}
138135:02/11/29 19:00
queen_n(i+1);の下を埋めよ、という課題です。
3行くらいで大丈夫なようです。

おそらくその行に置けなかったら一個戻る、ようなプログラムだと思うのですが、どうもうまくいきません。
助けてください。
139135:02/11/29 19:01
ちなみに、これはmain関数です。(一応のせておきます。)
あ・・・言い忘れましたが、C言語です。

int main(void){
int i;

for(i=1;i<=N;i++)
col[i]=0;
for(i=1;i<=2*N;i++){
up[i]=0;
}
queen_n(1);

return 0;
}
>>137
col[j]=0;
up[i+j]=0;
down[i-j+N]=0;
141デフォルトの名無しさん:02/11/29 23:13
クライアントとサーバのプログラムで、質問です。

クライアント側だけについてです。
2つのクラスを作りました。
1つのクラスにサーバへつなぐために、以下のプログラムを書きました。
public static void main(String args[]) throws IOException{
String host = args[0];
int port = Integer.parseInt(args[1]);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

Socket server = new Socket(host, port);
BufferedReader from_server =
new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter to_server =
new PrintWriter(server.getOutputStream());

ここで、「他のクラス」からto_serverやfrom_sever、などを呼び出したいのですが、やり方を教えてください。
ようするに、その「他のクラス」からサーバに命令を送ったりしたいのです。
142デフォルトの名無しさん:02/11/29 23:33
C言語のバブルソートです、そして初心者なんですけど、

#include <stdio.h>

#define NUMBER 6

void main(void)
{
int i,k,a,kai=0;
int data[NUMBER];

/* NUMBER個の値を受け取る */
for (i=0;i<NUMBER;i++)
{
printf("%d番目の値は? :", i+1);
scanf("%d",&data[i]);
}
143142です:02/11/29 23:35
/* バブルソート */
for (i=0;i<NUMBER;i++)
{
for (k=0;k<NUMBER;k++)
{
if (data[k]>data[k+1]) {
/* 値を入れ替える */
a=data[k];
data[k]=data[k+1];
data[k+1]=a;
kai=kai+1;  } 
}
}
/*結果の表示 */
printf("並べ替えた結果: ");
for (i=0;i<5;i++){
printf("%d ",data[i]);
}
printf("入れ替えた回数は=%d",kai);
printf("\n");
}


これだと全部を昇順に並べた結果しかでてこないんです。
これをどうにかして擬似乱数(rand関数)を使って、
一回ごとに値を交換した結果を表示したいんですが、
どうしたらいいでしょうか。
1 2 5 4 3
1 2 4 5 3
1 2 4 3 5
1 2 3 4 5 と言った感じでうまくできないでしょうか。お願いいたします。
144594:02/11/29 23:48
>142
そもそもそのprogramがうまく動かないぞ.
145142・143:02/11/30 01:09
上の二つコピーしてやったらホントにできませんでしたね。すんませぬっす。
ということで、こっちにちゃんと動作するのを置かせていただいたので、
こちらでお願いいたします。すいませんでした。
http://ime.nu/do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
の37です。
if (data[k]>data[k+1])
{
/* 値を入れ替える */
a=data[k];
data[k]=data[k+1];
data[k+1]=a;
kai=kai+1;
/*ここでデータ出力*/
}
>これをどうにかして擬似乱数(rand関数)を使って、
>一回ごとに値を交換した結果を表示したいんですが、
意味不明
148142・143:02/11/30 02:17
146さんどうもです、今からやってみます。

>147さん
さっきのプログラムを実行すると
「1番目の数は…
2番目の数は…」と出てきて、それから自分で値を代入してから
 やっと実行結果が出てくると思うんですが、それを擬似乱数を使って
ランダムにデータを作って勝手に適当な結果が出てくるようにしたいんです。
わかりにくくて申し訳ありませんでしたっす。
 
time_t t;

srand(&time);
だっけ?使うのは。
時間ごとに初期化されるランダム関数。
>>149
いっぺん氏んでこい。
151デフォルトの名無しさん:02/11/30 10:31
4 階調と16 階調で量子化する際には,X0<X1<X2<X3<X4,
Y0,Y1,Y2,Y3 をどうしたらいいのですか?教えてください。お願いします。
>>148
バブルソートの中に結果の表示を入れる。
>>148
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TIMES 10
int main(void)
{
 int data[TIMES];
 int a,b,keep;
 srand(time(NULL));
 for(a=0;a<TIMES;a++)
  data[a]=rand();
 for(b=0;b<TIMES-1;b++)
  for(a=0;a<TIMES-1;a++)
   if(data[a]>data[a+1])
   {
    keep=data[a];
    data[a]=data[a+1];
    data[a+1]=keep;
   }
 for(a=0;a<TIMES;a++)
  printf("data[%d]==%d\n",a,data[a]);
 return 0;
}
154142・143:02/11/30 14:57
147・148さん、非常にありがとうございました。
おかげでなんとか結果と回数を表示することができまた。
148さんのをほとんど使った気もしますけど、感謝してます。

>>151 >>96の「画像を4階調で表示するときの基準の値を自分で計算したので」と
同じように16階調の基準の値を計算すればよいと思うが。

>>96の式を眺める限りでは、こんな感じか?
if (pixcel < base[i]=256/n*i) modified = 256/(n-1)*(i-1)

ていうか、出された課題をもっと正確に書き込め。何を聞きたいのかさっぱりなので、
みんなも宿題手伝いようがない。
156デフォルトの名無しさん:02/12/01 12:09
説明不十分でゴメンナサイ。初めに2値化のプログラムがあってそれを変更して4値化にして、
その結果が何故正しいか数例を具体的数値とともに調べるという課題で、下のプログラムのように変更したのですが、
数例を具体的数値とともに調べるというのがわかりません。

画像表示に関してですが、   
     int i, j;
int base1 = 64; //
 int base2 = 128; //
  int base3 = 192;

2値画像に変換するプログラムのbaseの部分を上のように変えて、
画像を4値化するときの色を分ける基準となる値を決めて、条件部分を
if (pixcell[i][j] < base1) modified[i][j] = 0;
else if (pixcell[i][j] < base2) modified[i][j] = 86;
else if (pixcell[i][j] < base3) modified[i][j] = 172;
else modified[i][j] = 255;
157蘇えった149:02/12/01 13:47
time_t t;

srand(&t);
>>157
もういっぺん氏んでこい。
159デフォルトの名無しさん:02/12/01 17:14
二つのディレクトリの中に同じ名前のファイルがあるか
どうかを調べなければいけないのですが、うまくいかないです・・。
たとえばディレクトリ1に file1, file2, file3 が入っていて、
ディレクトリ2に file2, file3, file4 が入っていたら、
file2 file3 のように出力したいのですが・・。
160159:02/12/01 17:16
あっ。すいません。。普通に書き忘れました。言語はCです。
161159:02/12/01 17:18
たびたびすいません。
ディレクトリの中はファイルだけと仮定してOKみたいです。
一つのディレクトリに入っているファイル名を取得するところまでは
できた?
163デフォルトの名無しさん:02/12/01 17:23
あ。レスありがとうございます。
はい。ひとつの時はできたんですよ。
たとえば、このディレクトリにこのファイルはあるか?
というのはできたんです。しかしディレクトリごとの
比較になると頭が錯乱してきてしまって・・
>>159 に質問。
char *d1[]={"file1","file2","file3",};
char *d2[]={"file2","file3","file4",};
このd1とd2から同じ文字列を見つけ出すプログラムは作れるか?
165159:02/12/01 17:28
>>164

ループの中にもういっこループをいれて
9通り比較すればいいんですよね??
1つ目のディレクトリに入っているファイル名をハッシュテーブルに入れる。
2つ目のディレクトリに入っているファイル名についてmemberを実行して重複があれば表示。
>>159に質問。
取得したファイル名をテーブルに保存する事は出来るか?
テーブル?ハッシュテーブル?ですか?
いや、ちょっとわかんないっす。
検索逝ってきます。レスありがとうございました。
>>168
名前を辞書順にソートしておけば、
ハッシュを使わなくても、O(n)でできるぞ。
ソートに時間がかかるとだめだけどな。
>>156
その課題が出された経緯を知らないから、
「結果が何故正しいか数例を具体的数値とともに調べる」
ていうのはわからんよ。
たぶん、2値化のときに、それをやっていると思うんだけど。

あてずっぽうでいいなら、
グラデーション画像を突っ込んでみるとか、
pixcell[i][j]に適当な値を入れてみて、それが期待した値になるか試すとか。
C言語なんですけど、ある文字の文字コードの順序を逆にして別の文字を表示させたいんですけど
(例えば a(10進で97)を O(10進で79)としたい。100未満までで...)
いい方法、というか、やり方がまったく思いつきません。
何かいい方法をご教授願えませんか?
わかりにくい文章ですみません。
172D:02/12/02 08:32
>>171
int a;
a=97 / 10;
printf("%d",(97 % 10)*10+a);
急いでるからこれでかんべん!
173D:02/12/02 08:34
あ、文字ね制御コードに引っかかるから無理!
>>171
こんな感じですか?
#include <stdio.h>
int main(void)
{
 char c;
 puts("1文字を入力してください");
 c=getchar();
 if(a>-1&&a<100) printf("%c\n",c/10+c%10*10);
 else puts("範囲外です");
 return 0;
}
175デフォルトの名無しさん:02/12/02 10:40
>>171

#include <stdio.h>
main()
{
int a, b;
printf("100未満の自然数を入力してください。\n");
printf("1桁の場合は「0 + スペース + その数」\n");
printf("2桁の場合は「10の位の数 + スペース + 1の位の数」\n");
printf("例 4 −> 「0 4」、 84 −> 「8 4」\n");
scanf("%d%d", &a, &b);
printf("%d%d", b, a);

return 0;
}
176初心者:02/12/02 11:24
VC++のダイアログベースで作成しています。ファイルをコピーするアプリケーシ
ョンでコピー元コピー先をファイルダイアログボックスで表示させ指定し、スタ
ティックテキストにファイルまでのパスを表示するというものです。そして、ボ
タンがありクリックすると、ファイルのコピーを開始します。但し、以下の場合
はメッセージボックスを表示します。

1.コピー元ファイル名が指定されていない。
2.指定のコピー元ファイルが存在しない。
3.コピー先ファイル名が指定されていない。
177初心者:02/12/02 11:26
4.コピー先ファイルが既に存在する。
4の場合は、問い合わせメッセージの表示とし
ユーザが上書きOKを選択した場合のみ、
コピー実行されるようにする。

です。よろしくお願いします。
178初心者:02/12/02 11:47
追記:一応パスがでる所まで頑張りましたが保存先の所で上書き警告がでます。
179名無しさんに接続中…:02/12/02 14:59
このスレってfortranの宿題も手伝ってもらえますか?
>>179
もしかしたらこっちで聞いた方がいいかもしれん。
http://pc3.2ch.net/test/read.cgi/tech/1003214738/
181デフォルトの名無しさん:02/12/02 15:30
テキストファイルを読み込んでその中にある単語の出現回数を計算する
プログラムが宿題ででました。
CかC++で作るのですがさっぱりわかりません。どなたかよろしくお願いします。
182デフォルトの名無しさん:02/12/02 16:58
hashにたたきこんどけ
183デフォルトの名無しさん:02/12/02 17:05
#include <ctype.h>
#include <stdio.h>

#define MAXLINE 80

int main(int argc, char *argv[])
{
FILE *fi;
int ichar;

if (argc !=2){
fprintf(stderr,"引数ちがうで。やりかたは,example8_2 ファイル名 \n");
return -1;
}

/*読みだしもとのファイル開く*/
if ((fi = fopen(argv[1], "rb")) == NULL){
fprintf(stderr,"Cannot open input faile.\n");
exit(1);
}

while((ichar = fgetc(fi)) != EOF){/*一文字ずつ大文字に変換*/
fputc(toupper(ichar),stdout);
}
fclose(fi);
/*ファイルを閉じます*/
return 0;
}


184デフォルトの名無しさん:02/12/02 17:10
>>183のプログラム(全部大文字で出力するもの)を改良して、
名前の名字だけ大文字で出力するプログラムをつくれ、
って話なんだけど・・・無理です。

どうやって名前の名字だけ区別するの?さっぱりわかりません。
よろしくお願いします。

example8_2は気にしないでください。



hanako YAMADA
oniroku DAN
takeru YAMADA


185184:02/12/02 17:13
あっ・・・C言語です。
しかもウインドーズじゃなくて・・・・なんなのかわからない・・・

SOLARIS?
MICROSYSTEMS?
JAVA?
最初小文字で、スペース出力後は大文字、改行出力後は小文字に。
じゃ駄目なのかな?
187デフォルトの名無しさん:02/12/02 17:20
>>186
レスどうもです。
友だちとそれも考えたのですが・・・うまく行かないのです。
それでできるといいんですけど・・。
うまく逝かないのはあんたのプログラムミスじゃないの?
189デフォルトの名無しさん:02/12/02 17:33
>>185

#include <stdio.h>
#include <ctype.h>

#define MAXLINE 80

int main(int argc, char * argv[]){
FILE *fi;
int ichar,a = 1;

if (argc != 2){
fprintf(stderr,"引数の種類が違うよ。使用方法: a.out ファイル名 \n");
return -1;
}
if ((fi = fopen(argv[1],"rb")) == NULL ){
fprintf(stderr ,"Cannt open intput file.\n");
exit(1);
}

while ((ichar= fgetc(fi)) != EOF){ /*一文字ずつ読む*/
if (ichar == ' ')a=0;
else if (ichar == '\n')a=1;
if (a == 0)fputc(toupper(ichar), stdout);
else fputc(ichar, stdout);
}
fclose(fi);

return 0;
}
190189:02/12/02 17:35
まえに同じのやってるよ・・・・
でも挿入文は自分で適当に変えてね
191187:02/12/02 17:37
なんとか成功しそうです。わからなくなったらまた来ます。
ありがとうございます。

192187:02/12/02 17:42
なぜか全部大文字出力してしまいます・・・
コンパイルは通るんですが・・・・どこか間違ってるんでしょうか?
193bloom:02/12/02 17:43
両方でtoupperと予想(w
195187:02/12/02 18:09
もうだめぽ
196187:02/12/02 18:19
できた・・・・読みだ下とのファイルの作り方間違ってた・・・
協力していただいた方、ありがとうございます。

197超初心者:02/12/02 22:32
>176 の者です。本当にどなたか親切な方教えてください。私の悪いところ
があったら直します。
>>197
作ったもん見せれば誰かなんか教えてくれるかもしれん。
長ければこっちへ。
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
199超初心者:02/12/02 22:58
ありがとうございます。
ご指示の掲示板へソースを貼り付けました。
皆さんよろしくお願いします。
>>199
どれだよ。
201超初心者:02/12/02 23:09
>>201
関数4つだけなわけ?

つーか漏れはMFCなぞ知らんので後は任せた。
203デフォルトの名無しさん:02/12/03 14:18
サブルーチン法で解いてもらいたいのですが・・・
よろしくお願いします!
parameter(N=3)
dimension A(N,N),b(N),x(N)
data a/2,1,4,4,-1,1,6,5,-2/
data b/28,7,21/


do k=1,N-1
do i=k+1,N
p=a(i,k)/a(k,k)
do j=k+1,N
a(i,j)=a(i,j)-p*a(k,j)
end do
b(i)=b(i)-p*b(k)
end do
end do

do i=n,1,-1
temp=0.0
do j=i+1,n
temp=temp+a(i,j)*x(j)
end do
x(i)=(B(i)-temp)/a(i,i)
end do
204デフォルトの名無しさん:02/12/03 15:18
すみません、javaのサンプルプログラムがのっているサイトってありますか?
ネットワーク+Swingのサンプルがあったらうれしいです。

あ、いかにもサンプルみたいな小さなプログラムじゃなく、そこそこおおきいのがいいです。
>>203
> サブルーチン法で解いてもらいたいのですが・・・
( ゚д゚)ポカーン
>>205
>>203はマルチの上に、正しくプログラミング用語を使っていないから
ほっとけ。
>>206
<(´・ω・`)了解でありまつっ!!
208FTP:02/12/03 17:03
C言語で簡単なFTPサーバーとクライアントのプログラムを作れ
という宿題がでたのですが、
プログラムが正常に作動しなくて困っています。
一ヶ月ぐらい悩んでるんですが、解決できません。
症状としては、PWDなどの出力をクライアントに返せない。
クライアントが受け取るメッセージが遅れて表示
などです。
ちょっと長いので>>198で紹介されている所に今から貼ってきます。
>176
こんなところか。MessageBoxの引数が逆かもしれんな笑い。

if( m_editText ==""){
MessageBox("src file not specified." , "error" , IDOK ); return;
}
if( m_editText1 == "" ) {
MessageBox("dst file not specified." , "error" , IDOK );return;
}

if( !CopyFile( m_editText , m_editText2, TRUE ) ){
DWORD le = GetLastError();
if( le == 2 || le == 3 )
MessageBox("file not found." , "error" , IDOK );
}

}
210FTP:02/12/03 17:19
>>208
貼ってきました。
サーバー側
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=39&fi=no
クライアント
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=40&fi=no
試行錯誤でコードが汚くなってます。すみません。

何処が悪いのか、見当もつきません。
ご指導お願いします
>208

> system(syscmd > temp);

ずいぶん変なところに変な比較を挟むんだな。

ついでに、汚染チェック位一応やっとけ。
212FTP:02/12/03 18:09
>211
あ・・・すいません。
オンラインウイルススキャン、やっておきました。

>system(syscmd > temp)
これ、「比較」になるんですか?
SYSTEM()でUNIXにコマンドを送って、
その出力(結果)をtemp[ ]に送るようにする
だから、system( コマンド > array[ ])って書け。
と、教わったのですが…

間違いなんでしょうか?

結果の読み取りで
調べたらこんな感じのコードが出てきたことがあったのですが、
こちらを使った方がいいのですか?

FILE  *fp;

    if((fp=popen("ls -l", "r"))==NULL){
        fprintf(stderr,"error!!!\n");
        exit(-1);
    }
    fgets(temp, sizeof(temp), fp);

    pclose(fp);
>212

「system( コマンド > array[ ])って書け。」 
つまり、C言語では、system関数の引数だけは、「>」は特別な意味をもってて、
リダイレクタとして解釈される、とこう言いたいわけかい?

ンなもん、ちょっと考えるか、テストしてみりゃすぐ分かることだろが。
214デフォルトの名無しさん:02/12/03 18:40
20個の数字を入力して、配列に読み込み昇順に並べ替えよ、という宿題がでました
交換法は分かったのですが、選出法がよく分からないので教えていただけますか?
↓ 自分なりに考えてみたのですが、うまくいきません
#include<stdio.h>
int main(void)
{
int i, j, a[20], tmp, min;
printf("enter 20 integer\n");
for(i=0;i<=19;i++)
{
scanf("%d", &a[i]);
}
for(i=0;i<=18;++i)
{
tmp =a[i];
min = i;
for(j=i;j<=18;++j)
{
if(tmp > a[j+1])
{
tmp = a[j+1];
min = j+1;
}
}
a[min] = a[i];
a[i] = tmp;
}
for(i=0;i<=19;++i)
printf(" %d ", a[i]);
return(0);
}
215214:02/12/03 18:43
書き忘れました

214はC言語です
なんだ選出法って。
217214:02/12/03 18:57
最小値を見つけて入れ替える操作を行なうこと、だそうです

例えば
5 8 1 6 2 7 だったら1が最も小さいので1と5を入れ替えて
1 8 5 6 2 7 となります。次に1を除く
8 5 6 2 7 を考えて、2が小さいので2と8を入れ替えて
2 5 6 8 7 となります。次に2を除く
   5 6 8 7 を考えて、…見たいな感じです

分かりにくい説明でごめんなさい…
選出法・・・

一般的には「選択ソート」だな。(Knuthはselection sortと書いたが)
>>214
動かしてみたら、ちゃんとソートされたけど。

どううまくいかないんだ?
>>212
> だから、system( コマンド > array[ ])って書け。
> と、教わったのですが…
誰だ、そんな素敵なことを教えてくれたのは。(w

popen()を使うほうがいい。
221デフォルトの名無しさん:02/12/03 21:15
3dsMAXで作成したファイルをDirectXのファイルに変換して、いろいろ操作しようとしてます。
 3dsMAXでいくつもオブジェクトがあるもの(車)をかいて特定のオブジェクト(金属部分)に同じテクスチャを張ってます。それをDirectXファイルにして、
そのテクスチャを張った部分に別のテクスチャ(BRDFといわれるもの)を張って、
残りはまた別のテクスチャを張れるようにファイルを書き換えたいんですが、どの部分をどのように書き換えればいいんでしょう?
 DirectXはまったくやったことがないので見当がつきません。どんな情報でもいいので教えていただけませんか?よろしくお願いします。
 たぶん、以下のコードの辺をいじるんだと思いますが…。

// Load 1st texture

if( FAILED( D3DXCreateTextureFromFile( m_pd3dDevice, "objects/black01.png", &r_pTexture ) ) )
return E_FAIL;

222ぱぱ:02/12/03 22:45
>>109で質問したものです。
返事ありがとうございました!
rand()が本を見てもなかなかのっていないのですが、C++とかなのでしょうか?
あと、最後に白石の数がわかるようにするにはどうすればいいでしょうか?
よろしくお願いします。
223214:02/12/03 23:13
>>219
すいませんでした
今やってみたらちゃんとソートされました

学校ではうまくいかなかったのに…
学校ではUNIXを使ってるからうまく動かなかったのでしょうか??

とにかく、どうもありがとうございました
224デフォルトの名無しさん:02/12/03 23:52
C言語なんですけど
問題1が「2次元配列に5人分の身長と体重を代入し、身長と体重の平均、最小値、最大値を求めよ。」
という問題と
「上のデータ(次元配列)よりBMI値を求めよ。肥満度により、やせている/標準/やや肥満/肥満と判定せよ。」
という問題が宿題で出たんです。
ちなみに「BMI」とは「Body Mass Index」の略で「体重(kg)/身長の2乗(m)」で計算された標準値は「22」です
やせているが「20未満」で標準が「20〜24」でやや肥満が「24〜26.5」で肥満が「26.5以上」です。
けど、全然分かりません。まだC言語は始めたばかりなのでまだfor文とかwhile文とかしか習っていないので
なるべく簡単作ってほしいです。お願いします。
>224
中学生でもできそうだな…
226デフォルトの名無しさん:02/12/04 00:40
じゃ教えてくださいよ
>>226
まずお前がどこまで出来るのか書けよ。
(まさか丸投げじゃないよな?)
丸投げするのが正しいSIの姿です。
学生にそれを叩き込んでるのは偉いと思う。
229デフォルトの名無しさん:02/12/04 00:55
すみません。丸投げです。悲しいですけど
おら
#include <stdio.h>
#define N 5
int main()
{
float data[N][2]={170.,56.,165.,45.,170.,70.,180.,85.,173.,65.};
float minHeight,maxHeight,avgHeight,minWeight,maxWeight,avgWeight;
float bmi;
int i;
avgHeight=avgWeight=0.0;
minHeight=maxHeight=data[0][0];
minWeight=maxWeight=data[0][1];
for (i=0;i<N;i++){
avgHeight+=data[i][0];
avgWeight+=data[i][1];
if (minHeight>data[i][0]) minHeight=data[i][0];
if (minWeight>data[i][1]) minWeight=data[i][1];
if (maxHeight<data[i][0]) maxHeight=data[i][0];
if (maxWeight<data[i][1]) maxWeight=data[i][1];
}
avgHeight/=(float)N; avgWeight/=(float)N;
printf("Minimum height=%f,Minimum weight=%f\n",minHeight,minWeight);
printf("Maximum height=%f,Maximum weight=%f\n",maxHeight,maxWeight);
printf("Average height=%f,Average weight=%f\n",avgHeight,avgWeight);
for (i=0;i<N;i++){
bmi=data[i][1]/data[i][0]/data[i][0]*1.0e4;
if (bmi<20.) printf("%d(bmi=%f) is slender.\n",i,bmi);
else if (bmi<24.) printf("%d(bmi=%f) is standard.\n",i,bmi);
else if (bmi<26.5) printf("%d(bmi=%f) is slight fat.\n",i,bmi);
else printf("%d(bmi=%f) is fat.\n",i,bmi);
}
return 0;
}
232デフォルトの名無しさん:02/12/04 01:00
ありがとうございます・・・でも難しすぎて意味が分からないですけど
>232
気にすんな.写してもってけ
>>230-231
イイネ!
235デフォルトの名無しさん:02/12/04 01:04
了解しました。
>235
いいってことよ.二度と来んなよ.今度は友達のを写せよ
DFDってこの板だといた違いなんですか?
だとしたら早々に引き上げます
>237
うーん キャラクタベースの掲示板で話が上手く通じるかどうか・・・
とりあえず書いてみたら?
239デフォルトの名無しさん:02/12/04 02:03
困ってます。VBを使ってるんですが・・・
エクセルでつくったデータをVBに取り入れたいのですがかのうですか?
例えばListBoxにエクセルデータを入れる時はどうやればよいのでしょう?
エクセルのデータをテキストファイルに変えないとできませんか?
>239
ファイル?それともアプリ?
241デフォルトの名無しさん:02/12/04 02:08
普通にデータを作ったんですが
242デフォルトの名無しさん:02/12/04 02:11
すみません。プログラムど素人で…
243デフォルトの名無しさん:02/12/04 02:22
シーケンシャルアクセスでopen inputしてもエクセルのデータは読み込めませんか?
エクセルのデータが読み込めれば進むんですが・・・

全く???ばかりで・・・
>239
Visual Studioを立ち上げてイルカに
Excel ワークシートから配列を初期化
と聞いてください。サンプルプログラムもあるよ
245lapa:02/12/04 02:28
何をしようとしているか言葉じゃつたえにくいのですが・・・
サンプルプログラム見せてもらえますか?
あ、イルカまだいるんだね。
247244:02/12/04 02:28
ゴメン イルカじゃなかったね
MSDNのキーワードに
 Excel ワークシートから配列を初期化
と入れてくらさい
248244:02/12/04 02:33
>245
>239の人でつか?>247のヘルプにサンプルが載ってます
249デフォルトの名無しさん:02/12/04 02:37
そ〜です。
250デフォルトの名無しさん:02/12/04 02:41
>247のヘルプ?ど〜ゆ〜ことですか??
>238
とりあえず書く前に寝ちゃいました。
もうだめだぁ
252デフォルトの名無しさん:02/12/04 07:47
誰も見てないと思いますが一応書きます。(DFD
なんか超がつくほど基本的なことなんですけど、
コンテキストダイアグラムを書くとき、外部からプロセスに
流れるデータがめっさ多いんです。書き込めるか?ってくらい。
こういうのは外部ごとにデータの矢印をまとめて(一本とかにして)
書いてもいいんですか?

あと、データの矢印が多いせいでちょっとレベル1書くときに
データの矢印書こうとすると、重なっちゃう(交差しちゃう)んですが
これって無しですか?
253デフォルトの名無しさん:02/12/04 07:48
↑レベル1じゃなくてレベル0のことでした。
本当板違いなのかなぁ
交差していいかはわかりました。(調べた
255デフォルトの名無しさん:02/12/04 11:24
C言語です。プログラミング歴1ヶ月のど素人です。
宿題で計算機プログラムを作れというのがでました。
でも、平方根を求めるとこで詰まってしまいました、(情けないです、)
その部分だけ簡単に書くとこうなります、、
#include <stdio.h>
#include <math.h>
main()
{
double s;
printf("input a positive number:");
scanf("%lf", &s);
double sqrt(double s);
printf("answer is %lf\n", s);
}
こんな感じで書いたんですがコンパイルできなくて意味不明状態です、
どなたか助けてください。おねがいします。
>>255
double sqrt(double s);

s=sqrt(s);
257デフォルトの名無しさん:02/12/04 11:48
#include <stdio.h>
#include <math.h>
main()
{
double s,rs;
printf("input a positive number:");
scanf("%lf", &s);
rs=sqrt(s);
printf("answer is %lf\n", rs);
}

予約語について考えるべし。
>252
データの種類が同じであれば、フローを分割してもいいのでは?
データの種類が異なれば、もちろんダメ
フローの統合もダメ(統合するとデータが変わる)
要するに、処理なしでデータフローに乗ってるデータが変わることはない

という前提を考えれば、データの矢印をまとめることは不可と思われ

詳しくないから間違ってたらスマソ
259デフォルトの名無しさん:02/12/04 12:12
>256,257
ありがとうございました!
助かりました。
260bloom:02/12/04 12:14
261デフォルトの名無しさん:02/12/05 03:55
まだいますか?
262デフォルトの名無しさん:02/12/05 03:59
VBにエクセルを取り込むめません。
1列目の1~5行までリストボックスに
取り込む場合はどうすればよいのでしょう?

f$ = "データ.xls"
Set LINK = GetObject(f$)
For i = 4 To 59
Name (i) As LINK.Worksheets.Application.Cells(i, 1)
List1.AddItem Name(i)
Next i

これだとデバックしちゃいます。
助けてください。
263デフォルトの名無しさん:02/12/05 05:04
Dim excelBook As Workbook
Private Sub Form_Load()
Set excelBook = GetObject("C:\Book1.xls")
Dim i As Integer
Dim buf As String
For i = 1 To 5
buf = excelBook.Worksheets(1).Range("A" & i).Value
List1.AddItem (buf)
Next i
End Sub
>>262
> これだとデバックしちゃいます。
> 助けてください。

デバッグできるならええやん。
デバックする=デバッグモードになる、とかか?
なんかイイな。俺もこれから使おっかな。
266じゃず ◆jazz118WuU :02/12/05 17:47
VBで次のようなプログラムを誰か作って下さい。

・室内温度To1が0〜40℃(10℃刻み)
・その室内にある貯蔵庫の温度がTi℃
・貯蔵庫の中にある氷の面積Sが0.5〜2.0u(0.5刻み)
・氷の温度が貯蔵庫内の空気に伝わる熱伝達Alphaが10〜510W/u・K(100刻み)
・貯蔵庫内への熱伝導量Q1=KA(To1-Ti)
・K(貯蔵庫壁の熱貫流量)=0.377、A(伝熱面積)=16.36。

上記の条件の時にTiが何℃になるかをもとめるプログラムを教えて下さい!
結果はなるべくエクセルで出力するようにお願いします。

例:To1が10℃、Alphaが110W/uK、Sが1.0uの時、Tiは5℃

上のような感じで80個(条件が80通りの組み合わせになるため)の答えが出るようにお願いします。
267じゃず ◆jazz118WuU :02/12/05 17:49
ちなみに、自力でここまで作りましたがおそらく全然駄目だと思います。こんなのでも朝からずっと考えて作ったほど初心者です。

Option Explicit

Private Sub Form_Load()

Dim K As Single, A As Single, Qe As Single, Q1 As Single
Dim To1 As Single, Ti As Single, Alpha As Single, S As Single

K = 0.377
A = 16.36
For To1 = 0 To 40 Step 10
For Alpha = 10 To 510 Step 100
For S = 0.5 To 2# Step 0.5
For Ti = 0 To 40 Step 0.1

Qe = Alpha * (Ti - 1#) * S
Q1 = K * A * (To1 - Ti)

If Qe = Q1 Then Print Ti, To1, Alpha, S

Next Ti
Next S
Next Alpha
Next To1

End Sub
268じゃず ◆jazz118WuU :02/12/05 18:13
追伸

ちなみに、Qeは熱交換量なのですが理論的にQ1と同じになります。
269超初心者:02/12/05 20:51
VC++のダイアログベースで作成しています。ファイルをコピーするアプリケーシ
ョンでコピー元コピー先をファイルダイアログボックスで表示させ指定し、スタ
ティックテキストにファイルまでのパスを表示するというものです。そして、ボ
タンがありクリックすると、ファイルのコピーを開始します。但し、以下の場合
はメッセージボックスを表示します。

1.コピー元ファイル名が指定されていない。
2.指定のコピー元ファイルが存在しない。
3.コピー先ファイル名が指定されていない。
4.コピー先ファイルが既に存在する。

4の場合は、問い合わせメッセージの表示とし
ユーザが上書きOKを選択した場合のみ、
コピー実行されるようにする。

です。一応パスがでる所まで頑張りましたが保存先の所で上書き警告がでます。
よろしくお願いします。

ソースはこちらです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=43
>です。一応パスがでる所まで頑張りましたが保存先の所で上書き警告がでます。
>よろしくお願いします

これは、上書き警告を出ないようにしたい、ということか?
なら。
myDLG.m_ofn.dwFlags = OFN_HIDEREADONLY ;
271FTP:02/12/06 06:46
>>212です。
popen( )を使う方法でうまくいきました。
>211 >>213 >>220さん ありがとうございました。
272デフォルトの名無しさん:02/12/06 19:45
C言語です。
ナップサック問題についてわからないので質問です。

まず、最高価格を求めるプログラムを書きます。
#include <stdio.h>
#define MAX 8

int main(void){
int weight[]={4,5,2,1,6};
int price[]={450,570,225,110,670};
int total[MAX+1],item[MAX+1];
int i,j,k;
int newtotal;

for(i=0;i<=MAX;i++)
total[i]=0;

for(i=0;i<=4;i++){
for(j=weight[i];j<=MAX;j++){
k=j-weight[i];
newtotal=total[k]+price[i];
if(newtotal>total[j]){
total[j]=newtotal;
item[j]=i;
}
}
}
273272:02/12/06 19:49
つまり重さ8を超えないように、最高価格にするわけです。
weight[1]とprice[1]は同じ商品のデータと考えます。
すでに、最高価格が求まっていますが、この後どれを選んだか表示するプログラムの穴埋めが課題です。
?の場所を埋めるのですが、どうやら配列の中に配列を入れるらしいです。
よくわからないので教えてください。

i=MAX;
while(i>=1){
printf("%d\n",price[?]);// ?のとこを埋めるのです。
i=i-weight[?]];//ここもそうです。
}
printf("%d",total[MAX]);

return 0;
}
274272:02/12/06 19:54
一応
printf("%d\n",price[item[i]]);
i=i-weight[item[i]];
で、できました。
でも感覚的にやって、まだよく理解できていないので、誰か内容を教えてくれると助かります。
両方とも item[i] かな?
よく考えずにレス。
276デフォルトの名無しさん:02/12/06 23:12
>272のルーチン合ってんのか?
>276
多分あってると思われ。
動的計画法を使ってる。
ただ、
> for(i=0;i<=4;i++){
は、教える側の人が書くべきものじゃない。
> for(i=0;i<5;i++){
だな。

>273
配列totalには、最終的には
その重さまでに可能な最高価格が入るようになってる。
例えばtotal[5]には、重さ5までで可能な最高価格が入ってる。
item[5]には、total[5]になるように、最後に入れたものの番号が入ってる。
(これは、重さの値がintだからできるけど、小数点数だとこのアルゴリズムは無理)

このことを踏まえて自分でコードをたどっていけば、
そのうち理解できると思うぞ。
278デフォルトの名無しさん:02/12/07 12:14
>277
なるほど、そういうことか。分かったよ、あんがと
しかし,このルーチンだと
int weight[]={1};
int price[]={100};
...
for(i=0;i<1;i++){
...
のときはどうなるんだ?
for(j=weight[i];j<=MAX;j++){
のループが1から8まで回って、全てのtotalが100に、itemが0になると
思うんだけど
newtotal+=total[k]+price[i];
じゃないのかな?よく分からない
279デフォルトの名無しさん:02/12/07 12:22
>278自己レス
ああ、アイテムが一回使用ならいいのか
でも、それだと全ての組み合わせについて確かめた方が効率よかない?
全ての重さについて同時に求めるってとこに意味があるんだろうか
動的計画法がどんなもんか知らんので、このへんでやめよう

つーか、これってCの宿題ってより数学の宿題だな
272はプログラムより元のアルゴリズムを理解すべきだと思われ
>277
小数点でも使えるように考えてみたYO!
totalをtotal[0]=0.0(static),total[1]=dw~2dw,...とする
ただしweight[]の最小値>dw
float weight[];
float total[MAX+1],newtotal;

k=0;
for(j=(int)(weight[i]/dw);j<=MAX;j++,k++){
newtotal=total[k]+price[i];
if(newtotal>total[j]){
total[j]=newtotal;
item[j]=i;
}
これで上手くいかないかなー.俺も暇人だ…
281デフォルトの名無しさん:02/12/08 20:00
マンデルブローを書いて、それをbitmapに出力するプログラムを書いているのですが
どうもうまくいきません。

#include<stdio.h>
#include<fcntl.h>
#define SIZE 512
#define MAX 255
int main()
{
double zr,zi,zrp,zip /*zr=現在計算中の複素数zの実数部 zi=虚数部*/
/*zrp=直前に計算したzの実数部 zi=虚数部*/
int x,y,i;
int fd;
unsigned char bitmap[SIZE][SIZE];
282デフォルトの名無しさん:02/12/08 20:00
for(x=0;x<=SIZE;x++)
for(y=0;y=SIZE;y++)
{
zrp=zip=0;      /*初期値0*/

for(i=1;i=MAX;i++)
{
zr=zrp*zrp-zip*zip+cr; /*漸化式による実数部計算処理*/
zi=2*zrp*zip+ci;     /*虚数部の計算処理*/  

if((zr*zr+zi*zi)>4)    /*発散判定*/
break;

zrp=zr;
zip=zi;
}
bitmap[x][y]=(unsigened char)(i);
}
fd=create("mandel.bmp",0644);
write(fd,bitmap,SIZE*SIZE);
close(fd);

return 0;
}

実数部の変域は-2.4≦cr≦0.8
虚数部の変域は-1.2≦ci≦1.2にしたいです。
とりあえずcrとciをどうするかと、計算後どうやって配列するかがわかりません。
御願いします。
283デフォルトの名無しさん:02/12/08 22:54
プログラムを書く宿題とは ちと違うんだが・・・

「どんな分野にオブジェクト指向は向いているか?」考えて来い、あるいは調べて来いってのがでました。
ゲーム作成に向いているという意見など出たのですが、何かないですかね・・・
ってか、やってこないと単位がまずい・・・
自分も調べまくってるんで、もし余裕があったら教えてください。
284 ◆F52DmOxJlc :02/12/08 23:18
いわゆる MDI っぽいアプリケーションとか。
子ウインドウを不特定数 create したり free したりせにゃならん。
ゲームもいいよね。とくにシューティングとか。
笑わせるな
286デフォルトの名無しさん:02/12/09 01:31
すいません。C言語について質問なんですが、
最大値選択法により、大きな数から配列に格納していく以下のソートプログラムを
1回1回の交換ではなく、内側のループで最大値の場所だけを覚えておいて
ループの終了時点で1回だけ交換するように変更したいのですが、どのように
変更してやればいいのでしょう?

#include <stdio.h>
#define MAX_SIZE 100
void simple_sort(int table [], int table_size);
int main(void)
{
int array[MAX_SIZE] , size, i;
for(size=0; size<MAX_SIZE; size++){
printf("%d番目の数は?", size+1);
scanf("%d", &array[size]);
if (array [size]<0){
break;
}
}
287デフォルトの名無しさん:02/12/09 01:31
simple_sort(array, size);
for(i=0; i<size; i++){
printf("%d\n", array[i]);
}
}
void simple_sort(int table [], int table_size)
{
int i, j, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j]){
work=table [i] ;
table [i]=table [j] ;
table [j]=work;
}
}
}
}
288デフォルトの名無しさん:02/12/09 01:32
自分では、
int i, j,k, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j])
work=j ;
else work=i;
}
k=table [i] ;
table [i]=table[work];
table[work]=k;

に変えてみたんですが上手くいきません。
289デフォルトの名無しさん:02/12/09 02:00
>>286-288
int i, j,k, work;
for(i=0; i<table_size-1; i++){
for(j=i+1 ; j<table_size; j++){
if(table [i] <table [j])
work=j ;
else
work=i;
}
k=table [work] ;
table [work]=table[i];
table[i]=k;
}

290デフォルトの名無しさん:02/12/09 02:01
>>289
間違い!!
>>286
これは選択ソートじゃなくてバブルソート。

    work = i;
    for(j = i + 1; j < table_size; j++) {
        if (table[i] <table[j])
            work = j;
    }
    if (work != i) {
        k=table [i] ;
        table [i]=table[work];
        table[work]=k;
    }
292デフォルトの名無しさん:02/12/09 02:07
すいません、教えてください。
Borland C++ Compiler 5.5.1でパラレルポート制御する
プログラムを組めるものなのでしょうか。
とりあえず、アセンブラは使いたくないなと思ってます。
よろしくお願いします。
>>283
そもそも、あなたはオブジェクト指向そのものの
メリットをきちんと理解しているだろうか?
そこがわかれば、適用可能な分野がある程度はわかるはず。
>>291

ご返答有難うございます。早速実行してみましたが、
この場合、1,2,3,4,5・・・などのようにインクリメントやデクリメントする数値を入力した場合には
上手くいくのですが、真ん中に最大値が来た場合などは上手くいきませんでした。

それで、改めて自分で以下の通りに直してみたのですが、やはりダメでした。
再びで申し訳ないんですが、間違いなどございましたら教えていただければと思います。お願いします。

work = i;
for(j = i + 1; j < table_size; j++) {
if (table[i] <table[j])
i = j;
}
k=table[work];
table[work]=table[i];
table [i]=k;
295 :02/12/09 02:47
296デフォルトの名無しさん:02/12/09 02:57
>>294
void simple_sort(int table[], int table_size)
{
for(int i = 0; i < table_size-1; i++)
{
int work = i;
for(int j = i+1; j < table_size; j++)
{
if(table[work] < table[j])
work = j;
}
int temp = table[i];
table[i] = table[work];
table[work] = temp;
}
}
これでどう?
>>294
最大値の位置を覚えておく工夫をせにゃならんよ。
298 :02/12/09 03:10
>>296

無事上手くいきました。誠に有難う御座います。
299デフォルトの名無しさん:02/12/09 15:13
C言語について質問です。
以下の2つの文字列が同じかどうかを判定するプログラムを使って
2つの文字列が何文字目まで等しいかを判定するプログラムを作りたいのですが
どうすればいいのでしょう?

#include<stdio.h>

#define SIZE 100

int string_equal_length(char str1[],char str2[]);

int main(void)
{
int i,j,k;
char str1[SIZE],str2[SIZE];
printf("文字列を入力してください。:");
scanf("%s",str1);
printf("文字列を入力してください。:");
scanf("%s",str2);

300デフォルトの名無しさん:02/12/09 15:13
if(string_equal_length(str1,str2)==0){

printf("2つの文字列は同じです。\n");
}

else{
printf("2つの文字列は同じではありません。\n");
}
}

int string_equal_length(char str1[],char str2[])
{
int i=0;
while(1){
if(str1[i]=='\0'&&str2[i]=='\0'){
return(0);
}
if(str1[i]!=str2[i]){
return(-1);
}
i++;
}
}
301デフォルトの名無しさん:02/12/09 15:15
自分では以下のようにしたのですがだめでした。

#include<stdio.h>

#define SIZE 100

int string_equal_length(char str1[],char str2[]);

int main(void)
{
int i,j,k;
char str1[SIZE],str2[SIZE];
printf("文字列を入力してください。:");
scanf("%s",str1);
printf("文字列を入力してください。:");
scanf("%s",str2);
302デフォルトの名無しさん:02/12/09 15:16
k=1;
if(string_equal_length(str1,str2)==0){
for(i=0;i<SIZE;i++){
if(str1[i]=str2[i]){
k=k++;}
else { break;
}
}
printf("2つの文字列は%d文字目まで同じです。\n",k);
}

else{
printf("2つの文字列は同じではありません。\n");
}
}

int string_equal_length(char str1[],char str2[])
{


if(str1[0]==str2[0]){
return(0);
}
if(str1[0]!=str2[0]){
return(-1);
}

}
303:02/12/09 15:22
int string_equal_length(char str1[],char str2[])
の中で何やってるかはわかる?
一文字ずつ比べていって、もしも途中で違ったら-1を返して、
最後まで一緒だったら0を返してるよね。
で、一文字同じだったらそのたびにiを1増やしてる。

ということは、iは何文字一緒だったかカウントしてることになるんだから、
途中で違ったら-1を返すのではなく、iを返すようにすれば・・

>>302のだと、全文字一緒のときしか
for(i=0;i<SIZE;i++){
if(str1[i]=str2[i]){
k=k++;}
else { break;
}
が実行されないから上手くいかないのね。

だから、if文とっちえばできると思う。
あと、k=0から始めないと変かも。
int string_equal_length(char *str1, char *str2)
{
  int count = 0;

  do {
    if (*str1 != *str2) { break; }
    count++;
  } while (*++str1 && *++str2);

  return count;
}
305304:02/12/09 15:56
すまん。バグ入ってた。
上のコード両方に長さ0の文字列渡したときに1が帰る。
306304:02/12/09 16:03
よく考えたら、1が帰るとは限らないね。ひょっとしたらそのまま突っ走る可能性も…
すまんかった、逝ってくる
size_t strmatchlen( const char *s1, const char *s2 ) {
size_t c = 0;
while ( *s1 && *s1++ == *s2++ ) c++;
return c;
}
308デフォルトの名無しさん:02/12/09 20:30
Cです。
下のプログラムはクイックソートの一部なのですが、while文やif文が{}でくくってないので、どういう風に理解すればいいのかわかりません。
ifはbreak;のためにあると思うのですが、この場合のwhileはどういう意味になるのでしょうか?
他の変数などは無視して構わないので、whileについて教えてください。

for(;;){
while(a[++i] < v);
while(i<j-- && a[j] > v);
if(i>=j)
break;
t=a[i];a[i]=a[j];a[j]=t;
}
while(a[++i] < v);

while (a[i] < v) i++;

while(i<j-- && a[j] > v);


while (i < j)
if(a[--j] <= v) break;

とでも読み替えればよいか。
スマソ

while (i < j--)
if(a[j] <= v) break;

だね。
while(a[++i] < v);

while(a[++i] < v){}
>>309-310
breakの条件が違うだろ?
313デフォルトの名無しさん:02/12/09 23:58
>>308
while(a[++i] < v);
バラして書くと、
i = i + 1;
while(a[i] < v)
{
i = i + 1;
}
で、ようするにaの内容とvを比較していき、
aの内容がvよりも大きくなった時にwhileから
抜けるっていう意味で
314デフォルトの名無しさん:02/12/10 00:08
>>308
for(;;){
while(a[++i] < v);
while(i<j-- && a[j] > v);
if(i>=j)
break;
t=a[i];a[i]=a[j];a[j]=t;
}
vを基準に、
a[i]は値の小さい方から(イメージとしては左から?)、
a[j]は値の大きい方から近づく(右から?)。
この作業が終わった時に、i,jの大小関係が食違っていたら(if)、何もせず抜け、
で、なければ、取り替えなければならない状況なので、取り替える。vという値を基準に、
左右に不適切に混ざっている。ランダムに並んでいる。
315デフォルトの名無しさん:02/12/10 10:22
従業員の給料を計算するプログラムをつくりたいんですが、
structureのデータの削除の仕方がわかりません。
データは以下の構成です。
:名姓(first name, last name)
:社会保障番号(12桁)
:性別(男性または女性)
:労働時間
:時給
:給料
労働時間が40時間以上は超過勤務時間であると考えられます。
超過勤務時間の場合、普通の1.5倍得ます。
例えば
通常時給20ドル
超過勤務時の時給20*1.5=30ドル
50時間働いた時の給与は
20*40+30*10=1100ドル

メニューは次の選択を含んでいるべきです
1. 給料と従業員をすべてリストします。
2. 給料支払簿に従業員を加えます。
3. 給料支払簿から従業員を削除します。
4. 女性の従業員をすべてリストしてください。
5. 超過勤務時間の従業員をすべてリストしてください。
6. 従業員のリストをアルファベット順に並べてください。
7. 誰が一番もらってるか。
8. 終了&保存。
316デフォルトの名無しさん:02/12/10 10:24
#include <stdio.h>
struct xrec{
char fname[10], lname[10];
char ssn[12];
char gender;
double hours,salary;
}
struct xrec* add_list(struct xrec* list, struct xrec temp);
int main(){
struct xrec employee[100];
struct xrec temp;
struct xrec* first;
FILE* infile;
int size=0;
infile=fopen("DATA.c","r");
first=NULL;
while(fscanf(infile,"%10s %10s %12s %c %lf", temp.fname, temp.lname, temp.ssn,
&temp.gender, &temp.hours)==5){
temp.fname[9]=NULL;
temp.lname[9]=NULL;
temp.ssn[11]=NULL;
employee[size++]=temp;
first=add_list(first,temp);
}
317デフォルトの名無しさん:02/12/10 10:25
void computesalary(struct xrec x[], int n){
int i,rate;
for(i=0; i<n; i++){
if(x[i].hours>=40)
x[i].salary=x[i].hours*rate*1.5;
else
x[i].salary=x[i].hours*rate
}
}
do{
com=displaymenu();
switch(com){
case 1: printlist(employee,size); break;
case 2: add_list; break;
case 3: delete_data; break;
case 4: printroses; break;
case 5: printovertime; break;
case 6: alphabetize; break;
case 7: printhighest; break;
case 8: quitsave; break;
default;displaymenu();
}
}while(com<>8)
318デフォルトの名無しさん:02/12/10 10:26
int displaymenu(){
int choice;
printf("1. List all employees to the screen with their salary.\n");
printf("2. Add an employee to the payroll.\n");
printf("3. Delete an employee from the payroll.\n");
printf("4. List all the female employees(Roses of the G-ds).\n");
printf("5. List all employees with overtime.\n");
printf("6. Alphabetize the list of the employees.\n");
printf("7. Who gets the highest salary.\n");
printf("8. Quit and Save.\n");
scanf("%d",&choice);
return choice;
}
void printlist(struct xrec* list){
while(list!=NULL){
printf("%s %s %lf", list->fname,list->lname, list->salary);
list=list->next;
}
}
319デフォルトの名無しさん:02/12/10 10:26
struct xrec* add_list(struct xrec* list, struct xrec temp){
struct xrec* new_node;
new_node=(struct xrec*)malloc(size of (struct xrec));
*(new_node)=temp;
new_node->next=list;
return new=node;
}
void printroses(struct xrec x[], int n){
int i;
for(i=0; i<n; i++){
if(x[i].gender=='F')
printf("%s %s\n", x[i].fname, x[i].lname);
}
}
void printovertime(struct xrec x[], int n){
int i;
for(i=0; i<n; i++){
if(x[i].hours>40)
printf("%s %s %lf\n", x[i].fname, x[i].lname, x[i].hours);
}
}
void quitsave(){
fclose(infile);
}
320デフォルトの名無しさん:02/12/10 10:27
一応自分でやったコードです
よろしくおねがいします
321デフォルトの名無しさん:02/12/10 12:51
>>320
上記のプログラムってコンパイルできますか?
322デフォルトの名無しさん:02/12/10 13:06
>320
線形リストって知ってる?
323デフォルトの名無しさん:02/12/10 13:32
324デフォルトの名無しさん:02/12/10 15:53
レスありがとうございます。
>321
コンパイルはできません。エラーが6個ほどでてしまって。。。
>323
ありがとうございます。参考にします

自分で修正し、残すはリストからデータの削除の仕方だけになりました。
リストからデータの削除の仕方を教えてもらえないでしょうか?
よろしくおねがいします。
>>324
やり方だけ。コードは読んでないけど感覚で。
ポインタは理解してる?

リストの先頭から順に辿っていく。
先頭が対象のデータの場合は別処理するとして・・
現在のデータ(list)の次のデータ(list->next)が、削除したいデータ
の場合は、
list->next->nextがさしているポインタを一次保存しておいて。
list->nextのデータをfreeした後に、
list->nextに、先ほど保存したデータを入れる。

a -> b -> c となっていたのを
a -> c として、bをfreeすればいいわけだから。
>324 簡単な例でやったほうがええよ まずはこれを理解する
typedef struct List{
 int id;
 struct List *next;
} List;
void main()
{
 List list1,list2,list3;
 List *top=NULL,*list=NULL,*prev=NULL;
 top=&list1;
 list1.id=1; list1.next=NULL;
 list2.id=2; list2.next=NULL;
 list3.id=3; list3.next=NULL;
// 連結
 list1.next = &list2; list2.next = &list3;
// 取りはずし (list2の取り外し)
 list1.next=&list3; list2.next=NULL;
// スキャン
 for(list=top;list != NULL;list=list->next){ printf("%d,",list->id);}
// スキャンによる取りはずし id==2をはずす
 for(list=top,prev=NULL;list != NULL;){
  if (list->id==2){
   if (prev!=NULL){list=prev->next=list->next;}
   else {top=list->next;}
  }else{prev=list,list=list->next;}
 }
}
取り外しのところでメモリ開放が必要なら入れる。>325さんとはちと違うが、同じこと
3271024:02/12/10 17:45
FORTRANで
正規分布の確率密度を
ある点Xから無限まで積分で
求めるプログラムを教えてください。
できれば、シンプソンと台形公式(2重積分)の2通り
お願いします。
328アフォ:02/12/10 19:09
ヒープを辞書として用いるとき、MEMBER(x)の実行方法を考察せよ。
現在探索中の接点の要素をyとするとき
1、x=yならば、x∈Aを結論し、yesを出力する。
2、x>yならば左の子へ進む。
  x<yならば親に戻る。子がいない場合も親に戻る。
3、親に戻ったとき、左の子から戻ったときは右の子へ進む。
  右の子から戻ったときは、また親に戻る。
4、右の子から親に戻ったとき、noを出力する。
5、根の要素>xのとき、noを出力する。

手直しお願いします。あと、ハッシュ表による辞書と比べて
どのような点で劣っているか教えていただきたいです。
329デフォルトの名無しさん:02/12/10 19:21
どなたか教えて下さい。問題は↓です

/* 実数を入力し、それぞれ以下のように変換する

小数第3位以下を切り捨てる
小数部のみに変換
小数第2位を四捨五入して小数第1位までに変換
10の位を四捨五入して100の位までに変換

※出力はすべて、printf("%f\n", x)とすること*/

(int)(x*1000.0)/1000.0
x-(int)x
round(x*100.0)/100.0
round(x/100.0)*100.0
331329:02/12/10 19:41
>>330さん
ありがとうございます
やってみたら、「警告: 関数 round は宣言されていないので、int 型とみなす」
とエラーが出てしまったんですが^ ^;
int printf(char *dummy, char*str)
{
puts( str ); return 0;
}

//小数部のみに変換
int main(){
char str[80];char *x;
scanf("%s", str );
x = strchr( str, '.' );
printf("%f\n", x);
}
C言語で、インターネットにあるデータ(画像などなんでも)をダウンロードしてファイル
に保存するというソースを書いてほしいんです。お願いします。
だから環境を書けといいたい。
それと相手はhttpか、ftpか。gopherか。
335333:02/12/10 20:19
自分の環境はwindows98で、相手はhttpです。お願いします。
面倒臭いので、
http://www.nakka.com/lib/inet/httpc.html
あたりで。
>>331
マニュアルくらい読め
338333:02/12/10 20:40
>>336
ありがとうございます!
339デフォルトの名無しさん:02/12/10 23:12
VB詳しい人にお願いです
テキストファイルからデータを読み込んで
二次元配列にいれて
その値それぞれ作った四角の中のグレースケールの塗りつぶしの値として
それを二次元配列分フォーム上に画像表示するようなPG作りたいんですけど
手を貸していただけませんか?
よろしくお願いします。
340D:02/12/11 00:16
>339
>その値それぞれ作った四角の中のグレースケールの塗りつぶしの値として
>それを二次元配列分フォーム上に画像表示するようなPG作りたいんですけど
もう少し詳しくしてもらわないとちょっと...
四角形の座標はどう指定するのか、並べるのか重ねるのか、二次元配列は何を格納するのか
等つっこみどころ満載です。
341デフォルトの名無しさん:02/12/11 00:30
C言語 ose gane ose ganeと表示をしたいです。
#include <stdio.h>
void strcpy1(char *p, char *q){
while(*p != '\0') *q++ = *p++; *q = '\0';}
void strext1f(char *p, int n, int m, char *q){ int i; n--;
for(i=1; i<=n; i++) p++;for(i=1; i<=m; i++) *q++ = *p++;
*q = '\0';}void strext1w(char *p, int n, int m, char *q){
n--;do{p++;n--;}while(n); do{*q++ = *p++;m--;}while(m);*q = '\0';
}void strext2f(char **p, int n, int m){char *pw; int i; n--;
for(i=1; i<=n; i++) (*p)++;pw = *p;for(i=1; i<=m; i++) (*p)++;
**p = '\0';*p = pw;}void strext2w(char **p, int n, int m)
{char *pw; n--;do{(*p)++;n--;}while(n);
pw = *p; do{(*p)++;m--;}while(m); **p = '\0';*p = pw;
}int main(void)
{ char a[]="Hosei";char b[]="Koganei";char c[256], d[256];
char e[256], f[256];char **pe, **pf; strext1f(a, 2, 3, c);strext1w(b, 3, 4, d);
printf("%s\n", c);printf("%s\n", d); strcpy1(a, e); strcpy1(b, f);
*pe = e;*pf = f;strext2f(pe, 2, 3);strext2w(pf, 3, 4);
printf("%s\n", *pe); printf("%s\n", *pf); return 0;
}
>341
puts("ose gane ose gane");
343デフォルトの名無しさん:02/12/11 00:35
>>342
正解!!
このスレならおしえてくれる??
いや、どーにかおしえて!!

VBSで書いたバッチをWin2000で動かします。
クリスタルレポート使ってファイル出力してるんですが、(Adobe destiller)
クリレポのバージョンを8から9にあげたら動かなくなりました。
どーやら原因はOCX。仕方ないので、RDCっていうのを
使うことになったのですが、VBでの移行はある程度リファレンスが
あったものの、VBSでの方法はちっとも見つかりません。
VBS側から渡すパラメータ、オブジェクトの宣言方法など、
なるべく詳細にお願いします。
だいたい、RDC使うにはレポート以外に何かファイルが必要だったり、
DLL登録しなくてはならなかったりしますか?
また、ランタイムだけの場合と、クリスタルデザイナ?が
ある場合と両方聞けると嬉しいです。
345こんなの見つけたよ:02/12/11 01:15
http://momolin.fc2web.com/
ちょっと気分転換してみませんか
あなたの探してるもの見つかるかも
おすすめメニューの中に何か隠されているみたい
あとはカテゴリから探してね 秘密のチャット
ネットアイドルと楽しくおしゃべり テレビ電話感覚のビデオチャット
全国にメルトモ作ろう メルトモ天国
やすらぎアイランド 〜出会いの島〜
30歳からの☆億千万の出会い
交換日記 運命の出会いがあなたを待っています
多機能メールアドレスを無料プレゼント
そのほか、WEB電子商取引関連、コンピュータ・家電、インターネットサービスプロバイダ、ソフトウェア
金持ちお父さんのビジネススクールなど
ネットビジネス、サイドビジネス紹介 PC情報
各種ネットショッピング 各種クレジット、ローン、キャッシング
ドメイン480円から取得、懸賞・プレゼント・ポイントサービスなど
見逃せない情報満載 一度覗いてみて下さい
http://momolin.fc2web.com/
346デフォルトの名無しさん:02/12/11 01:24
Perlで書かれたハフマン符号化を行うスクリプト無いでしょうか?
Cとかはよく見かけるのですが、Perlで書かれたものが欲しいのです。
自分がCを理解できないのと、オンラインで使いたい理由がありまして。
ネタが増えてきたなぁ
348デフォルトの名無しさん:02/12/11 01:33
今日は新鮮なのが入ってるよ!!
349デフォルトの名無しさん:02/12/11 01:36
Aho-Corasikのプログラム書ける人いますか?パターンマッチのやつです。
350349:02/12/11 01:44
やっぱいいや自殺しますさようなら
自殺する前に一度スカイダイビングを・・・
352デフォルトの名無しさん:02/12/11 01:59
パラシュート無しで・・・
353339:02/12/11 02:19
>>340
わかりづらくてすいません
16×16の文字を表示したいんですが、
256階調のデータはテキストファイルにあるのでそれを読み込んで
適当な大きさの四角形にその値の白黒階調の色を塗りつぶして並べていって
16×16の字にするっていうことをしたいんですけども
お手をお貸し下さい。
354デフォルトの名無しさん:02/12/11 08:33
C言語の課題で「1000000 (百万) までの素数を表示するプログラムを書きなさい. 」
というのがでました。

#include <stdio.h>
main ( ) {
   int n,m,l,o;
   2<=n<=1000,2<=m<=500000;
   i=n*m;
      /*iに該当しないものをoとする*/
   while (2<=o<=1000000){
    printf( "%\n" , o );
    0++;
   }
}
なんとか自分的にはそれらしくなったつもりです。。。
/*iに該当しないものをoとする*/
これはどう表現したらいいのでしょうか?
それと、これでできるでしょうか?
>>354
Cじゃなくて関数型言語でも習ったら?
356デフォルトの名無しさん:02/12/11 09:48
>>354
不思議言語ですね。
どこがCよ?
>>354
なぜoを++したり500000が出てきたりするのか理解に苦しむ。
その命題だと簡単なアルゴリズムだとこんなとこ?

#include <stdio.h>
main ( ) {
   int i,j,c = 0;
   for(i = 2; i > 1000000; i++){
      for(j = 1; j <= i; j++){
         if(!(i % j)) c++;
      }
      if(c==2) printf("%d\n", i);
      c = 0;
   }
}

ただこれだと実行時間は相当かかる。
なぜかは自分で調べましょう。
358354:02/12/11 09:55
根本的に違うってことですか?
C言語の講義だったのですが・・・
>>358
あんたがおかしい。
>>354
文法からして全く違う言語だ。
入門書をちゃんと読め。だいたい、
>   2<=n<=1000,2<=m<=500000;
こんな記述はできん。
講義した先生がかわいそうだな。
361357:02/12/11 10:04
甘やかしちゃったかな
362354:02/12/11 10:05
>>357
ありがとうございます。

>>360
入門書はないです。。。
4時間だけだったんで。。。
363354:02/12/11 10:07
>>361
大丈夫です。
十分理解できません,,´ ω `)
つーか、この手のお決まりな問題は、ここで聞くより探したほうが早いぞ。
http://www.google.co.jp/search?num=20&hl=ja&ie=UTF-8&oe=UTF-8&q=%E7%B4%A0%E6%95%B0+%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E3%81%B5%E3%82%8B%E3%81%84+array&lr=lang_ja

答えるほうとしてもこの手のやつは面白くないので、先に自分で調べてくれ。
365354:02/12/11 10:21
>>364
ヽ(,,´・ д ・`)ノワーイ♪ヽ(´・ д ・`,,)ノワーイ♪
サパーリわからないのでレポートはあきらめました。
皆様ありがとうございました。
学ぼうという姿勢が全然見えないから諦めたほうがいいよ
>>360
> >   2<=n<=1000,2<=m<=500000;
> こんな記述はできん。

できなくはないだろ。全く意味はないが(藁
368339,353:02/12/11 11:15
取っ掛かりだけでもお知恵をお貸しください。おながいします。
369デフォルトの名無しさん:02/12/11 11:16
べた組(改行、スペースなし)のテキストファイルの単語の出現頻度
をアルファベット順に表示しなさい。
という課題が学校のPERLの授業で出されました。
参考書を買い、ネットを調べ、何とかやろうと思いましたが、まるで
理解できません。誰か、救いの手を差し伸べてくださらないでしょうか?
お願いいたします・・・。
>>368
>256階調のデータはテキストファイルにあるのでそれを読み込んで
どういう形式でかいてあるのかわからん。
open / close / input / split / Form.PSet
372339,353:02/12/11 11:41
>>371
どうもです。
VBは良くわからんのですが、
Cでバイナリじゃなくってテキスト形式で出力させたファイルです。
373D:02/12/11 12:18
>>379
Private Const BoxSizeX = 100'ドットの幅
Private Const BoxSizeY = 100'ドットの高さ
Private Sub Command1_Click()
DrawIMG 1'<-イメージ番号1〜
End Sub
Private Sub DrawBOX(X As Long, Y As Long, FColor As Long)
Dim Cl As Long
Cl = FColor& + FColor& * &H100 + FColor& * &H10000
Me.Line (X * BoxSizeX, Y * BoxSizeY)-((X + 1) * BoxSizeX, (Y + 1) * BoxSizeY), Cl, BF
End Sub
Private Sub DrawIMG(TXNo As Long)
Dim i As Long, j As Long
Dim Buff As String
Open "data.txt" For Input As #1
For i = 1 To (TXNo - 1) * 16 'Seek #1, (TXNo - 1) * 34 * 16 + 1と言う手もある
Line Input #1, Buff
Next i
For i = 0 To 15
Line Input #1, Buff
For j = 0 To 15
DrawBOX j, i, Val("&h" & Mid$(Buff, j * 2 + 1, 2))
Next j
Next i
Close #1
End Sub
374354:02/12/11 12:20
悲惨な354がいるスレはここですか?
>>357
forは習ってないけどwhileで書き換えられるんですね。

>>360
&&をつかうんでしたっけ?
375D:02/12/11 12:22
つづき・・・
データのレイアウトが分からないので勝手に作りました。Data.txtというファイルに
000f2f3f4f5f6f7f8f9fafbfcfdfefff
000f2f3f4f5f6f7f8f9fafbfcfdfefff
000f2f3f4f5f6f7f8f9fafbfcfdfefff
って感じで1文字につき16行のデータを用意します。
複数の文字がある場合は続けて入れておきます。
指定したファイルを読み出してフォームに描画します。
OPEN〜の次の行のForからNext迄はコメントのコードで代用できます。(高速)
376339,353:02/12/11 12:29
Dさん大変どうもです。
参考にさせてもらいますです。
377339,353:02/12/11 12:58
>>375さん
再び教えて君ですみません
フォームはどのような構成を想定されているんでしょうか?
まっさらで良いんでしょうか?
>>361
大丈夫。バグってるから。
379354:02/12/11 13:01
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   while(i = 3; i < 1000000; i+2){
      while(j = 3; j < √i; j++){
         if(i % j ==0 ) {
          check = 1
         }
         else (check = 0 )
      }
   }
   if(check = 0){
printf("%d,",i);
   }
}
でけたd(゚-^*)♪
感動もんですな。
380D:02/12/11 13:03
>>354
コード見る限り、考え方以前の問題だけど..
考え方は、
素数を格納する配列を用意する。
配列の最初の値を2にする。
3から1000000までカウントし次の行を繰り返す。
配列にしまってある全ての数字で割って余りが無ければ配列にその数字を追加する
カウントが終わった時点で配列に格納されている数値が全て素数

このあたりは数学の基礎だから知っておいたほうがよい。
何処かのスレでサンプル出したけど覚えてないしソースも無い。
ま、がんばって
381D:02/12/11 13:07
>>377
真っ白でいいよ。ただAutoredrawをTrueにしといたほうがいい。
フォームの変わりにPictureBoxにしてもいいかも。(Me.を変更してね)
配列にって書いてたのを忘れてたけど方法はさほど変わらないから参考にして
>>379
ネタとしては>>354のほうがインパクトあった。
383デフォルトの名無しさん:02/12/11 13:18
csa(carry save adder)関数を次の手順に従って作れ。
(1)入力データa,bをそれぞれ2ビットとし、入力キャリーcを1ビットとする。
出力データdを2ビットとし出力キャリーeを1ビットとするときの真理値表を書け。
(2)その真理値表を実行できる2ビットcsa関数を作れ。関数名をcsaとし関数型をvoidとせよ。
(3)csa2を利用して4,8ビットcsa関数を作れ。
(4)作成した3種類の関数の動作をテストするmain関数を作れ。
384339,353:02/12/11 13:19
>>381
大変どうもありがとうございますです。
がむばります。
>>383
命令形かよ。
386354:02/12/11 13:25
>>382
ネタじゃないんだが・・・
って最後に代入しちゃってるか。
まだネタの域を脱していないんですか?
387354:02/12/11 13:43
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   while(i = 3; i < 1000000; i+2){
      while(j = 3; j < √i; j++){
         if(i % j ==0 ) {
          check = 1
         }
         else (check = 0)
      }
   }
   if(check == 0){
printf("%d,",i);
   }
}
何度確認してもこれ以上間違いは見つからなかった。。。
>>387
> 何度確認してもこれ以上間違いは見つからなかった。。。
√√√√√√√√√√√√√√√√√√√√√√√√√!
389デフォルトの名無しさん:02/12/11 14:11
√←ワラタ
>      while(j = 3; j < √i; j++){
個人的にはこれが受けた(藁
sqrt()じゃなくてルートであらわせるんだー
ふーん
へー

すごいね
コンパイルとおったのか?(藁
392デフォルトの名無しさん:02/12/11 14:22
構文
#include <math.h>
double sqrt(double x);

解説
引数が実数であれば,入力値の正の平方根を計算します。
sqrt は,引数 x の平方根を計算します。

戻り値
実行が成功すると,sqrt および sqrtl は計算した値である x の平方根を返します。
393デフォルトの名無しさん:02/12/11 14:23
(  ̄,_√) 何度確認してもこれ以上間違いは見つからなかった。。。
    ↑
394デフォルトの名無しさん:02/12/11 14:58
釣りのにほひ
395354:02/12/11 15:11
√は使えないんですか。。。
dqrtなんて習ってないもーん。
ていうか、みなさんありがとね。
俺たちは案外、次世代の言語をみてるのかもしれない。
397354:02/12/11 15:13
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   while(i = 3; i < 1000000; i+2){
      while(j = 3; j*j < i; j++){
         if(i % j ==0 ) {
          check = 1
         }
         else (check = 0)
      }
   }
   if(check == 0){
printf("%d,",i);
   }
}

これでだいじょーぶ?
>>397
あと致命的なバグが三つ、ちょっとしたのが一つかな。
399354:02/12/11 15:30
>>398
スペルはあってますよねぇ。
elseのカッコですか?
elseの終わりに;がつきますか?
400398:02/12/11 15:32
あ、もちろん最低限コンパイル通るように三四ヶ所直してからの話ね。
401デフォルトの名無しさん:02/12/11 15:33
i+2?
402デフォルトの名無しさん:02/12/11 15:34
一個目のwhile
403354:02/12/11 15:35
>>400
そんなにあるんですか。
入る学科間違えたかなぁ。

>>401
2ずつ進むのはi+2ではないのですか?
>>402
二つ目も。
あと文は;で終らなければならない。

コンパイルするためにはこんなとこかな。
405354:02/12/11 15:41
d(゚-^*) i+=2 ♪
d(゚-^*) 初期化 ♪
406354:02/12/11 15:43
#include <stdio.h>
main ( ) {
   int i=0,j=0,check ;
   printf("2");
   while(i = 3; i < 1000000; i+=2){
      while(j = 3; j*j < i; j++){
         if(i % j ==0 ) {
          check = 1;
         }
         else (check = 0);
      }
   }
   if(check == 0){
printf("%d,",i);
   }
}
訂正してみました。
407354:02/12/11 15:47
初期化ってのは意味ないのかな?
うーん。わからないです。。。
>>406
コンパイラないの?
2ch見てるってことはパソコンはあるんだよな。
409354:02/12/11 16:00
>>408
コンパイラって何ですか?
調べてみたけどわかりませんでした。。。
パソコンはあります。
入る学科間違えてるよ。完璧に。
411354:02/12/11 16:27
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   while(i = 3; i < 1000000; i+=2){
      while(j = 3; j*j < i; j++){
         if(i % j ==0 ) {
          (check = 1);
         }
         else {
           (check = 0);
         }
      }
   }
   while{
      if(check == 0){
       printf("%d\n",i);
      }
      i++;
 }
printf("\n");
}
できたー
412354:02/12/11 16:29
>>410
出来ちゃったみたいですよ。
これで間違ってたら・・・
413354:02/12/11 16:38
反応がないって事はできてるみたいですね。
大学いって仕上げなきゃ・・・
( ゚д゚)ポカーン
>>413
お前絶対狙ってるだろ(藁
416354:02/12/11 16:47
>>414-415
狙ってませんよ。
どこか間違ってます?
教えてもらえませんか?
マジでお願いします。
417354:02/12/11 16:53
教えてくれよぉぉぉ。
m(_ _)m
418354:02/12/11 16:57
ほんとに。。。
あと3時間で大学がしまっちゃうんですぅぅ
>>416-417
せっかちな奴だな。

とりあえずここを見てコンパイラを入れろ。
C言語のことは<46>
http://pc3.2ch.net/test/read.cgi/tech/1039328710/1-2n
420bloom:02/12/11 17:01
421354:02/12/11 17:02
>>419
何で俺が英語だめなこと知ってるんですか?
>>421
知らねーよ。何でもダメそうだけどな。
つーか、Borlandとかめじろのページは日本語だろ。
最初のwhile二つをforにかえて、三つ目のwhileの行とその前の行を削れ。
最後のi++の行もいらん。
elseもいらないかわりに、その中のcheck=0をjのループの前に出せ。
見てくれも悪いし遅いけど、これで動くだろ。

めんどくさくなって来たから、後はゆっくり自習しろ。
424354:02/12/11 17:14
>>422
基本的に何やってもだめですね。
めじろゲットしてやってみたのですがエラーがでました。
エラーを見てもわからないのですが・・・
425 ◆F52DmOxJlc :02/12/11 17:15
ちょっと何よ、すごいことになってるな。
>>354
あんた神だ(藁
426354:02/12/11 17:15
>>423
やっぱfor使うんですか。
なんて教師だ。
>354
やっぱこれだろ
void main(){
prntf("1000000 (百万) までの素数");
}
とりあえず、これで時間を稼ぐ
428354:02/12/11 17:20
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   while(i = 3; i < 1000000; i+=2){
      while(j = 3; j*j < i; j++){
         if(i % j ==0 ) {
          (check = 1);
         }
         else {
           (check = 0);
         }
      }
   }
   while{
      if(check == 0){
       printf("%d\n",i);
      }
      i++;
 }
printf("\n");
}

どの括弧を消すのですか?
429354:02/12/11 17:21
あらら
430354:02/12/11 17:24
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   for(i = 3; i < 1000000; i+=2){
     (check = 0);
       for(j = 3; j*j < i; j++){
         if(i % j ==0 ) {
          (check = 1);
         }
      }
      if(check == 0){
       printf("%d\n",i);
      }
      i++;
 }
printf("\n");
}
カッコが多いらしいのですが・・・
431 ◆F52DmOxJlc :02/12/11 17:28
6:     (check = 0);
9:          (check = 1);
432354:02/12/11 17:36
#include <stdio.h>
main ( ) {
   int i,j,check ;
   printf("2");
   for(i = 3; i < 1000000; i+=2){
     (check = 0);
       for(j = 3; j*j < i; j++){
         if(i % j ==0 ) {
          (check = 1);
}
         }
      }
      if(check == 0){
       printf("%d\n",i);
 }
printf("\n");
}
出来ちゃったみたい。
これでだめならあきらめますね。
心中・・・
433354:02/12/11 17:37
皆さん本当にありがとうございました。
うーん、ネタじゃなかったのか…。ちなみに、ありがちなコード(100まで)
#define MAX 100
#define SIZE MAX/2-1
int main(){
  int x[SIZE],i,j,k=0,imax;
  imax=MAX/2-2;
  for (i=0;i<imax;i++){x[i]=2*i+3;}
  for (k=0;x[k]<sqrt(max);k++){
    j=k+1;
    for (i=k+1;i<size;i++){
      if (x[i]%x[k] != 0){x[j]=x[i]; j++;}
    }
    imax=j;
  }
  printf("2,");
  for (i=0;i<imax;i++){printf("%d,", x[i]);}
}
たぶん、合ってるだろー
>434
うぁ、間違えた。
×    for (i=k+1;i<size;i++){
○    for (i=k+1;i<imax;i++){
これでコンパイルできるかな?
×  for (k=0;x[k]<sqrt(max);k++){
○  for (k=0;x[k]*x[k]<MAX;k++){
( ゚д゚)アキタヨ・・・
>>432
>       if(check == 0){
>        printf("%d\n",i);
この二行をその上のブロックにいれろ。
じゃなきゃ21000000としかでねーよ。
438デフォルトの名無しさん:02/12/11 18:41
質問
ユーザのプログラムをランタイムライブラリで挟んでリンクするのはなぜですか?
質問
どういう意味ですか?>>438
質問
「ユーザのプログラムをランタイムライブラリで挟んでリンクする」というのはなんですか?
441デフォルトの名無しさん:02/12/11 18:49
こういうことです。
(crun.o ○.o cend.o)の順番でリンクするのはなぜか?
>>441
趣味。
linkerさんに聞いて下さい。
>438
変な宿題だね( ´_ゝ`)
445デフォルトの名無しさん:02/12/11 18:59
英語テキストを一文単位で段落に区分けして、更に、各段落の中から
go または goesという単語を含む段落を抽出して表示するプログラム
をopen関数を使って作成、というのが学校の授業課題で出されたのですが、
なにぶん初心者でさっぱり理解できません。参考書を見てもよく分からないし、
ネットで検索するにしても何を調べたらいいのやら、といった感じで・・・。
お願いです!!誰か助けてください!!!m(_)m
>>445
・使用言語は?
・「英語テキストを一文単位で段落に区分け」???
>>445
DOSの低レベルファイルアクセス関数?
>>447
open(2)はDOSというよりUNIX/POSIX。
>>448
勉強になりました。
>>438
EXPERT Cって本に回答載ってるよ。
451デフォルトの名無しさん:02/12/11 22:48
おせぇ〜て!!
リストボックスの中にエクセルのデータを読み込みたい!
例えば、aっていうファイルの1列目の10行目まで読みたい時は・・・
Dim kname(100) As Integer
Dim Cells(100, 50) As Integer

f$ = "a.xls"
Set LINK = GetObject(f$)
For i = 1 To 10
kname(i) = LINK.Worksheets.Application.Cells(i, 1)
List1.AddItem kname(i)
Next i
これだと駄目なんだよね〜
ちなみにxlsをtxtにしたほうがいいっていうんだけど?!?
おせぇ〜て!!


452デフォルトの名無しさん:02/12/11 22:51
>451はVBの話です
453デフォルトの名無しさん:02/12/11 23:12
おせぇ〜て!! VBの話。
リストボックスの中にエクセルのデータを読み込みたい!
例えば、aっていうファイルの1列目の10行目まで読みたい時は・・・
Dim kname(100) As Integer
Dim Cells(100, 50) As Integer

f$ = "a.xls"
Set LINK = GetObject(f$)
For i = 1 To 10
kname(i) = LINK.Worksheets.Application.Cells(i, 1)
List1.AddItem kname(i)
Next i
これだと駄目なんだよね〜
ちなみにxlsをtxtにしたほうがいいっていうんだけど?!?
これわかんないと進まないのよ!

仕事手伝いますYO!!
とかないの?
>>453
1 名前:デフォルトの名無しさん 投稿日:2002/11/23(土) 13:16
宿題とか手伝いますけど、以下の事項は守ってほしいです。
・マルチポストは厳禁です。
>453
1から全部読んで来い、ボケ
457デフォルトの名無しさん:02/12/11 23:18
>>455
すみませんm(__)m
ど〜しても困ってて・・・
マルチでしょ
459D:02/12/11 23:47
>>453
よそにも書いてたねぇ。困っててもマルチポストは他の人に迷惑かけるよ。
ほい
Dim xlapp As New Excel.Application
Set xlapp = CreateObject("Excel.Application")
xlapp.Visible = False
xlapp.Workbooks.Open App.Path & "\a.xls"
For i = 1 To 10
List1.AddItem xlapp.Workbooks("a.xls").Worksheets("Sheet1").Range("a" & i).Value
Next i
xlapp.Quit
Set xlapp = Nothing
>454
手伝ったら給料分けてくれるのか?
仕事手伝いますよスレ、の想像、、、

137 :デフォルトの名無しさん :02/12/11 19:50
デスマーチでテンパってます。どなたか助けてください。

138 :デフォルトの名無しさん :02/12/11 20:00
おk。

139 :デフォルトの名無しさん :02/12/11 20:02
まかせろ。

140 :デフォルトの名無しさん :02/12/11 20:15
金は出るんだろうな

...
251 :デフォルトの名無しさん :03/06/01 19:20
そういえば、137〜140のその後の話がないな

301 :138 :03/11/05 10:30
デスマーチ中。もうだめぽ

302 :デフォルトの名無しさん :03/11/05 12:10
>301
((( ;゚Д゚)))ガクガクブルブル
462デフォルトの名無しさん:02/12/12 17:42
>>445の書き込みをしたものです。大変中途半端な書き込みをしてしまい本当に
申し訳ありませんでした。
使用言語はPERLです。英文を一文単位、というのは、文頭からピリオドまでで
分ける、ということです。お願いします、助けてください・・・。
もういっぱいいっぱいです。参考書は何書いてあるのかよく理解できないし・・・
お願いします!!!
463デフォルトの名無しさん:02/12/12 17:45
>>445の書き込みをしたものです。大変中途半端な書き込みをしてしまい本当に
申し訳ありませんでした。
使用言語はPERLです。英文を一文単位、というのは、文頭からピリオドまでで
分ける、ということです。お願いします、助けてください・・・。
もういっぱいいっぱいです。参考書は何書いてあるのかよく理解できないし・・・
お願いします!!!
464デフォルトの名無しさん:02/12/12 17:46
し、失礼しました!!なんかミスって二回も同じ文を書き込んでしましました
・・・。本当に申し訳ありません・・・よろしくお願いします・・・。
465デフォルトの名無しさん:02/12/12 17:50
>>462

>140 :デフォルトの名無しさん :02/12/11 20:15
>金は出るんだろうな
ここで質問してるヤシは
 教えてくれる友達もいない寂しいやつ || バカしかいないDQN学校の生徒
ということでよろしいか?

全くやる気ないなら友達のを写せばいいのにな

467デフォルトの名無しさん:02/12/12 19:53
>>466
随分ひねくれた考えしか出来ない奴だな。
>>467
煽りは放置で。
469ダウソ住民:02/12/12 20:39
Xが偶数か奇数かを表示するCのプログラムっていうのが分かりません。
そうですか。
>>469
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int num;
char *ans[4]={"偶数","奇数"};
scanf("%d", &num);
printf(ans[num&1]);
return EXIT_SUCCESS;
}
>>471
あほすぎる。。。( ゚д゚)
だって>>469は釣りだし。
474 ◆F52DmOxJlc :02/12/12 22:24
>>445
文法チェック済み。動作確認はまだ。
#!/usr/bin/perl

# コマンドライン引数でファイル名を指定。

exit 0 unless (@ARGV);

if (open IN, "<$ARGV[0]") {
read IN, $text, (stat(IN))[7];
close IN;
} else {
printf("%s: %s\n", $ARGV[0], $!);
exit 0;
}

$text =~ s/\r//g;
$text =~ s/\n//g;
$text =~ s/\./.\n/g;
$text =~ s/\?/?\n/g;
$text =~ s/!/!\n/g;

@lines = split(/\n/, $text);
foreach (@lines) {
printf("%s\n", $_) if (m/\s?(go|goes)/i);
}

__END__
475 ◆F52DmOxJlc :02/12/12 22:55
>>445
ごめん、最後の foreach を修正。正規表現を工夫すればもっと簡潔に書けるはず。

#!/usr/bin/perl

# コマンドライン引数でファイル名を指定。

exit 0 unless (@ARGV);

if (open IN, "<$ARGV[0]") {
read IN, $text, (stat(IN))[7];
close IN;
} else {
printf("%s: %s\n", $ARGV[0], $!);
exit 0;
}

$text =~ s/\r//g;
$text =~ s/\n//g;
$text =~ s/\./.\n/g;
$text =~ s/\?/?\n/g;
$text =~ s/!/!\n/g;

@lines = split(/\n/, $text);
foreach (@lines) {
# 各行頭にスペースを追加。(スペース)go または goes(英数字以外の何か)を検出。
# "Go on!" なんてのは検出できないので悪しからず。
$temp = " " . $_;
printf("%s\n", $_) if ($temp =~ m/\s(go|goes)[^\w]/i);
}

__END__
476デフォルトの名無しさん:02/12/12 23:07
プログラミングのレポートでアルゴリズムと考え方を書くのですがこの2つの違いが分かりません。
どうか教えて下さい。
long? i,j,check ;
while=>for
;?
1000000l; //??
i+2=>i=i+2
配列
char ss[10]に

[A][A][A][A][2]

という風に値が入っているとき、
(左から0番地、1番地・・・と考えてもらえるとうれしいです)
2の値(配列4の要素)を取り出すにはどうすればよいのでしょう?
配列の5番目にはかならず
数字が入っている決まりです。
int num 
に char型の配列の5番目の値を入れる方法を教えてください。

さらには
CString ss;
に同様に
AAAA2

という文字列が入っている場合

int num 
に5文字目の2という数字を入れる方法を教えてください。
是非、助けてやってください。
%ld ?
num=ss[4];
????????????
Beaucoup Fish
beau
――――――――――――――――――――――――――――――
/bZu/〔フランス〕【名】(複〜s,〜x/‐z/) ?《古》

1 《主に米》[おどけて] 求婚者,愛人《男性》;(女性への)付添い
の男.

2 しゃれ男,だて男.
  ~~~~~~~~~~~~~~~????????????????
≪近似解≫
Beatles
――――――――――――――――――――――――――――――
/bXイtlz/【名】[the 〜;複数扱い] ビートルズ《世界の音楽・風俗に
大きな影響を与えた英国のロックグループ. メンバーはJohn
Lennon,Paul McCartney,George Harrison,Ringo Starr. 1970年
解散》.
483あに〜き:02/12/13 01:18
某T大でプログラミングの授業をとっていまして、プログラミングに興味あって
参考文献などを購入したのですが、うちの大学のC++はstdahx型のコンパイラー
を使っていまして、マイナーすぎて文献に乗っておりませんでした。
しかも、一回目でprintf終了二回目でscanf終了と
ペースが速く全くついていけません。
どうかケプラーの運動方程式をとくプログラミングを教えてください。
お願いします。
484デフォルトの名無しさん:02/12/13 01:24
>>445の書き込みをしたものです。
>>474さん、本当にありがとうございました!!
今、動作確認させていただき、無事、実行されました。
これで明日提出することができます♪
本当にありがとうございました!
485あに〜き:02/12/13 01:25
ごめんなさい。追加です。
私がわかったのは方程式を関数とみて関数を微分して
解くということは分かりました。
しかし、プログラミングとなると、変数を用意して・・そのあと何から
手をつければよいのかわかりません
>>483
うちの大学は4回でC言語終了だから、それよりまし
1回目:代入、演算子、型宣言、if、while、for、printf、scanf
2回目:配列
3回目:関数、再帰処理
4回目:ポインタ、構造体、自己参照構造体
一回4.5時間
487あに〜き:02/12/13 02:52
うちは関数・再帰処理が1.5時間で終わりました。
先生のホームページにあるプログラムをコピー&ペーストして
「じゃあ、こうなったね。」で終了。

先生、あんた何のためにいるんだ・・・・
プログラミング言語なんつーもんぁ人に習ってどうなるっつぅもんでもねぇだよ。
つまんねぇごと言ってる暇さぁあったらプログラムば書いで書いで読んで
書いで読んで書ぎまくるだよ。
それが一番の近道なんだべよ。
489あに〜き:02/12/13 03:15
独学で勉強しようにもstdafx型は資料少なすぎです
stdafx型ってなんでつか?
ゲイツ?
492あに〜き:02/12/13 04:04
コンパイラーです
(゚Д゚)ハァ?
494あに〜き:02/12/13 04:17
ごめんなさい、実はよくわかりません。
#include<stdafx.h>っていう最初に来る部分です
それってWinじゃネーノ?
資料なんて大量にあるんじゃネーノ?
どうナーノ?
496あに〜き:02/12/13 04:31
大概がvoid型なのでstdafx型はあってもあまり詳しく書いてなかったりしてよくわかりません。詳しい友人に聞いてもscanfハア?何それとか言われてしまいます
497あに〜き:02/12/13 04:34
友人はプログラミングに詳しいのですがstdafx型は全く知らなかったです
大概が void 型、ってなんや。。。使いかたまちごぅとるやろ
scanfハア?何それ、とかいうやつが「詳しい」やてぇ!?えらいこっちゃな
逝ってこい
なにやら壮大な勘違いを繰り広げているようだな
はい5000げとー
501デフォルトの名無しさん:02/12/13 04:42
>>478

num = (int)ss[4] - '0';
502あに〜き:02/12/13 04:42
スマソ、よくわからくなってきた。出直してくる
503デフォルトの名無しさん:02/12/13 04:44
>>502
わからなくなってきたっつーか, はじめから分かっていない罠.
504デフォルトの名無しさん:02/12/13 05:27
なんでヘッダファイルが型なの?
>>504
全然分かってないから
>>501
<num = (int)ss[4] - '0';
>num = ss[4] - '0';
せいすうのぷろもーしょんがおこるからめいじてきなきゃすとはふよう。
507デフォルトの名無しさん:02/12/13 11:23
>>486
うちの大学はもっとひどいぞ
0回でC言語終了だ
いきなりコンパイラ作れだぞ
言語も構文解析も教わってないのに
わけわからんところから全部独学
なめんな(゚Д゚ )ゴルァ!!
>>507
大学は自分で勉強するところだからな。いい大学じゃないか。なんつて。
それにしてもやりすぎって気がするが。何年生?
509デフォルトの名無しさん:02/12/13 11:31
>>508
3年でつ
( ´,_ゝ`)
511デフォルトの名無しさん:02/12/13 12:03
どなたか、C++でじゃんけん作ってくれませんか。
頼みますm(_ _)m
最初はグーで
>>511
まずは仕様からだ。
画面の前でプレイヤーが何を出したか認識するようなんは無理だぞ。
>>513
パワーグローブを使用します。
>514
ttp://natto.2ch.net/denpa/

じゃあここで聞くといいよ
516478:02/12/13 13:32
答えてくださった方感謝です。

しかし未だにわからんのですが、
String型で読み取った文字列の中の数字を、
数字として取り出すには結局どうすればよいのでしょう?
(後半部分の質問です)
517デフォルトの名無しさん:02/12/13 15:17
>>516
5番目に入ってる一桁の数字を取り出せばいいの?
一桁って決まってるなら'0'引けば(゚з゚)イインデネーノ?

複数桁ならatoiとか
518デフォルトの名無しさん:02/12/13 16:22
C/C++宿題スレでdel厨に1000とられました
519デフォルトの名無しさん:02/12/13 16:25
次スレたたないね
520デフォルトの名無しさん:02/12/13 16:25
いらんだろ
次スレのタイトルは「C/C++宿題受付所」でどうだ?
立てようかな。
522997:02/12/13 16:28
C/C++宿題スレの997です。
おかしなこといってましたすいません。
0x61 <= *aが真であれ偽であれ0か1になれば
結局0x61 <= *a <= 0x7aは通過するので
0x61 <= *a が成り立てば全部通るとか書きましたが
間違いで何でも通ります
>>521
なぜ素直に「2」にしない…
第2C/C++宿題受付所 か?
>>523
オーソドックスなんて知性の墓場。

(C/C++宿題受付所 == 2)?カエレ!:バカ
526デフォルトの名無しさん:02/12/13 17:52
処理時間を調べるのに、clock_t型(end,begin)を使って
(end - begin) / CLOCKS_PER_SECとかやったんですけど、
0.0000000秒としか表示されないんですけど。
もっと細かい時間を測定する方法ってないんでつか?
>>526
OS。
タイマー割り込みとか
処理系依存となるが、
QueryPerformanceCounter(Win32)とか、
rdtsc(Intel Pentium)とか
gettimeofday(UNIX)とか。
529デフォルトの名無しさん:02/12/13 17:54
>>527
具体的にどうすればいいんでつか?
530デフォルトの名無しさん:02/12/13 17:55
OSはWindows2000で、コンパイラはgccですが。
gccってWin32使えるんでつか?
>>530
マルチメディアタイマ
(゚Д゚)ア?
533デフォルトの名無しさん:02/12/13 17:58
マルチメディアタイマってなに?
530は526とは関係ないと思うが…。

マルチメディアタイマがわからんヤツはせめて検索くらいしろ。
「私」 になっちまったようでつ

C/C++の宿題なら私にやらせろ!
http://pc3.2ch.net/test/read.cgi/tech/1039772622/l50
536 ◆F52DmOxJlc :02/12/13 19:06
次は「C/C++の宿題ならあたしにやらせなさいよ!」とかどうだろう。
C/C++の宿題やってください
538デフォルトの名無しさん:02/12/13 19:46
C/C++の宿題を出します
C/C++の宿題忘れました
C/C++の宿
この前 友達から聞かれた問題なのですが
自分は 情報系ではなく C言語をかじった程度なので分かりません

問題は 以下のような概要?をプログラム言語で書くというものなのですが、
これがC言語でできるのかも自分には わかりません。
どなたか 前文 書いてください。

c←0.5+0.1i
 for j ←1 to 100
  for k ←1 to 100
  compute z0
 z←z0
 for n ←1 to 10
z ←z^3 + c
if |real(z)|or|imag(z)|or|z|>10
then jump out of loop
if |real(z)|or|imag(z)|<10
then plot(j,k)black
else plot(j,k)white

どのようなことをしているのかは 分かるんですけど
どう書いていいのか 自分には さっぱりです
ちなみに z ←z^3 + c というのは
Zn+1=Zn^3+c ということです
C/C++の宿酔い >>541空気読め
おまんさんをけいさんしてるのか?
それともつりか?
空気の前に、コピペと思える程の大量マルチ
545デフォルトの名無しさん:02/12/14 15:41
神様、迷える子羊に愛の手を...C言語です.
バブルソート法を使うと言うのはわかったんですけど...

1.出発点を打ち込むと,隣接する交差点名と交差点番号および距離を表示させます.
表示された交差点の中から次に進む交差点を選択できるようにし,順々に道案内する
プログラムを作成しなさい.

dataはこれです.
交差点番号,X位置,Y位置,交差点名,接続交差点数,接続交差点番号

1, 0.0, 0.0,A, 2, 2, 4
2, -0.6, 0.15,B, 3, 1, 3, 11
3, -0.83, 0.0,C, 4, 2, 4, 9, 10
4, -0.6, -0.38,D, 3, 1, 3, 5
5, -0.38, -0.68,E, 3, 4, 6, 7
6, 6.0, -0.3,F, 1, 5
7, -0.18, -1.02,G, 2, 5, 8
8, -0.84, -1.58,H, 3, 7, 9, 18
9, -0.9, -0.98,I, 2, 3, 8
10, -0.98, 0.15,J, 3, 3, 11, 13
11, -0.78, 0.3,K, 3, 2, 10, 12
12, -1.28, 0.68,L, 2, 11, 13
13, -1.32, 0.53,M, 4, 10, 12, 14, 15
14, -1.8, 0.98,N, 2, 13, 20
15, -1.43, -0.15,O, 2, 13, 16
16, -1.73, -0.26,P, 3, 15, 17, 20
17, -1.8, -1.43,Q, 3, 16, 18, 19
18, -1.2, -1.73,R, 2, 8, 17
19, -2.48, -1.2,S, 2, 17, 20
20, -2.33, -0.51,T, 3, 14, 16, 19

546 :02/12/14 15:58
>>545
ソートなぞいらん

・dataを適当な形で配列にして
 −>どういう形態にするかは好きにしろ
・交差点名<->交差点番号(配列のキーに1:1対応させる)

のテーブルを作れば、後は距離を計算して表示するだけ。

ところで距離の演算は直線でいいのか?
 ピタゴラスの定理を思い出せ
  a^2+b^2=c^2
ってヤツだ

547>>545:02/12/14 16:03
距離は直線でよいです。
入力した点からその他の点までの距離計算は
わかるんですが、、、どうやればいいか。

ちなみに、原点からの直線距離を計算して近い順に並べ替えるのはできました。

548 :02/12/14 16:27
>>547
例えば
char tbl_num_ex_name[交差点数]; /*交差点番号->交差点名変換テーブル*/

struct CROSS{
char cross_name; /* 交差点名 */
float vertixal; /* X軸座標 */
float horizontal; /* Y軸座標 */
char neghbor_num /*隣接する交差点数*/
char tbl_neibor[隣接する交差点数の最大値] /*隣接する交差点番号*/
};

struct CROSS cross_dat[交差点数];
{
各初期値設定
};

最近コード書いてないから、文法がかなりいい加減だが

あとは交差点名から交差点番号を返す
Switch-caseが書いてある関数でも作ればオケ、
交差点番号が上の構造体を引っ張ってくるキーになる。

>ちなみに、原点からの直線距離を計算して近い順に並べ替えるのはできました。
お題には「近い順に表示せよ」とは書いてないが?
549>>545:02/12/14 16:39
その前の問題が近い距離を並べ替えて表示する問題でした。
それは出来たんです。
なので、データを
typedef struct{
intid;
doublex, y;
charname[3];
intpoints;
intnext[5];
} Crossing;

Crossingcross[MaxNumber];
みたいにして、あとはread dataで読み込んで距離を計算して並べ替えて表示するのはオケです。
あっ、自分で説明してるうちになんかできそうなかんじしてきました。
自分ができた並べ替え問題のほうが難しかったりしますか?
550 :02/12/14 16:44
>>549
OK!
「隣接してるとこを探してくる」 ってところは同じだろ。

それが出来てれば、入力されたところを始点にして
隣接してる先を表示するってのを繰り返すだけ。
551>>545:02/12/14 16:51
なんとかできそうです!
ただ、プログラムを終了させるいい方法ってありますか。
単純にendとか打ち込んだら終了しますってことをあらかじめ表示させるようにして
終わらすしかないですかね。。。
552 :02/12/14 16:58
>>551
基本的にはそう。

CUIベースだと見せ方に限界があるから、
交差点名を入力させるときに終了判定するのがスマート。

”続けるなら交差点名を選択して入力、終了は!を入力”とでも
メッセージをだして入力させるのが個人的には好み、楽だから(w
553>>545:02/12/14 17:05
ありがとうございます。
ちなみに他にも進歩した問題があるんですが、
こっちがかたずいてから手をつけたいと思います。
ちなみに問題は、

2.出発点とゴール地点を打ち込むと,自動的に経路を決定し,
それを表示するプログラムを作成しなさい.

3.出発点とゴール地点を打ち込むと自動的に最短経路を決定し,
それを表示するプログラムを作成しなさい.

まだ手付かずなので、またわからなくなったら聞きにきます.
カーナビの基本を知れと言う講義ですんで.
554 :02/12/14 17:12
>>553
やっぱり最終的にはそこか(w

グーグルで”最短経路問題”を検索すると参考になると思うよ
555>>545:02/12/14 17:15
なるほど。たしか、Dijkstra の定理を使えと言われたような気がします。
これって基本なんですかね?最短経路問題の。
556 :02/12/14 17:19
>>555
その道にはあまり詳しくないが、良くつかわれてるようだ。
>>553
教科書をよく読んでがんばれ

俺もつい先日作ったんだけど、俺は本持ってないから、webで探した。
でも、日本語ページは参考にならなかった。本があるならそれを読んだ方がいい。
ちなみに英語で"search path algorithm graph"辺りで探すといいのが見つかる。
558>>545:02/12/14 19:23
1の問題はできました!
3つから1つできれば課題は達成なんですけど、
せっかくなんでやってみます。
教科書はないんでweb検索してtryしてみます。
>>558
グラフ理論やネットワーク論の本買え
560デフォルトの名無しさん:02/12/14 23:54
宿題やらせろ!
>>560
すみません。漢字ドリルの書取20回やってもらえませんか?
宿題やりたい厨はC/C++の宿題なら私にやらせろ!スレ逝け
VBなんですけど・・・
タブストリップでマウスがあるタブのインデックスを知りたいのですが・・・
どうすればいいでしょうか?よろしくお願いします。
VB6SP5
XPです
マルチなんですけど・・・
タブストリップでマルチがあるタブのインデックスを知りたいのですが・・・
どうすればいいでしょうか?よろしくお願いします。
マルチ6SP5
マルチです
> マルチ6SP5

欲しい・・・
566デフォルトの名無しさん:02/12/15 05:14
方程式2sinx=xの根を二分法で求め、(1,3)と出力されるようにするプログラム
を作ってるんですけど、誰か教えてもらえないですか?
言語はFORTRANでお願いします。
Visual Bakaについて(ry
568デフォルトの名無しさん:02/12/15 19:33
System.out.printlnのことですが

Systemがクラス名でprintlnがメソッド名ですよね?
そうだとしたら、outは何なのでしょうか?
>>568
いや、outがインスタンス名。Systemはパッケージだろ。
570デフォルトの名無しさん:02/12/15 21:47
そうなるとprintlnは何になるのでしょうか?
メソッド名じゃないのか
ユーザ認証をするプログラムをサーブレット、JSPを使って作っています。
フィルタを使う奴です。

今、サーブレットからのリクエストからリクエストしたURLを取り出し、(ここは
成功しました。)これをまず、ユーザ認証のJSPへ渡し(フォームからの入力)
、さらにそこから チェック用のJSPへ渡したいと思うのですが、なかなかうまく
いきません。

チェック用のJSPからはresponse.sendRedirect();で本来のページへ飛ばすつもり
です。

よろしくおねがいします。
>>572
貴方が上手くいかないことを誇らしげに説明されても困る
574デフォルトの名無しさん:02/12/15 22:41
>>573
そうですか、大変ですね。がんばってください。


何したいんじゃボケ
575574:02/12/15 22:41
ごめんずれた
>>574>>572へのレス
えっと




























わからないなら書くな。馬鹿たれ
質問者の逆ギレキタキタキタキタ━(゜∀゜≡(゜∀゜≡゜∀゜)≡゜∀゜)━!!!!!!!!!!
うるせー! ぶっ殺すぞ!!
579デフォルトの名無しさん:02/12/15 22:46
釣れた釣れた

さて寝るか
わかんないやつはレスするな      なめとんのか
大変だね、仕事の締め切りですか?
無能プログラマをかかえた会社がかわいそう。
オマエモナ
ハイ、次の方ドウゾー
AJvaってなんですか?
C/C++の宿題スレに尋ねたらこっちの方がいいかもと誘導されたので
こちらにも書かせていただきます。
学校でbisonを使ったCの宿題が出ているのですが、
先生がbisonについてほとんど教えてくれないので、
さっぱり分からなくて困っています。
bison文法も全く教えてもらっていないのに無茶苦茶です。
というわけで、ここでbisonについての質問をしてもよろしいでしょうか?
それとも他にもっと適切なスレがありますか?
>>585
マニュアル読め

はい次
>>585
『コンパイラ・スクリプトエンジン』 相談室 2
http://pc3.2ch.net/test/read.cgi/tech/1021136715/

ここで聞いたほうがいい。
588デフォルトの名無しさん:02/12/18 00:39
宿題やらせろー!!
589うんち:02/12/18 00:41
はははははは!!この世にウイルスなんてあると思う?確かに少しは
あるけどお前らバカじゃない?本当にウイルスがあるなら送って見ろよ!
嘘つきさん、やれるもんなら送って見ろよバーカ!!ははははははははははは!!
[email protected]
>>589
アク禁依頼出してきた
>>589
プお前ウイルスなんか信じてるの?
そんなもの少しも存在しないんだよ!!
>>589はよっぽどの寂しがり屋かshimon〜ol.ne.jp に恨みがある根暗かどっちかだな。
どっちにしろ>>589は痛いわけだが。
うわ〜釣られまくってやんの(プ
>>593
・・・。
白色逆変換のプログラム希望します。
入力行列はN*Nの乱数です。
真面目にわかりません・・・、どなたか心得のある方お願いします。
>595
白色逆変換って何?
epsilon=1.0e-6
a=0
b=2.0
10 continue
x=(a+b)/2
y=2*sin(x)-x
if (abs(y) .lt. epsilon) goto 100
if (y .gt. 0) a=x
if (y .lt. 0) b=x
goto 10
100 continue
write(6,*) x, y
end
598595:02/12/18 09:09
白色変換
2つの線形変換により与えられた実対象行列を単位行列にする変換

これの逆変換です。
白色変換と白色矮星って何が違うの?
日本海と東海の違いみたいなもんだ
つまり、風林火山と海原雄山の違いのようなものですか?
金日成とメルギブソンみたいな?
アンコとマン(ry
>>603
餅付スレに帰れ。
602 は痛いが、603 は別にそうでもないと思う。
正常な感覚であれば全員痛いガナー
違うね。
正常な感覚があれば 2ch になど来ない。
つまり、漏れも貴方も異常という事だアヒャ
正常という概念自体が(ry
DQN ですが何か?
>>609
自覚症状があると言うことはいいことだ。
611デフォルトの名無しさん:02/12/18 10:47
僕は正常です!!アヒャ
ほほう。
十八金と十八禁の区別がつかないのですが
十八金は生きていくのに必要ない
十八禁は生きていくのに必要

よく覚えとけよ
胆に命じますた
616デフォルトの名無しさん:02/12/19 00:22
ExcelVBAからC++で書かれたDLLの関数を呼び大したいのですが、いろいろ検索してもぜんぜん手がかりすらつかめません。
サイト、もしくは参考書をご存知の方がいらっしゃいましたら、教えてくださいませんか?
HELPもさっぱりで・・・・・バカですみません。
617さっぱり:02/12/19 00:29
すいません。C言語の初心者です。
課題で出されたCがわからなくてこまってます。
課題は2つの行列AとBを加算するプログラム(matadd.c 未完成)をディスクに保存する。

入力用データファイル matadd.dat をディスクに保存する。

ソースプログラムをコンパイルし,実行する。
実行時に次のように入力のリダイレクトを行い,データファイルからデータを読み込ませる。

matadd < matadd.dat


表示された結果とソースプログラム内容を観察し,どのような手順で2次元配列を入力・出力しているか,理解する。

次に,C=A+B を計算し,Cの各要素を行列らしく出力する部分を追加して完成させる。
上と同様に実行して動作確認ができたら,ソースプログラムを提出する。お願いします。

Don't multi!
ディスクに保存するのが課題ですか。
>>619
2chにコレを書き込むと
どんな反応が返ってくるかを観察する課題です
>>616
C++ の方で extern "C" してないなら無理っぽいと思う
>>617
とにかくソース貼れよ。
>>622
マルチに対してそういうレスつけるのはやめれ。
624デフォルトの名無しさん:02/12/19 23:00
同期式2進符号化6進ダウンカウンタを設計しなさいという課題があるのですが、
さっぱりわかりません。教えてください
同期式?
ダウンカウンタ?
>>624
ハードウェア?
627デフォルトの名無しさん:02/12/19 23:32
論理回路です
>>627
AAで書くのあまりにしんどいな・・・
629デフォルトの名無しさん:02/12/19 23:39
>>628
お願いします
>>616
VBからWindowsAPIを使う方法は知ってる?
それがわかれば、DLLの使い方もわかるよ。
"VB" & "API"で検索。
書籍なら
http://www.ai-pub.co.jp/contents/book/prog/win32api.html



>>630
API DLL と C++ DLL は違うんだよ・・・
632デフォルトの名無しさん:02/12/20 01:38
>>630
ご親切にありがとうございました。早速注文しました。とりあえず、どのようにしてDLL
に実装された関数を呼ぶかはべつにして、VBAからC++ので書かれた関数を使いた
いのです。

>>631
できるだけ自分で模索します。わからないときがあったらここにまた戻ってきます。

お二人ともありがとうございました。
>>624
論理設計の教科書に載ってないの?
回路図書くのって大変だから、多分誰もやってくれないと思う・・・
つーか、ハードウェアってもろに板違いじゃないか?
>>634
たまにはいいこと言うね!
そうとも!
637デフォルトの名無しさん:02/12/20 05:20
#include <stdio.h>
#include <ctype.h>

int
hash(char *s)
{
int i, h;

h = 1;
for(i=0; s[i] && isalpha(s[i]); i++)
h = ((s[i]-'A'+1)*h) % 47;
return h;
}

void
main(void)
{
FILE *in, *out;
char comet[100], group[100]; /* bigger than necessary, room for newline */
638637:02/12/20 05:22
続きです。質問は次のレスに書きます。
in = fopen("input.txt", "r");
out = fopen("output.txt", "w");

fgets(comet, sizeof comet, in);
fgets(group, sizeof group, in);

if(hash(comet) == hash(group))
fprintf(out, "GO\n");
else
fprintf(out, "STAY\n");
exit (0);
}
639637:02/12/20 06:02
>hash(char *s)
>for(i=0; s[i] && isalpha(s[i]); i++)
>char comet[100], group[100];
>if(hash(comet) == hash(group))
char comet[100], group[100];と定義されて、
hash(comet)っていう関数に入れているが、この関数は
hash(char *s)とポインタを括弧に入れて定義されている。
cometは配列なのに*sがポインタなのが意味不明。

>for(i=0; s[i] && isalpha(s[i]); i++)
s[i] && isalpha(s[i])ってs[i]==trueかつisalpha(s[i])==true
っていう条件を表すのですか?
*sと定義されているのになぜs[i]と配列のような使い方を
するのですか?
isalpha(s[i])とはなにを表すのですか?

>for(i=0; s[i] && isalpha(s[i]); i++)
h = ((s[i]-'A'+1)*h);
これじゃ毎回47で割った余りをhに代入することになって、
題意は「全部掛け合わせた後47で割った余り」なので、
for(i=0; s[i] && isalpha(s[i]); i++)
h = ((s[i]-'A'+1)*h);
h = h%47;
にしないのは何故ですか?

>void main(void)
ってどういうこと?なんでint main(void)じゃないのですか?

>>637-638
続きはいつ書くんだ?
まぁ、取り敢えずisalpha()がisupper()じゃないから
一文字目が'o'等の時に0になって上手く動かないと予想する
641637:02/12/20 06:09
プログラムの題意

2行からなる入力ファイルから単語(1行に1語ずつ、1〜6のアルファベットからなる)
を読み込んで、A=1, B=2, C=3, ……Z=26として、上の行の単語にあるアルファベットの、
積を47で割った余りが、下の行の単語にあるアルファベットを47で割った余りと
等しければGO,異なっていればSTAYを出力ファイルに書き込むようにしようという
プログラムの問題です。

例 -> GOOD という単語なら7*15*15*4%47です。
>hash(comet)っていう関数に入れているが、この関数は
>hash(char *s)とポインタを括弧に入れて定義されている。
>cometは配列なのに*sがポインタなのが意味不明。
ポインタの勉強をしましょう

>s[i] && isalpha(s[i])ってs[i]==trueかつisalpha(s[i])==true
>っていう条件を表すのですか?
s[i] != 0 かつ isalpha(s[i]) != 0 と言う条件を表す

>*sと定義されているのになぜs[i]と配列のような使い方を
>するのですか?
1つ目の質問に同じ

>isalpha(s[i])とはなにを表すのですか?
s[i]が英字であるなら真(1)違うなら偽(0)を返す関数

>for(i=0; s[i] && isalpha(s[i]); i++)
>h = ((s[i]-'A'+1)*h);
>h = h%47;
>にしないのは何故ですか?
hが表現出来る数INT_MAXを超えてしまう事があり
その結果、期待した値と実際の値が違う可能性があるから

>>void main(void)
>ってどういうこと?なんでint main(void)じゃないのですか?
作った人がアホだから
643637:02/12/20 06:18
ちなみに>>637-638は模範解答。
質問がまだあったので付け足しときます。

>fgets(comet, sizeof comet, in);
>fgets(group, sizeof group, in);
sizeof cometを使ってファイルを読み込んで一行に全部で何文字あるかを
自動的に調べてくれるのですか?

>exit (0);
なんでreturn 0;じゃないのですか?
また、それとはどう違うのですか?
644642:02/12/20 06:22
>>642の↓だが
>s[i]が英字であるなら真(1)違うなら偽(0)を返す関数
s[i]が英字であるなら真(非0)違うなら偽(0)を返す関数
の間違いだったかも (普段使わないから覚えてないので…)
>>fgets(comet, sizeof comet, in);
>>fgets(group, sizeof group, in);
>sizeof cometを使ってファイルを読み込んで一行に全部で何文字あるかを
>自動的に調べてくれるのですか?
sizeof comet はcometのサイズをバイト単位で返します(この場合100)

>>exit (0);
>なんでreturn 0;じゃないのですか?
作った人に聞いて下さい(恐らくvoidでエラーが出たからだと思うが)

>また、それとはどう違うのですか?
return は関数を終了し、値がある場合は、その値を呼ばれた関数に返す文
exit() はプログラムを終了し値を呼ばれたプログラムに返す関数
646デフォルトの名無しさん:02/12/20 12:14
教えてください
X2乗+y2乗+z2乗→最小

6x+3y+4z=61
をc言語でやるとどうなりますか??
お願いします
>>646
質問の意味がわかりません。
略さずにきちんと質問を書き直すか
国語をやり直してきてから質問を書いてください。
648デフォルトの名無しさん:02/12/20 13:29
>>646
x,y,zを求めるのかい?
int x,y,z;
int ex,ey,ez;
int e=∞;

for(z=-∞;z<∞;z++){
 for(y=-∞;y<∞;y++){
  for(x=-∞;x<∞;x++){
   if(6*x+3*y+4*z==61 && x*x+y*y+z*z<e){
    e=x*x+y*y+z*z;
    ex=x;
    ey=y;
    ez=z;
   }
  }
 }
}
>649
実装できればいいがな。
intなのが気になるが。
ウエエーーン変数が何か分からないです。助けてください。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio>

int hit(char *r,char *s) {
int i,j,iHit=0,iBrrow=0;
char wr[4],ws[4];

for (i=0;i<4;i++) {
wr[i]=r[i];
ws[i]=s[i];
}
>>651
(゚Д゚) ハァ?
>>651
ウエエーーンお前が何言いたいのか分からないです。助けてください。

小学校からやり直して来い
654デフォルトの名無しさん:02/12/20 17:15
>>651
変数って何なの?って言ってるのかも・・・
656デフォルトの名無しさん:02/12/20 20:52
>>561
ウエエーーン。
教授が、上記プログラムで使用した変数の意味を書けって言ったのです。
で、intとかの意味を書いて見たら、突っ返されたのです・・・・・・
>>656
651の間違いだとして…
何に使われてるか書けってコトじゃないの?
「意味」なんてわかりづらい言葉使うなよ…。
つーかどの変数よ。
jなら「メモリを無駄に使うため」
wrなら「時間を浪費するため」
かな? いや、これだけだとそうとしか答えられん。
>>656
このプログラム誰が書いたんだ?
もし教授が書いたもんなら、
意味も想像つかないような名前を変数につけんなって突っ返せ。
660デフォルトの名無しさん:02/12/20 21:07
>>651
ウエエーーン。申し訳ないです。続きの分です・・・・・・
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio>

int hit(char *r,char *s) {
int i,j,iHit=0,iBrrow=0;
char wr[4],ws[4];

for (i=0;i<4;i++) {
wr[i]=r[i];
ws[i]=s[i];
}

for (i=0;i<4;i++)
if (wr[i]==ws[i]) {
iHit++;
wr[i]='r';
ws[i]='s';
}

for (i=0;i<4;i++)
for (j=0;j<4;j++)
if (i!=j && wr[j]==ws[i]) {
iBrrow++;
wr[j]='r';
ws[i]='s';
661デフォルトの名無しさん:02/12/20 21:07
for (i=0;i<4;i++)
for (j=0;j<4;j++)
if (i!=j && wr[j]==ws[i]) {
iBrrow++;
wr[j]='r';
ws[i]='s';
}

printf("ヒット-%d ブロー-%d\n",iHit,iBrrow);
return iHit;
}

int main() {
char s[4],str[5];
int i,n=0;

srand((unsigned)time(NULL));
for (i=0;i<4;i++)
s[i]='0'+(rand() % 10);

printf("ヒット&ブロー\n");
printf("4桁の数字を入力してよう\n");
663デフォルトの名無しさん:02/12/20 21:19
!!!!???
ありがとうございますーー!!
読めといったけどやっぱり読むな。代わりに正解教えてやるから。

r: ユーザ入力値
s: 正解
i,j: ループ用カウンタ
iHit: ヒット数
iBrrow: ブロー数(blowだろ…)

wr・rs:
初期値はr・s。wrとwsの各桁の比較によりヒット・ブロー数をカウントする。
既にヒット・ブローした桁を重複してカウントしないように、ヒット・ブローした箇所は逐次文字'r'・'s'で置換する。
これにより同置換箇所の一致判定は常に偽となり、カウントの重複が避けられる。
665デフォルトの名無しさん:02/12/20 23:44
C言語で
「西暦と月を入力すれば、その月のカレンダーを表示するプログラミング」
を教えてください。
自分では全くわかりませんでした。
どうか、よろしく!!
>>665
入力された西暦と月から1日の曜日を調べる。

後はそれをオフセットにして数字を書いていくだけ。
>>666
よく意味が分からないんですが、具体的に教えてください。
>>667
がっかりです。
>>666
Zellerの公式だったと思う
>>665
cal 呼べw
671669:02/12/21 00:01
番号間違えた・・・
回線吊って首切ってくる・・・
VB6.0ですが
Alt+任意のキーでテキストボックス内の文字列を貼り付けるのですが
その処理の後Beep音が鳴ってしまいます
これを鳴らさないようにしたいのですがどうすればよいのでしょうか
KeyCode = 0 にする方法では無理なようでした
どなたか分かる方いらっしゃったらよろしくお願いします
質問する時はageた方がいいんじゃない?
この解答漏れも知りたいのでage
VB初心者スレできいた方がいいんでない?
675デフォルトの名無しさん:02/12/24 00:17
C言語について質問なんですが、下の回文かどうかをチェックするプログラムを
関数is_kaibunを使って書き換えたいのですが、どのように書き換えれば良いのでしょう?

#include <stdio.h>
void main()
{
char s[256], r[256];
int i, n, hantei;

printf("文字列を入力してください:");
scanf("%s", s);
676デフォルトの名無しさん:02/12/24 00:17
for(i=0; s[i] != 0; i++);
n = i;

for(i=0; i<n; i++){
r[i] = s[n-1-i];
}

r[n] = 0;

hantei = 0;

for(i=0; i<n-1; i++){
if(s[i] != r[i])
{hantei++;}
}

if(hantei){
printf("FALSE\n");
}else{
printf("TRUE\n");
}
}
is_kaibun()を作れと言う事なのか…
それとも、この続きがあるのだろうか…
678デフォルトの名無しさん:02/12/24 00:37
>>676
どう?
#include <stdio.h>
int is_kaibun(char* s)
{
char r[256];
int i, n, hantei;
for(i=0; s[i] != 0; i++);
n = i;
for(i=0; i<n; i++){
r[i] = s[n-1-i];
}
r[n] = 0;
hantei = 0;
for(i=0; i<n-1; i++){
if(s[i] != r[i])
{hantei++;}
}
return hantei;
}
int main()
{
char s[256];
printf("文字列を入力してください:");
scanf("%s", s);
if(is_kaibun(s)){
printf("FALSE\n");
}else{
printf("TRUE\n");
}
return 0;
}
679デフォルトの名無しさん:02/12/24 00:42
>>678

返答有難うございます。だけど、改めて自分で見直して見たら出来たっぽいです。

#include <stdio.h>
int is_kaibun(char s[],char r[])
{
int i,n,hantei;

for(i=0; s[i] != 0; i++);
n = i;

for(i=0; i<n; i++){
r[i] = s[n-1-i];
}
r[n] = 0;

hantei = 0;
680デフォルトの名無しさん:02/12/24 00:43
for(i=0; i<n-1; i++){
if(s[i] != r[i])
{hantei++;
}
}
return(hantei);
}

int main(void)
{
char s[256], r[256];
int i, n, hantei;

printf("文字列を入力してください:");
scanf("%s", s);

hantei=is_kaibun(s,r);
if(hantei){
printf("FALSE\n");
}else{
printf("TRUE\n");
}

}
こんな感じで良いんですかね?
for(i=0; s[i] != 0; i++);
n = i;
が無駄に見える(意味の無いコードを含んでる)のは俺だけだろうか?
>for(i=0; s[i] != 0; i++);
>n = i;

n = strlen(s);
の方がいいよ。

あと、 "." "?" " " 等を無視するように変えたほうがいいかも

683デフォルトの名無しさん:02/12/24 01:07
>for(i=0; i<n; i++){
> r[i] = s[n-1-i];
>}

for(i=0; i<n/2; i++){
if(r[i] != s[n-1-i])
return 0;
}

return 1;

これで充分でしょ。または

>for(i=0; i<n-1; i++){
>if(s[i] != r[i])
>{hantei++;
>}
>}
>return(hantei);

return !strcmp(r, s);

684デフォルトの名無しさん:02/12/24 01:08
文字入力にscanfじゃなくて、getsを使えばいいかも・・・
struct listの中のvoid *dataにstruct dataを指させ、output(list->p)でそのdataを見たいのですが上手くいきません。
(こんな妙なプログラムなのは、これをリンクドリストで使いたいのです)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=48&fi=no

どうすれば上手くいくでしょうか。
よろしくお願いします。
686デフォルトの名無しさん:02/12/24 01:14
>>675
質問とは違うけど、一応参考に・・・
#include <stdio.h>
#include <string.h>

int main(void)
{
char str[256];
gets(str);

char* f = str;
char* e = str + strlen(str) - 1;

while(f < e)
{
if(*f != *e)
break;
f++;
e--;
}

if(f >= e)
puts("回文です");
else
puts("回文じゃないよ");

return 0;
}
>>686
ポインタとポインタの比較は…
688デフォルトの名無しさん:02/12/24 01:37
JAVAで質問です
Aというクラスでfor文を使って多次元配列で乱数を発生させた値を、
そのままの値を他のBというクラスで使いたいんだけど、
どうやってもできません
自分はまだJAVAをやり始めて2週間なんですけど、どなたか教えてください
689 ◆F52DmOxJlc :02/12/24 01:46
>>688
B.useRnd(A.makeRnd());
でいいんじゃないの?
ソース見ないとよくわかんないけど。
>>685
struct data dがローカル変数であるために
input()から戻ってきたときには、破棄されてしまう。
struct dataもmalloc()で動的に確保すればいい。
691685:02/12/24 02:20
キター!
皆さんありがとうございました!
>>675-683
なんでお前ら、わざわざ一度コピーしてるんですか?

int is_kaibun(const char *s)
{
  const char *r = s + strlen(s);
  while (--r > s) if (*r != *s++) return 0;
  return 1;
}
693デフォルトの名無しさん:02/12/24 03:23
C言語で一個のキーワードを検索する文字列照合のプログラムなんですけど
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
の49  
というのを作りました。これをできるだけメモリを使わないようにしたいんです。
大きいテキストだと読み込めなくなってしまいます。textという配列で200万個
を超えて配列を確保しようとするとから実行しようとするとうまくいかなくなります。
300万個になるともう動きません。
それで考えたのが
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
の50
なんですけど、これはうまく動いてくれないんですが
何かほかにうまいプログラムはないでしょうか?
まだプログラム始めたての素人ですいません。
よろしくお願いします。
int len = strlen( key );
char *buf;
buf = malloc( len+1 );
memset( buf, 0, len+1 );
fread( buf, 1, len, fp );
while(1){
 if( !strcmp( key, buf ) ){
  puts( "agree" );
 }
 memmove( buf, buf+1, len-1 );
 if( !fread( buf+len-1, 1, 1, fp ) ){
  break;
 }
}
free(buf);
695693:02/12/24 14:08
>>694
ありがとうございます。
大変申し訳ないんですがstrcmpをつかうのではなく
naiveアルゴリズムのままでできないでしょうか?
696デフォルトの名無しさん:02/12/24 18:21
すみません、JAVAの質問です。
整数nを与えるとn以下の素数を全て出力するプログラムを作らなければいけないんですが、
条件として、その数が素数かどうかはその数以下の整数全てで割って調べるっていうアルゴリズムを使わなければいけないんです。
マジでわからないので、どなたか教えてください。
よろしくお願いします_(._.)_
アルゴリズムまで与えられてるのに「マジでわからない」かよ
おめでてーな
698デフォルトの名無しさん:02/12/24 18:26
初心者なもので・・・
ほんとにすみません
いや、Javaの入門書買って読めとしか言いようがないです、はい。
初心者か。
都合のいい免罪符だな。
氏ね。
701デフォルトの名無しさん:02/12/24 18:32
読んでわからないから聞いているのです・・・
あ、そうかここ宿題スレだったな。しばし待てぃ
703デフォルトの名無しさん:02/12/24 18:32
今日は、気の立っている奴等が多いような・・・
クリスマス・イヴだからな(ワラ
705デフォルトの名無しさん:02/12/24 18:35
宿題を聞いただけなのに氏ねですか・・・
ヽ(`Д´)ノウワァァン
706デフォルトの名無しさん:02/12/24 18:37
>>702
よろしくお願いします!!!
>>696
Javaでセキュリティ系だと、まず確実にBigInteger.isProbablePrime()を使うなあ。
そんなのじゃあだめだと言われたら一発殴ってやれ。

ちゃんとした回答は↓にまかせた。
JAVAの初心本見てわからないんだろ?
中学の数学教科書引っ張り出してこいYo!
709デフォルトの名無しさん:02/12/24 18:44
中学ですか・・・
もうだいぶ前なのでないですよ、そんなの・・・
教科書として使ってる本に載ってないような課題を出されたのです(;_;)
710デフォルトの名無しさん:02/12/24 18:47
>>709
Javaの経験はどれくらいなの?
ほいよ。Java なんて久しぶりに触ったよ。
相当無駄なことしてるけど、仕様の通りだから。
あ、コンパイルや実行の仕方まで聞かないでね。
// PrimeNumber.java
public class PrimeNumber {
private static boolean isPrime( int n ) {
for ( int i = 2; i < n; i++ )
if ( n % i == 0 ) return false;
return true;
}

public static void main( String[] args ) {
if ( args.length != 1 ) {
System.out.println( "Usage: java PrimeNumber <n>" );
System.exit( 1 );
}
int n = Integer.parseInt( args[0] );
for ( int i = 2; i <= n; i++ )
if ( isPrime(i) )
System.out.println( i );
}
}
712デフォルトの名無しさん:02/12/24 18:49
学校の授業でやらなきゃいけなくて、最近始めたばっかりです。
713デフォルトの名無しさん:02/12/24 18:49
自分に課した宿題ですが、彼女ができるプログラムお願いします。
クリスマスが終わ前に完成させたいのでみなさんのお力をお借りすることになりました。
714デフォルトの名無しさん:02/12/24 18:51
>>713
どんな子が好み?
715デフォルトの名無しさん:02/12/24 18:53
>>714
おしとやかだけど、おしゃべりが好きな子頼みます。
顔はきれいというより、かわいいという感じで。

   板  違  い
 
717デフォルトの名無しさん:02/12/24 18:59
>>711
ありがとうございます!!
ですが、実行してみたら
Usage: java PrimeNumber <n>
ってしか出ないんですが・・・
>>717
えぇと、たとえば 100 以下の素数を表示したいときは
java PrimeNumber 100
って実行してね(トホホ
>>717
わざわざ使い方まで表示してくれてるってのに、ボケボケな>>696に乾杯。
720デフォルトの名無しさん:02/12/24 19:05
変えるのはその一箇所だけでいいんですか・・・?
かえても、やっぱり
java PrimeNumber 100
しかでないんですが・・・
お手数かけてほんとにスミマセン
もう、オレやだ
722デフォルトの名無しさん:02/12/24 19:07
>>719
笑って見過ごしてやってください(;_;)
>>721 負けるな。
>>720 教科書で「コマンドライン引数」とか、メイン関数の説明とか読んでみそ。
>>695
int i, len = strlen( key );
char *buf;
buf = malloc( len+1 );
memset( buf, 0, len+1 );
fread( buf, 1, len, fp );
while(1){
 for( i=0; i < len; i++ ){
  if( buf[i] != key[j] ) break;
 }
 if(i == len) puts( "agree" );

 memmove( buf, buf+1, len-1 );
 if( !fread( buf+len-1, 1, 1, fp ) ){
  break;
 }
}
free(buf);
725デフォルトの名無しさん:02/12/24 19:21
>>721,>>723
やっとわかりました!!!!!実行するときに
java PrimeNumber 100
だったんですね!!!!
こんなやり方初めてだったんでわかりませんでした(^_^;)
学校では
import java.io.*;
みたいなのを使って標準出力をして、
java PrimeNumber で実行してから n=?
を入力する感じでしたんで。。
これは違うものなんですね。ありがとうございます。
726デフォルトの名無しさん:02/12/24 22:45
cobolの宿題も受け付けてくれますか?
Identification Division;
>>725
お前は今まで、dirかlsのどちらも使ったことがないのか?
moreやtype、catとかでもいいが。
ren と mv は、どっちが強いですか?
730693:02/12/25 00:45
>>724
本当にありがとうございました。助かります。
>>728 学校では"javac ファイル名.拡張子"でコンパイルし、"java ファイル名"で実行します、
位にしか教えないので、それ以外のコマンドを知る奴は一部のみ。コマンドオプションなぞ知る由もなし。
まずWindowsから入るし、初めから統合開発環境を使うところも多いので
コマンド自体を知らない奴が殆ど。何故かjavaは余りIDEを使ってないけど。
732デフォルトの名無しさん:02/12/25 02:52
FORTRANをWindows Meで動かしたいのですが、googleで調べても見つかりませんでした。誰か教えてください。ちなみに、フリーで、90か95対応を希望で、物理の計算機実験で用います。
>>732
Vectorになかったかい
734デフォルトの名無しさん:02/12/25 03:16
一覧のプログラミングやユーティリティを調べても有りませんでした。また、GNUと言うサイトで、一度落としたのですが、拡張子が.gzだったので開けませんでした。
プ
736デフォルトの名無しさん:02/12/25 03:21
すみません。全くの初心者なので。
>>736
Linuxなどをインストールすると、簡単にFORTRAN環境もインストールできるよ。
738D:02/12/25 03:27
cygwin+g77
739デフォルトの名無しさん:02/12/25 03:53
FORTRAN COMPANYのF COMPILERはダウンロードは無料だが、使用する場合は有料と書いてあるのですが、個人使用目的でも金が掛かると言うことですか。素人ですみません。
740デフォルトの名無しさん:02/12/25 04:00
>>739
cygwin+g77はダウンロードしたのですが、拡張子の具合で開けなかったものです。(734)
初心者板へどうぞ
>>740
最近のcygwinはsetup.exeでインストールできるはず。
ただし、gccはデフォルトではインストールされないので、チェックを入れる必要がある。
743デフォルトの名無しさん:02/12/25 04:23
C言語で構造体のデータを一つファイルに
読み書き更新できるようにしたいんですが、
入出力をどうしたらよく分かりません。
ファイルへの書き込み、読み込みのための命令は何を使い、
何を引数とすれば、かっこよくなるでしょう?
かっこいいかどうかは知らんがfread()/fwrite()/ftell()/fseek()
745デフォルトの名無しさん:02/12/25 04:28
もっと、分かりやすく!かっこよく!
言ってる意味が良く分からないが
取り敢えずファイルは"r+b"でオープンして
fread()とfwrite()を使うんじゃ駄目のか?
747デフォルトの名無しさん:02/12/25 04:32
スマートな例文が欲しいってことじゃねーの?
全く意味の無い例文

FILE *fp = fopen( "TEST", "r+b" );
fwrite( fp, sizeof( FILE ), 1, fp );
fseek( fp, 0 - sizeof( FILE ), SEEK_CUR );
fread( fp, sizeof( FILE ), 1, fp );
fclose( fp );
749デフォルトの名無しさん:02/12/25 04:49
↑だと、何が書き込まれるんだ?
ゴミ
>>749
fopen()で用意されたfpの実体の一部(環境によっては全部?)
正しく動くか分からないので実行しない方が無難
752デフォルトの名無しさん:02/12/25 05:16
1.FILE *fp = fopen( "TEST", "r+b" );
2.fwrite( fp, sizeof( FILE ), 1, fp );
3.fseek( fp, 0 - sizeof( FILE ), SEEK_CUR );
4.fread( fp, sizeof( FILE ), 1, fp );
5.fclose( fp );

1〜5を並べ替えて、ファイルを更新するプログラムを作りなさい。
753デフォルトの名無しさん:02/12/25 05:17
1、3,4,2、5
> fread( fp, sizeof( FILE ), 1, fp );

・・・何だって??
749 :デフォルトの名無しさん :02/12/25 04:49
  ↑だと、何が書き込まれるんだ?

750 :デフォルトの名無しさん :02/12/25 04:56
  ゴミ

751 :デフォルトの名無しさん :02/12/25 05:05
  >>749
  fopen()で用意されたfpの実体の一部(環境によっては全部?)


>>750-751
何か言った?
"r+b" ってロック&ビートですか?
>>696
正直、ただのバカなので勉強するかもっと自分に向いている道を探すべきだと思います。
>>756
それ言うならrythm & bluesじゃないのか?
すみません、教えてください。
文字列の、ある部分を抜き出すにはどうすればいいのでしょうか。
ファイル名の、拡張子だけを抜きたいのです。
よろしくお願いします。
環境書け。
strcmpでファイル名の最後のドットを探してそれ以降を抜き出せばOK
それを言うならstrrchr
>762
左様であった。訂正感謝いたす。
764デフォルトの名無しさん:02/12/25 21:04
平均n単位時間、分散m単位時間の正規分布で動作する関数を
Cで作りたいんですが、確率とかが苦手でよくわかんないんです。
どなたかサンプルプログラム作ってください。
765デフォルトの名無しさん:02/12/25 23:03
read binary
>>764
まず平均n分散mの出力を持つデータ列を(ビットの01がよい)Sなどで作成。
あとは、1を入力するたびに関数を呼び出せ!
767デフォルトの名無しさん:02/12/25 23:31
Sってなんですか?
768デフォルトの名無しさん:02/12/25 23:37
>>766
もっと、かしこいやりかたないの?っぷ
Sadist ⇔ Masochist
Sum?
771764:02/12/26 00:53
お願いです、必死です。
やっぱり、random()が必要?
random()ってなんじゃらホイサッサ
>>772
gundomみたいなものです。
それをいうなら GUNDAM だろ?
775デフォルトの名無しさん:02/12/26 03:37
JAVAで質問です
他のクラスで作成した配列の数字を別のクラスで
その値を利用したいんだけどどうしたらいいんですか?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
の51なんだけど、どうやったらできるのか教えてください
>>774
砲戦型ドムを知らんのかププ
別名ドムタンク。
>>775
/**
* <i>2chで作られたクラス</i>
* @author 教えてクン
* @version 0
* @since 0
*/
class Demand {
//省略
/** ちゃんとカプセル化しておこう */
private int demand[][] = new int[shop][term];
/** ちゃんとカプセル化しておこう */
public int[][] getDemand(){
return demand;
} //省略
}
>>777 続き
class Store {
public static final int SHOP = 50;
public static final int TERM = 100;
private Demand demand;
public Store(Demand demand){
this.demand = demand;
show();
}
/** 需要量発生
* @param demand demand
*/
private void show(Demand demand){
demand.show();
}
public int foo(){
int a = new int[Store.SHOP][Store.TERM];
for(){ //省略
a += demand.getDemand();
//省略 }
return a;
}
}
class Simul{
public static void main(String[] args){
Demand demand1 = new Demand();
Store store = new Store(demand1);
java.io.PrintWriter pw = new PrintWriter(System.out);
pw.println("" + store.foo());
}
}
>>778 適当に訂正
> public int foo(){
> int b = 0;
> int[][] a = demand.getDemand();
> for(){
> for(){ //省略
> b += a[i][j];
> //省略
> }
> }
> return b;
> }
780デフォルトの名無しさん:02/12/26 11:24
class Demandでfor文の中で使った変数を
そのままStoreクラスでも使いたいんだけど
それは大丈夫ですか?
例えば、demand[i][j]+supply[i][j]とかやりたいんですけど
勝手にやって
駄目なときだけ聞いたらどうでしょうか?
782デフォルトの名無しさん:02/12/26 14:53
2つの整数が与えられてその間にある回文となっている素数を発見する
プログラムをCで作りました。バグの原因が一体どこなのか、俺の書いた
プログラムで注意すべき点、などアドバイスをもらえるとうれしいです。

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

int prime_number(int a){
int i, j, b = 0;
/* iがjで割り切れなければ素数だと判断する。 */
for(i=2; i<=a; i++){
for(j=2; j<i; j++){
if(i == j)
goto noc;
if(i % j == 0)
goto cont;
}
/* bをカウンターとして用意して全部で何個素数があるのかを表す */
noc: b++;
cont: continue;
}
return b;
}
783782:02/12/26 14:55
/* 回文になってるかどうかを判断する関数 */
int reverse_int(int i){
int res = 0;
while ( i ) {
res *= 10;
res += i % 10;
i /= 10;
}
return res;
}
基本利用料金 ¥12,000 は振り込みましたか?
785782:02/12/26 14:56
void lookup_pprime(char *prime_1, char *prime_2, int m, int n, int min, int max){
int i, j, c, d, e, f = 0, g = 0;

for(i=2; i<=min; i++){
for(j=2; j<i; j++){
if(i == j)
goto noc2;
if(i % j == 0)
goto cont2;
}
/* 見つけた素数を配列prime_1に代入 */
noc2: prime_1[f] = i;
f++;
cont2: continue;
}

for(i=2; i<=max; i++){
for(j=2; j<i; j++){
if(i == j)
goto noc3;
if(i % j == 0)
goto cont3;
}
/* 見つけた素数を配列prime_2に代入 */
noc3: prime_2[g] = i;
g++;
cont3: continue;
}
786782:02/12/26 14:57
/* prime_2とprime_1の間に重なっている数をprime_2から取り除く、
    つまり、 状態を0にする。*/
for(i=0; i<n; i++){
for(j=0; j<m; j++){
if(prime_1[j] == prime_2[i]){
prime_2[i] = 0;
goto cont4;
}
}
if((e=(int)prime_2[i]) != reverse_int(e))
prime_2[i] = 0;
cont4: continue;
}
}
787782:02/12/26 14:59
int main(void)
{
FILE *fin, *fout;
int min, max, i, m, n;
char *prime_1, *prime_2;

fin = fopen("pprime.in.txt", "r");
fout = fopen("pprime.out.txt", "w");

fscanf(fin, "%d%d", &min, &max);
m = prime_number(min); //m以下の素数の数を見つける
n = prime_number(max); //n以下の素数の数を見つける
prime_1 = (char *)malloc(m); //素数の数だけ領域を確保
prime_2 = (char *)malloc(n); //素数の数だけ領域を確保
lookup_pprime(prime_1, prime_2, m, n, min, max);

for(i=0; i<n; i++){
if(prime_2[i])
fprintf(fout, "%d\n", prime_2[i]);
}

return 0;
}

これで終わりです。ソース丸投げですが、コメントはちゃんと入れておきました。
クソコード貼っつけるのはヤメレ
789デフォルトの名無しさん:02/12/26 15:07
おまいらここで英文レジェメ書いてもらって外資系に就職して
逆転人生歩んでください。
http://www.freespace.jp/~sean2001

>>782
まず、どういう局面でどんな動作を期待していて、それに反してどう動いてしまった
のかを書け。
でないとその長いソースを読む気がしない。
あと、 1 に貼ってある URL は見えなかったか?
791デフォルトの名無しさん:02/12/26 21:23
トリアエズ、アゲトクカ・・・
>>782
スマン・・・
790と同様、読む気がしないので聞くけど、バグの原因を
聞いているという事は、バグがあったってことだよね?
どんなバグがあったの?
>fscanf(fin, "%d%d", &min, &max);
これじゃ、どこまでがminなのかmaxなのかわからんだろ。
>>782
とりあえず、1つ1つの関数
(prime_number, reverse_int, lookup_pprime)
が正しく動くか確認してみれ。

これ基本。
間にコロンが二つあるみたいだが出来るのか?
fopen〜.in.〜
fopen〜.out.〜
796デフォルトの名無しさん:02/12/26 22:29
age
>>795
モーマンタイ・・・
>>795
とりあえず、自分で
正しく動くか確認してみれ。

これ基本。
799782:02/12/26 22:43
誰か書きなおして
>>799
えーっと、数日前全く同じ質問が出て、書いてやったんだがな
どこの学校だ?
801デフォルトの名無しさん:02/12/26 22:48
>>799
790,792の言っている事は無視かよ・・・
>>780
Storeクラス内のメソッドで
Demand d = new Demand();
d.show();
int[][] a = d.getDemand();
int b = a[1][2] + a[3][4] + a[0][0] + a[2][2];
とすればよい。
//ついでにこれもgetDemand()をオーバーライドしてDemandに入れとくと便利
public int getDemand(int shop, int item){
try {
//ArrayIndexOutOfBoundsExceptionがあるからいらんが...
//demand[][]を再初期化するメソッドを追加したときに備えて例外追加
if(shop > this.shop || item> this.item){
throw new OshietekunException("shop" + this.shop + "以上 item" + this.item + "以上でかい値いれるんじゃねぇよタコ");
} else {
return demand[x][y];
}
} catch(OshietekunException e){
e.printStackTrace();

//RunTimeExceptionなのでいらんかも
} catch(ArrayIndexOutOfBoundsException e){
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
}

//うえ動かすにはこのクラス必要
class OshietekunException extends Exception{
public OshietekunException(String message){
super(message);
}
}
main(){}
>>803
オーバーライド - > オーバーロードの間違い
なんだとー
バーカ!!
何だこのスレは
809工房:02/12/30 13:53
学校から宿題を用意してきました。あらゆるエレガントな解答を募集しています。

会社Aが個人から商品を購入するときにもっとも少なくて何円で済むかを
計算するプログラムです。具体的には2つの整数N(0 <= N <= 2,000,000)
とM(0 <= M <= 5,000)が与えられて、Nはその会社が1日に必要とする商品
の数で、Mは商品を販売する個人の数を表す。そんで、次に1人づつ、商品
の値段(0 <= 値段 <= 1,000)と商品の数(0 <= 数 <= 2,000,000) が続いて
与えられるものとする。このとき会社Aは1日の需要を購入するにはもっと
も少なくて何円で済むかを計算してください。
例:
100 5/* 必要としている商品の数が100で5人から購入しようとしている */
5 20 /* 1人目:値段が5で、商品の数が20 */
9 40 /* 2人目:値段が9で、商品の数が40 */
3 10 /* 3人目:値段が3で、商品の数が10 */
8 80 /* 4人目:値段が8で、商品の数が80 */
6 30 /* 5人目:値段が6で、商品の数が30 */
例の解答:630

解答ソースはこちらでお願いします。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433#last

自分も参加するんで。
810デフォルトの名無しさん:02/12/30 13:58
なんだとー
>>809
エレガントな回答もへったくれもない。

ただ
「値段の低い個人から優先して商品を購入していく」
ってだけだろ?
812809:02/12/30 14:39
はい、糞!
814こむ:02/12/30 15:05
C言語なんですが、

//10個の整数を配列として受け付けて、それを配列に格納せよ。
//配列の1番目と2番目を入れ替えて、同様に3番目4番目という具合に
//隣り合う要素の入れ替えを行え。最後に入れ替えた後の配列の全要素を出力せよ。

#include <stdio.h>
int main(void) {
int array[10];
int i, temp;

for (i=0; i<10; i++) {// 10個の整数を入力
scanf("%d", &array[i]);
}

for (i=0; i<10; i+2) {// 入れ替え
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}

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

return (0);
}

コンパイルしてもうまくいきません。
どこがヤバイんでしょうか?
x) i+2
o) i+=2
>>814
“うまくいきません”じゃなく、どういう現象になるのか書かんと…
まぁ入れ替えの for ループが終わらないんだろうけど。
817デフォルトの名無しさん:02/12/30 15:30
>>814
int array[10];
だから駄目なんですよ。
long array[10];
にしないと
818こむ:02/12/30 16:16
>>815
ありがとうございます。
>>816
スミマセン。うまく表現できなかったので…。次回から気をつけます。

ところで>>817
>>815さんが指摘したとおり修正したらintでもlongでも結果が同じでした。
こっちにした方が良いんでしょうか?
>>818
>>817は多分ネタ
>>819
>>818は多分ネタ
>>820
>>819は多分ネタ
822教えて君:02/12/30 21:07
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433
の56だが コンパイルはできるけど実行できません
わかる方教えてください
>>822
全部読むのも、コンパイルこっちでかけるのもめんどいので、コンパイル
エラーのメッセージを張り付けなされ。
824 は多分ネタ
825 も多分ネタ
826 も多分ネタ
827:02/12/31 01:15
fortran77の課題です。
1729は次のように二つの自然数の三乗の和として二通りに書ける。
1729=12^3+1^3=10^3+9^3
このような性質をもつ10000以下の自然数をすべて求めよ。
この課題だけは全く考えが浮かびません。お願いします。
総当りでGo
829:02/12/31 02:03
そのやり方では単位がもらえそうにありません。
単位要りません。
831デフォルトの名無しさん:02/12/31 02:27
せいぜい20くらいまでだろ.総当たりでも問題無いと思うが.
832 ◆AMD/zW1gzQ :02/12/31 02:29
>>827
Cだったら書けるけどFortranは・・・
833 ◆AMD/zW1gzQ :02/12/31 02:30
しまった
FORTRAN77、Fortran90ですな
834デフォルトの名無しさん:02/12/31 02:36
>>827
x^3 + y^3 = w^3 + z^3
で、x<y, w<z, x<w, z<y, x,y,z,w<=21と出来る。
836デフォルトの名無しさん:02/12/31 08:04
#include <iostream>
#define max 21
#define pt(x) ((x+1)*(x+1)*(x+1))
int main(){
int i,j,k,h;
for(i=0;i<max-2;++i)
for(k=i;k<max-1;++k)
for(h=k;h<max-1;++h)
for(j=h+1;j<max;++j)
if(pt(i)+pt(j)==pt(k)+pt(h))
std::cout << i+1 << "^3+" << j+1 << "^3=" << k+1 << "^3+" << h+1 << "^3=" <<
pt(i)+pt(j) << std::endl;
return 0;
}
>>827
フェルマーの定理の証明でも添付すれば、単位はもらえるだろうよ。
838:02/12/31 13:20
>>837
そうですか…
やっぱりfortranなんて時代に合ってないよなぁ
>>838
Fortranうんぬんとうよりも、アルゴリズムを作るのが先だろ。
3乗の足し算の因数分解を使ってみたらどう?
javaの宿題です
IDと名前のリストが保存されたファイルを読み込んで、
それをハッシュテーブルのキーと値にそれぞれ追加して初期化し
そのリストを検索、編集するプログラムを作るという問題です。
ファイルは、01,一郎/02,次郎/03,三郎…(/は改行) って感じです。
終了時には、同じファイルに編集後のリストを書き込みます。
しかしハッシュテーブルから要素を取り出す際の順番は保証されていません。
ID順(01,02,…)でファイル出力を行いたいのですが、
何かエレガントな方法はないでしょうか?
SortedMap?
perlによって、リンク先を摘出しテキストに保存し
保存されたURL先に対してまた同じようにリンク先を
取り出し、別テキストに保存していくプログラムを作
りたいのです。
例えば、3階層の深さまで保存したいとき。
1.txt内にttp://www.google.co.jp/とあったら、2.txtに
はぐーぐるからリンクされている先が保存され、3.txtには
2.txtに保存されたURL先に含まれるアンカーが保存されます。
接続し指定したhtmlは取ってこれるのですが、その先の
アンカーを処理する所でつまづいています。
<a href="ここ" target="">
ここ、と表記された部分を取って来て保存したいのですが、
""で区切られた範囲を取ってこようとすると" target"みたい
なのも引っかかってしまうようで。
urlが保存できればどの位置からマッチさせてもいいので宜し
くお願いします。
どうか動作するプログラムを作って頂けませんでしょうか。
>>842
HTTP parser 使えば一発。
CPANでぐぐってだうそしてこい。
844843:02/12/31 19:55
間違えた
HTML Parser ( HTML::parse モジュール)
845 ◆F52DmOxJlc :02/12/31 20:52
846デフォルトの名無しさん:03/01/04 16:48
冬休み明けに提出しなきゃいけない課題があるのですが、あまりにも難しすぎて私の力では何にもなりません。
持っている参考書やC言語辞典を引っ張り出してみて考えたのですが、もうダメです。
どなたか教えてもらえないでしょうか?
ソースとかは後で書き込みさせていただきますが、題材は算術言語処理です。
どんな処理をすればいいのかわかる部分もあるのですが、半分以上わかってないかもです。
847846です:03/01/04 16:55
【題材】算術言語処理
【目的】算術式を表すものとして、明確に定義された文字列の無限集合を扱う。
    形式理論言語では、このような集合を算術式を表現するものに限らず言語と呼ぶ。
    与えられた文字列が特定の言語に属するかどうかは、形式的な規則によって決定される。
    この規則を文法(構文規則)という。演習プログラムでは、算術式からなるごく簡単な言語を定義する。
    この言語をC言語プログラムによって実際に使えるようにする事が目的である。
【制約条件】@ 式を構成するのは、数値、演算子、変数、=のみとする。
      A 数値は0以上99999以下とする。(マイナスの数値はない)
      B 演算子は+・−・*の二項演算子と(・)のみとする。
      C 変数名は英字で始まる6文字以内とする。演算子文字(+・−・*)で始まる変数名はない。数値文字で始まる変数名はない。
      D 式の最後は必ず=。
      E token(トークン)の区切りは、1つ以上のブランクとする。
      F ファイル形式。
848846です:03/01/04 16:57
注 1カラム(1byte)目が#の場合、その行はコメント行とする。
#           <------必ず1カラム(1byte)目
  abc   =   10
      xy = 1 <BR>cc = 3
$           <------必ず1カラム(1byte)目
   abc  +  1  *  (3 - 1)  +  567 =
 1      + 2 * 3  =
xy       *    cc     + 5 =
E           <------必ず1カラム(1byte)目
へー。変数も使えるようにするのか。

元の中置式から後置式(逆ポーランド) に変換して、
スタックマシンオートマトンで計算を実行でいいんじゃない?
850デフォルトの名無しさん:03/01/04 17:19
>>846
で、結局、「何を」「どうすれば」いいの?
851846です:03/01/04 17:25
すみません、プログラムが異様に長いので、今打ち込んでる最中なんです。
全部できたらまた書きますので。本当にすみません。
852デフォルトの名無しさん:03/01/04 17:26
>>846
Perlで組んだほうが100倍読みやすいんだが、Cを指定か。
残酷な課題だな。
>>851
>>1 にソースが貼れる掲示板のリンクがあるから、
プログラムはそっちに書いてね。
854846です:03/01/04 18:11
プログラムソースの一部(kaiseki.c)をUPしました。
<a href="http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=57"></a>
ちなみに丸数字の部分は穴埋め問題になっています。
式の定義があいまいだな。EBNFくらい書けや。
はい!ごめんなさい!!

vagina := (i)
857846です:03/01/04 18:33
kaiseki.h も見せて
間違っていたらごめん。

(1)term()
(2)Set_pm
(3)lp
(4)rp
(5)factor()
(6)token != RK
(7)p->val
860デフォルトの名無しさん:03/01/04 19:04
>>846
その他の関数はうpできないの?
861846です:03/01/04 19:13
今、他の関数・プログラムも打ち込んでる最中です。
今はkaiseki_lib.cを打ち込んでいるところです。
ちょっと邪魔が入って全部消されてブルーになってるところですが。

それでこの課題、解説つけて提出しなきゃならないんです。
できれば解説もお願いします。注文ばかりでごめんなさい。
アルゴリズムの教科書の再帰下降構文解析法の解説を読むことをお勧めする。
863846です:03/01/04 20:21
ようやくkaiseki_lib.cをUPすることができました。
残りは*func_x()をUPするのみです。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=59
>>847の仕様で疑問なんだが、演算子文字が含まれる変数名ってありなの?
x+yて変数とか。
865デフォルトの名無しさん:03/01/04 20:35
x+yはx + yだと思います。
それは変数じゃなくて式として判断して下さい。
866デフォルトの名無しさん:03/01/04 21:24
*func_x()をUPしました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=60

プログラム・関数はこれで以上です。

皆さん色々とありがとうございます。助かります。
>>866
で、どの辺が解らないんだい?
868デフォルトの名無しさん:03/01/04 23:39
何度もすみません。冬休みの課題にてこずっている者です。

>>867
kaiseki.c
kaiseki.h
kaiseki_lib.c
*func_x()
このプログラム・関数全てが課題になっているのです。
どの辺がというよりは、総合してわけわからないのです。
>>859さんが途中まで解答してくれたので、その穴埋めは実際に埋めてみてソース読んで何となく納得できたのですが、その後のが何が何だかサッパリで。
実は課題はこれだけじゃなく、このプログラムを元にまた発展した問題があるのです。
でもこれができないと発展問題に手を付けられなくて困っています。
869デフォルトの名無しさん:03/01/04 23:40
>>868
課題の書かれたホームページのアドレスを
ここに書け
じゃないと、教えません。
870デフォルトの名無しさん:03/01/04 23:41
871デフォルトの名無しさん:03/01/05 00:07
872デフォルトの名無しさん:03/01/05 16:35
>>859
ありがとうございます。助かりました。
@〜Eは埋めてみて納得できるくらい理解できました。
でも、Fだけはどうしてそうなるのかが未だに理解できません。

これから自分なりの解説をつけて理解していきます。
またわからないことがあったら質問すると思いますので、よろしくお願いします。
下のVBのプログラムを元にするのですが、
その際、プログラミング中に書き込んだ数字をソートするのではなく、
テキストボックスに任意に入力した数字を昇順にソートするプログラム
を作りたいのです。お願いします。

Const N = 10

Private Sub quick(a() As Variant, L As Variant, R As Variant)
If L < R Then
s = a((L + R) \ 2)
i = L - 1: j = R + 1
Do While 1
Do
i = i + 1
Loop While a(i) < s
Do
Do
j = j - 1
Loop While a(j) > s
If i >= j Then Exit Do
t = a(i): a(i) = a(j): a(j) = t
Loop

quick a(), L, i - 1
quick a(), j + 1, R
End If
End Sub
Private Sub Command1_Click()
Dim a(N)
a(0) = 41: a(1) = 24: a(2) = 76: a(3) = 11: a(4) = 45
a(5) = 64: a(6) = 21: a(7) = 69: a(8) = 19: a(9) = 36

quick a(), 0, N - 1

Picture1.Cls
For k = 0 To N - 1
Picture1.Print a(k);
Next k
End Sub
876871です:03/01/05 23:50
>>869
ここってどこのことでしょうか?このスレッドのことでしょうか?
>>871に課題のアドレスを書いたのですが、あれから1日自分で考えましたがやっぱり進みません。
お願いします。これができないと困るので教えて下さい。
>>876
構文木作って解析してるみたいだけど、そこらへんのアルゴリズム(ツリーとか)とかは
ちゃんとわかってるの?
>>876
先生がホームページを作ってるわけでしょ?
そのページのアドレスを書き込んで。

てか、そんな簡単なプログラムもわからんのに
情報系の大学行ったの?
そういう人多いけど、けっこう悲惨な人生送る事になるよ。
学科を変えることをお勧めします。
> これができないと困るので教えて下さい。
実際には自分で出来る実力がないのに単位をとって卒業されると、
社会全体が困るだろ…
と、大したことのない>>879が言っている
>>879がどんな人物か知らんが言ってることは正しい。
が、このスレに社会の流れを変える力は無い。
>テキストボックスに任意に入力した数字を昇順にソートするプログラム
入力されたテキスト→数字を抜き出す→ソート
a(0) = 41: a(1) = 24: a(2) = 76: a(3) = 11: a(4) = 45
a(5) = 64: a(6) = 21: a(7) = 69: a(8) = 19: a(9) = 36

をテキストボックスから入力させるルーチンに置き換えるだけだな。
885デフォルトの名無しさん:03/01/06 09:32
>>878
先生がホームページ作ってるとは一言も言ってません。
現に、先生はホームページ作ってません。
それにこの課題は先生自身も「決して簡単なものではないから誰に聞いてもいいから完成させて提出しなさい」と言ったんです。
そこら辺の大学とかで簡単なプログラム組んでるところと一緒にしないで下さい。
886デフォルトの名無しさん:03/01/06 09:36
>>859さんは親切に教えてあげてるのに、>>867>>869>>878は横柄な態度取ってるね。
本当はわからないのにホラ吹いてるだけなんじゃないの?
偉そうに。簡単だって言うんだったらそれを証明したら?
情報系の大学を卒業しているなら誰でも知っていることだと思うけど…。
漏れなんか専門卒なのに知ってるし。構文解析なんてプログラマーなら常識じゃない?
今月のCマガジンに「コンパイラの作成」と題して詳しく書かれてあるから、
理解できない奴はよく読むべし。
>>886は大バカだな。
889デフォルトの名無しさん:03/01/07 01:07
てか、そんな簡単なプログラムもわからんのに
情報系の大学行ったの?
そういう人多いけど、けっこう悲惨な人生送る事になるよ。
学科を変えることをお勧めします。

この部分は禿同
890デフォルトの名無しさん:03/01/07 01:13
>>889
悲惨な人生とは?
891デフォルトの名無しさん:03/01/07 01:26
VBで右クリックを左クリックしたかのようにさせるにはどうすればいいでしょうか?
sendkeys辺りを見てみたのですが、それらしいものはなく困ってます。
892デフォルトの名無しさん:03/01/07 01:42
>>891
ビックリくりくりクリックリ〜♪
893デフォルトの名無しさん:03/01/07 18:11
教えてください。お願いします。

・文字配列に5人の名前を入れておき、数字1〜5を入力して、その順番の名前を出力するプログラムである。ただし、1〜5以外の範囲の入力ではプログラムは終了するものとする。

#include<stdio.h>
void main (void)
{
int i,j;
char name[5][20]={"kenta","yuki","kazuma","taro","masao"}
( @ )(1){
scanf("%d",( A ));
i=i-1;
if(!(0<=i && i<=4)){
( B )
}
( C );
while(name[i][j] != '\0'){
printf("( D )",name[i][j]);
j++;
}
printf("\n");
}
}
894デフォルトの名無しさん:03/01/07 18:13
>>893
( @ )〜( D )を埋めてください。
895デフォルトの名無しさん:03/01/07 18:19
>>893
ほれ
@:while
A:&i
B:break;
C:j=0
D:%c
896デフォルトの名無しさん:03/01/07 18:28
>>895
ありがとうございます!感謝します!
(3)は
break;
}else{
return;
が正しいな
898デフォルトの名無しさん:03/01/07 18:36
キーボードから入力された年がうるう年(leap year)かどうかを判定するプログラムを教えてください
こういう簡単な問題は解いてあげるんだね。
900デフォルトの名無しさん:03/01/07 18:39
>898
それうちの大学でやったなぁ〜
901デフォルトの名無しさん:03/01/07 18:41
>898
それ小学生のときやったなぁ〜
bool is_leap_year(int year) {
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
903デフォルトの名無しさん:03/01/07 18:50
ってことは

if((year%4 == 0 && year%100 != 0)|| year%400 == 0){
}
else{
printf(省略);
}
}
でもいいんですよね?
なぜC言語にうるう年か判定するライブラリがついてないのか理解に苦しむ。
>>904
理解に苦しむね、ハハハ(w
苦しめ!
906デフォルトの名無しさん:03/01/07 19:03
標準化委員会が、グレゴリオ歴が使えなくなるぐらい
未来でもC言語がちゃんと使えるよう、未来永劫修正が
必要ない機能しか採用しなかったはず。

未来永劫というえば、C言語ではないんだが、こんなのも出てる。
ttp://www.ietf.org/rfc/rfc2550.txt?number=2550
907デフォルトの名無しさん:03/01/07 19:12
すいません、また教えてください。お願いします。

・5個のデータを読み込み最大値、最小値を出力するプログラムである。
( @ )〜( D )を埋めなさい

#include<stdio.h>
void main (void)
{
( @ ) data[5];
int max=0;
int min=100;
int i;
for(i=0; i<5; i++){
scanf("%d",( A ));
}
for(i=0; i<5; i++){
if(max ( B )data[i]){
max=data[i];
}
if(data[i] ( C ) min){
min=data[i];
}
printf("最大値は %2d\n 最小値は %2d\n",( D ));
}
908デフォルトの名無しさん:03/01/07 19:15
>>866のfunc_x()は、ボトムアップに構文木作っているみたいだけど、
構文解析法としては何になるの?
909デフォルトの名無しさん:03/01/07 19:33
これ、わかりません。教えてください。


次のプログラムは、文字数列を入力して数値に変換し表示するプログラムである。ただし、数字以外の文字が入力された場合も終了する。
( @ )〜( D )を埋めなさい

#include<stdio.h>
void main (void)
{
char c;
long n=( @ );
while((( A )=getchar())!=EOF){
if(c<'0' ( B )'9'<c){
break;
}
n=n*10+c-( C );
}
printf("%ld\n",n);
}
>>909
getchar()の戻り値をcharで受けるな
void main イクナイ。
>>907
入力された数値がすべて100より大きかったらどうするんだ?
>>912
A (i==1?(max=min=data[0],data+i):data+i)
914デフォルトの名無しさん:03/01/07 21:01
907はわかりました。

909を教えてください。マジでお願いします。
出題者に>>909の指摘を突きつければ、合格点をもらえるよ。
916915:03/01/07 21:06
間違えた>>909ではなく、>>910
とりあえず、>>910の指摘をうけてintにしたとして、
@0
Ac
B||
C'0'
D?
>>909のn*10って何がやりたいのかわからないのですが
>>915
ついでに 911 モナー。
「お前が教えているのは C じゃないのか」 と突っ込むと良し。
>>918
10 倍している。
921デフォルトの名無しさん:03/01/07 23:39
>891ですが、まじで困ってます。教えてください。お願いします
>>921
説明が曖昧なので回答者側も困っている。
ようするに、マウスの右クリックで、左クリックのイベントを実行して欲しいということだと思われ。

@マウスを分解する
Aボタンについてるスイッチを探す
Bその配線を入れ替え(以下略
>>918

例えば、「432」と入力されたら、
4を解釈 数字としては「4」
3を解釈 「4」を10倍して3を足して「43」
2を解釈 「43」を10倍して2を足して「432」
という手順を踏んでいる
>>921
何をそんなに困っているのか理由が聞きたいのだが・・・
>924
Thanks, 配列をつかわずにそういう使い方もあるんですね
勉強になりました
CでLU分解をやるプログラムをある程度作ったのですが
どうしてもエラーがでてしまってもうわけわかりません
宿題のソースはここに置いてね の62にはりましたのでみてもらえないでしょうか?
論理型、関数型、オブジェクト指向の各種言語について
比較を行っているスレやサイトを知ってたら教えてください
>927

nが決定されてからmallocすべし。
けっきょく、mallocするだけのプログラムなのか?
930927:03/01/08 00:46
>>929
そこも間違ってましたね
ありがとうございます
でもそこを直しても、エラーが消えてくれませんでした。
いろいろ違ってる。C言語の基礎が。

…… 時間の都合上、「C言語によるアルゴリズム辞典」をvectorで調べてくれ。っていうのは販促(笑)なのかしら。
932927:03/01/08 01:01
どこが違っているかだけでも教えてください
切羽詰ってます。お願いします。
>>932
CはPascalとは違い、関数の中に関数を定義することはできない。
まずそこを直すべし。
934927:03/01/08 01:31
最初はmain関数っていうところはつけてなかったんですが
たくさんエラーがでて、なんとなくつけてみると
大幅にエラーが減ったもので・・・
で、はずしてみるとやっぱりすごくエラーがでました。
>>934
プロトタイプ宣言の意味が多分わからないだろうから、main()はプログラムの
一番最後に持って行くこと。
フロとダイブ?
禿しくつまらないギャグを見てしまって鬱です。
僕はこれからどうすればいいんでしょうか?
>>891
Win32APIのSwapMouseButton()でどーよ。
>939
891のやりたいことがよく分からんのだが、
それ使うぐらいならコントロールパネルで設定かえるだけでいいかと。
正直漏れもよう分からんが、プログラム的にやりたいのかなという勘で。
そもそも何でそんなことしなけりゃいけないんだ、というところから説明してもらうのが良さげだけど、
なんかきちんと説明してもらえなさそうだし。
942IP記録実験:03/01/08 21:33
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
(・´з`・) <ひろゆきは1000狙ってるよ
944デフォルトの名無しさん:03/01/09 02:43
ここは馬鹿ばっか
>21
この記録は訴えられたときの防御策なんだろ
>>42
いや、動物病院の裁判で負けた影響でしょう
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
>>772
そのコピペばら撒きはともかく、ブラウザが誤動作するのか
変な番号にレスしてる奴が続出したりして、ちょっとウザイ。
内部告発保護法でも出来れば良いが、出来たらここは必要ないしね、
もう役目は終わったという事だねここも。   
127がろこつに自作自演てのが痛々しい
あー、どうしようもない馬鹿ばっかり。
ニュー速繋がんない

●2ちゃんねるでの1つの書き込みをきっかけに、さいたま県下の全小学校で警戒態勢がしかれたことについて、どう思いますか?

ひろゆき:お、そうなんですか?
テレビみてないので知りませんでした。



西村のモラルは完全に壊れている。
>>892

何故2chに批判を書かなければならないかということになるのでは?

匿名性 誰でも書けることを利用して 書いてるだけでしょ

真実なら新聞なり裁判所なりに行けばいいとおもうんだが
よい事ではないですか。遅すぎたくらい。
いつも暴れてるキチガイが今日おとなしかったことw
びつくりしますた。
大体こんな変なことやってる
http://www24.big.or.jp/~faru/txt1060.htmlの「N.T.Technologyについて」等を参照)
ところ何かにIPを預けれる人ってのはあんまりいないでしょ、、、
>>374
IP記録されてること自体気づいてないユーザーの方が圧倒的かと・・・

記録してもいいけどIP抹消のセキュリティを激甘にして毎日ハッカーに消してもらおう
パスワード・HIROYUKI とか
 
ううん、既存のTripodとかじゃなくて新たにそういうシステムを
作っちゃうの。

どう作るかはわかりませんw

しかし嵐とか不愉快な対策には「こいつがむかつく」と
ひとり1票で投票してきめます。
そしてその人はもうカキコ禁止。

どうやってカキコ禁止にするとかそういうのはわかりませんw
記録されてる分なにかと現社会より厳しくなった感じします、
板によるでしょ。
ラウンジとかは任意ID。メル欄に文字入れるとIDが???になる
パソコン一般板などはIDすらない
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
危険度5
・ダウソ
・半角系
危険度3
・ヲチ
他になんか浮かぶ?
スマソ、快速の愛を暖かく見守るよ
>でもまずはあっちを賑わすことに
無理。
つーかトリップもキャップもついてないし。
「1月危機」
をコソーリ期待したのは漏れだけ?
物理的に人間が侵入するということをわすれていますね。
完璧なセキュリティとは「存在しないこと」
存在しない場合、セキュリティも存在できません
&マジでやったんかい。







俺もびびったよ。
全鯖ログ記録キタ━━━(゚∀゚)━━━ !!!!!
だれか、さいたまー!連呼してるAAの
とやまとやまー!verをクレソ
表現の自由がどうのこうのとかの大枠の解釈はそうそう揺らぐものじゃないから、
まずはもっともっと立法してもらわないと、各論を論じることも出来ないかな、と。

確かに電子空間に関する条約はそろそろ必要な時期だと思う。
アメリカ対その他…イヤーな予感がするけど。
ならない
そもそも削除人さんはボランティアなのにねぇ(^_^;)
言う事聞かないからって逆切れして、戦争(訴訟)に持ち込むなんて
正気を疑いますな(^_^;)
大分かかる
978山崎渉:03/01/13 19:06
(^^)
979 :03/01/13 20:08
4nd・・(ププッ
埋め
揉め