[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 09:01 / Filesize : 272 KB / Number-of Response : 983
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pascal の初心者用の質問・相談所



1 名前:デフォルトの名無しさん [02/01/02 01:46]
Pascal の初心者用の質問・相談所
コンソールのみ。GUI は扱いません。
「Cをやったけど難しいので、やっぱりPascalからぼちぼちやるぅ」という人向け。

コンパイラダウンロード
www.vector.co.jp/vpack/filearea/win95/prog/pascal/index.html

ちなみにDelphiは
「モナーの *やさしい* Delphi質問スレ」
pc.2ch.net/test/read.cgi/tech/1003113413/

654 名前:652 mailto:sage [03/09/16 20:04]
まだソースをざっと見ている段階ですけど、
結構高度なことをやっている様子。
追加、削除、検索など、一通りのルーチンは
揃っているみたい。使い方を解析せねば。


655 名前:レイホウ@6歳 mailto:sage [03/09/24 22:35]
処理速度を犠牲にしてもいいなら
for($i = 0; $i < @mob; $i++){
 next if ($mob[$i] eq ""); ←何も無かったら次いく
 $mobname[$i] = $stuff[2] if ($stuff[1] eq $mob[$i]);
 last if ($stuff[1] eq $mob[$i]); ←見つかったら終了
}
これと同じ事をすればいい(↑はperlだけどな)

perlとしては↑間違ってる

えいめ〜ん


656 名前:デフォルトの名無しさん mailto:sage [03/10/14 04:20]
3つの整数を読み込み、最小値と最大値を出力するプログラムを作りなさい。

657 名前:デフォルトの名無しさん mailto:sage [03/10/14 09:28]
>656
宿題?

658 名前:デフォルトの名無しさん mailto:sage [03/10/14 09:32]
最初に
 整数を三つ読み込む。
次に
 最小値を見つける。そして出力。
最後に
 最大値を見つけ、それを出力。

簡単でしょ

659 名前:デフォルトの名無しさん mailto:sage [03/10/14 12:29]
こういうのをわざと、ObjectPascal使ってやったりしてな。

660 名前:デフォルトの名無しさん mailto:sage [03/10/14 17:02]
あ、そろそろ後期の授業が始まったわけか。

661 名前:でたらめ mailto:sage [03/10/14 18:27]
program test3;
var
a, b, c, max, min: integer;
begin
read(a);
max := a;
min := a;
read(b);
if b > max then
max := b;
if b < min then
min := b;
read(c);
if c > max then
max := c;
if c < min then
min := c;
writeln('max', max);
writeln('min', min);
end.

662 名前:デフォルトの名無しさん mailto:sage [03/10/16 01:29]
program maxandmin; (* IF無しバージョン *)

var
  a, b, c, max, min : integer;

function sgn(si : integer) : integer;
begin
  if si < 0 then sgn := -1 else if si = 0 then sgn := 0 else if si > 0 then sgn := 1;
end;

begin
  read(a); read(b); read(c);
  case sgn(a - b) of
    -1, 0 : case sgn(b - c) of
      -1, 0 : begin min := a; max := c; end;
      1 : case sgn(a - c) of
        - 1, 0 : begin min := a; max := b; end;
        1 : begin min := c; max := b; end;
      end;
    end;
    1 : case sgn(b - c) of
      -1, 0 : case sgn(a - c) of
        -1, 0 : begin min := b; max := c; end;
        1 : begin min := b; max := a; end;
      end;
      1 : begin min := c; max := a; end;
    end;
  end;
  writeln('max=', max);
  writeln('min=', min);
end.




663 名前:662 mailto:sage [03/10/16 01:30]
あ、sgn に if文を使っているんだっけ。

664 名前:でたらめ mailto:sage [03/10/16 21:41]
function sgn (si: integer): integer;
begin
case si of
0:
si := 0;
otherwise
begin
sgn := si div abs(si);
end;
end;
end;


665 名前:でたらめ mailto:sage [03/10/16 21:42]
あ。begin, end 一個余分だ。

function sgn (si: integer): integer;
begin
case si of
0:
si := 0;
otherwise
sgn := si div abs(si);
end;
end;


666 名前:でたらめ mailto:sage [03/10/17 10:56]
program MaxMinX; (* ObjectPascal ver. *)
type
MMXtype = object
vmax, vmin: integer;
procedure init;
procedure setValue (val: integer);
function max: integer;
function min: integer;
end;
procedure MMXtype.init;
begin
vmax := -32768;vmin := 32767;
end;
procedure MMXtype.setValue (val: integer);
begin
if val > vmax then vmax := val;
if val < vmin then vmin := val;
end;
function MMXtype.max: integer;
begin max := vmax; end;
function MMXtype.min: integer;
begin min := vmin; end;
var MMX: MMXtype;a, i: integer;
begin
new(MMX);
MMX.init;
for i := 1 to 3 do
begin read(a); MMX.setValue(a); end;
writeln('max=', MMX.max);
writeln('min=', MMX.min);
end.

667 名前:662 mailto:sage [03/10/17 18:42]
program test(input, output); (* 今度こそIF無しバージョン *)
Type TChoice = function(a, b : integer) : integer;
var
  Func : array[boolean] of TChoice;
  a, b, c : integer;

function First(a, b : integer) : integer;
begin First := a; end;

function Second(a, b : integer) : integer;
begin Second := b; end;

function fmax(a, b : integer) : integer;
begin fmax := Func[a >= b](a,b); end;

function fmin(a, b : integer) : integer;
begin fmin := Func[a <= b](a,b); end;

begin
  Func[false] := Second; Func[true] := First;

  read(a); read(b); read(c);
  writeln('min=', fmin(fmin(a, b), c));
  writeln('max=', fmax(fmax(a, b), c));
end.


668 名前:でたらめ mailto:sage [03/10/17 19:08]
>>667
発想がすごい!
けど、うちの環境(THINK Pascal)だと、
2行目が通らないっす・・・

669 名前:622 mailto:sage [03/10/17 20:32]
>>668
あ、関数型(手続き型の方が分かりが良いかな)って
標準Pascal仕様じゃなかったんですね。ちなみにDelphi
では通りました。

670 名前:でたらめ mailto:sage [03/10/18 03:13]
program MMX;
var
a, b, c: integer;
begin
read(a); read(b); read(c);
writeln('max=', ((((a + b) + abs(a - b)) div 2 + c) + abs(((a + b) + abs(a - b)) div 2 - c)) div 2);
writeln('min=', ((((a + b) - abs(a - b)) div 2 + c) - abs(((a + b) - abs(a - b)) div 2 - c)) div 2);
end.

671 名前:デフォルトの名無しさん mailto:sage [03/10/18 17:14]
>>656
読み込んでソートして一番上と一番下を見る

672 名前:662 mailto:sage [03/10/21 18:45]
>>670
あ、なるほど。2変数のやつをもう一度繰り返せば3変数
に対応出来ますね。私は「一度に3変数に対応出来ない
か」と考えていました。



673 名前:でたらめ mailto:sage [03/10/22 00:22]
>>672
でもこれって、>667の
>writeln('min=', fmin(fmin(a, b), c));
>writeln('max=', fmax(fmax(a, b), c));
の派生みたいな物ですよ。
ただ、公式にあてはめただけです。


674 名前:でたらめ mailto:sage [03/10/22 00:25]
他にも、
const
maxint = 32767;
minint = -32768;
var
index: array[minint..maxint] of boolean;
を使う方法も考えたけど、
メモリーが足りない(?)とかで
配列が確保できずに断念したっス。


675 名前:662 mailto:sage [03/10/25 15:23]
>>673
2変数での公式と>>667のやつを組み合わせることを
思いつかなかったんです。思いついてさえいたら、先
に書いていたのに...

676 名前:デフォルトの名無しさん [03/10/31 01:49]
質問いいですか?
一クラス分の身長を実数型で入力し、最高と最低を求めるプログラムを作成せよ。
さらに示された入力データでトレース表を書きなさい。
(A)最初に人数を入力し、人数分の処理をする場合(for)
(B)身長に0が入力されたら、終了する場合(while)

実行結果例
人数 制御変数 身長 最高 最低
6     1    178
    2    165       165.0
   3    197    197.0
   4    168
    5    175
   6    183

こんな問題です。
特に、入力された人数分を変数に入れる方法と、トレース表に出力する方法が分かりません。

677 名前:デフォルトの名無しさん [03/10/31 03:33]
>>676
小学校の宿題か?

678 名前:662 mailto:sage [03/10/31 05:22]
>>676
配列とか知っているか?

それとなんでその問題で「実数型」にする必要があるんだ?
実数型だと比較が難しいぞ。

679 名前:デフォルトの名無しさん [03/10/31 08:01]
>>678
問題が実数型で入力せよとなっているので・・・。
配列はあやふやです・・・。

680 名前:でたらめ mailto:sage [03/10/31 08:40]
3つの最大・最小の次は、この課題ですか。ふふーん
じゃあ、どうしよっかなー

681 名前:でたらめ mailto:sage [03/10/31 08:44]
(A)みたいなのは、BasicだとDIM文とかで
配列を宣言すれば無駄がないけど、Pascal
はできないもんね。
(B)も(A)もそうだけど、人数の最大が決まっ
てるか決まってないかで、全然変わるけど。
その辺は、どうなんだろうね?

682 名前:デフォルトの名無しさん [03/10/31 11:46]
がんばって考えてみたけどエラーが出ます。どこを改良すればいいですか?

var i,n,max,min :integer;
sin:array[1..100] of integer;
begin
write('人数は?');
readln(n);
for i:=1 to n do
begin
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
end;
max:=sin[1];
min:=sin[1];
for i:=2 to n do
begin
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
end;
writeln('人数 制御変数 身長 最高 最低 ');
writeln(n);
for i:=1 to n do
begin
write(' ',i,' ', sin[i] );
IF sin[i]:=max then
write(' ',sin[i]);
IF sin[i]:=min then
write(' ',sin[i]);
end;
end.



683 名前:でたらめ mailto:sage [03/10/31 17:01]
>>682
ほとんどできてるじゃん。

>IF sin[i]:=max then
>write(' ',sin[i]);
>IF sin[i]:=min then
>write(' ',sin[i]);
ここ、「:=」じゃなくて「=」だ。
それと、この次に、
writeln;
の1行を入れる必要がある。


684 名前:662 mailto:sage [03/10/31 18:34]
>>682
実数型を使っていないけど、いいのか?

それとトレース表の人数のあとに改行が入っているけど
それも問題無し?

685 名前:でたらめ mailto:sage [03/10/31 19:10]
>>684
そやな、ごもっとも。(w
でも、例とは違ってもええんちゃう?
それ言い始めると、「最低」の数字の
表示位置がずれてる気がするけど。


686 名前:でたらめ mailto:sage [03/10/31 21:16]
ところで。私も詳しく知らないんだが。
実数型って比較が難しいの?


687 名前:662 mailto:sage [03/11/01 09:12]
>>685
おお、表示位置のずれは気づかなかった。という
ことで、そこも直す必要があるぞ。>>682

>>686
10進と2進の変換誤差(浮動小数点の場合)と計
算誤差があるから、等号比較だと偽になる場合
が考えられる。あと、有効桁数の問題も気にとめ
ておく必要が出る場合もあるし。

まあ、今回みたいに変数に入れた物を代入する
場合なんかは等号比較が出来る場合が多いけ
ど、代入を計算と見なした場合は一度倍精度に
してから単精度に戻すなどの処理が入って値が
変わる可能性があることを頭に入れておいた方
が破綻しづらくなります。

と言うことで私は整数型で実装出来るものは整数
型で実装するようにしています。

688 名前:でたらめ mailto:sage [03/11/01 10:59]
>>687
そうか。誤差か。普段そこまでシビアな計算って
したことないんで、気にしなかった。
うちも整数型がほとんどです。

今回の場合、まさか身長で小数点以下2桁以上が
必要になることはないので。入力した数値を
×10して整数型で保存・計算。表示の時に
÷10して実数型(例だと下一桁)っぽく
表示するのではあかんのやろか。
この処理、逆に面倒?誤差が大きくなる?


689 名前:662 mailto:sage [03/11/01 11:44]
>>688
私もその方が良いと思ったので「実数型にする必要があ
るんだ?」と聞いたんだけど... でも「問題が実数型で入力
せよ」という事らしいから、実数型にする必要があるみた
いですね。

それとも「入力が実数型」を受け付けると言うことだけで
良いのなら内部は整数で扱う方がプログラム的には楽
ですね。

計算することを考えるのなら、小数点以下2桁くらい取っ
ておいた方が安全かも。

690 名前:でたらめ mailto:sage [03/11/01 13:19]
実数型で入力し・・・そうか!!やっぱり
入力さえ実数型なら、ええんちゃう?
処理まで実数型とは書いてないもんな。

>>682
考えることは同じやね。うちも最初は小数点以下
2桁と思ったけど、例が下1桁だったので、表示
するときの手間を考えて下1桁って書いてた。

そんなわけで。>682は、課題完了だな。

691 名前:682 [03/11/01 23:35]
レス有難うございます!!
あとですね、>>676のwhile文のほうがあって身長に0を入力した場合に入力が終わるプログラムなんだけど、
そうすると出力のときに身長に0が出てしまうんですよ。どうすればいいですか?

692 名前:でたらめ mailto:sage [03/11/02 00:30]
>>691
forとwhileの基本的な違いではないか。
それを考えるのが課題のポイントじゃ。




693 名前:でたらめ mailto:sage [03/11/02 11:26]
for 1〜2回
 入力 1〜2回繰り返し
戻る

repeat
 入力 1〜2回繰り返し、3回目に0を入力
0以外は戻る
最後の入力は無効

で、ええんちゃうか。
そうすると問題は、のっけから0を入力された
場合のエラーセーフだけど。ま、やってみそ。


694 名前:デフォルトの名無しさん mailto:sage [03/11/02 23:35]
if文は使ったらいけないのヵ
begin
一つ目を入力;
while i>0 do begin
出力;
入力;
end;
end.
たぶん不合格。
ん?0を「入力した」場合に「入力が」終わる?

695 名前:でたらめ mailto:sage [03/11/03 00:44]
あ。すまぬ。>693は何か勘違いして書いてるかもしれん。
そか。repeatはuntilで、whileは違うか。
ま、気にするな。(w

696 名前:でたらめ mailto:sage [03/11/03 00:51]
罪滅ぼしに、ちょっとヒントを。
var next:boolean;
...
next:=true;
while next do
begin
入力
if a=0 then next:=false;
その他のチェック
end;


697 名前:デフォルトの名無しさん mailto:sage [03/11/03 01:44]
なんだその変なコード。

698 名前:でたらめ mailto:sage [03/11/03 02:31]
>>697
まあ、でたらめっちゅー事で。気にするな。
よかったら、すばらしいサンプルを提示して
やってくだされ。


699 名前:デフォルトの名無しさん mailto:sage [03/11/03 17:26]
>>696
while true do で if 〜then break すればいいんじゃ?

700 名前:でたらめ mailto:sage [03/11/03 18:13]
>>699
前にも似たような話があったけど、
標準Pascalではbreakが使えないのよん。

701 名前:でたらめ mailto:sage [03/11/03 18:13]
と、思って>700を書いたが。私の勘違い?

702 名前:デフォルトの名無しさん mailto:sage [03/11/03 19:01]
1周目を必ず通すならrepeat使いなよ。



703 名前:でたらめ mailto:sage [03/11/03 19:11]
>>702
>676

704 名前:デフォルトの名無しさん mailto:sage [03/11/03 20:04]
ちょっくら問題作った奴に山嵐決めてくる。

705 名前:662 mailto:sage [03/11/03 23:08]
ほんとだ、これは問題を作ったやつがバカ。
repeat - until を使った方が素直に組めるのに。
どうしてもwhileでやらなきゃならないのなら、入力
関数でも作って以下のようにするか...

function 身長入力関数(var 身長) : boolean;
begin 入力処理 end;

while 身長入力関数(身長) do
  身長追加処理;


>>701
その通り、breakは無いです。元が教育用言語
だから、抜け道は作らないような構文になって
いるんですよね(caseのelse、otherwiseも無い)。

706 名前:でたらめ mailto:sage [03/11/03 23:15]
>>705
「課題」なんだから仕方ないよ。

Cだと、入力しつつ比較が出来るから、
関数を作る必要はないんだよね?確か。

breakが無いのはまだいいけど、
caseのotherwiseも標準にはないの?
これないと辛い。つーか、無理。
THINK Pascalはある。


707 名前:662 mailto:sage [03/11/04 00:21]
>>706
いや、課題だからこそ変な制約を付けることなく作ら
せるのがよい。まあ、一定の方向に仕向けるためだ
ろうけど、それでプログラミング嫌いになったら教育
の価値無し。

otherwise(Delphiではelse)は無い。と言うかcase
を使う時点で出てくる要素は判っているはずだから、
全て列挙しろと言うことでしょう。otherwiseに入れら
れた処理を「あとで分類し直す」なんて事になったら
結構大変だというのは想像が付きそうだけど。

708 名前:676 [03/11/04 12:17]
こんな強引な感じになりましたが一応例どおり動きました。
Program en9a(input,output);
var i,n :integer;
max,min :real;
sin:array[1..100] of integer;
begin
write('人数は?');
readln(n);
for i:=1 to n do
begin
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
end;
max:=sin[1];
min:=sin[1];
writeln('人数 制御変数 身長 最高 最低 ');
writeln(n);


709 名前:676 [03/11/04 12:18]
i:=1;
repeat
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
i:=i+1;
until i<>1;
for i:=2 to n do
begin
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
end;
end.


710 名前:676 Bのほう [03/11/04 12:19]
Program en9b(input,output);
var i,n :integer;
max,min :real;
sin:array[1..100] of integer;
begin
n:=1;
i:=1;
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
while sin[i]<>0 do
begin
i:=i+1;
writeln(i,'人目の身長を入力してください');
readln(sin[i]);
n:=n+1;
end;
max:=sin[1];
min:=sin[1];
writeln('人数 制御変数 身長 最高 最低 ');
writeln(n-1);

711 名前:676 Bのほう2 [03/11/04 12:20]
i:=1;
repeat
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
i:=i+1;
until i<>1;
for i:=2 to n-1 do
begin
IF sin[i]>max then max:=sin[i];
IF sin[i]<min then min:=sin[i];
write(' ',i,' ', sin[i]);
IF sin[i]=max then write(' ',max:3:1);
IF sin[i]=min then write(' ',min:3:1);
writeln;
end;
end.

712 名前:でたらめ mailto:sage [03/11/04 13:11]
あのー、sinの宣言を見ていると、
整数型なんですけど・・・
小数入力しても、小数点以下が
切られてない?
(試してないので分からんけど)



713 名前:デフォルトの名無しさん mailto:sage [03/11/04 13:35]
sinってのは正弦みたいでやだな。

714 名前:デフォルトの名無しさん mailto:sage [03/11/04 17:40]
右シフトさせるプログラムがどーしても
出来ない・・・・

715 名前:デフォルトの名無しさん mailto:sage [03/11/04 18:13]
表示位置のずれはまだ直っていないようだが... あと
ちゃんとコンパイルして実行して動くかどうか確認し
て(もしくは不明点が見つかって)からアップしてくれ。

おまえのソースを全てチェックするほど暇じゃないん
だ。そっちのソースを直すより自分で全て書いた方
が早そうだし。


>>714
環境(対象コンパイラ、機種、OS等)の必要情報が
判らないとコメント付けようがないぞ。

716 名前:デフォルトの名無しさん mailto:sage [03/11/05 00:46]
>>715
例どうりに動いたと書いてあるよ。

717 名前:デフォルトの名無しさん mailto:sage [03/11/05 09:21]
>>715
フリーパスカル CPAD win2K

718 名前:デフォルトの名無しさん mailto:sage [03/11/05 18:37]
>>716
とても例どうりに動くとは思えんが、本人がそう言っている
のならそれでいいや。

>>717
確かFreePascalはTurboPascalの構文が使えるんじゃな
かったでしたっけ?それならshrで行けます。下記参考。ち
なみに左シフトはshl。

var
  a, b : byte;

begin
  a := 8;
  b := a shr 1;  (* シフトしたいビット数 *)
  writeln(a, ' ', b);
end.

719 名前:デフォルトの名無しさん mailto:sage [03/11/05 20:02]
>>718
なんか配列使えって
言われちゃったので配列で無理やり作ってみた。

program sifuto(input,uotput);
type
suuji = array[1..10] of char;
var
a : suuji;
x,y,n : integer;
begin
begin
write('10文字入力');
readln(a);
end;
write('いくつずらす?');
readln(x);
for y:= 11-x to 10 do
write(a[y]);
for n:=1 to 10-x do
write(a[n]);
writeln()
end.


720 名前:デフォルトの名無しさん mailto:sage [03/11/05 20:11]
今日配列使って作ったもう一個のヤツ
program sinnsuu(input,output);
type
suuji = array[1..4] of integer;
var
a : suuji;
c, ans : integer;
d : integer;
begin
Write('Decimal : ');
Read(d);
c := 0;
while d <> 0 do
begin
c := c + 1;
ans := d mod 2;
d := d div 2;
a[c]:=ans
end;
for c:= 4 downto 1 do
write(a[c]);
writeln()
end.

配列メンドイ
なんか中途半端に理解した。

721 名前:デフォルトの名無しさん mailto:sage [03/11/05 20:20]
>>720
0〜15の10進数しか変換できない。

722 名前:718 mailto:sage [03/11/05 22:26]
>>719
俺、配列使えなんて一言も言ってないんだけど。

何か良く分かんない(理解出来ないやり取りの)
所に来てしまったようなので、落ち着くまでしばら
く黙っていることにする。



723 名前:でたらめ mailto:sage [03/11/05 22:53]
学校の課題なんでないかい?
配列使え、っていう。

724 名前:718 mailto:sage [03/11/05 23:51]
>>723
課題は課題で良いんだけど、「他の人に分かって
もらう書き方」ってのがあると思うんだ。特にこうい
う場では。それと「自分で出来るだけ努力する」っ
てのも大事だし。

それをしないでソース垂れ流し(それもちょっと?の)
されるんで、もう私には理解不能。だからこの件
(と思われるもの)には黙ることにしました。

725 名前:でたらめ mailto:sage [03/11/06 01:21]
ところで。右シフトって何?
2で割ればいいんじゃないの?


726 名前:デフォルトの名無しさん mailto:sage [03/11/06 21:54]
>>725
マイナスの値を右シフトと2で割ることをしてみれば、
違いが分かると思う。それと、算術計算とビット操作
はやっぱり別の話だから。

727 名前:でたらめ mailto:sage [03/11/06 23:03]
マイナスか。それは考えなかった。
でも、ビット操作なんてアセンブラでも使わない
限り必要ないんじゃないかと思うけど。
Cならいざしらず、Pacalでは意味ないよねぇ。
課題じゃしょうがないけど。


728 名前:デフォルトの名無しさん mailto:sage [03/11/06 23:16]
>>727
だってグラフィックフォーマットとか通信プロトコルなんかで
「ビットで状態を表す」物って結構多いから、ビット操作がで
きないと辛い場合って結構あるよん。

そういう時までアセンブラを持ち出すのはちょっと大仰だと
思う。高級言語でサクサク組めた方が何倍もカンタン。

729 名前:でたらめ mailto:sage [03/11/07 00:00]
>>728
そうか。なるほど。

ビット操作はマックならtoolboxにあるので、
THINK Pascalでもコマンド一発。


730 名前:デフォルトの名無しさん [03/11/11 16:54]
a<>b<>c みたいなことをやらせるには どうしたらいいのでしょう… 配列を使った課題がT-T

731 名前:デフォルトの名無しさん mailto:sage [03/11/11 19:50]
a <> b and a <> c

732 名前:デフォルトの名無しさん mailto:sage [03/11/11 19:59]
>>730
a=cでもええのか?

>>731
b=cの可能性はあるな

そういう意味じゃない?



733 名前:デフォルトの名無しさん mailto:sage [03/11/11 20:04]
a <> b and a <> c and b <> c
等しくはならんが気休めにどうぞ。

734 名前:デフォルトの名無しさん mailto:sage [03/11/11 22:03]
andの方が優先度高い罠

735 名前:デフォルトの名無しさん mailto:sage [03/11/12 02:04]
そもそも、>730の課題は何がさせたいのだ?
aとbとcがいずれも異なる値であることを
確認すればいいの?
にしては、配列を使うって・・・意味不明。


736 名前:デフォルトの名無しさん mailto:sage [03/11/12 23:39]
>>735
意味を取ろうとするから意味不明。気にしなければOK。

課題を出している方はまともな課題を出していて、ここで
聞いているのの頭が「意味不明」なだけのような気がする
(もしくは本気で訊いていないのか)。今までの経緯から
すると。

意味が通る訊き方をすれば、それなりに答える気になる
のに。

737 名前:デフォルトの名無しさん mailto:sage [03/11/14 16:34]
配列を使ったプログラムの途中にa<>b<>cという判定が必要な部分があるとか


738 名前:デフォルトの名無しさん [03/11/15 22:16]
すいませんご教授おねがいします。
画面を再構成させる方法は存在するのでしょうか?
存在するのでしたら教えてください。
学校の宿題を作ってるとき、再構成しないと見栄えが悪いもので…

739 名前:デフォルトの名無しさん mailto:sage [03/11/15 23:50]
>>738
再構成ってどんなこと? 宿題と言われてもこっちは何も
分かっていないんだと言うことを理解して、詳しく説明し
てくれないと何の手助けも出来ないんだが。課題の内
容をこと細かく説明する必要は無いんだけど、「どんな
ことをやろうとして、どうなってしまったから、こうしたい」
くらいの説明がないと何とも。

あと、コンパイラ依存? それとも汎用? OSに関わりのあ
る(と思われる)場所は無いのかな?

見栄えを求めるとしたらどのレベル? 事によると宿題の
域を大幅に超えるかもしれないので、どれくらいの事を
したいのか分からないと答え辛いかも。

740 名前:デフォルトの名無しさん mailto:sage [03/11/16 00:16]
>>738
まるで
「僕のお小遣いで買いに行ける一番美味しいケーキはどれ?」
っていう質問に答えるようなものだな。


741 名前:738 [03/11/16 03:27]
すいません、プログラミング初心者なので、
質問の仕方すらよくわかってません(/_<。)
delphi6のコンソールで、文字列がずらずらと繰り返えされ
見難くなるので、画面の文字をいったん全部消去する
方法を教えてもらいたいのですが…

正直どう説明すればいいのかすら分かりません(-_-;)



742 名前:デフォルトの名無しさん mailto:sage [03/11/16 13:22]
>>741
Delphi6と言うことはWin32コンソールもしくはDOS窓に
なるのか。OSによって対応は違いますね。

16ビット系(Win95からMEまで)なら「ANSIエスケープ
シーケンス」が使えると思うのですが、32ビット系(NT
から2000,XPまで)はこれが使えないので「いちいちコ
ンソールと文字モードのサポートにあるAPIで制御」す
るか、改行で区切って綺麗に見せて出力するかしか
無いですね。



743 名前:738 [03/11/16 15:35]
>>742
そうですか…きっぱりあきらめることにします。
初心者の馬鹿な質問に答えて下さいまして本当にありがとうございました

744 名前:デフォルトの名無しさん mailto:sage [03/11/17 19:13]
>>738-743
pageコマンドは?

(A)コンソールに対して
 writeln('abc');
 page;
 writeln('xyz');

こうすると(THINK Pascalの場合)
(abcが表示された後、画面消去するので)
コンソールにxyzだけが表示される。


(B)ファイルに対して
 var f:text;
..
 writeln(f, 'abc');
 page(f);
 writeln(f, 'xyz');

こうするとabcとxyzの間に(改ページ)が挿入される。


一般的なPascalの教科書に出ているコマンドだよ。

745 名前:デフォルトの名無しさん [03/11/17 22:23]
>>744
delphiのコンソールじゃ出来ないんじゃない?

746 名前:デフォルトの名無しさん mailto:sage [03/11/17 22:40]
>>744
残念ながらBorlandのPascal言語系(Delphiだけで
なくTurboPascalから)はPageはサポートしていな
かったりする。

747 名前:744 mailto:sage [03/11/17 23:42]
そうなんだ。

748 名前:デフォルトの名無しさん mailto:sage [03/11/18 01:51]
全く紛らわしいことしやがって。

749 名前:デフォルトの名無しさん mailto:sage [03/11/18 03:17]
TurboPascal風のコンソールユニット

www.slis.keio.ac.jp/~anakata/filearea/filearea.html から
Win32Crt.pas (w32crt03.lzh) を落として、解凍後、Win32Crt.pasを
Libフォルダにコピーする。
古いユニットなので、Delphi6では未定義の識別子 : 'KeyEvent' という
エラーが出るから、KeyEventという文字列を全てEvent.KeyEventに
置き換える。
これで、TurboPascalのCRTユニット風の関数が使えるようになる。
GotoXY, WhereX, WhereYがゼロオリジンなので、互換性を考えれば
ソースをいじったほうがいいかもしれない。


750 名前:749 mailto:sage [03/11/18 03:18]
とりあえず、簡単なサンプル(Delphi6で確認)。 何かキーを押すと終了する。
program Project2;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, Win32Crt;
var
  f, b: Integer;
begin
  for b := 0 to 15 do
  begin
    ClrScr;
    for f := 0 to 15 do
    begin
      TextColor(f);
      TextBackground(b);
      gotoXY(f * 2, f);
      Writeln('Test String [', WhereX, ',', WhereY, ']');
      Sleep(1000);
      if KeyPressed then
        Exit
    end
  end
end.

751 名前:デフォルトの名無しさん [03/11/18 23:36]
n個の値 a[0] , a[1] , ・・・ , a[n-1] が与えられているとき、
a[i]の順位 r を求めるプログラムを書いてください。
ただし、順位=(自分より大きいものの個数+1)です。

また、プログラム中に使用する名前の型、属性、意味内容を明示し、
実際の実行例もお願いします。

752 名前:デフォルトの名無しさん mailto:sage [03/11/19 00:00]
順番に調べればいいんじゃない。
x := 1;
for i := 0 to n-1 do
if a[i] > a[r] then x := x + 1;



753 名前:デフォルトの名無しさん mailto:sage [03/11/19 00:39]
>また、プログラム中に使用する名前の型、属性、意味内容を明示し、
>実際の実行例もお願いします。

それくらいは自分で考えた方が良いぞ。属性ってそもそも何?

754 名前:デフォルトの名無しさん mailto:sage [03/11/19 10:04]
とても素朴な疑問なんだが。

>n個の値 a[0] , a[1] , ・・・ , a[n-1] が与えられているとき

この「与えられているとき」ってのを見る度に悩むんだな。
サンプルをどうしよう?って。
programなら、入力ルーチンを作るか、ファイルから読み込むか、
constで適当な値を作るか。

procedureやfunctionだけ作るとしても、pascalでは配列を
関数には渡せないよね?
それとも、a[0]...っていうグローバル変数があるものと
してもいいけど、それも美しくないし。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<272KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef