# 配列の要素への代入 name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] name[ 3 ] = "d" test[ 3 ] = 90 p name p test # 最後の要素への追加 name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] name[ name.length ] = "F" test[ test.length ] = 70 p name p test # 平均点を求める@ name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] sum = 0 test.length.times{ |i| sum += test[ i ] } print( "平均点 --> " , sum / test.length ) # 平均点を求めるA name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] sum = 0 (0..test.length-1).each{ |i| sum += test[ i ] } print( "平均点 --> " , sum / test.length ) # 平均点を求めるB name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] sum = 0 test.each{ |i| sum += i } print( "平均点 --> " , sum / test.length ) # 平均点未満の名前を出力 name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] sum = 0 test.each{ |i| sum += i } average = sum / test.length print( "平均点未満は...\n" ) test.length.times{ |i| if average > test[ i ] then print( name[ i ] , ": " , test[ i ] , "点\n" ) end } # 最高点とその名前を出力 name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] max = 0 test.length.times{ |i| if test[ max ] < test[ i ] then max = i end } print( "最高点は" , name[ max ] , " の " , test[ max ] , "点です\n" ) # 最低点とその名前を出力 name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] min = 0 test.length.times{ |i| if test[ min ] > test[ i ] then min = i end } print( "最低点は" , name[ min ] , " の " , test[ min ] , "点です\n" ) # 検索@ name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] search = "B" name.length.times{ |i| if name[ i ] == search then print( search , " の点は " , test[ i ] , "点です\n" ) break end } # 検索A name = [ "A" , "B" , "C" , "D" , "E" ] test = [ 85 , 60 , 5, 100 , 50 ] line = ARGV[ 0 ] search = line.chomp name.length.times{ |i| if name[ i ] == search then print( search , " の点は " , test[ i ] , "点です\n" ) break end } # 二重ループ (0..9).each{ |x| (0..9).each{ |y| z = x*x + y*y print( " x = " , x , " y = " , y , ": z= " , z , "\n" ) } } # 二重ループの例@ (1..9).each{ |x| (1..9).each{ |y| printf( " %d×%d=%2d" , x , y , x * y ) } print( "\n" ) } # 二重ループの例A (1..9).each{ |x| (1..9).each{ |y| if x == y then print( "1 " ) else print( "0 " ) end } print( "\n" ) } # 二重ループの例B (1..9).each{ |x| (1..9).each{ |y| if x == (10-y) then print( "1 " ) else print( "0 " ) end } print( "\n" ) } # 二重ループの例C (1..9).each { |i| (1..i).each { |j| print( j )  }  print ( "\n" ) } # 二重ループの例D (1..9).each { |i| (1..(10-i)).each{ |j| print( j ) } print ( "\n" ) } # 二重ループの例E 11.times { |i| d = Math.sqrt( 100 - i*i ).to_i (1..d).each{ print( " " ) } ((d+1)..10).each{ print( "*" ) } print( "\n" ) } # 二重ループの例F 11.times { |i| d = Math.sqrt( 400 - 4*i*i ).to_i (1..d).each{ print( " " ) } ((d+1)..20).each{ print( "*" ) } print( "\n" ) } # 金利の計算@ r = 0.05 n = 10 m = 10000 (1..n).each{ |i| x = 10000.0 * ( 1.0 + r ) ** i.to_f printf( "%2d 年後は %d\n" , i , x.to_i ) } # 金利の計算A n = 10 m = 10000 (1..n).each{ |i| printf( "%2d 年後は " , i ) (1..10).each{ |j| r = j * 0.05 x = 10000.0 * ( 1.0 + r ) ** i.to_f printf( "%6d " , x.to_i ) } print( "\n" ) } # エラトステネスの篩: プログラム例@ sieve = Array.new(101) sieve.length.times { |i| sieve[i] = 1 } sieve[0]=0 sieve[1]=0 (2..sieve.length-1).each { |i| (i*2).step(sieve.length-1, i) { |j| sieve[j]=0 } } sieve.length.times { |i| print( "#{i} " ) if sieve[i] != 0 } # エラトステネスの篩: プログラム例A sieve = Array.new(101) sieve.length.times { |i| sieve[i] = i # ちょっと工夫 } sieve[0]=0 sieve[1]=0 (2..sieve.length-1).each { |i| (i*2).step(sieve.length-1, i) { |j| sieve[j]=0 } } sieve.each { |p| print( "#{p} " ) if p!=0 } # 配列の初期化@ sieve = Array.new(10).fill{ 1 } # 配列の初期化A sieve = Array.new(10).fill{ |i| i } # bubble sort のプログラム@ a=[ 4,1,8,2,6,5 ] p a (0..a.length-1).each{ |i| (a.length-2).downto(i) { |j| if a[j]>a[j+1] then w = a[j] a[j]=a[j+1] a[j+1]=w end } } p a # bubble sort のプログラムA a=[ 4,1,8,2,6,5 ] p a (0..a.length-1).each{ |i| (a.length-2).downto(i) { |j| if a[j]a[j+1] then w = a[j] a[j]=a[j+1] a[j+1]=w end } } p a