Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Ejercicios => Mensaje iniciado por: h0oke en 13 Junio 2009, 23:26 PM

Título: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 13 Junio 2009, 23:26 PM
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.





Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: Jubjub en 13 Junio 2009, 23:53 PM
EL 2 seria asi?:

Python
Código (python) [Seleccionar]

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:
Código (python) [Seleccionar]

n = raw_input()
a = 1
tmp = ""
while (a<=len(n)):
    tmp += n[len(n)-a]
    a +=1
print tmp


gracias por los ejercicios :D
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 13 Junio 2009, 23:59 PM
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;
}
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 14 Junio 2009, 00:02 AM
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...
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: Jubjub en 14 Junio 2009, 00:03 AM
Perfecto, quizas ahora haga alguno mas :D
Gracias ;)
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 14 Junio 2009, 00:10 AM
OK... cualquier duda consulten y trataremos de resolver entre todos.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: Jubjub en 14 Junio 2009, 01:48 AM
Ahi esta mi version del 5, espero que sea eficiente ;D
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 14 Junio 2009, 01:52 AM
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.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 14 Junio 2009, 03:22 AM
Los ultimos 3 en c++:
Código (cpp) [Seleccionar]
#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;
}

Código (cpp) [Seleccionar]
#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;
}


Código (cpp) [Seleccionar]
#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;
}
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: leogtz en 15 Junio 2009, 03:42 AM
El 2 en Batch:
Código (dos) [Seleccionar]
@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:
Código (dos) [Seleccionar]
@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:
Código (dos) [Seleccionar]
@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:
Código (dos) [Seleccionar]
@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.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 17 Junio 2009, 00:35 AM
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.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 17 Junio 2009, 01:11 AM
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;
}
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: j retirado en 21 Junio 2009, 03:24 AM
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;
}

Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: ny0x en 21 Junio 2009, 04:47 AM
el 2 en asm (el mas facil) conforme vaya mejorando mi uso de arrays pongo los otros (claro si no me da weba  :laugh: )

Código (asm) [Seleccionar]

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'
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 21 Junio 2009, 17:07 PM
x0ʎu
Muchas gracias, a esto quería llegar...
Diferentes soluciones, en diferentes lenguajes.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: ghastlyX en 21 Junio 2009, 20:36 PM
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)):
Código (cpp) [Seleccionar]
#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)):
Código (cpp) [Seleccionar]
#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)):
Código (cpp) [Seleccionar]
#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)):
Código (cpp) [Seleccionar]
#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):
Código (cpp) [Seleccionar]
#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 ;)
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 24 Junio 2009, 02:39 AM
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.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 24 Junio 2009, 03:08 AM
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;
}
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: VonN en 3 Julio 2009, 02:06 AM
El algoritmo para recorrer y mostrar el triangulo superior:

Código (cpp) [Seleccionar]
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:


Código (cpp) [Seleccionar]
for(int i=0,i<n;i++)
{
     for(int j=i;j<n;j++)
     {
          std::cout<<vec[i][j]<<std::endl;
     }
}
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: leogtz en 3 Julio 2009, 19:30 PM
El 2 en Perl:
Código (perl) [Seleccionar]
#!/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;
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: VonN en 7 Julio 2009, 02:06 AM
Recien comenzando con python:

Ejercicio 2:
Código (python) [Seleccionar]

f=1
n=input("Ingresa n:")
i=1
while(i<=n):
    f=f*i
    i=i+1
print "F:",f


Ejercicio3

Código (python) [Seleccionar]
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

Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: VonN en 7 Julio 2009, 02:20 AM
Ejercicio 4:

Código (python) [Seleccionar]
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
Código (python) [Seleccionar]

a=input("Ingrese numero")
while(a!=0):
    d=a%10
    a=a/10
    print "Digito:",d

   
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: VonN en 7 Julio 2009, 02:50 AM
Ejercicio 1. Variables indizadas:

Código (python) [Seleccionar]
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

Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: VonN en 7 Julio 2009, 21:46 PM
Programa para buscar primos en una matriz NxM, parecido al ejercicio 5 de FSend.

Código (python) [Seleccionar]
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
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: VonN en 8 Julio 2009, 15:48 PM
El 2 y el 4 en Pascal:

Código (pascal) [Seleccionar]
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.


Código (pascal) [Seleccionar]
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.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: VonN en 8 Julio 2009, 16:44 PM
Ejercicio inserión + búsqueda binaria. Tema: Variables indizadas unidimensionales:

Código (pascal) [Seleccionar]
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.
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 11 Julio 2009, 02:37 AM
Muy bien VonN, gracias por tu aporte!

Salu2!
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: Danther en 29 Julio 2009, 16:51 PM
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:

Código (java) [Seleccionar]

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
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: h0oke en 29 Julio 2009, 22:42 PM
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!
Título: Re: Algoritmia-Ejercicios introductorios.
Publicado por: Shadowofvilla en 4 Agosto 2009, 05:39 AM
muchas gracias por el aporte
saludos