Bienvenida

Hola, bienvenidos a un espacio donde podrán ver los programas básicos que te han provocado más de un dolor de cabeza. Los programas están hechos mediante dos editores de textos de programación, uno es C++ y el otro es PythonG, éstos son conocidos por su simplicidad y facilidad para poder entrar al mundo de la programación. También agregaremos comentarios explicativos para cada programa con el fin de dejar más comprensible la lectura de éstos.

Esperamos les sea de utilidad y puedan despejar todas sus dudas.

sábado, 14 de agosto de 2010

Borrar espacios de una frase c++

#include <stdio.h>
#include <stdlib.h>

#define MAX 10000 // ahora al colocar max va valer 10000

void drop_blanks( char frase[MAX] )
{
     int i, j;
     // se copia esta frase en un nuevo arreglo sin espacios
     for( i = 0 ; frase[i] != '\0' ; i++ )
     {
          if( frase[i] == ' ' )
          {
              for( j = i+1 ; frase[j] != '\0' ; j++ )
              {
                   frase[j-1] = frase[j];
              }
              frase[j-1] = '\0';
             
          }
     }
}


main()
{
      char texto[MAX];
      printf ("\n\tBorra espacios\n\n escribe la frase:");
      gets( texto );
     
      drop_blanks( texto ); //se llama la funcion
     
      printf( "Sin espacios : %s\n" , texto );
      system( "pause" );
}

viernes, 13 de agosto de 2010

Matriz, saltos de una rana en una habitacion

Aquí veremos la creación de una matriz y a la vez el cambio de los datos de cada matriz.
La rana, se mueve de forma vertical y horizontal, donde los movimientos son al azar, también se consideran los saltos que se dirigen contra la pared de la habitación.


from random import randint
from time import sleep
def salto(i,j,habitacion):
  x=randint(1,4)
  if x==1:
    i=i+1
  if x==2:
    i=i-1
  if x==3:
    j=j+1
  if x==4:
    j=j-1
  if i<0:
    i=i+1
  if j>len(habitacion[0])-1:
    j=j-1
  if j<0:
    j=j+1
  if i>len(habitacion)-1:
    i=i-1
  return i,j
def listo(habitacion):
  j=0
  sum=0
  while j!=len(habitacion):
    i=0
    while i!=len(habitacion[0]):
      sum=sum+habitacion[j][i]
      i=i+1
    j=j+1
  return sum
def imprime_matriz(m):
  i=0
  while i<len(m):
    print m[i]
    i+=1
m=int(raw_input("columnas:"))
n=int(raw_input("filas:"))
h=0
habitacion=[]
while h!=n:
  habitacion.append([0]*m)
  h=h+1
saltos=0
baldosas=0
j=0
i=0
while listo(habitacion)!=m*n:
  if habitacion[i][j]==0:
    baldosas=baldosas+1
    habitacion[i][j]=1
  i,j=salto(i,j,habitacion)
  saltos=saltos+1
  imprime_matriz(habitacion)
  sleep(0.1)
  clear_output()
  
print "saltos:%d\nbaldosas:%d"%(saltos,baldosas)

Cuantos Tiket sodexo y vuelto?

      #include <stdio.h>
      #include <stdlib.h>
      #include <math.h>
    
      main()
      {
            int T,C,V,A;
            printf("Ingrese el Total de su compra");
            scanf( "%d" , &T );
            A = (1300);
            C = ( T/A);
            V = ( T%1300);
            printf( "LOS TIKET SODEXOS SON:%d\n" , C);
            printf( "Y SU VUELTO ES:%d\n" , V);
            system("pause");
      }

Triangulo rectangulo C++



#include <stdio.h>
#include <stdlib.h>

main ()
{
     int i,j,h;
     printf ("ingrese la altura del triangulo rectangulo: ");
     scanf ("%d",&h);
    
     for(i=1;i<=h;i++)
     {
        for (j=0;j<i;j++)
            {
            printf ("*"); // cada linea imprime * y suma el cont.
            }
        printf ("\n"); // cuando llegue cada linea se salta una
     }
system ("\n\npause");
}

Juego: Toque y Fama c++

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main ()
{
     srand (time(NULL));
       
     int clave,numero,c1,c2,c3,n1,n2,n3,i=1,toque,fama,menu2,opc;
     int menu,opc2;
     printf ("Toque y Fama\n");
     clave = (rand ()%899+100);
    
     printf ("\n\n\nIntenta adivinar mi numero!\nIngrese un numero de tres cifras: ");
     scanf ("%d",&numero);
     if ((numero<99)||(numero>1000))
      
        printf ("error, el numero ingresado no es de tres cifras");
   
     else
     {   
          while (numero!=clave)
          {     
                 c1= clave/100;
                 c2= (clave%100-clave%100%10)/10;
                 c3= clave%100%10;
               
                 n1= numero/100;
                 n2= (numero%100-numero%100%10)/10;
                 n3= numero%100%10;
                
                 toque = 0;
                 fama  = 0;
         
          if ((n1==c1)||(n2==c2)||(n3==c3)||(n1==c2)||(n1==c3)||(n2==c1)||(n2==c3)||(n3==c1)||(n3==c2))
         
          {            
          if (n1==c1)
             fama++;                    
          if (n2==c2)
             fama++;       
          if (n3==c3)
             fama++;         
          if (n1==c2)
             toque++;     
          if (n1==c3)
             toque++;        
          if (n2==c1)
             toque++;           
          if (n2==c3)
             toque++;           
          if (n3==c1)
             toque++;
          if (n3==c2)
             toque++;
                                   
          if (toque==1)
             printf ("Tu tienes un toque\n");
         
          if (toque==2||toque==3)
              printf ("Tu tienes %d toques\n",toque);
         
         
          if (fama==1)
             printf ("tu tienes una fama\n");
         
          if (fama==2||fama==3)
              printf ("tu tienes %d famas\n",fama);        
          }
         
          else
               {
               printf ("\nNo tienes ningun acierto intentalo nuevamente");}
        
          printf ("\n\nIngresa un nuevo numero: ");
          scanf ("%d",&numero); 
         
          i++;      
          }
      }
      printf ("has acertado\nTe demoraste %d Turnos\n",i);
      system ("pause");
     }

Funciones de Moda y Promedio aplicadas a una lista de datos

Estos operadores son utilizados para sacar conclusiones de una encuesta, con el fin de saber resultados objetivos de cantidad de gustos o preferencias de cualquier tipo.
En el programa se agrega al final un ejemplo de 3 listas de las cuales se calcula de cada una el promedio y la moda:


def moda(x):
  a=0
  b=0
  c=0
  d=0
  while a!=len(x):
    while b!=len(x):
      if x[a]==x[b]:
        c=c+1
      b=b+1
    b=0
    if c>d:
      d=c
      e=x[a]
    c=0
    a=a+1
  return e
def prom(x):
  i=0
  prom=0
  while i!=len(x):
    prom=prom+x[i]
    i=i+1
  i=float(i)
  prom=prom/i
  return prom
a=29,29,28,27,25,25,25,24,22,18,18,18,18,18#estan ahi
b=29,28,28,27,27,25,25,25,25,25,24,18,18#no les gusta
c=29,28,27,26,25,25,24,22,21,21,21#no tan ni ahi
print prom(a),prom(b),prom(c),moda(a),moda(b),moda(c)

Juego: Toque y Fama PythonG

 En este juego, el computador genera 4 números al azar entre el 0 y el 9, entonces, nosotros probaremos con 4 números que elegiremos para comprobar si existen coincidencias de posición o de existencia. Las coincidencias de existencia, se llaman toques, y las de posición son las famas, la idea es encontrar el orden de los números que generó el ordenador de forma que todos sean famas. Es muy parecido al estilo de batalla naval, en donde se dice una posiciones y si le dio a algún buque o a alguna flota enemiga.


from random import randint
def fama(x,y):
  if x==y:
    return 1
  else:
    return 0
def azar():
    a=randint(0,9)
    b=randint(0,9)
    c=randint(0,9)
    d=randint(0,9)
    while a==b or a==c or a==d or b==c or b==d or c==d:
      a=randint(0,9)
      b=randint(0,9)
      c=randint(0,9)
      d=randint(0,9)
    return a,b,c,d
def casi(a,x,y,z):
  if a==x or a==y or a==z:
    return 1
  else:
    return 0
a,b,c,d=azar()
w=-1
x=-1
y=-1
z=-1
while a!=w or b!=x or c!=y or d!=z:
  print "número a elegir(0-9):"
  w=int(raw_input())
  x=int(raw_input())
  y=int(raw_input())
  z=int(raw_input())
  while -1<w>10:
    w=int(raw_input())
  while -1<x>10:
    x=int(raw_input())
  while -1<y>10:
    y=int(raw_input())
  while -1<z>10:
    z=int(raw_input())
  while w==x or w==y or w==z:
    print "existe coincidencia,ingresa los nº de nuevo..."
    w=int(raw_input())
    x=int(raw_input())
    y=int(raw_input())
    z=int(raw_input())
    while -1<w>10:
      w=int(raw_input())
    while -1<x>10:
      x=int(raw_input())
    while -1<y>10:
      y=int(raw_input())
    while -1<z>10:
      z=int(raw_input())
  h=fama(a,w)
  i=fama(b,x)
  j=fama(c,y)
  k=fama(d,z)
  l=casi(a,x,y,z)
  m=casi(b,w,y,z)
  o=casi(c,w,x,z)
  p=casi(d,w,x,y)
  n=h+i+j+k
  q=l+n+o+p
  q=q-n
  print w,x,y,z
  print "famas:%d"%n
  print "casi coinsidencias:%d"%q
print "GANASTE!!!"

Juego: Pares o Nones (condiciones e iteraciones)


Pares o Nones es un Juego muy sencillo, donde los jugadores escogen un número entre 0 y 5, luego un jugador elije si la suma de estos numero es par o un non, en este caso como se juega contra la computadora, somos nosotros quienes elegimos si es par o non y el computador elije su propio número.


from random import randint
print ".oO0 Juguemos Pares o Nones 0Oo.\nEscoge un número desde el 0 al 5"
a=randint(0,5)
b=-1
while b<0 or b>5:
  b=int(raw_input("ingresa tu número:")) 
c=0
d=(a+b)%2

while c!=1 and c!=2:
  print "1)Par   2)Non"
  c=int(raw_input("opcion:"))
  
print"El ordenador escogió:%d"%a
if d==0:
  print "Resultado: Par"
  if c==1:
    print"Ganas"
  else:
    print"pierdes, gana el ordenador"
else:
  print "Resultado: Nones"
  if c==1:
    print "Pierdes, gana el ordenador"
  else:
    print "Ganas"

Condiciones: if-else

En esta ocasión, usaremos como referencia el plano cartesiano, para medir la distancia entre 4 puntos, en el cual se usan condiciones para determinar el punto mas cercano al primero:


from math import sqrt
print "programa para calcular el punto mas cercano al punto a"
#punto a
x=int(raw_input("eje x del punto a:"))
y=int(raw_input("eje y del punto a:"))
#punto b
xb=int(raw_input("eje x de un punto b:"))
yb=int(raw_input("eje y de un punto b:"))
#punto c
xc=int(raw_input("eje x de un punto c:"))
yc=int(raw_input("eje y de un punto c:"))
#punto d
xd=int(raw_input("eje x de un punto d:"))
yd=int(raw_input("eje y de un punto d:"))
#punto e
xe=int(raw_input("eje x de un punto e:"))
ye=int(raw_input("eje y de un punto e:"))

d_ab=sqrt((x-xb)**2+(y-yb)**2)
d_ac=sqrt((x-xc)**2+(y-yc)**2)
d_ad=sqrt((x-xd)**2+(y-yd)**2)
d_ae=sqrt((x-xe)**2+(y-ye)**2)

if d_ab<d_ac:
  d=str(xc)+","+str(yc)
else:
  d=str(xb)+","+str(yb)
if d_ab>d_ad:
  d=str(xd)+","+str(yd)
if d_ab>d_ae:
  d=str(xe)+","+str(ye)

print "el punto mas cercano es %s"%d

Iteracion, primeros pasos con While

Lo que haremos es hacer una simple multiplicación, pero sin usar el comando por, la idea es hacer que el programa repita una suma, según la cantidad por la que se ha de multiplicar el primer número.


n1=int(raw_input("número:"))
n2=int(raw_input("segundo numero"))

x=0
total=0

if n1<0:
  n1=n1-(n1+n1)
  while x<n1:
    total=total+n2
    x=x+1
  total=total-(total+total)
else:
  while x<n1:
    total=total+n2
    x=x+1
print "resultado es:",total

N elefantes se balanceaban sobre la tela de una araña c++

-- si quieres saber la letra de esta cancion ingresa la cantidad de veces y la tendras --






#include<stdio.h>
#include<stdlib.h>

main()
{
   int numero_elefantes, i;

   printf("ingrese cantidad de veces que quiere cantar la cancion");
   scanf("%d", &numero_elefantes);  //lee la cant de veces

   for(i=0; i<numero_elefantes; i++)  //este ciclo imprime cada vez
   printf(" %d elefantes se balanceban sobre la tela de una arana, como veian que resistia fueron a buscar a       un camarada...\n", i+1);

   system("pause");
}

Iniciando con Condiciones

Primero un ejemplo simple del uso de condiciones, solo usando el comando "if", que decide, según la veracidad de la condición, para seguir un camino.

El programa evita que cuando el usuario haga una división por 0, anuncie un erro entendible, y no un error que contenga código de máquina:


a=float(raw_input("valor a:"))
b=float(raw_input("valor b:"))

 x=a/b

if a==0:
  if b!=0:
    print "solucion",x
  if b==0:
    print "error:division por 0"
    

Primos gemelos? c++

Dos numeros primos son gemelos, si son primos y la diferencia de
entre ellos es 2.


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
    int N, M,c1, c2,i;
    scanf( "%d %d" , &N, &M );
   
    for(c1=0,i=1; i<=N; i++) // analiza si es primo el primer numero
      if(N%i==0)
      c1++;
   
    for(c2=0,i=1; i<=M; i++) // analiza si es primo el segundo numero
      if(M%i==0)
      c2++;
     
    if(c1==2&&c2==2&&fabs(N-M)==2) // si los numeros son primos y su dif es 2, lo es
      printf("%d y %d son primos gemelos\n",N,M);
   
    else
      printf("%d y %d NO son primos gemelos\n",N,M);
   
    system( "pause" );
}

Calculo de reajustes segun tramos de ingreso c++

En una empresa se quieren reajustar los sueldos
pero los reajustes se realizaran por tramos




#include<stdio.h>
#include<stdlib.h>

float operacion(int sueldo, float nsueldo) //funcion que calcula los nuevos sueldos segun el reajuste
{
    if ((sueldo>0)&& (sueldo<=300000))
       nsueldo= 1.3 * sueldo;
      
    if ((sueldo>300000)&& (sueldo<=700000))
       nsueldo= 1.2 * sueldo;
      
    if ((sueldo>700000)&& (sueldo<=1000000))
       nsueldo= 1.1 * sueldo;
   
    if (sueldo>1000000)
       nsueldo= 1.05 * sueldo;
      
    printf ("su nuevo sueldo es:%f",nsueldo);
}

main ()
{
     int sueldo;
     float nsueldo;
     printf ("ingrese su sueldo: ");
     scanf ("%d",&sueldo); // se lee el sueldo
     operacion(sueldo,nsueldo);  // se llama la  funcion
system ("pause");   
}

PythonG, operadores y comandos lógicos


PythonG, es un entorno muy sencillo de programación, que actúa matemáticamente igual que una calculadora, es por esto que responde al orden de los comandos matemáticos.



Los comandos en PythonG son los siguientes:





Operación
Operador
Ejemplo
Lectura
Exponenciación
**
a**b
a elevado a b
Cambio de signo
-
-(a+b)
Negativo de a+b
Multiplicación
*
a*b
a por b
División
/
a/b
a dividido por b
Módulo (o Resto)
%
a%b
Resto de a/b
Suma
+
a+b
a mas b
Resta
-
a-b
a menos b
Asignación
=
a=3
a es igual a 3

Comandos Lógicos:
Estos son usados para las condiciones e iteraciones, para definir que “camino” debe seguir el programa, según los datos que trae. Estos comandos retornan valores de True o False, que indican la validez de la operación.

Operación
Operador
Ejemplo
Igualdad
==
a==b
Distinto
!=
a!=b
Mayor que
> 
a>b
Menor que
< 
a<b
Mayor o igual que
>=
a>=b
Menor o igual que
<=
a<=b

Calculador del promedio de notas c++

//Lee notas de forma iterativa hasta ingresar 0 y ahi calcula el promedio entre las notas ingresadas

#include <stdio.h>
#include <stdlib.h>

main ()
{
     float suma=0,prom;
     int i=0,nota=0;
    
     printf ("ingrese la nota numero 1:");
     scanf ("%d",&nota);
    
     while ((nota>=10)&&(nota<=70)) // lee notas>=10 && notaS<=70
     {
           suma +=nota; // y suma la nota anterior
           i++;
           printf ("ingrese la siguiente nota: ");
           scanf ("%d",&nota);
     }
    
     prom = suma/i; // se imprimen el promedio
     printf ("el promedio es:%f",prom);
    
     system ("pause");
}

Numeros primos menores a N c++



#include <stdio.h>
#include <stdlib.h>

int main(void)
{
      int i,j,N;
     
      printf("hasta que numero desea analizar: ")
      scanf ("%d",&N);//se lee el numero
      int primos[N];

      for (i=0; i<N;primos[i]=i+2,i++);

      for (i = 0; i<N; i++) // se realiza un ciclo para ir analizando cada numero menor

          if (primos[i]!=-1)
    
              for (j=i+1; j<N;j++)
       
                  if (primos[j] % primos[i] == 0)

                     primos[j] = -1;// cuando se encuentra uno se guarda en un arreglo

      printf("Numeros Primos:\n");

      for(i=0;i<N;i++) // se imprime el arreglo

           if ( primos[i]!=-1)
               printf("%i\t",primos[i]);
      system ("pause");
      }

Triangulo isoseles con numeros


#include<stdio.h>
#include<stdlib.h>

main()

{
    int alto,f,c;
    printf ("Ingrese el Alto: ");
    scanf ("%d",&alto); // se pide la altura de este triangulo
   
    for( f = 1; f <= alto; f++)
        {
            for( c = 1; c <= (alto-f) ; c++) //para cada fila se imprime un espacio mas que antes
            {printf (" ");}
           
            for(c = 1; c <= (f*2-1) ; c++) //ahora para cada fila se imprime el numero de la fila
            {printf ("%d",f);}// si quieres que sea con '*' cambias esa linea por {printf ("*");}
           
            printf ("\n");
        }
   
    printf ("\n\n");
    system ("pause");
}