Translate

martes, 8 de enero de 2013

Cambio de variables; Apuntadores en C.

#include < stdio.h >

void swap(int *px, int *py);

int main()
{
    int x, y;

    x = 10;
    y = 20;
    printf("x=%d\ty=%d\n",x,y);
    swap(&x, &y);
    printf("x=%d\ty=%d\n",x,y);
}

void swap(int *px, int *py)
{
    int temp;

    temp = *px;   /* guarda el valor de la direccion x */
    *px = *py;    /* pone y en x */
    *py = temp;   /* pone x en y */
}

Metodo de la Burbuja(Quicksort) en C.

#include< stdio.h >

void main()
{

   int a[10],j,i,t;
  
   puts("Teclea 10 enteros separados por un enter!!");
  
   for(j=0;j<10 br="br" j="j">      scanf("%d",&a[j]);
     
   putchar('\n');
  
   for(j=0;j<9 br="br" j="j">      for(i=9;i>j;i--)
      {
         if(a[i]         {
            t=a[i-1];
            a[i-1]=a[i];
            a[i]=t;
          }
      }
    for (i=0;i<10 br="br" i="i">      printf("%d \n",a[i]);

}

Apuntadores en C.

#include< stdio.h >
void incrementa(int*);

void main()
{
   int x=1;
   printf("%d\n",x);
   incrementa(&x);//& da la direccion en memoria de esa variable
   printf("%d\n",x);

}

incrementa (int*x)
{
//   printf("%d\n",x);
   *x=5;//* se refiere al contenido de variable
         // cambiar valor por referencia si modifica el valor de esta variable en         otras funciones del programa (pase de parametros por referencia)
}
//un apuntador es una variable entera que contiene una direccion de memoria

Corrimientos de bits en C.

#include< stdio.h >

void corrimientos(int);
void main()
{
   int a=1,b=0;
   corrimientos(a);
  
}

void corrimientos(int a)
{

   while(a)
     {a=a<<1 br="br">      printf("%d\n", a);
      b++;
      }
     printf("Los enteros tienen %d bits de espacio.",b);
     return;
  
}

Llenar un arreglo en C.

    /*
     * Permite llenar un arreglo, mostrarlo
     * sumar todos sus elementos
     * determinar el elemento que es mayor
     * y buscar un elemento determinado.
     */
    
    #include< stdio.h >
    
    //función para llenar el arreglo
    void llenar(int A[], int n)
    {
        int i;
        int valor;
        for(i=0; i        {
            printf("Ingrese valor %d : ",i);
            scanf("%d",&valor);
            A[i] = valor;
        }
    }
    
    //Función para mostrar el arreglo
    void mostrar(int A[], int n)
    {
        int i;
        for(i=0; i        {
            printf("Valor A[%d] = %d\n",i,A[i]);
        }
    }
    
    //función para sumar los elementos del arreglo
    int suma(int A[], int n)
    {
        int i;
        int s = 0;
        for(i=0; i        {
            s = s + A[i];
        }
        return s;
    }
    
    //Función para determinar el elemento mayor
    //del arreglo
    int mayor(int A[], int n)
    {
        int i;
        int mayorval = A[0];
        for(i=0; i        {
            if(A[i] > mayorval)
            {
                mayorval = A[i];
            }
        }
        return mayorval;
    }
    
    //Función para buscar un elemento
    int buscar(int A[], int n, int e)
    {
        //Definimos variables
        int i;
        int esta = 0;
        //Ciclo de análisis
        for(i=0; i        {
            //Fácil si el valor del elemento
            //es igual al parámetro e recibido
            if(A[i] == e)
            {
                //asignamos a la variable
                //el valor de i que es el
                //numero de elemento que es igual
                esta = i;
                //Rompemos el bucle y salimos
                break;
            }
        }
        //Regresamos como valor de la función
        //el valor de la variable donde fué hallado
        //o de lo contrario cero que es su inicialización.
        return esta;
    }
    
    //Procedimiento principal
    int main()
    {
        //Definimos el arreglo
        int arreglo[100];
        //Variables para el total de elementos y valor buscado
        int totalelementos, valorbuscado;
        //Solicitamos info
        printf("Ingrese cantidad de valores a examinar : ");
        scanf("%d",&totalelementos);
        //Ejecutamos las funciones llenar y mostrar.
        llenar(arreglo,totalelementos);
        mostrar(arreglo,totalelementos);
        //Mostramos un título y ejecutamos la función sumar.
        printf("La suma total de valores es %d\n",suma(arreglo,totalelementos));
        //Mostramos info y llamamos a la función mayor
        printf("El mayor valor es %d\n",mayor(arreglo,totalelementos));
        //Solicitamos un valor para buscar
        printf("Ingrese valor a buscar : ");
        scanf("%d",&valorbuscado);
        //Variable para obtener el resultado
        int resultado = 0;
        resultado = buscar(arreglo,totalelementos,valorbuscado);
        //Si es mayor a cero
        if (resultado>0)
        {
            //Informamos que fué hallado
            printf("El valor %d fue hallado en la posicion %d\n",valorbuscado,resultado);
        }
        else
        {
            //Informamos que no fué hallado.
            printf("El valor %d no se encuentre en el array\n",valorbuscado);
        }
    }

Gauss-Jordan en C.

/*El programa tiene que resolver un sistema de ecuaciones de n incognitas
usando el metodo Gauss-Jordan... La función diagonal es la que va a llevar a cabo el método.. se pide como entrada el numero de incognitas del sistema y después los coeficientes... metes primero el numerador, das espacio, metes el denominador y das enter.. y así hasta que termines con la matriz
*/

#include< stdio.h >
//esta es mi estructura de fraccion...
typedef struct {
                int numerador;
                 int denominador;
                }fraccion;

fraccion suma(fraccion,fraccion);//suma dos fracciones
fraccion resta(fraccion,fraccion);//resta dos fracciones
fraccion mult(fraccion,fraccion);//multiplica dos fracciones
fraccion div(fraccion,fraccion);//divide dos fracciones
fraccion simplifica(fraccion);//simplifica una fraccion

void diagonal(fraccion [][10],int);//esta funcion es la del metodo gauss-jordan
void leemat(fraccion[][10],int);//esta funcion llena de datos una matriz de tipo fraccion
void impmat(fraccion[][10],int);//esta funcion imprime la matriz de tipo fraccion
int mcd(int,int);//calcula el maximo comun divisor entre dos numeros usando algoritmo de Euclides

void main()
{   
    fraccion mat[11][10],n1,n2,r;
    int n;
    puts("Introduzca el número de incognitas de su sistema: ");   
    scanf("%d",&n);
    puts("Introduzca su matriz aumentada:");
    leemat(mat,n);
    diagonal(mat,n);
    puts("Su matriz diagonalizada es: \n");
    impmat(mat,n);


    //bloque de prueba de operaciones con fracciones
/*
    puts("Dame la primer fraccion (parte entera, parte fraccion)");
    scanf("%d %d",&n1.numerador,&n1.denominador);
   
    puts("Dame la segunda fraccion (parte entera, parte fraccion)");
    scanf("%d %d",&n2.numerador,&n2.denominador);
   

   
    r=suma(n1,n2);
    printf("Suma: %d/%d \n",r.numerador,r.denominador);
    r=resta(n1,n2);
    printf("Resta: %d/%d \n",r.numerador,r.denominador);
    r=mult(n1,n2);
    printf("Multiplicacion: %d/%d \n",r.numerador,r.denominador);
    r=div(n1,n2);
    printf("Division: %d/%d \n",r.numerador,r.denominador);    */
   
   
}

fraccion suma(fraccion n1,fraccion n2)
{
    fraccion r;
   
    if((n1.numerador+n2.numerador==0)&&(n1.denominador==n2.denominador))
    {r.numerador=0;r.denominador=1;return r;}
    else   
        {r.numerador=n1.numerador*n2.denominador+n2.numerador*n1.denominador;
        r.denominador=n1.denominador*n2.denominador;   
        return r;/*simplifica(r);*/}
}

fraccion resta(fraccion n1,fraccion n2)
{
    fraccion r;
    if((n1.numerador==n2.numerador)&&(n1.denominador==n2.denominador))
        {r.numerador=0;r.denominador=1;return r;}
   
    else
    {    r.numerador=n1.numerador*n2.denominador-((n2.numerador)*(n1.denominador));
        r.denominador=n1.denominador*n2.denominador;
        return simplifica(r);}
}

fraccion mult(fraccion n1,fraccion n2)
{
    fraccion r;
    if((n1.numerador==0)||(n2.numerador==0))
        {r.numerador=0;r.denominador=1;return r;}
    else
        {r.numerador=n1.numerador*n2.numerador;
        r.denominador=n1.denominador*n2.denominador;
        return simplifica(r);
        }
}

fraccion div(fraccion n1,fraccion n2)
{
    fraccion r;
    int val=0;
   
    if(n2.numerador==0)
        {puts("Error de división entre cero"); return r;}

    else if((n1.numerador<0 amp="amp" n2.numerador="n2.numerador">0))//solo el primero negativo
        {val=1;
        n1.numerador=n1.numerador*(-1);
        }
        else if((n2.numerador<0 amp="amp" n1.numerador="n1.numerador">0))//solo el segundo negativo
            {val=1;
            n2.numerador=n2.numerador*(-1);
            }
            else if((n2.numerador<0 amp="amp" br="br" dos="dos" los="los" n1.numerador="n1.numerador" negativos="negativos">            {
            n1.numerador=n1.numerador*(-1);
            n2.numerador=n2.numerador*(-1);
            }

    r.numerador=n1.numerador*n2.denominador;
    r.denominador=n1.denominador*n2.numerador;

    if(val)
        r.numerador=r.numerador*(-1);
   
    return simplifica(r);
       

}           

fraccion simplifica(fraccion r)
{
    fraccion s;
    int val=0,x;

    if(r.numerador){
        x=mcd(abs(r.numerador),abs(r.denominador));
        s.numerador=r.numerador/x;
        s.denominador=r.denominador/x;
        return s;
    }
    else{s.numerador=0;
         s.denominador=1;
         return s;
    }
}

int mcd(int a, int b){
   if(a      a^=b;
      b^=a;
      a^=b;
   }
   int c=a%b;
   while(c){
      a=b;
      b=c;
      c=a%b;
   }
   return b;
}

void leemat(fraccion mat[][10],int n)
{
    int i,j;
    for(i=0;i        for(j=0;j            scanf("%d %d",&mat[j][i].numerador,&mat[j][i].denominador);

}

void impmat(fraccion mat[][10],int n)
{
    int i,j;
    for(i=0;i        {for(j=0;j            printf("%d/%d\t",mat[j][i].numerador,mat[j][i].denominador);
        putchar('\n');
        }

}

void diagonal(fraccion mat[][10],int n)
{
    // Aplicación del método de Gauss-Jordan
   
     int r,c,c2,i,j,k=0,r2,c3;
     fraccion p,tem[10],p2,m;


//Ceros en triangulito de abajo (:

    for(r=0;r    {    p=mat[r][r];//pivote 1
       
        for(c=0;c<=n;c++)
        {    mat[c][r]=div(mat[c][r],p);//
           
         }
        for(r2=r+1;r2            {
            p2=mat[r][r2];//pivote 2
              for(c2=0;c2<=n;c2++)
                {tem[c2]=mult(p2,mat[c2][r]);
                mat[c2][r2]=resta(tem[c2],mat[c2][r2]);       
                }
            }
       
    }
   
//Ceros en triangulito de arriba
   
   
    for(c=n-1;c>=0;c--)
        for(r=c-1;r>=0;r--)
        {
            p=mat[c][r];
            for(c2=0;c2<=n;c2++)
            {    tem[c2]=mult(mat[c2][r+1],p);
                mat[c2][r]=resta(mat[c2][r],tem[c2]);
               
            }

        }

    if(n==3)
        {
            mat[3][0]=resta(mat[3][0],mult(mat[2][0],mat[3][2]));;
            mat[2][0].numerador=0;
            mat[2][0].denominador=1;
        }
    else if(n==4)
        {   
            mat[4][1]=resta(mat[4][1],mult(mat[4][3],mat[3][1]));
            mat[3][1].numerador=0;
            mat[3][1].denominador=1;
       
            p=mult(mat[2][2],mat[2][0]);
            p2=mult(mat[4][2],mat[2][0]);
                       
            mat[2][0]=resta(mat[2][0],p);
            mat[4][0]=resta(mat[4][0],p2);

            p=mult(mat[3][0],mat[3][3]);
            p2=mult(mat[3][0],mat[4][3]);

            mat[3][0]=resta(mat[3][0],p);
            mat[4][0]=resta(mat[4][0],p2);
        }
}

Numeros pares e impares en C.

#include< stdio.h >

int main(){

   char a;
  
   puts("Introduzca un número: ");
   a=getchar();
  
   if(a%2==0)
      puts("El número es par.");
   else
      puts("El número es impar.");

 //if((c>='0')&&(c<='9'))
 //   if(c-'0'%2==1)
//       puts("Impar");
//      else puts("Par");
  

   return 0;
            }

Dia del Año en C.

#include < stdio.h >

void leer_entrada(int *pm, int *pd, int *pa);
int convertir(int mm, int dd, int aa);

int main()
{
    int mm,dd,aa;
    int dia_semana;
   
    static char *diasemana[] = { "Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Sabado" };
    static char *mes[] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre" };
   
    printf("Rutina de conversion de  fecha \n Para parar, introducir 0 0 0");
   
    leer_entrada(&mm, &dd, &aa);
   
    //Convertir fecha a dia numerico de la semana
    while (mm > 0)
    {
        dia_semana = convertir (dd, mm, aa);
        printf("\n El dia fue %s, %d %s de %d \n",diasemana[dia_semana], dd,mes[mm-1], aa);
        leer_entrada(&mm, &dd, &aa);
    }
}

void leer_entrada(int *pm, int *pd, int *pa) //Convertir una fecha en el dia de la semana.
{
    printf("\n Introducir MM DD AAAA: ");
    scanf("%d %d %d", pm, pd, pa);
    system("clear"); //Sirve para limpiar la pantalla en Linux.
    return;
}

int convertir (int mm, int dd, int aa) //Convertir una fecha en el dia de la semana.
{
   
long ndias; //Num de dias desde el comienzo de 1900.
long nciclos; //Num de cliclos de 4 años despues de 1900.
int nanios; //Num de años despues del ultimo cilico de 4 años.
int dia; //Dia de la semana {0,1,2,3,4,5,6}

//Conversiones numericas   
aa-=1900;
ndias = (long) (30.42 * (mm - 1)) + dd; //Dia aprox del año.

if(mm == 2) ++ndias; //Ajuste para febrero.
if((mm > 2) && (mm < 8)) --ndias; //Ajuste para marzo-julio.
if((aa % 4 == 0) && (mm > 2)) ++ndias; //Ajuste para el año bisiesto.

nciclos = aa / 4; //Ciclos de 4 años despues de 1900.

ndias += nciclos * 1461; //Añadir dias por ciclos de 4 años.

nanios = aa % 4; //Años despues del ultimo ciclo de 4 años.

if(nanios > 0) //Añadir dias por años despues del ultimo ciclo.
  ndias += 365 * nanios +1;
  
if(ndias > 59) --ndias; //Ajustar para 1900 (No año bisiesto).
  dia = ndias % 7;
 
  return(dia);
}

Funciones diversas en C.

//Funcion para calcular el MOD (Residuo)
int mod (int a, int b)
{

 if (a>0 && b>0 && a>b)
 {
   int z;
   z= (a-((a/b)*b));
   return z;
}

if (a>0 && b>0 && aa)
 {
   return a;
}
if (a<0 a="a" amp="amp" b="b">b)
 {
   return a;
}


 if (a<0 a="a" amp="amp" b="b" br="br"> {
   int z;
   a=a*(-1);
   b=b*(-1);
   z= (a-((a/b)*b))*(-1);
   return z;
}

 if (a>0 && b<0 br="br"> {
   int z;
   b=(b*-1);
   z=((a-((a/b)*b))-b);
   return z;
}

if (a<0 amp="amp" b="b">0)
 {
   int z;
   a=(a*-1);
   z=(b-(a-((a/b)*b)));
   return z;
   }
}
//Funcion maximo comun divisor recursividad
int mcd(int a,int b)
{
if(b==0)
return a;
else
return mcd(b,a%b);
}
//Funcion recursiva para sumar los 10 primeros numeros
int suma(int n) andres pico
{
    if(n==0)
        return 0;
    else
        return n+suma(n-1);
}
//Funcion recursiva para elevar un numero a un exponente
int exp(int b,int e)
{
    if(e==0)
        return 1;
    else
        return b*exp(b,e-1);
}

//Funcion para calcular el numero fibonacci
int fibo(int n)
{
if ((n==0)||(n==1))
return n;
else
return fibo(n-1)+fibo(n-2);


//FUNCION PARA MULTIPLICAR DOS NUMEROS
int multiplicar(int n,int b)
{
if(b==0)
return 0;
else
return multiplicar(n,b-1)+n;
}

//Funcion de los factores primos
int factores_primos(int n,int b)
{
    if (n==1)
        return 1;
    else
        {
            if(n%b==0)
                return b+factores_primos((n/b),b);
            if(n%b!=0)
                factores_primos(n,b+1);
    }
}

//Funcion para invertir un numero
int inverso(int num)
{
    if (num < 10)
        return num;
    else
    return mod(num,10) * exp(10, digitos(num) - 1) + inverso(num / 10);
}

//Funcion para contar los digitos
int digitos(int num) 
{
    if (num < 10)
        return 1;
    return 1 + digitos(num/10);
}

Abrir archivos en C.

#include< stdio.h >

int main()
{
            FILE *in;
            char nomarch[20];
            puts("Dame el nombre del archivo :D");
            scanf("%s",nomarch);
           
            if((in=fopen(nomarch,"r"))==NULL)
                     printf("Error al abrir el archivo %s.\n",nomarch);
            else
                     printf("archivo %s abierto correctamente :D \n",nomarch);
                
            fclose(in);
}

Leer archivos en C.

#include< stdio.h >

void lee(FILE *in);

int main(int agc,char *agv[]){
           
            FILE *in;
            if(agc>1){
                  if(in=fopen(*(agv+1),"r")!==NULL)
                               printf("ERROR al abrir el archivo %s\n",(agv+1));
                  else{
                       lee(in);
                       fclose(in);
                      }           
                      }
            else
                 puts("Faltan argumentos");
                
                 return 0;
             
           }
void lee(FILE *in){
                       int c;
                       while((c=getc(in))!=EOF)
                             putchar(c);
                            
                   }

Llenar archivos en C.

#include< stdio.h >;

void llena(FILE *in);

int main(){
            FILE *in;
            char nomarch[20];
            puts("Dame el nombre del archivo :D");
            scanf("%s",nomarch);
           
            if((in=fopen(nomarch,"w+"))==NULL)
                     printf("Error al abrir el archivo %s.\n",nomarch);
            else
                     printf("archivo %s abierto correctamente :D \n",nomarch);
                    
            llena(in);        
            fclose(in);
           
           }
        
void llena(FILE *in){
                    putc('H',in);
                    putc('E',in);
                    putc('L',in);
                    putc('L',in);
                    putc('O',in);
                    putc(' ',in);
                    putc('W',in);
                    putc('O',in);
                    putc('L',in);
                    putc('R',in);
                    putc('D',in);
                    
                    }
                       

miércoles, 2 de enero de 2013

Potencia de 2 hasta 2^32 en C.

//Potencia de 2 hasta 2^32.
#include

int potencia[32];

int main()
{
   potencia[0]=1;
   int i;
   for(i=1;i<=31;i++)
   {
      potencia[i]=potencia[i-1]*2;
   }
   for(i=0;i<=30;i++)
   {
      printf("%d\n",potencia[i]);
   }
   return 0;
}

Letras de minisculas a Mayusculas y viceversa en C.

 //Letras de minusculas a Mayusculas y viceversa.

#include< stdio.h >

void ingreso(char *);
void mayusculas(char *);
void minusculas(char *);

int main(void)
{
   
char cadena[256];

ingreso(cadena);
printf("Frase: %s\n", cadena);
mayusculas(&cadena[0]);
printf("La frase en MAYUSCULAS: %s\n",cadena);
minusculas(cadena);
printf("La frase en minusculas: %s\n",cadena);
return 0;
}

//Funcion que recibe la variable a convertir.
void ingreso(char *s)
{
printf("Programa que convierte una cadena de minusculas a mayusculas o viseversa\n ");
printf("Ingrese una frase:\n ");
gets(s);
}

//Funcion la cual convierte cualquier letra minuscula a mayuscula.
void mayusculas(char *s)
{
for( ;*s!='\0';s++)
if(*s>='a' && *s<='z')
*s-=(char)32;
}

//Funcion la cual convierte cualquier letra mayuscula a minuscula.
void minusculas(char *s)
{
while(*s!=NULL)
{
if(*s>='A' && *s<='Z')
*s+=(char)32;
s++;
}

}

Arreglo lleno y define cual es el mayor en C.

    /*
     * Permite llenar un arreglo, mostrarlo
     * sumar todos sus elementos
     * determinar el elemento que es mayor
     * y buscar un elemento determinado.
     */
    
    #include< stdio.h >
    
    //función para llenar el arreglo
    void llenar(int A[], int n)
    {
        int i;
        int valor;
        for(i=0; i        {
            printf("Ingrese valor %d : ",i);
            scanf("%d",&valor);
            A[i] = valor;
        }
    }
    
    //Función para mostrar el arreglo
    void mostrar(int A[], int n)
    {
        int i;
        for(i=0; i        {
            printf("Valor A[%d] = %d\n",i,A[i]);
        }
    }
    
    //función para sumar los elementos del arreglo
    int suma(int A[], int n)
    {
        int i;
        int s = 0;
        for(i=0; i        {
            s = s + A[i];
        }
        return s;
    }
    
    //Función para determinar el elemento mayor
    //del arreglo
    int mayor(int A[], int n)
    {
        int i;
        int mayorval = A[0];
        for(i=0; i        {
            if(A[i] > mayorval)
            {
                mayorval = A[i];
            }
        }
        return mayorval;
    }
    
    //Función para buscar un elemento
    int buscar(int A[], int n, int e)
    {
        //Definimos variables
        int i;
        int esta = 0;
        //Ciclo de análisis
        for(i=0; i        {
            //Fácil si el valor del elemento
            //es igual al parámetro e recibido
            if(A[i] == e)
            {
                //asignamos a la variable
                //el valor de i que es el
                //numero de elemento que es igual
                esta = i;
                //Rompemos el bucle y salimos
                break;
            }
        }
        //Regresamos como valor de la función
        //el valor de la variable donde fué hallado
        //o de lo contrario cero que es su inicialización.
        return esta;
    }
    
    //Procedimiento principal
    int main()
    {
        //Definimos el arreglo
        int arreglo[100];
        //Variables para el total de elementos y valor buscado
        int totalelementos, valorbuscado;
        //Solicitamos info
        printf("Ingrese cantidad de valores a examinar : ");
        scanf("%d",&totalelementos);
        //Ejecutamos las funciones llenar y mostrar.
        llenar(arreglo,totalelementos);
        mostrar(arreglo,totalelementos);
        //Mostramos un título y ejecutamos la función sumar.
        printf("La suma total de valores es %d\n",suma(arreglo,totalelementos));
        //Mostramos info y llamamos a la función mayor
        printf("El mayor valor es %d\n",mayor(arreglo,totalelementos));
        //Solicitamos un valor para buscar
        printf("Ingrese valor a buscar : ");
        scanf("%d",&valorbuscado);
        //Variable para obtener el resultado
        int resultado = 0;
        resultado = buscar(arreglo,totalelementos,valorbuscado);
        //Si es mayor a cero
        if (resultado>0)
        {
            //Informamos que fué hallado
            printf("El valor %d fue hallado en la posicion %d\n",valorbuscado,resultado);
        }
        else
        {
            //Informamos que no fué hallado.
            printf("El valor %d no se encuentre en el array\n",valorbuscado);
        }
    }

Triangulo de Pascal con Asteriscos, de dimension definida por el usuario en C.

//Triangulo de Pascal con Asteriscos, de dimension definida por el usuario.
#include < stdio.h >

int main (void)
{
    int altura;  /*número de filas de la pirámide*/
    int opcion;  /*1 y 2 dibuja pirámides y la opcion 3 para acabar el programa*/
  //SALIDAS:
    /*
    pirámide dibujada con asteríscos. Por ejemplo son la altura es 3
    y se elige la opción 1 dibujará               *
                                                 ***
                                                *****
    y si se elige altura 3 y opción 2 dibuja      *
                                                 * *      
                                                * * *      
    */
  //VARIABLES:
    int filas, columnas, blancos;
    
  //INICIO
    do{
      printf("Elige una de las siguientes opciones:\n");
      printf("   1: Dibuja Pirámide del tipo:\n");
      printf("       *\n");
      printf("      ***\n");
      printf("     *****\n");
      printf("   2: Dibuja Pirámide del tipo:\n");
      printf("       *\n");
      printf("      * *\n");
      printf("     * * *\n");
      printf("   3: Salir.\n");
      printf("Que opcion elige: ");
      scanf("%i", &opcion);
        
      switch(opcion)
      {
        case 1:
          do{
            printf("Introduzca el numero de filas de la piramide: ");
            scanf("%i", &altura);
          }
          while(altura<=0);
          for (filas=1; filas<=altura; filas++)
          {
            for (blancos=1; blancos<=altura-filas; blancos++)
            {
              printf(" ");
            }
            for (columnas=1; columnas<=2*filas-1; columnas++)
            {
              printf("*");
            }
            printf("\n");
          }
          break;      

        case 2:        
          do{
            printf("Introduzca el numero de filas de la piramide: ");
            scanf("%i", &altura);
          }
          while(altura<=0);
          for (filas=1; filas<=altura; filas++)
          {
            for (blancos=1; blancos<=altura-filas; blancos++)
            {
              printf(" ");
            }
            for (columnas=1; columnas<=filas; columnas++)
            {
              printf("*");
            }
            printf("\n");
          }
          break;
      }            
    }
    while(!(opcion<3 br="br"> }

martes, 1 de enero de 2013

Longitud de un texto en C

/*Programa que cuenta la longitud de palabras que hay en un texto*/
#include < stdio.h >

char cadena1[100],cadena2[100];

int main()
{
   printf("Ingrese la palabra a medir: \n");
   scanf("%s",cadena1);
   printf("La cadena escrita mide:\n %d letras \n",cadena(cadena1,cadena2));
   return 0;
}

int cadena(char a[],char b[])
{
   if(a[0]!='\0'){
      b[0]=a[0];
      return cadena(a+1,b+1)+1;
   }
   b[0]='\0';
   return 0;
}

Matriz de 2x2 en C

Bien aqui regresando al blog, habia perdido el acceso, aqui les dejo un programa que realice en mi escuela, estare subiendo, programas de diferentes problemas que mas dejan actualmente. Y por cierto Feliz Año Nuevo 2013! :D.
P.D. Una disculpa por no identar el codigo xD

/*Codigo para realizar dos matrices */
#include < stdio.h >

int main(void)
{
float mat1[3][2],mat2[2][3],resultado=0, resul[3][3];
int i,j,c;
for(i=0;i<3 br="br" i="i">for(j=0;j<3 br="br" j="j">resul[i][j]=0;
for(i=0;i<3 br="br" i="i">{
for(j=0;j<2 br="br" j="j">{
printf("\nintroduzca un valor mat1[%d][%d]: ",i,j);
scanf("%f", &mat1[i][j]);
}
}
for(i=0;i<2 br="br" i="i">{
for(j=0;j<3 br="br" j="j">{
printf("\nintroduzca un valor mat2[%d][%d]: ",i,j);
scanf("%f", &mat2[i][j]);
}
}
for(i=0;i<3 br="br" i="i">{
for(c=0;c<3 br="br" c="c">{
for(j=0;j<2 br="br" j="j">{
resultado=resultado+(mat1[i][j]*mat2[j][c]);
}
resul[i][c]=resultado;
resultado=0;
}
}
/*Matriz 1*/
printf("\nMatriz 1\n");
for(i=0;i<3 br="br" i="i">{
for(j=0;j<2 br="br" j="j">{
printf("\t%.2f",mat1[i][j]);
}
printf("\n");
}
/*Matriz 2*/
printf("\nMatriz 2\n");
for(i=0;i<2 br="br" i="i">{
for(j=0;j<3 br="br" j="j">{
printf("\t%.2f",mat2[i][j]);
}
printf("\n");
}
/*Matriz multiplicación*/
printf("\nMatriz resultado\n");
for(i=0;i<3 br="br" i="i">{
for(c=0;c<3 br="br" c="c">{
printf("\t%.2f",resul[i][c]);
}
printf("\n");
}
}