Variables Simples.
Problema 1: Diseñe un diagrama para resolver una ecucación cuadrática.
Problema 2: N! se define como n!=1*2*3*4...*(n-1)*n, diseñe un algoritmo que calcule n! con n>=0.
Problema 3:Dada una lista de N números, desarrollar un algoritmo que permita determinar el más grande.
Problema 4: Diseñe un programa para encontrar el segundo número más grande de N números distintos.
Problema 5: Diseñe un programa que permita descomponer un número N en sus dígitos individualmente.
Problema 6: Dado un número real mostrar la cantidad de dígitos de la parte entera y luego la cantidad que posee la parte decimal.
Problema 7: Dado un número NUM que se encuentra en base B con 1<B<10, mostrar todos los enteros entre 0 y NUM en base B.
Ejemplo: NUM=10 B=2 Mostrar: 0 1 10
NUM=22 B=3 Mostrar: 0 1 2 10 11 12 20 21 22
Problema 8: Desarrollar un algoritmo para generar los primeros K primeros números primos de la serie Fibonacci.
Ejemplo:
K=6
1 2 3 5 13 89
Problema 9: Diseñar un diagrama que dado un número lo descomponga en sus factores primos, informando la cantidad de veces que dicho factor primo integra el número.
La idea es ir resolviendo los problemas de a poco en distintos lenguajes.
Se permitirán diagramas y pseudocódigo.
EL 2 seria asi?:
Python
n = int(raw_input())
a = 1
while (n!=0):
a = a * n
n = n - 1
print str(a)
El 5 me quedo de esta forma:
n = raw_input()
a = 1
tmp = ""
while (a<=len(n)):
tmp += n[len(n)-a]
a +=1
print tmp
gracias por los ejercicios :D
Primeros 3 en c:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a,b,c;
double d,x1,x2,x;
printf("Ingrese A: ");
scanf("%d",&a);
printf("Ingrese B: ");
scanf("%d",&b);
printf("Ingrese C: ");
scanf("%d",&c);
d=(pow(b,2))-(4*a*c);
printf("D: %f",d);
if(d>0)
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("X1: %f X2: %f ",x1,x2);
}
else
{
if(d==0)
{
x=-b/(2*a);
printf("Unica Solucion: %f",x);
}
else
{
printf("No hay solucion en reales");
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int f=1;
int n,i;
printf("Ingrese n: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
f*=i+1;
}
printf("F: %d ",f);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,x,big,i;
printf("N: ");
scanf("%d",&n);
printf("X: ");
scanf("%x",&x);
big=x;
for(i=1;i<n;i++)
{
printf("X: ");
scanf("%x",&x);
if(x>big)
big=x;
}
printf("El mas grande : %d",big);
return 0;
}
A partir del 4:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,p,s,aux,i,a;
printf("Ingrese cantidad: ");
scanf("%d",&n);
printf("Ingrese Primero: ");
scanf("%d",&p);
printf("Ingrese Segundo: ");
scanf("%d",&s);
if(p<s)
{
aux=p;
p=s;
s=aux;
}
for(i=0;i<n-2;i++)
{
printf("Ingrese Numero: ");
scanf("%d",&a);
if(p<a)
{
s=p;
p=a;
}
else
{
if(s<a)
s=a;
}
}
printf("Segundo mas grande: %d",s);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num,n,d;
printf("Ingrese Numero: ");
scanf("%d",&n);
num=n;
while(num!=0)
{
d=num%10;
num=num/10;
printf("%d, ",d);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int PE,PF,CE,CD;
printf("Numero: ");
scanf("%d.%d",&PE,&PF);
CE=0;
CD=0;
printf("%d\n",PE);
printf("%d\n",PF);
while(PE!=0)
{
PE=PE/10;
CE++;
}
while(PF!=0)
{
PF=PF/10;
CD++;
}
printf("Parte entera: %d, Parte decimal: %d",CE,CD);
return 0;
}
Jubjub Me olvidé, pon el lenguaje que utilizas, al parecer es python y está muy bien. :P Luego postearé algunos con vectores, luego matrices y asi...
Perfecto, quizas ahora haga alguno mas :D
Gracias ;)
OK... cualquier duda consulten y trataremos de resolver entre todos.
Ahi esta mi version del 5, espero que sea eficiente ;D
Supongo que esta bien el 5, ya que nose manejar muy bien python igualmente lo analicé y parece estar correcto. Buen trabajo, dentro de poco tendremos mas codes.
Los ultimos 3 en c++:
#include <iostream>
int main()
{
int NUM,B,D,N;
std::cout<<"Ingrese numero"<<std::endl;
std::cin>>NUM;
std::cout<<"Ingrese B"<<std::endl;
std::cin>>B;
for(int i=0;i<=NUM;i++)
{
N=i;
do
{
D=N%10;
N=N/10;
}while((N=0)||(D>=B));
if(D<B)
std::cout<<i<<std::endl;
}
return 0;
}
#include <iostream>
int main()
{
int K,P,S,C,N,i;
P=1;
S=1;
C=1;
std::cout<<"Ingresa cantidad"<<std::endl;
std::cin>>K;
std::cout<<"1"<<",";
while(C<K)
{
N=P+S;
i=2;
while(N%i!=0){i++;}
if(i==N)
{
std::cout<<N<<",";
C++;
}
P=S;
S=N;
}
return 0;
}
#include <iostream>
int main()
{
int NUM,N,i,c;
std::cout<<"Ingrese NUM"<<endl;
std::cin>>NUM;
N=NUM;
i=2;
while(N!=1)
{
c=0;
while(N%i==0)
{
c++;
N=N/i;
}
if(c!=0){std::cout<<i<<","<<c<<std::endl;}
i++;
}
system("pause");
return 0;
}
El 2 en Batch:
@echo off
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
if %numero% equ 0 (
echo.Error
exit /b 1
)
set /a "factorial=1"
for /l %%_ in (1 1 %numero%) do (
set /a factorial=factorial * %%_
)
echo.Factorial : %factorial%
pause>nul
exit /b 0
Salida:
Numero : 5
Factorial : 120
El problema 3 en Batch:
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numeros : "
if not defined numero (goto:code)
for /l %%_ in (1,1,%numero%) do (set /p "numeros[%%_]=numeros[%%_] : ")
set "mayor=!numeros[1]!"
for /l %%_ in (1,1,%numero%) do (
if !numeros[%%_]! geq !mayor! (set "mayor=!numeros[%%_]!")
)
set "mayor"
pause>nul
exit /b 0
Salida:
Numeros : 5
numeros[1] : 34
numeros[2] : 6
numeros[3] : 36
numeros[4] : 567
numeros[5] : 23
mayor=567
El 5 en Batch:
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
set "numero_=%numero%"
set /a "contador-=1"
:bucle
set "numero=%numero:~1%"
set /a "contador+=1"
if defined numero (goto:bucle)
:end
for /l %%_ in (0,1,%contador%) do (<nul set /p "=!numero_:~%%_,1! ")
pause>nul
exit /b 0
Salida:
Numero : 314592
3 1 4 5 9 2
El 6 en Batch:
@echo off
setlocal enabledelayedexpansion
:code
set /p "numero=Numero : "
if not defined numero (goto:code)
:: Checar que sea un numero real :
echo %numero% | find "." > nul 2>&1 || (
echo.El numero no es real.
exit /b 1
)
for /f "tokens=1-2 delims=." %%^1 in ("%numero%") do (
call:lenght %%^1
echo.El numero "!numero!" tiene !contador! de parte entera.
call:lenght %%^2
echo.El numero "!numero!" tiene !contador! de parte decimal.
)
pause>nul
exit /b 0
:lenght
set "cadena=%*"
set /a "contador=0"
:lenght2
set "cadena=%cadena:~1%"
set /a "contador+=1"
if defined cadena (goto:lenght2)
goto:eof
Salida:
Numero : 123.456456345
El numero "123.456456345" tiene 3 de parte entera.
El numero "123.456456345" tiene 9 de parte decimal.
Saludos.
Muchas gracias por su cooperación ahora pasamos al siguiente tema.
VARIABLES INDIZADAS UNIDIMENSIONALES
Problema1: Un vector está compuesto por una cantidad N de números distintos. Se deberá mostrar los dos más próximos.
Problema2: Inserta un elemento X dentro de un vector ordenado de N elementos. *En caso de que exista dar su posición.
a) Dar una solución implementando búsqueda secuencial.
b) Dar una solución implementando búsqueda binaria.
Problema3: Diseñar un algoritmo que permita ordenar una lista de alumnos con sus correspondientes calificaciones obtenidas en un parcial.
Se destaca que el elemento de nombre(X) tiene su correspondiente nota(X).
Problema 4: Diseñar un algoritmo que ordene números distintos de 0 mientras se vayan ingresando.
Problema 5: Dado un número en base B, donde 1<B<10, generar todos los enteros entre 0 y el número dado en base B.
Tener en cuenta el problema nº7 de variables simples.
Lenguaje C:
/*Problema1: Un vector está compuesto por
una cantidad N de números distintos. Se deberá mostrar los dos más próximos.*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
int x[100];
int i,j,n,p1,p2,d,men;
printf("Ingrese cantidad:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Ingrese numero\n");
scanf("%d",&x[i]);
}
men=abs(x[0]-x[1]);
p1=1;
p2=2;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i!=j)
{
d=abs(x[i]-x[j]);
if(d<men)
{
men=d;
p1=i;
p2=j;
}
}
}
}
printf("%d,%d",p1,p2);
getch();
return 0;
}
/*Problema2: Inserta un elemento X dentro de un vector ordenado de N elementos. *En caso de que exista dar su posición.
a) Dar una solución implementando búsqueda secuencial.*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int vector[]={1,1,3,5,4,5,6,3,9,10};
int i,j,k;
int n=9;
for(i=1;i<=10;i++)
{
j=1;
while(vector[i]!=vector[j])
{
j++;
}
if(j==i)
{
printf("Numero: %d, ",vector[i]);
for(k=i;k<=n;k++)
{
if(vector[i]==vector[k])
printf("%d\n",k);
}
}
}
return 0;
}
Edito: le agregue la opcion GeSHi, jeje. Ahora aprendi y queda mas lindo el código.
CitarProblema 8: Desarrollar un algoritmo para generar los primeros K primeros números primos de la serie Fibonacci.
Ejemplo:
K=6
1 2 3 5 13 89
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define FALSE 0
#define TRUE !FALSE
typedef int Bool;
int fib(double n);
Bool es_primo(int num);
int main()
{
int n; printf("Cantidad de primos a obtener: "); scanf("%d", &n);
int i=0, j;
for(j=0; j<n;)
{
if( es_primo(fib(i)) )
{
printf("%d ", fib(i));
j++;
}
i++;
}
printf("\n\n");
system("pause");
return 0;
}
int fib(double n)
{
double a = 1/sqrt(5);
double b = (1+sqrt(5))/2;
double c = (1-sqrt(5))/2;
double fib_n = a*pow(b, n) - a*pow(c, n);
return fib_n;
}
Bool es_primo(int num)
{
Bool b = TRUE;
int i, divisores=0;
if(num == 0)
return b=FALSE;
for(i=1; i<=num; i++)
{
if((num%i) == 0)
divisores++;
if(divisores > 2)
{
return b=FALSE;
}
}
return b;
}
el 2 en asm (el mas facil) conforme vaya mejorando mi uso de arrays pongo los otros (claro si no me da weba :laugh: )
format pe console
include 'c:\fasm\include\win32ax.inc'
entry main
.data
number dd ?
.code
main:
invoke printf,"Escribe un numero, 0 para salir: "
add esp,4
invoke scanf,"%d",number
add esp,8
cmp [number],0
jle salir
push [number]
call factorial
invoke printf,"El factorial es %d",eax
add esp,8
push 10
call [putchar]
jmp main
salir:
ret
factorial:
push ebp
mov ebp,esp
mov ecx,[ebp + 8]
mov eax,1
fact@L1:
cdq
mul ecx
dec ecx
cmp ecx,0
jg fact@L1
pop ebp
retn 4
section '.idata' import data readable
library msvc,'msvcrt.dll'
import msvc,printf,'printf',scanf,'scanf',putchar,'putchar'
x0ʎu
Muchas gracias, a esto quería llegar...
Diferentes soluciones, en diferentes lenguajes.
Para el 3, pongo varios algoritmos de ordenación en C++ que permiten ordenar un vector de reales:
Ordenación por inserción (O(n2)):
#include <iostream>
#include <vector>
using namespace std;
void ordena_por_insercion(vector<double>& v) {
for (int i = 1; i < v.size(); ++i) {
double x = v[i];
int j = i;
while (j > 0 and v[j-1]>x) {
v[j] = v[j-1];
--j;
}
v[j] = x;
}
}
Ordenación por selección (O(n2)):
#include <iostream>
#include <vector>
using namespace std;
int posicion_maximo(const vector<double>& v, int n) {
int pos = 0;
for (int i = 1; i <= n; ++i)
if (v[i] > v[pos]) pos = i;
return pos;
}
void ordena_por_seleccion(vector<double>& v, int n) {
if (n > 0) {
swap(v[posicion_maximo(v,n)],v[n]);
ordena_por_seleccion(v,n-1);
}
}
Ordenación por burbuja (O(n2)):
#include <iostream>
#include <vector>
using namespace std;
void ordena_por_burbuja(vector<double>& v) {
for (int i = 0; i < v.size(); ++i) {
for (int j = v.size()-1; j >= i + 1; --j) {
if (v[j] < v[j - 1] ) swap(v[j], v[j - 1]);
}
}
}
Y un par de algoritmos Divide&Conquer, primero Merge Sort (Ordenación por fusión, O(n log n)):
#include <iostream>
#include <vector>
using namespace std;
void fusiona(vector<double>& v, int e, int m, int d) {
int n = d-e+1;
vector<double> aux (n);
int i = e;
int j = m + 1;
int k = 0;
while (i <= m and j <= d) {
if (v[i] <= v[j]) {
aux[k] = v[i];
++i;
++k;
}
else {
aux[k] = v[j];
++j;
++k;
}
}
while (i <= m) {
aux[k] = v[i];
++k;
++i;
}
while (j <= d) {
aux[k] = v[j];
++j;
++k;
}
for (k = 0; k < n; ++k) v[k+e] = aux[k];
}
void ordena_rec(vector<double>& v, int e, int d) {
if (e < d) {
int m = (e+d)/2;
ordena_rec(v,e,m);
ordena_rec(v,m+1,d);
fusiona(v,e,m,d);
}
}
void ordena_por_fusion(vector<double>& v) {
ordena_rec(v, 0, v.size()-1);
}
Otro Divide&Conquer, Quicksort (O(n log n) en caso promedio, O(n2) en el peor caso, aunque en general es más rápido que el Merge Sort):
#include <iostream>
#include <vector>
using namespace std;
int pivota(vector<double>& v, int ini, int fin) {
double valor_pivote = v[ini];
int p1 = ini + 1, p2 = fin - 1;
while (p1 <= p2) {
if (v[p1] < valor_pivote) ++p1;
else if (v[p2] >= valor_pivote) --p2;
else {
swap(v[p1], v[p2]);
++p1;
--p2;
}
}
swap(v[ini], v[p1 - 1]);
return p1 - 1;
}
void quicksort_rec(vector<double>& v, int ini, int fin) {
if (ini >= fin - 1) return;
int pivote = pivota(v, ini, fin);
quicksort_rec(v, ini, pivote);
quicksort_rec(v, pivote + 1, fin);
}
void quicksort(vector<double>& v, int r) {
quicksort_rec(v, 0, r);
}
Un saludo de ghastlyX ;)
ESRUCTURAS ESTATICAS BIDIMENSIONALES
1-Mostrar una matriz por filas.
2-Mostrar una mtriz por columnas.
3-Mostrar una matriz por recorrido en caracol.
4-Mostrar los elementos que se encuentran en el triangular inferior.
------------------------------------------------------------------------------, junto a su diagonal.
5-Sea una tabla NxM ordenada por filas ascendentemente y dada una lista tamaño M² insertar en la fila correspondiente utilizando el método de Búsqueda Binaria.
6- Se posee una tabla de A de M filas y N columnas, conformada por números naturales. Se deberá mostrar la posición del menor número repetido junto con su frecuencia de aparición.
7- De una tabla NxM informar la posición del primer elemento primo de cada fila y la posición del primer elemento primo de la tabla.
1-2
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N,M,i,j;
int a[100][100];
printf("Ingrese cantidad filas(M)\n");
scanf("%d",&M);
printf("Ingrese cantidad columnas(N)\n");
scanf("%d",&N);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("Elemento\n");
scanf("%d",&a[i][j]);
}
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d",a[i][j]);
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N,M,i,j;
int a[100][100];
printf("Ingrese cantidad filas(M)\n");
scanf("%d",&M);
printf("Ingrese cantidad columnas(N)\n");
scanf("%d",&N);
for(j=0;j<N;j++)
{
for(i=0;i<M;i++)
{
printf("Elemento\n");
scanf("%d",&a[i][j]);
}
}
for(j=0;j<N;j++)
{
for(i=0;i<M;i++)
{
printf("%d",a[i][j]);
}
}
return 0;
}
El algoritmo para recorrer y mostrar el triangulo superior:
for(int i=0,i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
std::cout<<vec[i][j]<<std::endl;
}
}
Triangulo superior y diagonal:
for(int i=0,i<n;i++)
{
for(int j=i;j<n;j++)
{
std::cout<<vec[i][j]<<std::endl;
}
}
El 2 en Perl:
#!/usr/bin/perl
use strict;
use warnings;
print "Numero : ";
my $numero = <stdin>;
my $factorial = 1;
for(my $i = 1; $i <= $numero; $i++)
{
$factorial *= $i;
}
print $factorial;
exit;
Recien comenzando con python:
Ejercicio 2:
f=1
n=input("Ingresa n:")
i=1
while(i<=n):
f=f*i
i=i+1
print "F:",f
Ejercicio3
n=input("Ingresa Cantidad")
x=input("Ingresa Numero")
big=x
i=1
while(i<n):
x=input("Ingresa Numero")
if x>big:
big=x
i=i+1
print "El mas grande: ",big
Ejercicio 4:
n=input("Ingrese cantidad")
p=input("Ingrese primer numero")
s=input("Ingrese segundo numero")
if p<s:
aux=p
p=s
s=aux
i=1
while(i<=n-2):
a=input("Ingrese numero")
if p<a:
s=p
p=a
elif s<a:
s=a
i=i+1
print "Segundo numero mas grande",s
Ejercicio 5
a=input("Ingrese numero")
while(a!=0):
d=a%10
a=a/10
print "Digito:",d
Ejercicio 1. Variables indizadas:
import math
import random
n=input("Ingresa cantidad")
list=[0]*n
for i in range(n):
lista[i]=random.randint(0,100)
menor=math.fabs(lista[0]-lista[1])
print "Mostrar lista obtenida:"
i=0
tam=len(lista)
while(i<tam):
print lista[i]
i=i+1
menor=math.fabs(lista[0]-lista[1])
pos1=0
pos2=1
i=0
j=0
while(i<tam):
while(j<tam):
if i<>j:
vab=math.fabs(lista[i]-lista[j])
if vab<menor:
menor=vab
pos1=i
pos2=j
j=j+1
i=i+1
print "Menor distacia:",menor," POS1: ",pos1," POS": ",pos2
Programa para buscar primos en una matriz NxM, parecido al ejercicio 5 de FSend.
import random
n=int(input("Ingresa las filas\n"))
m=int(input("Ingresa las columnas\n"))
matriz=[[0 for x in range(m)]for y in range(n)]
i=0
j=0
while(i<n):
while(j<m):
matriz[i][j]=random.randint(0,100)
j = j+1
i = i+1
j = 0
i=0
j=0
print(matriz)
def buscaprimo(num):
PD=2
while((PD<=num/2) and (num%PD<>0)):
PD=PD+1
if((PD>num/2) and (num<>1)):
return 1
else:
return 0
i=0
j=0
while(i<n):
while(j<m):
z=matriz[i][j]
if(buscaprimo(z)==1):
print z
j=j+1
j=0
i=i+1
El 2 y el 4 en Pascal:
program factorial;
uses
crt;
var
i,n,f:integer;
begin
clrscr;
f:=1;
readln(n);
for i:=1 to n do
begin
f:=f*i;
end;
write(f);
readln(n);
end.
program Untitled;
uses
crt;
var
n,p,s,i,a,aux:integer;
begin
clrscr;
readln(n);
readln(p);
readln(s);
if p<s then
begin
aux:=p;
p:=s;
s:=aux;
end;
for i:=1 to n-2 do
begin
readln(a);
if p<a then
begin
s:=p;
p:=a;
end
else
begin
if s<a then
begin
s:=a
end;
end;
end;
write(s);
readln(n);
end.
Ejercicio inserión + búsqueda binaria. Tema: Variables indizadas unidimensionales:
program Untitled;
uses
crt;
var
e,l,r,n,m,i,j:integer;
a: array[1..100] of integer;
begin
clrscr;
writeln('Ingrese cantidad elementos');
readln(n);
writeln('Ingreso de elementos');
for i:=1 to n do
begin
readln(a[i]);
end;
writeln('Lista ingresada:');
for i:=1 to n do
begin
write(a[i],',');
end;
writeln('Ingrese e buscado');
readln(e);
l:=1;
r:=n+1;
while l<r do
begin
m:=((l+r)div 2);
if a[m]<e then
begin
l:=m+1;
end
else
begin
r:=m;
end;
end;
if a[r]=E then
begin
writeln('Su posicion es:');
write(r);
end
else
begin
for j:=n downto r do
begin
a[j+1]:=a[j];
end;
a[r]:=e;
writeln('Se produjo una insercion');
end;
readln();
end.
Muy bien VonN, gracias por tu aporte!
Salu2!
Las matematicas no son mi fuerte, pero espero no haberme equivocado con lo que se pedia:
El primer ejercicio y el segundo juntos en Java:
import java.io.*;
public class Main{
private BufferedReader bf;
public Main(){
bf = new BufferedReader(new InputStreamReader(System.in));
}
private int PedirFilas() throws IOException{
int numFilas = 0;
System.out.println("Introduce el numero de filas:");
String filas = bf.readLine();
try{
numFilas = Integer.parseInt(filas);
if(numFilas < 0)
numFilas = Math.abs(numFilas);
}catch (Exception e){
System.out.println("El numero introducido no es valido");
System.exit(1);
}
return numFilas;
}
private int PedirColumnas() throws IOException{
int numColumnas = 0;
System.out.println();
System.out.println("Introduce el numero de columnas:");
String columnas = bf.readLine();
try{
numColumnas = Integer.parseInt(columnas);
if(numColumnas < 0)
numColumnas = Math.abs(numColumnas);
}catch (Exception e){
System.out.println("El numero introducido no es valido");
System.exit(1);
}
return numColumnas;
}
private void MostrarMatriz(int filas, int columnas) throws IOException{
int numLectura = 0;
int [][] matriz = new int[filas][columnas];
System.out.println();
System.out.println("Indicame como quieres que se muestre.");
System.out.println("-------------------------------------");
System.out.println("1 - Por filas");
System.out.println("2 - Por columnas");
String lectura = bf.readLine();
InicializarMatriz(matriz, filas, columnas);
try{
numLectura = Integer.parseInt(lectura);
if(numLectura != 1 && numLectura != 2){
System.out.println("El numero introducido no es valido");
System.exit(1);
}
}catch (Exception e){
System.out.println("El numero introducido no es valido");
System.exit(1);
}
System.out.println();
if(numLectura == 1){
for(int f = 0; f < filas; f++){
System.out.println("Fila "+(f+1));
for(int c = 0; c < columnas-1; c++){
System.out.print(matriz[f][c]);
System.out.print(" -- ");
}
System.out.print(matriz[f][columnas-1]);
System.out.println();
}
}else{
for(int c = 0; c < columnas; c++){
System.out.println("Columna "+(c+1));
for(int f = 0; f < filas-1; f++){
System.out.print(matriz[f][c]);
System.out.print(" -- ");
}
System.out.print(matriz[filas-1][c]);
System.out.println();
}
}
}
private void InicializarMatriz(int[][] matriz, int filas, int columnas) {
for(int f = 0; f < filas; f++){
for(int c = 0; c < columnas; c++){
matriz[f][c] = (int)(Math.random()*100);
}
}
}
public static void main(String[] args) throws IOException {
Main main = new Main();
main.MostrarMatriz(main.PedirFilas(), main.PedirColumnas());
}
}
Pd: O java usa mucho codigo, o yo soy muy torpe... T.T XD
Nunca he estudiado Java, pero puedo apreciar que te esmeras más en la "interfaz" que en el algoritmo del problema. Espero que se de una pasada Amerik@no para chekar el problema.
Un saludo!
muchas gracias por el aporte
saludos