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


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

Pascalの宿題は俺にやらせろ!!Part2



1 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 00:45:25 ]
教育用(?)プログラムPascalの宿題をやって頂くスレ

■丸投げOK
■全く分かってない阿呆も放置しないで優しく対応
■他言語はよそ逝け( ゚Д゚)ゴルァ
■DelphiもTurbo Pascalも完全対応

【本家】

www.borland.co.jp/delphi/

【前スレ】

pc8.2ch.net/test/read.cgi/tech/1089719714

【関連スレ】

くだすれDelphi(超初心者用)その15
pc5.2ch.net/test/read.cgi/tech/1087823906/l50

Pascal の初心者用の質問・相談所
pc5.2ch.net/test/read.cgi/tech/1009903617/l50

【Delphi初心者】今から始めるDelphi Part01
pc5.2ch.net/test/read.cgi/tech/1062422335/l50


800 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 19:05:30 ]
const n=10
type index=1..n;
var
a,b,c :array[index,index] of real;
i,j,k : index;
s :real

for i:=1 to n do
for j:=1 to n do
begin
s:=0;
for k:=1 to n do s:=s+a[i,k]*b[k,j]
c[i,j]:=s
end

801 名前:デフォルトの名無しさん [2008/11/10(月) 16:45:07 ]
関数の問題なんですがまったくわかりません。

キーボードで入力された2つの整数の最大公約数を求める関数(function)を作り、
その関数を用いて分数の約分を行うプログラムを作成せよ。
(例) 分子を5、分母を10と入力した場合、結果として1/2を表示する。
とのことです。
よろしくお願いします。

802 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:15:43 ]
ユークリッドの互除法と再起呼び出し

803 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:22:57 ]
>>87-

804 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 09:03:42 ]
emacsでプログラム書いてるのですが、
error: invalid operands to `+'
error: incompatible type for argument 2 of `ace'
error: routine declaration
error: result of function `check' not assigned
↑のエラーの消し方がわからないのです
教えていただけないでしょうか

805 名前:デフォルトの名無しさん [2008/11/13(木) 14:10:59 ]
閏年計算のプログラムですが、変数iが初期化されないというエラーが出ました
Delphi6を使っています

var i:integer;
begin
if ((i mod 4=0) and (i mod 100<>0)) or (i mod 400=0)
then writeln('leap year')
else writeln('NOT leap year')
end.

どこが間違っているでしょうか?

806 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 15:07:37 ]
初期化すれば?

807 名前:デフォルトの名無しさん [2008/11/27(木) 13:51:47 ]
どうやってプログラムしたらよいのか分かりません。
教えていただけないでしょうか。

配列の全要素のうち最小のものを配列の先頭の要素と入れ替える。 次に、配列
の 2 番目以降の要素のうち最小のものを配列の 2 番目の要素と入れ替える。
このような処理を配列の要素数から 1 引いた回数繰り返すと、すべての要素が
整列した状態となる。

このアルゴリズムに従って配列を整列させる(ソートする)プログラムを作成せ
よ。 ただし、「配列の n 番目以降の要素のうち最小のものを配列の n 番目の
要素と入れ替える」という処理をサブルーチンとして作成すること。

808 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 09:05:02 ]
選択ソートで検索すればcで書かれたプログラムが沢山見つかるから
それ参考にすればいいんじゃないかな
特に難しい事はないはず



809 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 09:09:59 ]
ていうか>>488で入れ替える所だけ関数にすればいいだけだね

810 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 13:19:38 ]
プログラミング以前に問題文を理解してないのでは?
まずは手計算でやれるか試してみ

811 名前:デフォルトの名無しさん [2008/11/30(日) 16:19:39 ]
アドバイスありがとうございました。
クイックソートのプログラム自体、なかなか理解しづらくて困っています。
「以下に示す2つのプログラムを完成させよ」という宿題で行き詰っています。
どうかプログラム例を示していただけませんでしょうか。

「T」
procedure quicksort( var ar: intarray; var i, j: integer );
var
{b1 はサブリスト sub1 の始めの要素番号、e1 は終わりの要素番号}
{b2 はサブリスト sub2 の始めの要素番号、e2 は終わりの要素番号}
b1, e1, b2, e2: integer;
begin
if i < j then
begin
b1 := i;
e2 := j;
divide( ar, b1, e1, b2, e2 );
quicksort( ar, b1, e1 );
quicksort( ar, b2, e2 );
end;
end;

812 名前:デフォルトの名無しさん [2008/11/30(日) 16:20:16 ]
「U」
procedure divide( var A: intarray; var b1, e1, b2, e2: integer );
var
x, y, temp: integer;
begin
x := b1;
y := e2;
while x < y do
begin
if A[x] > A[x+1] then
begin
temp := A[x];
A[x] := A[x+1];
A[x+1] := temp;
x := x + 1;
end
else
begin
temp := A[y];
A[y] := A[x+1];
A[x+1] := temp;
y := y - 1;
end;
end;
e1 := x - 1;
b2 := y + 1;
end;

813 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 05:14:06 ]
>>811-812をそのまま使って
program aaa(input, output);
const n=10 ;
type intarray= array[1..n] of integer ;
var A : intarray;
begin 
    Aにデータ入力
    quicksort(A,1,n);
    データ出力
end.
でいいんじゃないかな

814 名前:デフォルトの名無しさん [2008/12/08(月) 03:22:22 ]
A・B・Cの部屋があり、AとB、BとCは通路で繋がっている。
最初、ねずみはAの部屋にいるものとする。
その後、1秒ごとにねずみは隣の部屋に移るか同じ部屋にいる。
以下のような確率で動く時、ねずみが10秒後に、Aにいる確率を求めよ。

・Aにいるとき、Bに移る確率は二分の一
・Bにいるとき、A及びCに移る確率は共に三分の一
・Cにいるとき、Bに移る確率は三分の二

二分法のところの問題です。答えがなくてこまっています。
教えていただけないでしょうか。


815 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 19:08:32 ]
10病後にAに居ない確率もとめれば

816 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 19:16:42 ]
求めてる方法と違うだろうけど
3*3行列
1/2 , 1/3 , 0
1/2 , 1/3 , 2/3
 0 , 1/3 , 1/3
のn乗を計算して、初期位置がAなら
1
0
0
を掛ければ
n秒後にABCにいる確率がそれぞれ
a
b
c
って出るよね?

817 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 19:58:48 ]
二分法と言うのはこれのはずだが、合ってるだろうか?
ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E6%B3%95

この方法と確率の計算は、関係ないのでは?

818 名前:デフォルトの名無しさん [2008/12/09(火) 05:35:56 ]
>>816
よかったら解答のせてもらえませんか?
方針を理解したのですが、
行列のあたり苦手なのでコンパイルできません^^;



819 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 14:10:44 ]
program test(input, output);
const m=3;n=10;
type index=1..m;
var a : array[index,index] of real;
   x ,y : array[index] of real;
   i,k,h : index ;
   s :real ;

begin
{数値代入}
 a[1,1] := 1/2 ; a[1,2] := 1/3 ; a[1,3] := 0  ; x[1] := 1 ;
 a[2,1] := 1/2 ; a[2,2] := 1/3 ; a[2,3] := 2/3 ; x[2] := 0 ;
 a[3,1] := 0  ; a[3,2] := 1/3 ; a[3,3] := 1/3 ; x[3] := 0 ;

{ y =Ax の計算を10回}
 for h:= 1to n do
 begin
{ y =Ax の計算1回分}
   for i := 1 to m do
   begin
     s := 0;
     for k:=1 to m do
     begin
       s := s + a[i,k] * x[k] ;
     end;
     y[i] := s ;
   end;
   x:=y ;
 end;
{n秒後にA,B,Cにいる確率、順に}
 for i := 1 to m do writeln(x[i]);
end.

820 名前:デフォルトの名無しさん [2008/12/09(火) 17:24:10 ]
Delphiの宿題があるのですが、ダイヤモンドパターンのプログラムを教えてください(泣)

821 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 18:37:49 ]
>>63-

822 名前:デフォルトの名無しさん [2008/12/12(金) 00:29:38 ]
課題で1〜nの総和計算の発展形の1〜n^2の総和計算を求める、というものがありました。
1〜nの挿話計算が
var i,sum,n:integer;
begin
write('n='); readln(n);
sum := 0;
for i:=1 to n do sum := sum +i;
writeln('Sum(1〜n)=',sum)
end;
となるのはわかったんですが、これをn^2にするときは、
上のプログラムのnをsqr(n)に変えるだけでできますか?

823 名前:デフォルトの名無しさん [2008/12/12(金) 00:58:27 ]
822です。引き続け申し訳ないですが、
6つの4,89,6,2,23,21という数字を小さいものから並び替えるプログラム
procedure sort;
const N = 6;
const d: array[1 .. N] of integer = (4,89,6,2,23,21);
var i, j, w: integer;
sd: array[1 .. N] of integer;
begin
for i := 1 to N do sd[i] := d[i];
for i := 1 to N do
for j := 1 to N - i do
if sd[j] > sd[j+1] then begin
w := sd [j];
sd[j] := sd[j+1];
sd[j+1] := w
end;
writeln('Sorted date :');
for i := 1 to N do write('sd[',i:3,'] '); writeln;
for i := 1 to N do write(sd[i]:7,' ');writeln;
readln
end;
を改良して、6つの数字のうち初めのM個だけを並び替えるという
プログラムのつくりかたがわかりません。
どなたか教えていただけたら幸いです。

824 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 03:43:02 ]
>>822
sum := sum +sqr(i);

>>823
const M = ;
for i := 1 to N do sd[i] := d[i];
for i := 1 to M do
for j := 1 to M - i do


825 名前:822 mailto:sage [2008/12/12(金) 03:50:58 ]
>>824
ありがとうございます!助かりました!

826 名前:デフォルトの名無しさん [2008/12/13(土) 00:44:55 ]
文字列に対して、任意の位置に新たな文字列お挿入する。入力は、挿入対象の文字列(text1)、挿入文字列(text2)、挿入開始位置(pointer),
及び挿入する文字列の長さ(length)とし、出力は、挿入済みの文字列(text)とする。
挿入例
text1:=`abcdef____`;
text2:=`ghi_______`;
pointer:=4;
length:=3;

text=`abcghidef_`

この問題を教えてください。





827 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 10:16:41 ]
いやです

828 名前:デフォルトの名無しさん [2008/12/13(土) 15:45:28 ]
何故ですか?



829 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 21:04:05 ]
日本語も満足に書けないやつがなんでプログラミングなんかやってんの?

830 名前:デフォルトの名無しさん [2008/12/14(日) 00:51:19 ]
いや、教科書をそのまま載せたのですが…

831 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 02:02:03 ]
日本語も満足に書けないやつがなんで教科書なんか書いてんの?

832 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 02:48:55 ]
おめこ

833 名前:デフォルトの名無しさん [2008/12/17(水) 16:48:34 ]
再帰のプログラムが苦手で次の2つのプログラムの書き方が分かりません。
再帰を使用してプログラム例を示していただけないでしょうか。


値の配列を受け取り,その並べ替え(順列)をすべて出力する再帰の手法を
使用したプログラムを書きなさい.ただし,値は1からnまでの数値であり、
n<=10とする. n=1,n=2,n=3の場合についてプログラムを実行しなさい。


「ハノイの塔」のパズルを解く再帰の手法を使用したプログラムを書きなさ
い。(円盤の枚数はnとする)n=2,n=3,n=4の場合についてプログラムを実行
しなさい。

834 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:54:16 ]

program prog1(input, output);
var n : integer;

 procedure hanoi(var n:integer ; a,b,c:char);
 begin
  if n>0 then
  begin
   hanoi(n-1,a,c,b);
   writeln(n,'番の板を',a,'から',b,'に移動');
   hanoi(n-1,c,b,a);
  end;
 end;

begin
  write('円板の枚数n=');
  read(n);
  hanoi(n, 'a' , 'b' , 'c' );
end.

835 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:55:39 ]
× procedure hanoi(var n:integer ; a,b,c:char);
○ procedure hanoi(n:integer ; a,b,c:char);


836 名前:デフォルトの名無しさん [2008/12/18(木) 11:42:26 ]
>>834
すみません。
コンパイルをしてみたら「char」の部分がエラーになって動かないのですが・・・
なにぶん古いコンパイラですので・・・、お手数をおかけいたします。

837 名前:デフォルトの名無しさん [2008/12/18(木) 11:43:40 ]
835の通りに直しても動きませんでした。
どうやら定義されてない・・・みたいです。

838 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:44:54 ]
なにが定義されてないって出たの?



839 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:35:23 ]
全角スペースのままとか?


840 名前:デフォルトの名無しさん [2008/12/19(金) 19:25:58 ]
>>839
スペース消してみたら上手くいきました。
ありがとうございます。

「1」の方はやはり難しいのでしょうか。

値の配列を受け取り,その並べ替え(順列)をすべて出力する再帰の手法を
使用したプログラムを書きなさい.ただし,値は1からnまでの数値であり、
n<=10とする

841 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:18:37 ]
>>840
アクセスでお菓子とジュース

842 名前:デフォルトの名無しさん [2008/12/20(土) 01:26:13 ]
>>841
被るといけねーから少し中を変えとけよ

843 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:43:23 ]
>>842
おkk

844 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:51:41 ]
m,h, : permutation
与えられたリストの要素を並べ替えてできる全てのリストのリストを返す関数。

ほぼHaskell版のコピー。リストをシフトさえるshift関数などがちょっと違っている。

(* Standard ML *)
fun permutation [] = [[]]
| permutation list =
let
fun revolve [] = [[]]
| revolve l = let
fun shift 0 _ = []
| shift n (x::xs) = (x::xs) :: (shift (n-1) (xs@[x]))
in
shift (length l) l
end
fun permutation' [] = [[]]
| permutation' (x::xs) = map (fn y => x::y) (permutation xs)
in
foldr (op @) [] (map permutation' (revolve list))
end;

(* 実行結果 *)
- permutation [1,2,3];
val it = [[1,2,3],[1,3,2],[2,3,1],[2,1,3],[3,1,2],[3,2,1]] : int list list
- permutation [1,2,3,4];
val it =
[[1,2,3,4],[1,2,4,3],[1,3,4,2],[1,3,2,4],[1,4,2,3],[1,4,3,2],[2,3,4,1],
[2,3,1,4],[2,4,1,3],[2,4,3,1],[2,1,3,4],[2,1,4,3],...] : int list list
-


845 名前:841,843 mailto:sage [2008/12/20(土) 09:25:22 ]
>>842
どこで渡すー?

846 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:13:13 ]
program prog1(input, output);
 var i,n : integer;
   p : array[1..10] of integer ;

 procedure perm(i,n:integer);
  var j,t :integer;
  begin
   if i<n+1 then
    begin
     for j:=i to n do
     begin
      t:=p[i] ; p[i]:=p[j] ; p[j]:=t ;
      perm(i+1,n);
      t:=p[i] ; p[i]:=p[j] ; p[j]:=t ;
     end;
    end
   else
    begin
     for j :=1 to n do write(p[ j ],' ');
     writeln('');
    end;
  end;

begin
  write('n='); read(n);
  for i := 1 to n do p[i]:=i;
  perm(1,n);
end.

847 名前:デフォルトの名無しさん [2008/12/20(土) 10:32:15 ]
>>845
どこで?
おれはフツーにレポboxに放り込むけど…

848 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:40:57 ]
>>846
アルゴリズム事典かな?
もれも、ほとんど同じになった。





849 名前:デフォルトの名無しさん [2008/12/20(土) 10:46:37 ]
1、2共にちゃんと動作しました。
ありがとうございました。

850 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:47:40 ]
C言語によるはじめてのアルゴリズム入門の初版

851 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:58:01 ]
>>849
引数で配列渡すようにしないとだよ

852 名前:デフォルトの名無しさん [2008/12/20(土) 11:13:48 ]
そうなのですか?

853 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 12:14:24 ]
>値の配列を受け取り
って書かれてるから渡したほうがいいかなーと

854 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:25:00 ]
Pascal
jp.youtube.com/watch?v=yzJqYl9EHgA


855 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:04:33 ]
>>846の8行目
×  if i<n+1 then
○  if i<n then
動作結果は同じだけど一応訂正

856 名前:デフォルトの名無しさん [2008/12/25(木) 20:10:48 ]
丸投げOKですか?
Delphi使用で、for、if、arrayまで習っています。

・生年月日と今日の日付を計算して、満年齢を計算する
・sin,cos,tanの数表を作る

857 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 20:14:24 ]
どうでもいいミスですが一応訂正

×生年月日と今日の日付を計算して、満年齢を計算する
○生年月日と今日の日付を入力して、満年齢を計算する

858 名前:デフォルトの名無しさん [2008/12/25(木) 20:34:15 ]
宿題の季節っつーか来年提出か
締切日は書いた方がいい



859 名前:856 [2008/12/25(木) 21:12:39 ]
>>858
すいません。締切は1月5日です。
諸事情で締切日までDelphiが使えない状態になりました。

860 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:30:36 ]
パスカルだけど
program prog1(input, output);
var birthday,today,y: integer ;
begin
writeln('ex. 20081226');
write('birthday = ');readln(birthday);
write('today = ');readln(today);
y:=trunc((today-birthday)/10000);
writeln(y);
end.

誕生日が来て1才年をとる場合なら簡単。
誕生日の前日に1才年をとる場合は難しいな

861 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:35:53 ]
program prog1(input, output);
const pi=3.1415926535;
var i:integer;
s,c,t:real;
begin
writeln('deg','sin':8,'cos':10,'tan':10);
for i := 0 to 360 do
begin
s := sin(i*2*pi/360);
c := cos(i*2*pi/360);
if (i mod 15) = 0 then
begin
if (i mod 180 = 90) or (c= 0) then
writeln(i:3,s:10:5,c:10:5,'-------':10)
else
writeln(i:3,s:10:5,c:10:5,s/c:10:5) ;
end;
end;
end.

862 名前:856 [2008/12/26(金) 16:46:53 ]
どうもありがとうございました

863 名前:デフォルトの名無しさん [2009/01/08(木) 01:10:29 ]
来週火曜までにお願いします。Delphiです。

・誕生日まで何日あるかを計算する。ただしarrayでなくcase文を使って設定すること。
・何個かのデータをもらって、その平均、総和、最大値、最小値、標準偏差を計算する。
・プロ野球などのプロスポーツのデータ(勝ち数、負け数、引き分け数)を入力したら、
 各チームの勝率を計算し、順位をつける。
・学籍番号と得点をデータとして入力し、これを得点の高い順に並べ替え、順位を付けて表示する。

864 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:23:00 ]
お断りします

865 名前:デフォルトの名無しさん [2009/01/10(土) 11:48:11 ]
>> 863
arrayではなくCaseを使って設定するって、どういう意味?

 

866 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 12:12:23 ]
【 課題 】100マス計算をするプログラムを書いてください。
【 用語 】下記
【 期限 】1/15くらいまで
【 Ver  】
【 補足 】
プログラムがランダムに出題し、人間が100個の
マスに回答を入力し、確認ボタンを押すと
全問正解なら回答にかかった時間を表示して終了。
間違った場合は間違った場所にカーソルが止まり、
別の値が入力されるまで待ちます。
横10個、縦10個の数字は各々11〜99までの乱数、
演算は +,-,x のみでよいです。
よろしくおねがいします。


867 名前:863 [2009/01/11(日) 20:32:54 ]
>>865
以下のような設定は不可とのことです。

var days array[1..12] ofinteger;
var
:
:
begin
 days[1]:=31;days[2]:=29;...(同様に);days[12]:=31;

868 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:16:31 ]
>>863
で、どの課題が残ってるのかね?






869 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:18:35 ]
program prog1(input, output);
var i ,x1,x2,x3,y1,m1,d1,y2,m2,d2: integer;

 function calcd(y,m,d:integer):integer;
 var i,leapday,years,days,mdays:integer;
 begin
  years := y-1;
  days := d;
  days := days + years * 365;
  days := days + trunc (years/4) - trunc (years/100) + trunc (years/400);
  if ( (y mod 4 =0) and (y mod 100 <>0) and (y mod 400 =0) ) then
    leapday := 1
  else
    leapday := 0;
  for i:=1 to m - 1 do begin
    case i of
     1,3,5,7,8,10,12 : mdays := 31;
     4,6,9,11 : mdays := 30;
     2 : mdays := 28 + leapday ;
    end;
    days := days + mdays;
  end;
calcd:=days;
 end;

begin
  writeln('next birthday'); write('year=');readln(y1); write('month=');readln(m1); write('day=');readln(d1);
  writeln('today'); write('year=');readln(y2); write('month=');readln(m2); write('day=');readln(d2);
  x1:=calcd(y1,m1,d1); x2:=calcd(y2,m2,d2); x3:=x1-x2;
  write('tanjobi made ',x3,' nichi');
end.

870 名前:デフォルトの名無しさん [2009/01/19(月) 02:10:07 ]
4行4列の行列の各要素を読み込み、ファイルへ行列形式で書き込ませるプログラムを作れ。

全然わかりません。お願いします。
火曜日までです。

871 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 02:16:16 ]
cat 行列1.txt > 行列2.txt

872 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 19:06:58 ]
ファイルの入出力関係って難しいよね

873 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 20:09:01 ]
高校数学では行列を教えなくなるらしいね。

874 名前:空落ち ◆SniperBHgo mailto:sage [2009/01/21(水) 20:17:38 ]
>>870
行列形式ってなんだろう

program Mat(input,output,ExtFile);
const
 COL = 4;
 ROW = 4;

type
 Matrix = packed array [1..COL,1..ROW] of integer;
 MatrixFile = file of Matrix;

var
 ExtFile : MatrixFile;
 i : 1..COL;
 j : 1..ROW;
 InputMatrix : Matrix;

begin
 rewrite( ExtFile, 'ExtFile' );
 for i := 1 to COL do begin
  for j := 1 to ROW do begin
   write( '[', i, ',', j, ']?:' );
   readln( InputMatrix[i,j] )
  end
 end;
 write( ExtFile, InputMatrix )
end.


875 名前:デフォルトの名無しさん [2009/01/27(火) 16:40:44 ]
Delphi6.0で
(1)2つの自然数nとmが与えられたとき、
nとmの最大公約数を出力するプログラムを書け。

(2)与えられた3×3行列の行列式を計算するプログラムを書け
(行列は2次元配列で表すこと。)

という課題はどうやってとけばいいのでしょうか?


876 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:36:09 ]
頭を使って解けばいいと思います

877 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:48:58 ]
頭じゃなくてDelphi6.0でって書いてあるのに・・・

878 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 02:31:19 ]
>>875
動作確認なんてしてないから間違ってたらすまん
改行大杉って怒られたんでつめて書く
type
  TMatrix3x3 = array[0..2][0..2]of Double;
function det3x3(Mat:TMatrix3x3):Double;
var
  i,j:Integer;
  hoge:Extended;
begin
  Result:=0;
//Plus
  for i:=0 to 2 do begin
    hoge:=1;


    for j:=0 to 2 do
      hoge:=hoge*Mat[j][(i+j)mod 3];

    Result:=Result+hoge;
  
end;
//Minus
  for i:=0 to 2 do begin
    hoge:=1;
    for j:=0 to 2 do
      
hoge:=hoge*Mat[j][(3+i-j)mod 3];
  
  Result:=Result-hoge;
  end;
end;



879 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 02:32:32 ]
我ながら改行とかインデント崩れすぎワロタ

880 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 08:59:15 ]
大丈夫、環境によってはキチンとインデントされて見えてるから。
半角2文字づつ綺麗にインデントされたやつが。

881 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 10:09:12 ]
俺のとこもちゃんとなってるよ

882 名前:123 [2009/02/11(水) 17:58:34 ]
440!を881で割ったときの余りをRを求めよ。また、R2を881で割ったときの余りを求めよ。

883 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 01:16:47 ]
program prog1(input, output);
var i,ans:integer;
begin
ans := 1;
for i := 1 to 440 do
begin
ans := ans * i mod 881;
end;
writeln(ans);
readln;
end.


884 名前:123 [2009/02/12(木) 10:02:40 ]
さすがです!!!任務完了!

885 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:09:04 ]
[1] 授業単元:Pascal
[2] 問題文(含コード&リンク):
1から9までの数字を縦横方向に同じものが並ばないように下記の例のように並べる
並べ方が全部で何通りあるかとその並びをすべて列挙する
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:

534681297
685293714
948367125
153472869
426538971
261759483
817945632
379126548
792814356

886 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:25:52 ]
547 名前: デフォルトの名無しさん [sage] 投稿日: 2009/02/12(木) 17:07:40
Python の宿題ここで答えます Part 1
pc11.2ch.net/test/read.cgi/tech/1153585095/785
C/C++の宿題片付けます 122代目
pc11.2ch.net/test/read.cgi/tech/1232029287/542
Rubyの宿題教えてください。2限目
pc11.2ch.net/test/read.cgi/tech/1200175247/476

こんなんで数独の掲載料もらえるなら俺だって問題送りたい


887 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:40:20 ]
数独の条件はそれだけじゃないだろ。

888 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 13:11:36 ]
課題が全部列挙だとするとマジキチなサイズのレポートが出来上がる



889 名前:デフォルトの名無しさん mailto:sage [2009/04/09(木) 22:29:02 ]
ほしゅ

890 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 06:28:11 ]


891 名前:デフォルトの名無しさん [2009/04/29(水) 17:09:24 ]
>>882
おまいらpascalでなくlispでプログラムを書け

(labels ((fact (n) (if (= n 1) 1 (* n (fact (1- n))))))
(let* ((r (fact 440)) (r2 (* r r)))
(list (mod r 881) (mod r2 881))))

はい糸冬


892 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:39:17 ]
これはひどい

893 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 23:49:10 ]
7の(7の7乗)乗
の下一桁の数字は?

nの(nのn乗)乗
の下一桁の数字は?


894 名前:空落ち ◆SniperBHgo [2009/04/30(木) 00:35:53 ]
>>893

program test(output);
const
 N = 7;

var
 i, x : integer;

function Power(a,b:integer):integer;{aのb乗}
 var
  t, i : integer;
 begin
   t := 1;
   for i := 1 to b do begin
    t := t * a
   end;
   Power := t
 end;


begin
x := 1;
for i := 1 to Power( N, N ) do begin
 x := ( x * N ) mod 10
end;

writeln( x )
end.

895 名前:デフォルトの名無しさん [2009/04/30(木) 08:15:17 ]
>>894のプログラムはnが大きくなるとダメポ


896 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 18:15:07 ]
どうやってプログラム作ってもそれは同じことだと思うが
それともNが無限に近い数でも保持できる計算機がこの世に存在するの?バカなの?

897 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 18:39:42 ]
7の7乗なんて全部計算する必要ない。
中途の計算で下一桁だけ求め続ければいい。

898 名前:デフォルトの名無しさん [2009/04/30(木) 20:20:53 ]
>>896
そんなあなたに

(labels
((ps (n m) (if (= m 0) (mod n 10) (mod (expt (ps n (1- m)) n) 10))))
(defun pg (n) (ps n n)))

そんで

(pg 7)

ってやってみ 速攻で求まるから





899 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 22:01:09 ]
計算間違いがあるようです

900 名前:デフォルトの名無しさん [2009/04/30(木) 23:06:30 ]
計算まちがい以前にpascalのプログラムなんてNが2桁になると計算できないじゃん

ところでNが100以上の時の値を計算できる人いる?


901 名前:空落ち ◆SniperBHgo [2009/05/01(金) 00:33:48 ]
N^Nを計算することによる桁溢れの問題をなくしました.
でも,アルゴリズムを全く工夫していないから計算がとても重い.

program test(output);
const
 N = 10;
type
 ZeroToN = 0..N;
 OneToN = 1..N;
 OneToNPlusOne = 1..N+1;
 CountArr = array [1..N+1] of ZeroToN;
var
 count : CountArr;
 i, x : integer;
 EndFlag : boolean;

procedure Increment( var count : CountArr; a : OneToNPlusOne );
begin
 if ( count[a] <> N-1 ) then begin
  count[a] := count[a] + 1
 end
 else begin
  count[a] := 0;
  Increment( count, a+1 )
 end
end;

902 名前:空落ち ◆SniperBHgo [2009/05/01(金) 00:35:03 ]
begin{main}
for i := 1 to N+1 do begin
 count[i] := 0
end;

x := 1;
EndFlag := false;
repeat
 x := ( x * N ) mod 10;
 Increment( count, 1 );
 if ( count[N+1] = 1 ) then begin
EndFlag := true
 end
until EndFlag;

writeln( x )
end.

903 名前:デフォルトの名無しさん [2009/05/01(金) 03:25:08 ]
N=100 test=0 N=101 test=1
N=102 test=6 N=103 test=7
N=104 test=6 N=105 test=5
N=106 test=6 N=107 test=3
N=108 test=6 N=109 test=9
N=110 test=0 N=111 test=1
N=112 test=6 N=113 test=3
N=114 test=6 N=115 test=5
N=116 test=6 N=117 test=7
N=118 test=6 N=119 test=9
N=120 test=0 N=121 test=1
N=122 test=6 N=123 test=7
N=124 test=6 N=125 test=5
N=126 test=6 N=127 test=3
N=128 test=6 N=129 test=9
N=130 test=0

Real time: 0.028037 sec.
Run time: 0.026363 sec.
Space: 593392 Bytes
GC: 1, GC time: 0.011386 sec.

N=100~130の値を求めました。

そんなに重くなかったっす。


904 名前:デフォルトの名無しさん [2009/05/01(金) 03:33:49 ]
lispで4行で済むプログラムがなぜにpascalだと
アホほど長いんだ?
しかも遅いしな。


905 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 05:42:29 ]
0 1
6 7
6 5
6 3
6 9
0 1
6 3
6 5
6 7
6 9


906 名前:デフォルトの名無しさん [2009/05/01(金) 06:50:36 ]
7^n≡{7,9,3,1} (mod 10)
とループするので、指数の7^7が4で割っていくつ余るかが問題になる。
7^n≡{3,1} (mod 4)
から、
7^7≡3 (mod 4)
従って、
7^(7^7)≡3 (mod 10)
となる。


907 名前:デフォルトの名無しさん [2009/05/01(金) 07:09:50 ]
ある国のお話。
この国は一夫多妻制です。
しかし現在この国には男女はほぼ同じ割合いるので当然男が余ってしまいます。
そこで王様は一計を案じました。
次のような法律を作ったのです。

1.女児を産んだ者には経済的に援助し更に子作りに励んでもらう。
2.一度でも男児を産んだ者は以後決して子供を作ってはならない。

これには国の男性たちも大喜び。
数十年もたてば国は女性の比率がぐんと上がるだろうとみな思いました。

問題。
実際には男女比はどうなると思いますか?

908 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 07:54:05 ]
一つの正三角形をうまく切って、相似比1:1:2
の相似な図形3つに分けるにはどうしたらよいか。



909 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 13:13:25 ]
>>907
なんだっけ
女が上になってビンタしながらSEXすると
女が産まれやすいとか聞いた

910 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 13:36:53 ]
いや、ポイントは、

(1) 女をよろこばせない
(2) 浅いところで出す

だよ。
女が喜ぶほど酸が薄くなるらしい(=酸に弱いY 染色体が生き残りやすくなる)。
深いところに出す(=卵子への到達距離が短い)と、瞬発力のある
Y 染色体が勝つ可能性が高くなる。

911 名前:デフォルトの名無しさん [2009/05/01(金) 13:44:11 ]
女を増やすには>>910の方法を実践しなければダメだということだな。
>>907を実践しても男女の出生確立は変わらないので結局、女は増えないしな。

というわけでプログラムを考えるまでもなく結論が出てしまいました。


912 名前:デフォルトの名無しさん [2009/05/01(金) 13:48:36 ]
×確立
○確率

913 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 14:26:42 ]
>>910
ためになるスレだがあと1年早く聞きたかったな

914 名前:代記 [2009/05/26(火) 15:40:21 ]
二個の自然数nとkを適当に定めて、k個の黒石1と(n-k)この白石0を一列に並べる並べ方を、重複なくすべて列挙するプログラム
を作成して欲しいです。丸投げをしてしまって申し訳ないんですが、お願いします。

915 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 17:35:21 ]
nPk?

916 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 18:57:27 ]
>>914
1〜nの自然数からk個選ぶプログラムを考えればいいだけ

917 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 17:47:21 ]
ax2+bx+c=0の解を計算するプログラム(判別式D=b2-4acが負のときは、解が複素数であると出力するようにする)の作り方がわかりません。
丸投げですみませんが、どなたか知恵を貸してくださいです。お願いします。

918 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 18:40:51 ]
解の公式をプログラムで表現するだけだろ。



919 名前:デフォルトの名無しさん [2009/06/02(火) 23:15:50 ]
>>917
もう諦めた方がいいかもな。


920 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 03:31:29 ]
知恵だけなら

ぐぐれ

答えはある

921 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 13:41:11 ]
初歩的な問題だったorz
できました。ありがとうございます

922 名前:デフォルトの名無しさん mailto:sage [2009/06/03(水) 21:17:29 ]
まだ解決してません!早く答えをお願いします。
期限は明日の朝くらいでいいです。

923 名前:デフォルトの名無しさん [2009/06/04(木) 10:08:48 ]
>>922
パスカルは使った事が無いのでLispで作っときました。

(defun d (a b c)
(if (< (- (* b b) (* 4l0 a c)) 0l0) (print "解が複素数である")))

勝手にパスカルに直してください。


924 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 01:20:32 ]
言語はLispでも良かったのでそのまま提出しました。
ありがとうございます。

925 名前:デフォルトの名無しさん [2009/06/16(火) 01:52:25 ]
123456789の順に数字を並べて,数字の間に+,−を補うことで式を作り, その値が100になる組み合わせをすべて求め,その式を出力するプログラムを作成しなさい.
お願いします

926 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 18:08:51 ]
組み合わせはゼロだな。
全て足し合わせても100には満たない.

927 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 19:28:33 ]
小町算でしょ

928 名前:デフォルトの名無しさん mailto:sage [2009/06/16(火) 20:12:12 ]
>>926
頭固いなw



929 名前:デフォルトの名無しさん [2009/06/17(水) 00:09:26 ]
12345+6789だと少なくとも100は越えるな


930 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 20:00:47 ]
>>925に挑戦してるんだけど、プログラミング初心者には、難しめですか?
配列をfor文で回すので、良いのかな?
配列とかfor文って基本的な処理だと思うんだけど、うまく使えないんだよなぁ。
ネストしたループ文がゴチャゴチャしちゃって。

どなたかヒントいただけないでしょうか?
基本的な構造は、配列を使ったループ文で作ればいいのでしょうか?

931 名前:デフォルトの名無しさん mailto:sage [2009/06/17(水) 23:52:53 ]
ネストが嫌ならある程度の処理でまとめて関数にしなさい

932 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 01:40:24 ]
>>925 Pascalじゃないけど。
1:12-3-4+5-6+7+89=
2:123-4-5-6-7+8-9=
3:123-45-67+89=
4:123+4-5+67-89=
5:123+45-67+8-9=
6:12+3-4+5+67+8+9=
7:12+3+4+5-6-7+89=
8:1+23-4+56+7+8+9=
9:1+23-4+5+6+78-9=
10:1+2+3-4+5+6+78+9=
11:1+2+34-5+67-8+9=
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9479.txt

933 名前:930 mailto:sage [2009/06/18(木) 02:20:11 ]
>>932
おぉ、C言語ですね。
俺の頭では、難しすぎました。面白そうな例題だったんで、取り組んでみたんだけど。
最初は、配列とFor文の組み合わせで、やっていたんですけど、配列を連結するとなると、
どんどん複雑になって、分けわからなくなりました。
簡単に紙の上の手書きでやってみたんですけど、数回やっている内に組み合わせが
多くなってきて、混乱しました。

+、−、連結の3種類に分類すると言うことが、肝ですね。
連結がパターンの中の一つと考えられなかったのが、残念です。
掲載された処理、読んでみます。

934 名前:930 mailto:sage [2009/06/18(木) 02:44:28 ]
これは、自分が思ってるよりも複雑でした。
パターンが3種類ということ以外にも、配列を複数個使って回してるようです。
Delphi6 personalで、C言語からPascalに書き換えてみたいと思います。

>>925さんじゃないですけど、非常に勉強になります。
932さん、ありがとうございました。

935 名前:デフォルトの名無しさん [2009/06/18(木) 18:04:27 ]
 Pascalで書いてみた。
 932氏のプログラムと違うのは式を計算する方法だけ。
 ・・・だと思うんだけど、どう違うかまではまだ読みきれてない。
 結果は同じでした。

 FreePascalなんで変なオプション入ってる。
 あと、同じ理由で文字コードUTF-8です。
one.freespace.jp/amber_ale/text/kadai.pas

936 名前:デフォルトの名無しさん mailto:sage [2009/06/18(木) 22:53:12 ]
>>935
932さんも、935さんもネストが深くても、全体的にコードがすっきりして見やすいです。
課題をいかに分解し、一つ一つの処理にするかが、センスなんだなぁと思いました。
初心者には、勉強になります。

935さんのコードは、文字コードをSJISにして、オプションを一つ削除することで、
Delphi6 personalで実行できました。

937 名前:デフォルトの名無しさん [2009/06/23(火) 14:31:05 ]
integer変数nに適当な与えてnを素因数分解し、
その結果を表示するプログラムを作りなさい。

神様まってますっ!!

938 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 17:39:32 ]
そんな簡単なものも思いつかないようだとプログラム関係への道は止めた方が良い。



939 名前:デフォルトの名無しさん mailto:sage [2009/06/23(火) 18:08:16 ]
>>938
スレタイをいちおくまんかい嫁。

940 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 16:08:26 ]
>>939
お前は>>1を同じ数だけ読んでこい
>■全く分かってない阿呆も放置しないで優しく対応
これをやっただけだろ

941 名前:デフォルトの名無しさん [2009/06/24(水) 16:42:38 ]
>>937
できますた
lispで作るとこんなもんです。

(defun p (n)
(do ((x 2 (1+ x)) (y n))
((= y 1))
(do ((z x))
((/= 0 (mod y z)))
(print z)
(setf y (/ y z)))))


942 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 20:51:42 ]
>>937 C言語
/*
(defun p (n)
  (do ((x 2 (1+ x)) (y n))
    ((= y 1))
    (do ((z x))
      ((/= 0 (mod y z)))
      (print z)
      (setf y (/ y z))
    )
  )
)
*/
void p(int n) {
  int x, y, z;
  for(x=2, y=n; y != 1; x++) {
    for(z=x; y % z == 0; ) {
      printf("*%d", z);
      y = y / z;
    }
  }
}
int main() {
  int n;
  scanf("%d", &n);
  printf("1");
  p(n);
}






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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