miércoles, 12 de octubre de 2011

Programación C, PERL y Python

Desarrollar y probar los problemas descritos a continuación en C, PERL y Python:

1. Generar 1000 números aleatorios y calcular el promedio.
2. Calcular los puntos de una circunferencia con centro en el origen (el radio debe ser mayor a 10).
3. Solicitar la fecha de nacimiento y calcular la edad en segundos.
4. Solicitar un texto por entrada estándar y contar el número de letras que tiene.
5. Dada una fecha y hora, contar las horas desde el inicio del año hasta la fecha y hora dada.
6. Calcular la suma de los valores ASCII de “A” a “Z”, más “a” a “z” y más “0” a “9”.
7. Verificar si un RUT es correcto.

Desarrollo:
En c:
1)
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#include<stdlib.h>
#include <time.h>
#include<math.h>

int main(){
 int i;
 int n=0;
 int a[1000];
 for(i=0;i<1000;i++){
   srand((unsigned)time(NULL));
   a[i]=rand()%1000;
 }
 for(i=0;i<1000;i++){
   n=n+a[i];
 }
 printf("el promedio de los 1000 numeros generados es = %d",(n/1000));
 getchar();
}

2)
#include <windows.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#include<stdlib.h>
#include <time.h>
#include<math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif

int main(void){
int i=0;
int r=0;
float x=0,y=0;
int c=0;
int N=30;
//c=x^2+y^=r^2
//x e y son puntos
//r es el radio que tiene que ser mayor que 10
//sabiendo que tenemos el centro(0,0) y que el radio es mayor que 10

//Radio
while(i<2){
srand((unsigned)time(NULL)); 
r=rand()%100;
i++;
if(r<10){
i--;
}}

//puntos x e y
while(i<10){
x=r*(sin(i*2*M_PI/N));
y=r*(cos(i*2*M_PI/N));
printf("%f|%f",x,y);
i++;
}
}

3)
int main(void){
char texto[200];
fflush(stdin);
printf("\tIngrese un Texto: ");
gets(texto); //obtiene y guarda el texto
int largo = strlen(texto); // guarda el largo del texto
int i;
int contador = 0;
char l;
for (i = 0; i < largo; i++) {
contador++;
l = texto[i];
if (l == ' ')
{
contador--;
}
}
printf(" =%d", contador);
}

4)
#import <stdio.h>
#import <time.h>
time_t pideFechaNacimiento(){
    int dia, mes, ano;
    struct tm aux;
    time_t fec_nac;  
    printf("[?] Introduzca su fecha de nacimiento:\n");
    printf("\tdd:\t");
    scanf("%i", &dia);
    printf("\tmm:\t");
    scanf("%i", &mes);
    printf("\tyyyy:\t");
    scanf("%i", &ano);    
     if ( ( dia < 1 ) || (dia > 31) || (mes < 1) || ( mes > 12) || ( ano < 1000) ){
         printf("[x] Error, fecha no valida");
          return 0;
        }
     aux.tm_mday = 17;
     aux.tm_mon = 7 - 1;
     aux.tm_year = 1988 - 1900;
     aux.tm_sec = 0;
     aux.tm_min = 0;
     aux.tm_hour = 0;
     aux.tm_isdst = 0;
     fec_nac = mktime(&aux);
     return fec_nac;
}
int segundosDesde(time_t fecha){
     time_t now;
     time(&now); 
     return now - fecha;
}
int main(int argc, char* args[]){
        printf("[!] Has vivido %i segundos\n", segundosDesde( pideFechaNacimiento() ) );
         return 0;
        getchar();
}

5)
#include <stdio.h>
int main(int argc, char* argv[]){
        int suma = 0;
        char i;
        for(i = 'a' ; i <= 'z' ; i++){
                suma += i;
        }
        for(i = 'A' ; i <= 'Z' ; i++){
                suma += i;
        }
        for(i = '0' ; i <= '9' ; i++){
                suma += i;
        }
        printf("La suma es %i\n", suma);
}

6)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char digitoVerificador(int rut)
{
    int Digito;
    int Contador;
    int Multiplo;
    int Acumulador;
    char RutDigito;
    Contador = 2;
    Acumulador = 0;
    while (rut != 0)
    {
        Multiplo = (rut % 10) * Contador;
        Acumulador = Acumulador + Multiplo;
        rut = rut / 10;
        Contador = Contador + 1;
        if (Contador == 8)
        {
            Contador = 2;
        }
    }
    Digito = 11 - (Acumulador % 11);
    if (Digito == 10)
    {
        RutDigito = 'K';
    }
    else if (Digito == 11)
    {
        RutDigito = '0';
    }
    else
    {
        RutDigito = (char)(((int)'0')+Digito);
    }
    return (RutDigito);
}
int main()
{
    char sRut[10];
    char sRutAux[10];
    char cDigito = '\0';
    char cDigitoValido = '\0';
    int iRut = 0;
    char *token = NULL;
    printf("Ingrese el rut que ejecutar: ");
    gets(sRut);
    strncpy(sRutAux,sRut,10 - 1);
    token = strtok(sRutAux, "-");
    iRut = atoi(token);
    cDigito = sRut[strlen(sRut) - 1];
    printf("DATOS INGRESADOS: \n");
    printf("Rut: %d\n", iRut);
    printf("Digito: %c\n\n", cDigito);
    cDigitoValido = digitoVerificador(iRut);
    if(cDigito == cDigitoValido)
    {
     printf("-- DIGITO CORRECTO --");
    }
    else
    {
     printf("-- DIGITO INCORRECTO --");
    }
     getchar();
}

No hay comentarios:

Publicar un comentario