Я написал этот код f# для создания зубчатого (непрямоугольного) массива.
open System
type MatrizIrregular() =
let irregular = Array2D.zeroCreate 5
member This.Inicializar() =
for f in 0 .. 4 do
printf "Introduzcal el número de columnas de la matriz de la fila %d: " f
let res = Console.ReadLine()
let col = Int32.Parse(res)
Array2D.set irregular f (col)
for c in 0 .. col - 1 do
printf "Introduzca el valor de la columna %d: " c
let res2 = Console.ReadLine()
Array2D.set irregular f c (Int32.Parse(res2))
member This.Mostrar() =
for f in 0 .. 4 do
for f in 0 .. irregular.[f,c].Lenght - 1 do
printf "%d " irregular.[f,c]
printf "\n"
let matriz = MatrizIrregular()
matriz.Inicializar()
matriz.Mostrar()
Я получаю ошибки в строках 11,15
Ожидалось, что это выражение будет иметь тип 'a[,], но здесь имеет тип int -> 'b[,]
и на строках 19,20
Оператор expr.[idx] был использован для объекта неопределенного типа на основании информации, предшествующей этому программному пункту. Рассмотрите возможность добавления дополнительных ограничений типа.
Я хочу сделать что-то вроде этого java-кода в f #
import java.util.Scanner;
public class MatrizIrregular {
public Scanner teclado = new Scanner(System.in);
public int[][] irregular;
public void inicializar(){
irregular = new int[5][];
for(int f=0;f<irregular.length;f++){
System.out.print("Introduzca el numero de columnas del la fila de la matriz "+f+": ");
int col = teclado.nextInt();
irregular[f] = new int[col];
for(int c =0; c<irregular[f].length;c++){
System.out.print("Introduzca el elemento de la columna "+c+": ");
irregular[f][c] = teclado.nextInt();
}
}
}
public void mostrar(){
for(int f=0;f<irregular.length;f++){
for(int c=0;c<irregular[f].length;c++){
System.out.print(irregular[f][c]+" ");
}
System.out.print("\n");
}
}
public static void main(String[] ar){
MatrizIrregular matriz = new MatrizIrregular();
matriz.inicializar();
matriz.mostrar();
}
}