elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
10 Octubre 2008, 23:24  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios (Moderador: soplo)
| | | |-+  Soluciones ejercicios C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Soluciones ejercicios C  (Leído 16357 veces)
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C
« en: 06 Julio 2004, 06:54 »

En este tema se irán añadiendo las soluciones a los ejercicios de C,  los usuarios que tengais vuestra solución crear un tema nuevo y pronto será unido y ordenado en este tema.

Si quereís hacer alusión a alguna solución, el titulo del mensaje ponerlo de esta forma:

Citar
100 - C Solución cokeing

asi se ve enseguida el número del ejercicio, el lenguaje y la solución a la que haceis referencia (de ahi lo de poner el nick :P)

salu2
« Última modificación: 07 Julio 2004, 18:38 por Cobac » En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 100
« Respuesta #1 en: 06 Julio 2004, 06:55 »

Soluciones al ejercicio 100

codigo de Cokeing:

Código:
/***************************************************/
/****************************** EJ_100 *************/
/***************************************************/
/*                              cokeing@gmail.com  */
/***************************************************/


#include <stdio.h>
main(){

float x;
int y=0;
char sis;

do{
        printf("Introduce temperatura, con F o C adelante. ej: 'F78.3' o 'C25.2' -> ");
        scanf("%c%f",&sis,&x);

        if(sis=='F') {
                x=(5/9.)*(x-32);
                printf("  >> La Temperatura en Celsius es: %1.1f\n\n",x);
                y=1;
        }

        if(sis=='C') {
                x=(x+(160/9.))/(5/9.);
                printf("  >> La Temperatura en Farenheit es: %1.1f\n\n",x);
                y=1;
        }
getchar();
}while(y==0);
}

codigo de Cobac:
Código:
#include <stdio.h>

main()
{
int cat;
float temp, sol;

temp=0, cat=0;

    printf("Escribe temperatura\n");
    scanf("%f", &temp);
   
    printf("1.-De Celsius a Farenheit\n");
    printf("2.-De Farenheit a Celsius\n");
    scanf("%d", &cat);
   
   
    switch(cat){
   
    case 1:
        sol =(temp+(160/9.))/(5/9.);
        printf("Son %.2f grados Farenheit", sol);
    break;
   
    case 2:
        sol = (5/9.)*(temp-32);
        printf("Son %.2f grados Celsius", sol);
    break;
   
    default:
        printf("\n\nAprende a escribir xDD\n");
    break;
   
    }
   
    getchar();
    getchar();
}

Código de kasswed

Código:
#include <stdio.h>

float convertiraC (float grados);
float convertiraF (float grados);

main()
{
      float temperatura;
      char opcion;
      float convertido;
      printf("Introduce una temperatura: ");
      scanf("%f", &temperatura);
      fflush(stdin);
      printf("\nSi la temperatura esta en Celsius pon una 'c', si esta Farenheit, pon una 'f': ");
      scanf("%c", &opcion);
      fflush(stdin);
      if ( (opcion == 'c') || (opcion == 'C') ){
         convertido = convertiraF (temperatura);
         printf("\nLa temperatura en grados Celsius es %.2f y en Farenheit es %.2f", temperatura, convertido);
         }
      else if ((opcion == 'f') || (opcion == 'F')){
         convertido = convertiraC (temperatura);
         printf("\nLa temperatura en grados Farenheit es %.2f y en Celsius es %.2f", temperatura, convertido);
         }
      else printf("\nCaracter incorrecto o paso incorrecto.");
      getchar();
      getchar();
}

float convertiraF (float grados){
    return (grados+(160/9))/(5/9.);
    }
float convertiraC (float grados){
    return (5/9)*(grados-32);
    }
« Última modificación: 24 Diciembre 2005, 02:32 por Cobac » En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 101
« Respuesta #2 en: 07 Julio 2004, 03:48 »

Soluciones al ejercicio 101

Código de SCYUK:

Código:
#include <stdio.h>
main()
{
float total;
int num;
num=0;
total=0;

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de un centimo:\n");
scanf("%d",&num);
total=total+(num*0.01);

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de dos centimos:\n");
scanf("%d",&num);
total=total+(num*0.02);

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de cinco centimos:\n");
scanf("%d",&num);
total=total+(num*0.05);

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de diez centimos:\n");
scanf("%d",&num);
total=total+(num*0.10);

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de veinte centimos:\n");
scanf("%d",&num);
total=total+(num*0.20);

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de cincuenta centimos:\n");
scanf("%d",&num);
total=total+(num*0.50);

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de un euro:\n");
scanf("%d",&num);
total=total+(num*1);

printf("\nIntroduce el presupuesto que posee tu bolsillo en monedas de dos euros:\n");
scanf("%d",&num);
total=total+(num*2);

printf("\nIntroduce el presupuesto que posee tu bolsillo en billetes de cinco euros:\n");
scanf("%d",&num);
total=total+(num*5);

printf("\nIntroduce el presupuesto que posee tu bolsillo en billetes de diez euros:\n");
scanf("%d",&num);
total=total+(num*10);

printf("\nIntroduce el presupuesto que posee tu bolsillo en billetes de veinte euros:\n");
scanf("%d",&num);
total=total+(num*20);

printf("\nIntroduce el presupuesto que posee tu bolsillo en billetes de cincuenta euros:\n");
scanf("%d",&num);
total=total+(num*50);


printf("\nIntroduce el presupuesto que posee tu bolsillo en billetes de cien euros:\n");
scanf("%d",&num);
total=total+(num*100);

printf("\nIntroduce el presupuesto que posee tu bolsillo en billetes de doscientos euros:\n");
scanf("%d",&num);
total=total+(num*200);

printf("\nIntroduce el presupuesto que posee tu bolsillo en billetes de quinientos euros:\n");
scanf("%d",&num);
total=total+(num*500);

printf("\nEl total de tu dinero es %f euros.\n",total);
}

Código de Cobac:

Código:
#include <stdio.h>

main()
{
int x=0;
float total=0;
int monedas[]={50000,20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
int tipomon[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    for(x=0; x < 15; x++)
    {
        if(monedas[x] >= 100)
        {               
                if(monedas[x] >= 100 && monedas[x] <= 200)
                {
                                printf("Cuantas monedas de %i euros\n", monedas[x]/100);
                                scanf("%i", &tipomon[x]);
                }
                else
                {
                                printf("Cuantos Billetes de %i euros\n", monedas[x]/100);
                                scanf("%i", &tipomon[x]);
                }
        }
        else
        {
                printf("Cuantas monedas de %i centimos\n", monedas[x]);
                scanf("%i", &tipomon[x]);
        }
    }
   
    for(x=0; x < 15; x++)
    {
        total = total + monedas[x]*tipomon[x];
    }
       
    printf("La suma total es: %.2f euros\n\n", total/100);
       
getchar();
getchar();
}

Código de cokeing:

Código:
/***************************************************/
/****************************** EJ_101 *************/
/***************************************************/
/*                              cokeing@gmail.com  */
/***************************************************/

#include <stdio.h>
main(){
float mon;
int billetes[15]={1,2,5,10,20,50,100,200,500,1000,2000,5000,10000,20000,50000};
int x,temp;

for(x=0;x<15;x++){
   printf("Introduce cantidad de la siguiente moneda >> ");
    if(billetes[x]<100) printf("%d centimos: ",billetes[x]);
    else printf("%d euros: ",(billetes[x]/100));
   scanf("%d",&temp);
   mon+=temp*billetes[x];
}

printf("\nTotal >> %1.0f euros",(mon/100));

x=mon/100;
mon=mon-x;
mon=mon/1000;
printf(" y %1.0f centimos.",mon);
}
« Última modificación: 08 Julio 2004, 06:16 por Cobac » En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 102
« Respuesta #3 en: 07 Julio 2004, 03:50 »

Soluciones al ejercicio 102


Código de Cobac:

Código:
#include <stdio.h>

main()
{
int num=0, bin[80], x=0, t=0;

    printf("Introduce el numero\n");
    scanf("%i", &num);
   
    //Ya se que esto es trampa, pero asi todos aprendemos xD
   
    printf("\nEn hexadecimal: ");
    printf("%x",num);
   
    for(x=0; num >= 1; x++)
    {
        bin[x] = num%2;
        num = num/2;
    }
   
    printf("\nEn binario: ");
   
    for(t=x-1; t >= 0; t--)
    {
        printf("%i", bin[t]);
    }
   
    printf("\n");
           
getchar();
getchar();
}

Código de Charlie:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
  int dec,bin[24],i,aux,rest;
  char hex[6],let;
  printf ("\t\tPROGRAMA TRANSFORMADOR NUMEROS\n");
  printf ("\t\t******************************\n\n");
  printf ("\t\tA continuacion te pediremos que introduzcas un numero y te\n");
  printf ("\t\tdiremos su valor en decimal y hexadecimal\n\n");
  printf ("\t\tPulsa una tecla para continuar...\n");
  getchar();
  system("clear");
  printf("Introduce un numero en decimal(mayor que 0 y menor que 10.000.000):");
  scanf("%d",&dec);
  fflush(stdin);
  if (dec<0 || dec>10000000) {
    do {
          printf("Numero incorrecto.Introduzca numero valido (0-10.000.000):");
          scanf("%d",&dec);
          fflush(stdin);
          }while (dec<0 || dec>10000000);
  }
  aux=dec;
  for(i=0;i<24;i++) {
    rest=aux%2;
    bin[i]=rest;
    aux=aux/2;
  }
  printf("El numero en binario es: ");
  for (i=23;i>=0;i--) {
    printf("%d ",bin[i]);
  }
  aux=dec;
  for(i=0;i<7;i++) {
    rest=aux%16;
      if(rest==0)
        let='0';
      if(rest==1)
        let='1';
      if(rest==2)
        let='2';
      if(rest==3)
        let='3';
      if(rest==4)
        let='4';
      if(rest==5)
        let='5';
      if(rest==6)
        let='6';
      if(rest==7)
        let='7';
      if(rest==8)
        let='8';
      if(rest==9)
        let='9';
      if(rest==10)
        let='A';
      if(rest==11)
        let='B';
      if(rest==12)
        let='C';
      if(rest==13)
        let='D';
      if(rest==14)
        let='E';
      if(rest==15)
        let='F';
      hex[i]=let;
      aux=aux/16;
  }
  printf("\nEl numero en hexadecimal es: ");
  for (i=6;i>=0;i--) {
    printf("%c ",hex[i]);
  }
  return 0;
}

Código de TheZen:

Código:
/* Ejercicio 102: Escribir un programa que solicite una cantidad
    entera en formato decimal y la convierta a binario y hexadecimal
   Estado: Terminado
*/

#include <stdio.h>

void binario(int num);
void hex(int num);

main()
{
    int num;
    printf("Escribe un numero decimal: ");
    scanf("%d",&num);
    binario(num);
    printf("\n");
    hex(num);
    getchar();
}

void binario(int num)
{
    int bin[32];
    int x=0;
   
    printf("[+] Numero en binario: ");
    while( num!=0 )
    {
        bin[x] = num % 2;
        num /= 2;
        x++;
    }
    x--;
    for( ; x>=0 ; x-- )
    {
        if( (bin[x]==1)||(bin[x]==0) ) printf("%d",bin[x]);
    }
}   

void hex(int num)
{
    int hex[32];
    int x=0;
   
    printf("[+] Numero en hexadecimal: ");
    while( num>0 )
    {
        hex[x] = num % 16;
        num /= 16;
        x++;
    }
    x--;
    for( ; x>=0 ; x-- )
    {
        if(hex[x]==10) printf("A");
        else if(hex[x]==11) printf("B");
        else if(hex[x]==12) printf("C");
        else if(hex[x]==13) printf("D");
        else if(hex[x]==14) printf("E");
        else if(hex[x]==15) printf("F");
        else printf("%d",bin[x]);
    }
« Última modificación: 07 Agosto 2005, 21:53 por Cobac » En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 103
« Respuesta #4 en: 07 Julio 2004, 03:52 »

Soluciones al ejercicio 103

Código de Cobac:

Código:
#include <stdio.h>
#include <math.h>

main()
{
float raiz=0, sol1=0, sol2=0, A=0, B=0, C=0;

    printf("Siendo Ax^2+Bx+C=0\n");
    printf("Escribe los valores de A, B y C separados por un espacio:\n");
    scanf("%f %f %f", &A, &B, &C);
   
    if(A == 0)
    {
        sol1= (-C)/B;
       
        printf("El valor de X es %.2f\n", sol1);
    }
    else if(B == 0)
    {
        raiz = (-C)/A;
       
        if(raiz < 0)
                printf("ERROR, raiz negativa");
        else
        {       
                raiz = sqrt(raiz);
                printf("Los valores de X son %.2f y %.2f\n\n", raiz, -raiz);
        }
    }
    else if(C == 0)
    {
        sol1 = (-B)/A;
        printf("Los valores de X son 0 y %.2f\n\n", sol1);
    }
    else
    {
        raiz = pow(B,2)-4*A*C;
       
        if(raiz < 0)
                printf("ERROR, raiz negativa");
               
        else
        {
        raiz = sqrt(raiz);
   
        sol1 = (-B+raiz)/(2*A);
   
        sol2 = (-B-raiz)/(2*A);
   
        printf("Los valores son:\nx=%.2f y x=%.2f", sol1, sol2);
        }
    }

getchar();
getchar();
}

Código de TheZen:

Código:
/*
   Ejercicio 103: Escribir un programa que solicite tres números reales A, B y C
   y calcule Ax2+Bx+C=0
   Estado: Terminado
*/


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

main()
{
    float A,B,C;
    float D, raiz, B2;
    float x1, x2;
   
    printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n");
    printf(" ~  Programa que calcula la ecuacion:   ~ \n");
    printf(" ~            Ax2+Bx+C=0                ~ \n");
    printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \n\n");
   
    printf(" - Escribe A: ");
    scanf("%f",&A);
    printf(" - Escribe B: ");
    scanf("%f",&B);
    printf(" - Escribe C: ");
    scanf("%f",&C);
   
    B = 0 - B;
    B2 = B*B;
    raiz = B2 - 4 * A * C;
    if( raiz < 0 )
    {
        printf("[!] No tiene solucion porque no se puede hacer la raiz cuadrada de un numro negativo.\n");
        exit( 1 );
    }   
    raiz = sqrt( raiz );
    D = 2*A;
    x1 = (B + raiz) / D;
    x2 = (B - raiz) / D;

    printf(" +------------------+ \n");
    printf("   x1 = %f            \n",x1);
    printf("   x2 = %f            \n",x2);
    printf(" +------------------+ \n");
   
    getchar();
}

Código de kasswed:

Código:
#include <stdio.h>
#include <math.h>

main()
{
      float A, B, C, res1,res2, raiz1, raiz2;
      printf("Introduce A: ");
      scanf("%f", &A);
      fflush(stdin);
      printf("\nIntroduce B: ");
      scanf("%f", &B);
      fflush(stdin);
      printf("\nIntroduce C: ");
      scanf("%f", &C);
      raiz1 = pow(B,2)-(4*A*C);
            if ( raiz1 < 0){
               printf("\nLa raiz es negativa, el programa no puede continuar.");
               getchar();
               getchar();     
               }
            else {
               raiz2 = sqrt(pow(B,2)-(4*A*C));
               res1 = (0-B + raiz2) / (2*A);
               printf("\nx = %f", res1);
               res2 = (0-B - raiz2) / (2*A);
               printf("\nx = %f", res2);
             getchar();
             getchar();
               }
}
« Última modificación: 18 Diciembre 2005, 17:48 por Cobac » En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 104
« Respuesta #5 en: 07 Julio 2004, 03:54 »

Soluciones al ejercicio 104

Código de Cobac:

Código:
#include <stdio.h>

main()
{
int ano=0, rest=0;

    printf("Introduce el año: ");
    scanf("%d", &ano);
   
    if(ano < 0)
        printf("Años negativos no\n");
       
    else
    {
        rest = ano%4;
       
        if(ano%100 == 0 && ano%400 != 0)
                printf("El año %d no es bisiesto\n", ano);
               
        else if(rest == 0 && ano%100 != 0 || (ano%400 == 0 && ano%100 == 0))
                printf("El año %d es bisiesto!!\n", ano);
       
        else
                printf("El año %d no es bisiesto\n", ano);
    }
   
getchar();
getchar();
}


Código de kasswed:

Código:
#include <stdio.h>

main()
{
      int ano;
      printf("Introduce un año: ");
      scanf("%i", &ano);
      fflush(stdin);
      if ( ( ano % 4 == 0) && (ano % 100 != 0) || ano % 400 == 0){
           printf("\nEl año %i es bisiesto.", ano);
           }
      else {
           printf("\nEl año %i no es bisiesto", ano);
           }         
      getchar();
      getchar();
}
« Última modificación: 17 Diciembre 2005, 00:27 por Cobac » En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 105
« Respuesta #6 en: 07 Julio 2004, 03:55 »

Soluciones al ejercicio 105

Código de Cobac:

Código:
#include <stdio.h>

#define CANTIDAD 100

main()
{

int x=0, y=0, num=0, rest=0, t=0, prim[100], cont=0;

    for(x=0; x < CANTIDAD; x++)
    {
        for(y=1; y <= x; y++)
        {
                rest = num%y;
               
                if(num != y && y != 1 && rest != 0)
                        cont++;
        }
       
        if(cont > num-3)
        {
                prim[t] = num;
                t++;
        }
        num++;
        cont=0;
    }
   
    for(x=0; x < t; x++)
        printf("%d ", prim[x]);
   
getchar();
getchar();
}
En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 106
« Respuesta #7 en: 07 Julio 2004, 03:58 »

Soluciones al ejercicio 106

Código de neohex:

Código:
#include <stdio.h>

int main()
{
int i,num,resul;
printf("[+] Introduce un numero del 0 al 9: ");
scanf("%d", &num);
for(i=1;i<=10;i++){
    resul = num*i;
printf("%d x %d = %d\n",num,i,resul);
}
return 0;
}

Código de Mr.Potato:

Código:
#include <stdio.h>

int main() {
int tabla,i;

printf("introduce un numero del 1 al 9:\n");
scanf("%d",&tabla);
if (tabla < 1 || tabla > 9) {
printf("El numero tiene que ser mayor de 1 y menor que 9\n");
}
else {
for(i=1;i<=10;i++) {
printf("%d x %d = %d\n",tabla,i,tabla*i);
}
}
return 0;
}

Código de Cobac:

Código:
#include <stdio.h>

main()
{
int num=0, x=0;

    printf("Introduce un numero entre 1 y 9: ");
    scanf("%d", &num);
   
    if(num < 1 || num > 9)
        printf("Aprende a leer/escribir");
       
    else
    {
        for(x=1; x <= 10; x++)
        {
                printf("%d x %d = %d\n", num, x, num*x);
        }
    }
   
    getchar();
    getchar();
}


Código de 133_mHz_:

Código:
/* Escribir un programa que pregunte un número entero entre uno y 9 y genere la tabla de multiplicar de ese número */

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

int main()
{

    int a, b, c;
   
    printf("Introduzca un numero (1-9): ");
    scanf("%i", &a);
   
    if(a>9)
    {
        printf("El numero introducido es: %i ", a);
        printf("introduzca un numero menor.\n\n");
    }
       
    else
    {   
        for(b=1;b<11;b++)
        {
                c=a*b;
                printf("%i x %i = %i\n", a, b, c);
        }
    }
    system("pause");
                   
return 0;
}


Código de kasswed:

Código:
#include <stdio.h>

main()
{
      int num, x, res;
      printf("Introduce un numero entre 1 y 9: ");
      scanf("%i", &num);
      if (num > 9 || num < 1){
              printf("\nEl numero introducido es mayor de 9 o menor que uno. El programa no puede continuar.");
              }
      else {
      for (x=1; x<=10; x++){
          printf("\n%i x %i = %i\n", num, x, res = num * x);
          }
          }
      getchar();
      getchar();
}
« Última modificación: 17 Diciembre 2005, 11:14 por Cobac » En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 124
« Respuesta #8 en: 07 Julio 2004, 03:59 »

Soluciones al ejercicio 124

Código de Cobac:

Código:
#include <stdio.h>

main()
{
float producto=0, entregado=0;
int entregar=0, rest=0, x=0;
int monedas[]={50000,20000,10000,5000,2000,1000,500,200,100,50,20,10,5,2,1};
int tipomon[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    printf("Precio producto\n");
    scanf("%f", &producto);
   
    printf("Total entregado\n");
    scanf("%f", &entregado);
   
    entregado = entregado*100;
    producto = producto*100;
   
    if(entregado < producto)
    {
        printf("Diles que te paguen!!!");
    }
   
    entregar = entregado - producto;
   
    rest = entregar;
   
    for(x=0; rest > 0; x++)
    {
   
        while(rest >= monedas[x])
        {
                tipomon[x] = tipomon[x]+1;
                rest = rest - monedas[x];       
        }
    }
   
    for(x=0; x < 15; x++)
    {
        if(monedas[x] >= 100 && tipomon[x] != 0)
        {               
                if(monedas[x] >= 100 && monedas[x] <= 200)
                {
                                printf("Entregar %i monedas de %i euros\n", tipomon[x], monedas[x]/100);
                }
                else
                {
                                printf("Entregar %i Billetes de %i euros\n", tipomon[x], monedas[x]/100);
                }
        }
        else if(tipomon[x] != 0)
        {
                printf("Entregar %i monedas de %i centimos\n", tipomon[x], monedas[x]);
        }
    }
       
getchar();
getchar();
}
En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 107
« Respuesta #9 en: 07 Julio 2004, 04:00 »

Soluciones al ejercicio 107

Código de Cobac:

Código:
#include <stdio.h>

main()
{
int cant=0, num[80], media=0, x=0, y=0;

    printf("Dime la cantidad de numeros que quieres insertar: ");
    scanf("%d", &cant);
   
    if(cant <= 0)
        printf("Sin comentarios....");
       
    else
    {
        //rellenamos el array con números
       
        for(x=0; x < cant; x++)
        {
                printf("\nInserta el numero %d: ", x+1);
                scanf("%d", &num[x]);
        }
       
        for(x=0; x < cant; x++)
        {
                for(y=0; y < cant; y++)
                {
               
                /* Si ponemos > los ordena de mayor a menor
                   Si ponemos < los ordena de menor a mayor */
                   
                       if(num[x] < num[y])
                       {
                                 media = num[y];
                                 num[y] = num[x];
                                 num[x] = media;
                       }
                }
        }
       
        for(x=0; x < cant; x++)
                printf("\n%d ", num[x]);
    }
   
getchar();
getchar();
}
En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 108
« Respuesta #10 en: 07 Julio 2004, 04:02 »

Soluciones al ejercicio 108

Código de Cobac:

Código:
#include <stdio.h>
#include <stdlib.h>

#define NUMERO 5

main()
{
int x=0, elec=0;

typedef struct {

char nombre[15];

char direccion[15];

int telefono;} persona;

persona cliente[NUMERO];

    for(x=0; x < NUMERO; x++)
    {
        printf("\nIntroduce el nombre del cliente numero %d: ",x+1);
        scanf("%s", &cliente[x].nombre);

        printf("\nIntroduce la direccion del cliente numero %d: ",x+1);
        scanf("%s", &cliente[x].direccion);

        printf("\nIntroduce el telefono del cliente numero %d: ",x+1);
        scanf("%d", &cliente[x].telefono);
    }
   
    system("cls");
   
    do{
   
        printf("\n\nIntroduce el numero de la persona que quieres consultar (cero para salir): ");
        scanf("%d", &elec);
       
        if(elec != 0 && elec <= NUMERO)
        {       
                printf("\nNombre del cliente: %s", cliente[elec-1].nombre);

                printf("\nDireccion del cliente: %s", cliente[elec-1].nombre);
       
                printf("\nTelefono del cliente: %d", cliente[elec-1].nombre);
        }       
   
    }while(elec != 0);
}
En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Soluciones ejercicios C 113
« Respuesta #11 en: 07 Julio 2004, 04:03 »

Soluciones al ejercicio 113

Código de neohex:

Código:
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define MYPORT 4500 //Puerto que se deja a la escucha
#define NUBACK 5 //Numero maximo de conexiones a la espera.

int main()
{
int nSocket;
int nSocket2;
int nListen;
struct sockaddr_in my_dire;
struct sockaddr_in su_dire;
int sin_zero;

if ((nSocket=socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("[-] Socket");
exit(1);
}
my_dire.sin_family = AF_INET;
my_dire.sin_port = htons(MYPORT);
my_dire.sin_addr.s_addr = htonl(INADDR_ANY);
memset(&(my_dire.sin_zero), '\0', 8);
if (bind(nSocket, (struct sockaddr *)&my_dire, sizeof(struct sockaddr)) == -1)
{
perror("[-] Bind");
exit(1);
}
if ((nListen=listen(nSocket, NUBACK)) == -1)
{
perror("[-] Listen");
exit(1);
}
printf("[+] Listen iniciado.\n");
printf("\t-Escuchando el puerto %d.\n", MYPORT);
printf("\t-Esperando una conexion.\n");
sin_zero = sizeof(struct sockaddr_in);
if ((nSocket2=accept(nSocket, (struct sockaddr *)&su_dire, &sin_zero)) == -1)
{
perror("[-] Accept");
exit(1);
}
printf("[+] Conexion realizada.\n");
close(nSocket);
return 0;
}

Código de Mr.Potato:

Código:
#include <stdio.h>
#include <netinet/in.h>

int main() {

struct sockaddr_in saddr;
int hsock;

hsock=socket(AF_INET,SOCK_STREAM,0);
if (hsock<0) {
printf("Error creando el socket\n");
return -1;
}
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=INADDR_ANY;
saddr.sin_port=htons(4500);
if (bind(hsock,(struct sockaddr *)&saddr,sizeof(saddr))<0) {
printf("Bind error\n");
return -1;
}
if (listen(hsock,1)<0) {
printf("Listen error\n");
return -1;
}
accept(hsock,0,0);
printf("FIN\n");
return 0;
}
En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Re: Soluciones ejercicios C
« Respuesta #12 en: 07 Agosto 2005, 21:54 »

Soluciones ejercicio 119

Código de TheZen:

Código:
/*
   Ejercicio 119
   Realizar un programa que solicite una máscara de subred y devuelva una ip válida.
*/

#include <stdio.h>

main()
{
    char subred[15], ip[15];
    int x[4], z;
   
    printf("+------------------------------------------------------------+\n");
    printf("    Escribe una mascara de subred. Pueden ser de 3 tipos:\n");
    printf("        A) XXX.0.0.0, B) XXX.XXX.0.0, C) XXX.XXX.XXX.0    \n");
    printf("      El programa devolverá una ip dentro de esa subred. \n");
    printf(" -> ");
    scanf("%s",&subred);
   
    sscanf(subred,"%d.%d.%d.%d",&x[0],&x[1],&x[2],&x[3]);
   
    for( z=0 ; z<4 ; z++ )
    {
        if( (x[z]>255) || (x[z]<0) )
        {
            printf("\n  [!] Error: La IP introducida no es correcta.\n");
            exit(1);
        }
    }       
       
    if( x[3] != 0 )
    {
        printf("\n  [!] Error: La IP introducida no corresponde a ningun tipo de subred.\n");
        exit(1);
    }   
   
    srand( time(NULL) );
    if( (x[1]==0) && (x[2]==0) && (x[3]==0) ){
        sprintf(ip,"%d.%d.%d.%d",x[0],rand()%256,rand()%256,rand()%256);
        printf("\n       [*] Subred de tipo A \n");
    }   
    else if( (x[2]==0) && (x[3]==0) ){
        sprintf(ip,"%d.%d.%d.%d",x[0],x[1],rand()%256,rand()%256);
        printf("\n       [*] Subred de tipo B \n");
    }
    else if( x[3]==0 ){
        sprintf(ip,"%d.%d.%d.%d",x[0],x[1],x[2],rand()%256);
        printf("\n       [*] Subred de tipo C \n");
    }
   
    printf("\n       [*] IP Generada: %s [*] \n",ip);
    printf("+------------------------------------------------------------+\n");
   
    getchar();
}
En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Cobac
CoAdmin
*****
Desconectado Desconectado

Mensajes: 5.441


Still In Development


Ver Perfil
Re: Soluciones ejercicios C
« Respuesta #13 en: 07 Agosto 2005, 21:55 »

Soluciones ejercicio 125

Código de TheZen:

Código:
/*
   Nombre: b64
   Autor: Thezen
   Mail/msn: putoamo@gmail.com
   Descripcion: Aplicacion que permite Codificar/Descodificar en Base64
                Para codificar, añadirle el parámetro /c y para descodificar
                /d seguido de una cadena.
*/
   

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

int binario[1024];
int btd[8];
int cont=0;

char base64[] = { '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','0','1','2','3','4','5','6','7',
                  '8','9','+','/' };

void atob(int num, int base); /* Convierte un valor ASCII a binario */
int btod( int base ); /* Convierte un valor binario a decimal */
void codificar(char *clave); /* Codifica una cadena a Base64 */
void descodificar(char *clave); /* Descodifica una cadena en Base64 */

int main(int argc, char *argv[])
{
    printf(" *--------------------------------------------*\n");
    printf("  \\   Codificador/Descodificador de Base64   /\n");
    printf("  /   By: TheZen    -    putoamo@gmail.com   \\ \n");
    printf(" *--------------------------------------------*\n");
   
    if( argc != 3 )
    {
        printf("\n Modo de uso: %s [/c /d] clave. \n",argv[0]);
        printf(" /c [cadena] - Codifica una cadena\n");
        printf(" /d [cadena] - Descodifica una cadena\n");
        exit( 1 );
    }
   
    if( (strcmp(argv[1],"/c")==0) || (strcmp(argv[1],"/C")==0) ) codificar(argv[2]);
    if( (strcmp(argv[1],"/d")==0) || (strcmp(argv[1],"/D")==0) ) descodificar(argv[2]);
   
    printf("\n");
}

/*************************************************************************/

void codificar(char *clave)
{
    int x=0, num, contador, b64, z=0;
    char clave2[1024];
                     
    sprintf(clave2,"%s",clave);
   
    while( 1 )
    {
        num = clave2[x];
        if(num==0) break;
        atob(num,8);
        x++;
        contador++;
    }   
    printf("\n");
    num=0;
    for(x=0;x<=((8*(contador-2)-1));x++)
        num++;
         
    cont=0;
    while( (num%6) != 0 )
        num++;
    num /= 6;
   
    printf("  [*] Codificado a Base64: ");
    for( x=1 ; x<=num ; x++ )
    {
        for( z=0 ; z<=5 ; z++ ){
            btd[z] = binario[cont];
            cont++;
        }   
        b64=btod(6);
        printf("%c",base64[b64]);   
    }
    while( (num%4)!=0 ){
        printf("=");   
        num++;
    }   
}

/*************************************************************************/

void descodificar(char *clave)
{
    char clave2[1024], deci;
    int x=0, z=0, decimal[1024], num, contador=0, dec;
                     
    sprintf(clave2,"%s",clave);
   
    while( clave[z] != '=' )
    {
        if( (clave2[z]==0) || (clave2[z]=='=') ) break;
        for( x=0 ; x<=64 ; x++ )
            if( base64[x] == clave2[z] ) decimal[z] = x;
        z++;
    }
    x=0;
    while( 1 )
    {
        num = decimal[x];
        if(num==0) break;
        atob(num,6);
        x++;
        contador++;
    }   
   
    num = 6*contador;
    num /= 8;
    printf("  [*] Descodificado en Base64: ");
    cont=0;
    for( x=1 ; x<=num ; x++ )
    {
        for( z=0 ; z<=7 ; z++ ){
            btd[z] = binario[cont];
            cont++;
        }   
        dec = btod(8);
        printf("%c",dec,dec);
    }
}   

/**************************************************************************/

void atob(int num, int base)
{
    int bin[base];
    int x=0;
   
    for( x=0 ; x<=(base-1) ; x++ )
    {
        bin[x] = num % 2;
        num /= 2;
    }
    for( x=(base-1) ; x>=0 ; x-- ){
        binario[cont] = bin[x];
        cont++;
    }   
}

/**************************************************************************/

int btod( int base )
{
    int b64=0;
    int x=0,z=0;
   
    for( x=(base-1) ; x>=0 ; x-- ){
        b64 += btd[x] * pow(2,z);
        z++;
    }     
    return b64;
}   

/*************************************************************************/
En línea

PIV 2533 @ 2720Mhz | 512MB DRR333 @ 358 | 160 Gb + 40 Gb Seagate Barracuda

En la Edad Media la Iglesia robaba con los diezmos. En el siglo XXI la SGAE roba con sus cánones.
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats