Horizontal

Mostrando entradas con la etiqueta Programas en el lenguaje C. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programas en el lenguaje C. Mostrar todas las entradas

viernes, 16 de octubre de 2015

Factorial de un número entero positivo en forma iterativa

Factorial de un número entero positivo en forma iterativa
Código:
#include<stdio.h>
int factorial(int n)
{
    int r=1,i;
    for( i = 1; i <= n; i++)
        r *= i;
    return r;
}
int main()
{
    int r,x = 8;
    r = factorial( x );
    printf("factorial ( %d ) = %d \n",x,r);
    return 0;
}
Salida:
factorial ( 8 ) = 40320 

martes, 5 de mayo de 2015

Uso de la función memchr

Archivo de cabecera / Librería:
 string
Declaración:
#include<string.h>
void *memchr(const void *s,int c,size_t n);
Ejemplo:
#include<stdio.h>
#include<string.h>

int main(){
    char s[]="programas en c";
    char *t=memchr(s,'e',strlen(s));
    printf("es --> %s\n",t);
    return 0;
}
Salida:
 es --> en c

Uso de la función string ( )

jueves, 31 de julio de 2014

Uso de la función strcpy


Archivo de cabecera / Librería:
 string.h

Declaración:
 char *strcpy ( char *destino , const char *fuente );

Parámetros:
 destino
  Cadena que almacenará una copia de 'fuente'.
 fuente
  Cadena que se copiará.

Valor de retorno:
 Se retorna la cadena 'destino'.

Ejemplo:
#include<stdio.h>
#include<string.h>
int main(){
    char fuente[100]="hola mundo";
    char destino1[100],destino2[100];
    char *retorno1,*retorno2;

    retorno1=strcpy(destino1,fuente);
    retorno2=strcpy(destino2,"cadena a copiar");

    printf("fuente:   %s\n",fuente);
    printf("destino1: %s\n",destino1);
    printf("retorno1: %s\n",retorno1);
    printf("destino2: %s\n",destino2);
    printf("retorno2: %s\n",retorno2);
    return 0;
}

Salida:
 fuente:   hola mundo
 destino1: hola mundo
 retorno1: hola mundo
 destino2: cadena a copiar
 retorno2: cadena a copiar

Implementación alternativa:
#include<stdio.h>
char *mi_strcpy(char *destino,char *fuente){
    int i;
    for(i=0;fuente[i]!='\0';i++)destino[i]=fuente[i];
    destino[i]='\0';
    return destino;
}
int main(){
    char fuente[100]="hola mundo";
    char destino1[100],destino2[100];
    char *retorno1,*retorno2;

    retorno1=mi_strcpy(destino1,fuente);
    retorno2=mi_strcpy(destino2,"cadena a copiar");

    printf("fuente:   %s\n",fuente);
    printf("destino1: %s\n",destino1);
    printf("retorno1: %s\n",retorno1);
    printf("destino2: %s\n",destino2);
    printf("retorno2: %s\n",retorno2);
    return 0;
}

Salida:
 fuente:   hola mundo
 destino1: hola mundo
 retorno1: hola mundo
 destino2: cadena a copiar
 retorno2: cadena a copiar

Uso de la función strcpy ( )

sábado, 21 de junio de 2014

Ordenamiento por intercambio - Burbuja

 Este algoritmo de ordenación realiza comparaciones sucesivas entre elementos adyacentes  comparando a los valores a[i] y a[i+1]. Finalizando con un ordenamiento de menor a mayor.

 Función para ordenamiento burbuja


  1. void burbuja(int *vector,int n){
  2. int i,j;
  3. for(i=1;i<n;i++)
  4. for(j=0;j<n-i;j++)
  5. if(vector[j]>vector[j+1]){
  6. int aux=vector[j];
  7. vector[j]=vector[j+1];
  8. vector[j+1]=aux;
  9. }
  10. }


Código


  1. #include<stdio.h>
  2. void burbuja(int *vector,int n){
  3. int i,j;
  4. for(i=1;i<n;i++)
  5. for(j=0;j<n-i;j++)
  6. if(vector[j]>vector[j+1]){
  7. int aux=vector[j];
  8. vector[j]=vector[j+1];
  9. vector[j+1]=aux;
  10. }
  11. }
  12. int main(){
  13. int i,j,n;
  14. int vector[1000];
  15. printf("ingrese la cantidad\n");
  16. scanf("%d",&n);
  17. printf("ingrese los valores\n");
  18. for(i=0;i<n;i++)
  19. scanf("%d",&vector[i]);
  20. //se ordena
  21. burbuja(vector,n);
  22. //ver ordenacion
  23. printf("ordenamiento por intercambio ( Burbuja )\n");
  24. for(i=0;i<n;i++)
  25. printf("%d ",vector[i]);
  26. printf("\n");
  27. return 0;
  28. }
Ejemplo de salida:
 ejemplo - ordenamiento por intercambio ( Burbuja )

domingo, 30 de marzo de 2014

Uso de la función strlen

Archivo de cabecera / Librería:
 string.h

Declaración:
 size_t strlen ( const char *string );

Parámetros:
 string
  La cadena a procesar.

Valor de retorno:
 Longitud de la cadena.

Ejemplo:
#include<stdio.h>
#include<string.h>
int main(){
    char string[100];
    printf("Ingrese el string: ");
    scanf("%s",string);
    int tam=strlen(string);
    printf("Su longitud es : %d\n",tam);
    return 0;
}

Salida:
 Ingrese el string: algoritmos
 Su longitud es : 10

Implementación alternativa:
#include<stdio.h>
int mi_strlen(char *string){
    int i;
    for(i=0;string[i]!='\0';i++);
    return i;
}
int main(){
    char string[100];
    printf("Ingrese el string: ");
    scanf("%s",string);
    int tam=mi_strlen(string);
    printf("Su longitud es : %d\n",tam);
    return 0;
}

Salida:
 Ingrese el string: algoritmos
 Su longitud es : 10

Uso de la función strlen ( )

domingo, 2 de junio de 2013

Relacionando char con int

Relacionando char con int

 La idea de esta relación es pues que podemos imprimir un char dado un entero y viceversa

 Por ejemplo el siguiente programa muestra los char que son generados por enteros:

  1. #include<stdio.h>
  2. int main(){
  3.     int i;
  4.     for(i=0;i<128;i++)
  5.         printf("%c ",i);
  6.    
  7. }

  El cual nos da el siguiente resultado:
      ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ 


 Con la misma ideal imprimimos números:



  1. #include<stdio.h>
  2. int main(){
  3.     char c='a';
  4.     printf("%c en entero es %d",c,c);
  5. }


 También podemos hacer:

  1. #include<stdio.h>
  2. int main(){
  3.     int i;
  4.     char c;
  5.     i=97;
  6.     c=i;
  7.    
  8.     printf("i de valor %d",i);
  9.     printf("\nc de valor %c",c);
  10. }

lunes, 4 de marzo de 2013

Terna Pitagórica

 El muy conocido teorema de Pitagóricas básicamente manifiesta que en un triángulo rectángulo la suma de los cuadrados de los catetos es igual al cuadrado de la hipotenusa, así decimos que una terna pitagórica es una tupla de tres números naturales que cumples dicho teorema.

Si queremos hallar todas las tuplas menores a un número "n", lo podemos hacer usando la búsqueda exhaustiva o fuerza bruta.

  La siguiente función imprime todas las ternas Pitagóricas menores a "n" y regresa la cantidad de ternas.


int terna(int n){
    int i,j,k,cont;
    cont=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            for(k=1;k<=n;k++)
                if(i*i==j*j+k*k){
                    printf("( %d , %d , %d )\n",j,k,i);
                    cont++;
                }
    return cont;
}


En este caso el programa halla ternas menores a 200

  1. //Terna Pitagorica
  2. #include<stdio.h>
  3. int terna(int n){
  4.     int i,j,k,cont;
  5.     cont=0;
  6.     for(i=1;i<=n;i++)
  7.         for(j=1;j<=n;j++)
  8.             for(k=1;k<=n;k++)
  9.                 if(i*i==j*j+k*k){
  10.                     printf("( %d , %d , %d )\n",j,k,i);
  11.                     cont++;
  12.                 }
  13.     return cont;
  14. }
  15. int main(){
  16.     int n,cantidad;
  17.     n=200;
  18.     cantidad=terna(n);
  19.     printf("existen %d ternas menores a %d ",cantidad,n);
  20.     return 0;
  21. }

miércoles, 2 de enero de 2013

Factorizar un número

   Al factorizar un número de busca obtener sus factores primos, en el siguiente programa se divide el número ingresado(n), por los números 2,3,4,5... hasta n, no es necesario obtener el número primo para realizar la división, pues siempre se encuentra primero al número primo, que luego se divide.

CÓDIGO

  1.  //Factorizar un numero
  2. #include<stdio.h>
  3. int main(){
  4.     int n,i,j;
  5.     int a[50];   
  6.       //pedimos un numero positivo
  7.     printf("ingrese el numero:\n");
  8.     scanf("%d",&n);
  9.     while(n<=0)
  10.     {
  11.        printf("el numero debe ser positivo:\n");
  12.        scanf("%d",&n);
  13.     }   
  14.       //obtenemos los factores
  15.     i=2;
  16.     j=0;
  17.     while(n>1)
  18.     {
  19.        if(n%i==0)
  20.        {
  21.           n=n/i;
  22.           a[j]=i;
  23.           j++;
  24.           i=2;
  25.        }
  26.        else
  27.           i++;
  28.     }   
  29.       //imprimir los factores
  30.     for(i=0;i<j;i++)
  31.        printf("\nfactor %d = %d",i+1,a[i]);
  32.     
  33.     getchar();
  34.     return 0;
  35. }

martes, 1 de enero de 2013

Área de un círculo

   Para poder hallar el área de un circulo es suficiente aplicar la formula que conocemos gracias a la Geometría, pero es necesario asegurarnos que el radio ingresado sea un número positivo y para ello usamos el bucle "while".
 
CÓDIGO


  1. #include<stdio.h>
  2. #define PI 3.141592654
  3. int main()
  4. {
  5.     float a,r;
  6.     printf("ingrese el radio\n");
  7.     scanf("%f",&r);
  8.     
  9.     while(r<=0)
  10.     {
  11.        printf("el radio debe ser positivo\n");
  12.        scanf("%f",&r);
  13.     }
  14.     
  15.     a=PI*r*r;
  16.     
  17.     printf("\nel area es: %f",a);
  18.     
  19.     getchar();
  20.     getchar();
  21.     return 0;
  22. }

Descomposición cifra por cifra de un número en base 10

Si queremos descomponer un número para obtener sus cifras y usar estas en algún programa más complejo, se puede realizar mediante divisiones sucesivas entre la base y vamos almacenando el resto en un vector o array de enteros y para estar seguros de realizar esta tarea se imprime cifra por cifra el número con el uso del bucle for.

CÓDIGO

  1. #include<stdio.h>
  2. #define BASE 10
  3. #define TAM 12
  4. int main()
  5. {
  6.     int n,m,i;
  7.     int d[TAM];
  8.     printf("ingrese el numero\n");
  9.     scanf("%d",&n);
  10.     while(n<=0)
  11.     {
  12.        printf("el numero debe ser positivo:\n");
  13.        scanf("%d",&n);
  14.     }
  15.     
  16.     i=0;
  17.     while(n)
  18.     {
  19.        d[i]=n%BASE;
  20.        n=n/BASE;
  21.        i++;
  22.     }
  23.     
  24.     int j;
  25.     for(j=0;j<i;j++)
  26.     {
  27.        printf("\ndigito de orden %d %d",j+1,d[j]);
  28.     }
  29.     getchar();
  30.     return 0;
  31. }

sábado, 22 de diciembre de 2012

Cambio de base 10 a otra base n

Diseñar un programa que nos permita cambiar de base , el cambio sera de la base 10 a otra base n, en este caso la base n estará entre 1 y 10, ademas el número a cambiar de base estará entre 1 y 1000.

SOLUCIÓN

Como el cambio se realizará a una base entre 1 y 10, esto nos facilita al momento de imprimir los resultados.
Iniciamos acotando la base al igual que el número ingresado, luego realizaremos el cambio de base mediante divisiones sucesivas con ayuda del bucle while, finalmente imprimimos los resultados mediante el bucle for.

CÓDIGO


  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int m,m2,n,i,j;
  5.     int a[11];
  6.     printf("Base:");
  7.     scanf("%d",&n);
  8.     
  9.     while(n<2 || n>9)
  10.     {
  11.               printf("la base es mayor a 1 y menor a 10\n");
  12.               scanf("%d",&n);
  13.     }
  14.     
  15.     printf("Numero:");
  16.     scanf("%d",&m);
  17.     while(m<1 || m>1000)
  18.     {
  19.               printf("el numero debe estar entre 1 y 1000\n");
  20.               scanf("%d",&m);
  21.     }
  22.     m2=m;
  23.     
  24.     i=0;
  25.     while(m!=0)
  26.     {
  27.                a[i]=m%n;
  28.                i++;
  29.                m=m/n;
  30.     }
  31.     
  32.     printf("\t%d=",m2);
  33.     for(j=i-1;j>=0;j--)
  34.        printf("%d",a[j]);
  35.     printf(" en base %d",n);
  36.     
  37.     return 0;
  38. }

viernes, 8 de junio de 2012

Suma de los n números perfectos

  1. //suma de los n numeros perfectos
  2. #include<stdio.h>
  3. int main (){
  4.    int n,i,j,c,perfecto,np,suma_perfectos; 
  5.    
  6.  do{   
  7.    printf("ingrese la cantidad de los n primeros numeros perfectos a sumar\n");
  8.    scanf("%d",&n);
  9.    i=0;
  10.    suma_perfectos=0;
  11.    for(perfecto=1;i<n;perfecto++){
  12.       np=0;     
  13.       for(j=1;j<perfecto;j++)     
  14.          if(perfecto%j==0) np+=j;  
  15.       if(np==perfecto) c=1;
  16.       else c=0;      
  17.       if(c){
  18.          printf("%d es perfecto \n",perfecto);
  19.          suma_perfectos+=perfecto; 
  20.          i++; 
  21.       }      
  22.    }
  23.    printf("la suma de los %d primeros numeros perfectos es %d \n",n,suma_perfectos);
  24.   }while(n>0) ;  
  25.    return 0;
  26. }

Número perfecto

//número perfecto
#include<stdio.h>

int main(){
   int n,i,suma,condicion;   
   do{  
      printf("ingrese el numero\n");
      scanf("%d",&n);
      suma=0;
      for(i=1;i<n;i++)  
         if(n%i==0) suma+=i;
      if(suma==n) printf("%d es perfecto\n",n);
      else printf("%d no es perfecto\n",n);
   }while(n>0);
   return 0;
}

jueves, 7 de junio de 2012

Imprimir n números primos


El programa finaliza al ingresar un número negativo


  1. //imprimir n numeros primos
  2. #include<stdio.h>
  3. //numero primo
  4. int primo(int n){
  5.    int i,condicion;      
  6.       if(n!=1 && n!=0){
  7.          for(i=2;i<=n;i++)       
  8.             if(n%i==0)
  9.                if(n==i) condicion=1;                
  10.                else{ 
  11.                   condicion=0;
  12.                   break;
  13.                }
  14.       }
  15.       else condicion=0;
  16.    return condicion;
  17. }
  18. //************
  19. int main(){
  20.    int n,i;   
  21.    do{  
  22.       printf("ingrese hasta que numero buscar\n");
  23.       scanf("%d",&n);
  24.       for(i=0;i<=n;i++)       
  25.             if(primo(i)==1) printf("%d ",i);
  26.       printf("\n");              
  27.    }while(n>0);
  28.    return 0;
  29. }

Número primo


  1. //numero primo
  2. #include<stdio.h>
  3. int main(){
  4.    int i,primo,condicion; 
  5.     
  6.       printf("ingrese el numero\n");
  7.       scanf("%d",&primo);
  8.       if(primo!=1 && primo!=0){
  9.          for(i=2;i<=primo;i++)       
  10.             if(primo%i==0)
  11.                if(primo==i) condicion=1;                
  12.                else{ 
  13.                   condicion=0;
  14.                   break;
  15.                }
  16.          if(condicion==1) printf("%d es primo\n\n",primo);
  17.          else printf("%d no es primo\n\n",primo);
  18.       }
  19.       else printf("%d no es primo\n\n",primo);
  20.    
  21.    getchar();
  22.    getchar();
  23.    return 0;
  24. }

Calculadora básica


  1. //calculadora
  2. #include<stdio.h>
  3. //suma
  4. void suma(){
  5.    double a,b;
  6.    printf("ingrese el primer numero\n");
  7.    scanf("%lf",&a);
  8.    printf("ingrese el segundo numero\n");
  9.    scanf("%lf",&b);
  10.    printf(" %lf + %lf es %lf\n\n\n",a,b,a+b);
  11. }
  12. //resta
  13. void resta(){
  14.    double a,b;
  15.    printf("ingrese el primer numero\n");
  16.    scanf("%lf",&a);
  17.    printf("ingrese el segundo numero\n");
  18.    scanf("%lf",&b);
  19.    printf(" %lf - %lf es %lf\n\n\n",a,b,a-b);
  20. }
  21. //multiplicacion
  22. void multiplicacion(){
  23.    double a,b;
  24.    printf("ingrese el primer numero\n");
  25.    scanf("%lf",&a);
  26.    printf("ingrese el segundo numero\n");
  27.    scanf("%lf",&b);
  28.    printf(" %lf x %lf es %lf\n\n\n",a,b,a*b);
  29. }
  30. //division
  31. void division(){
  32.    double a,b;
  33.    printf("ingrese el primer numero\n");
  34.    scanf("%lf",&a);
  35.    do{
  36.    printf("ingrese el segundo numero(diferente de cero)\n");
  37.    scanf("%lf",&b);
  38.    }while(b==0);
  39.    printf(" %lf / %lf es %lf\n\n\n",a,b,a/b);
  40. }
  41. //*************************************************************
  42. int main(){
  43.    int i,j,obs;
  44.    double a,b,r;
  45.    do{
  46.       printf("CALCULADORA\n1 suma\n2 resta\n");
  47.       printf("3 multiplicacion\n4 division\n5 finalizar\n");
  48.       printf("elige una opcion\n");
  49.       scanf("%d",&obs);
  50.       switch(obs){
  51.          case 1: suma(); break;
  52.          case 2: resta(); break;
  53.          case 3: multiplicacion(); break;
  54.          case 4: division(); break;
  55.          case 5: break;
  56.          default: printf("opcion incorrecta\n\n\n");
  57.       }
  58.    }while(obs!=5);
  59.    return 0;
  60. }  
 

Fibonacci en forma recursiva


  1. //fibonacci en forma recursiva
  2. #include<stdio.h>
  3. //fibonacci
  4. int fibonacci(int a){
  5.    int b;
  6.    if(a==1 || a==2){
  7.       b=1;
  8.       return b;
  9.    }
  10.    if(a>2){
  11.       b=fibonacci(a-1)+fibonacci(a-2);
  12.       return b;
  13.    }
  14. }
  15. //pedir numero natural
  16. int pedir(){
  17.    int a;
  18.    do{
  19.       printf("ingrese el numero natural\n");
  20.       scanf("%d",&a);
  21.    }while(a<1);
  22.    return a;  
  23. }    
  24. //************************
  25. int main(){
  26.    int n,i;
  27.    n=pedir(); 
  28.    printf(" %d \n",fibonacci(n));
  29.    for(i=1;i<=n;i++)
  30.    printf("%d ",fibonacci(i));
  31.    getchar();
  32.    return 0;
  33. }
 

jueves, 24 de mayo de 2012

Triangulo rectangulo de 45 grados

Este programa pide el pide el cateto o altura del triangulo rectángulo, para luego formarlo con asteriscos


  1. //triangulo rectangulo de 45 grados
  2. #include<stdio.h>
  3. int main(){
  4.    int cateto,i,j,n;
  5.    printf("triangulo rectangulo de 45 grados\n");
  6.    do{
  7.      printf("ingrese es cateto o altura\n");
  8.      scanf("%d",&cateto);
  9.      while(cateto<2){
  10.         printf("para poder visualizar el triangulo ingrese el cateto mayor a 1\n");
  11.         printf("ingrese es cateto o altura\n");
  12.         scanf("%d",&cateto);                
  13.      }
  14.         for(i=0;i<=cateto-1;i++){ 
  15.            for(j=0;j<=i;j++) 
  16.               printf("*");
  17.            printf("\n");
  18.         }
  19.        
  20.      printf("\npresione \n1 continuar \n2 finalizar \n");  
  21.      scanf("%d",&n);
  22.     } while(1==n);
  23.     return 0;        
  24.  }   


domingo, 13 de mayo de 2012

Funcion de tercer grado

Este programa nos permite encontrar los valor de f(x) de una función de tercer grado o cúbica para los valores de x que el usuario acota y su da el valor de incremento.

  1. //funcion de grado 3
  2. #include<stdio.h>
  3. #include<math.h>
  4. int main(){
  5.    printf("Funcion de grado 3\n"); 
  6.    double a[4],x,xmin,xmax,xincr,y,n;
  7.    int i,condicion1;   
  8.    do{
  9.       for(i=0;i<4;i++){
  10.       printf("ingrese el coeficiente %d\n",i);   
  11.       scanf("%lf",&a[i]); 
  12.       }  
  13.      do{
  14.         printf("ingrese el x minimo\n");
  15.         scanf("%lf",&xmin);
  16.         printf("ingrese el x maximo\n");
  17.         scanf("%lf",&xmax);
  18.         printf("ingrese el incremento de x\n");
  19.         scanf("%lf",&xincr);     
  20.         for(x=xmin;x<=xmax;x=x+xincr){    
  21.           n=3;
  22.           y=0;                         
  23.           for(i=0;i<4;i++){
  24.              y=a[i]*pow(x,n)+y;
  25.              n--;          
  26.           } 
  27.           printf("f(%lf.8)=%lf\n",x,y);         
  28.         }        
  29.         printf("hallar para otros valores de x\n presione\n");
  30.         printf(" 1 continuar\n 2 finalizar\n");
  31.         scanf("%d",&condicion1);
  32.      }while(condicion1==1);
  33.      printf("hallar para otros valores de los coeficientes\n presione\n");
  34.      printf(" 1 continuar\n 2 finalizar\n");
  35.      scanf("%d",&condicion1);             
  36.      }while(condicion1==1);
  37.      return 0;
  38. }

Hallando el promedio de n números

Este programa no da como resultado el promedio de n números, si el número n es cero entonces nos dará como promedio cero.

  1. //Hallando el promedio de n numeros
  2. #include<stdio.h>
  3. int main(){
  4.     float numeron,suma,promedio;
  5.     int i,n,condicion;
  6.     suma=0;
  7.     condicion=2;
  8.     printf("Hallando el promedio de n numeros\n\n");
  9.     do{
  10.       if(condicion==1) suma=0;
  11.       printf("ingrese la cantidad de numeros a promediar\n");
  12.       scanf("%d",&n);             
  13.       for(i=1;i<=n;i++){
  14.          printf("ingrese el numero %d \n",i);
  15.          scanf("%f",&numeron);
  16.          suma=suma+numeron;
  17.       }
  18.       if(n==0) promedio=0.0;
  19.       else promedio=suma/n;
  20.       printf("el promedio de %d numero es %f\n\n\n",n,promedio);
  21.       printf("desea hallar el promedio de otros numeros\n presione\n");
  22.       printf(" 1 continuar \n 2 finalizar \n");
  23.       scanf("%d",&condicion);
  24.     }while(condicion==1);
  25. }



Related Posts Plugin for WordPress, Blogger...