elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40
251  Programación / Programación C/C++ / Re: verificar numeros romanos en: 20 Agosto 2013, 06:00 am
aqui tengo algunas mejoras que le hice al codigo, aunque cuando le ingreso un numero romano cualquiera como: XVI, me imprime error!no es numero romano y no tengo idea de por que, ya van varias veces que lo checo

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 7
  4.  
  5. int main()
  6. {
  7.    int i,j,bandera;
  8.    char romano[TAM],letras[]={'I','V','X','L','C','M','\0'},*ptr,*p;
  9.    printf("Dame el primer numero: ");
  10.    fgets(romano,TAM,stdin);
  11.    ptr = romano;
  12.    p = letras;
  13.    for(i=*ptr;*ptr!='\0';*ptr++)
  14.    {
  15.        bandera = 0;
  16.        for(j=*p;((*p!='\0')&&(bandera==0));*p++)
  17.        {
  18.            if(*ptr == *p)
  19.               bandera = 1;
  20.        }
  21.        if(bandera!=1)
  22.        {
  23.            printf("Error!No es numero romano\n");
  24.            exit(1);
  25.        }
  26.    }
  27.    return 0;
  28. }
252  Programación / Programación C/C++ / Re: verificar numeros romanos en: 19 Agosto 2013, 21:19 pm
gracias amchacon seria algo como esto???:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 7
  4.  
  5. int main()
  6. {
  7.    char romano[TAM],letras[]={'I','V','X','L','C','M'},*ptr,*p;
  8.    printf("Dame el primer numero: ");
  9.    fgets(romano,TAM,stdin);
  10.    ptr = romano;
  11.    p = letras;
  12.    while(*ptr++ != '\0')
  13.    {
  14.        if(*ptr++ != *p++)
  15.            printf("Error!! no es numero romano\n");
  16.    }
  17.    return 0;
  18. }

y que significa k&r?
253  Programación / Programación C/C++ / verificar numeros romanos en: 19 Agosto 2013, 19:52 pm
Saludos tengo el siguiente programa que me pide que le ingrese un numero romano cualquiera, pero tengo que verificar que si sea romano y que no contenga letras que no sean I, V, X, L, M y es ahi donde tengo el problema

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TAM 7
  4.  
  5. int main()
  6. {
  7.    char romano[TAM];
  8.    printf("Dame el primer numero: ");
  9.    fgets(romano,TAM,stdin);
  10.    while(*romano++ != '\0')
  11.    {
  12.        if(*romano!='I','V','X','L','C','M')
  13.            printf("Error!! no es numero romano\n");
  14.    }
  15.    return 0;
  16. }

el error esta en el if

de antemano gracias
254  Foros Generales / Dudas Generales / Re: Analisis de algoritmos en: 29 Julio 2013, 19:27 pm
Código
  1. i=0;                //ta
  2.  
  3. while((i<n)&&(v!=x))   //desde aqui le pongo n* las dos condiciones -> n*(2tc) pero
  4.                                   para que el ciclo while se salga se tiene que evaluar
  5.                                    la condicion (i <n)  una vez mas y ya que sea
  6.                                   falsa ya no tiene caso evaluar el resto de condicion (y!=x)
  7.                                   por eso le puse un tc extra.
  8.     i = i+1;                 // Aqui hay una asignacion y una operacion -> to + ta
  9.  
  10. if(i==n)        //tc
  11.   enc = false;
  12. else              // Luego, solo habra una, asi que si o si será ta
  13.  enc = true;
  14.  

255  Foros Generales / Dudas Generales / Re: Analisis de algoritmos en: 28 Julio 2013, 23:55 pm
Una ultima pregunta, ahora tengo el codigo de busqueda secuencial (busca el elemento x)

i=0;
while((i<n)&&(v!=x))
     i = i+1;
if(i==n)
   enc = false;
else
  enc = true;

y me dice que saque tiempo de ejecucion del mejor y peor caso, el mejor caso pues es si x se encuentra en la primera posicion del vector y seria

 T(n) = ta + (2tc + tc + ta)

donde ta es el numero de asignaciones, tc = numero de comparaciones y to  = numero de operaciones aritmeticas

pero para el peor seria que x no se encuentre en el vector y en este caso yo calcule que seria:

T(n) = ta + (n*(2tc + to + ta)) + tc + tc +ta

pero el libro me dice que la respuesta correcta es

T(n) = (2tc + 2to +2ta)*n + (2tc +2ta)

alguien sabe por que es esto??

gracias
256  Foros Generales / Dudas Generales / Re: Suma de Riemann en: 27 Julio 2013, 18:54 pm
jajaj espero no correr la misma suerte y tambien salirme de la carrera :-\, bueno la sumatoria que me esta dando problemas es la siguiente:



no la pude poner mas grande porque me sale la imagen cortada no entiendo por que, a ver si me pueden ayudar

gracias
257  Foros Generales / Dudas Generales / Suma de Riemann en: 27 Julio 2013, 01:12 am
Alguien que me pueda explicar como calcular la suma de Riemann, he estado buscando por muchas paginas pero no logro entender bien el concepto ni las formulas

gracias
258  Foros Generales / Dudas Generales / Analisis de algoritmos en: 26 Julio 2013, 01:24 am
Saludos estoy empezando a leer un libro de analisis de algoritmos y viene un codigo al que le tengo que calcular el tiempo de ejecucion, esto sumando las operaciones elementales(asiganciones,retornos,acceso a estructuras indexadas, etc..) de cada linea de codigo pero tengo duda de como calcular el tiempo de ejecucion para el mejor caso

el codigo esta en modula-2

PROCEDURE Buscar(VAR a:vector;c:INTEGER):CARDINAL;
VAR j:CARDINAL;
BEGIN
  j :=1;                                       (1)
  WHILE(a[j] >c) AND (j < n) DO   (2)
     j:=j+1;                                  (3)
  END;                                         (4)
IF a[j]=c THEN                             (5)
  RETURN j;                                  (6)
ELSE RETURN 0;                            (7)
END;                                             (8)
END Buscar;

y el libro dice

En el mejor caso para el algoritmo, se efectuara la linea 1 y de la linea 2 solo la primera mitad de la condicion, que supone 2 OE(suponemos que las expresiones se evaluan de izquierda a derecha y una expresion logica deja de ser evaluada en el momento que se conoce su valor, aunque no hayan sido evaluados todos sus terminos. Tras ellas se acaba ejecutando las lineas (5) y (7), en consecuencia T= 1+2+3=6

pero no entiendo porque en la linea 2 solo evalua la mitad de la condicion, si es un AND no se supone que tiene que evaluarla completa??

gracias de antemano


259  Programación / Programación C/C++ / Re: scanf y gets en: 21 Julio 2013, 02:51 am
Citar
A priori no hay forma. Lo mas sencillo es utilizar un array de caracteres para leer ahí cada una de las cadenas tomando nota de su longitud. Lees una cadena, reservas el espacio justo para ella y la copias ahí.

rir3760 con esto ultimo que me acabas de decir ya me quedo claro como lo tengo que hacer, aqui dejo un pedazo del codigo que estoy haciendo, creo que era a lo que te referias con utilizar un array de caracteres y demas

Código
  1. #define MAX 5
  2.  
  3. int main()
  4. {
  5.    char *nombre[MAX];
  6.  
  7.    entrada(nombre);
  8.    return 0;
  9. }
  10.  
  11. void entrada(char *nombre[])
  12. {
  13.    char B[50];
  14.    int i;
  15.    for(i=0;i < MAX;i++)
  16.    {
  17.        printf("Dame la escuela numero %d: ",i);
  18.        gets(B);
  19.        (nombre+i) = (char*)malloc(strlen(B)sizeof(char));
  20.        strcpy(nombre+i,B);
  21.        system("cls");
  22.    }
  23. }
 

de la funcion de malloc no se si tiene algun error porque no se bien como es su estructura
260  Programación / Programación C/C++ / Re: scanf y gets en: 19 Julio 2013, 06:48 am
entonces si por ejemplo quiero ingresarle no se... 5 nombres cualquieras:

char *a[5]
 
*(a+0)="Maria";
*(a+1)="Jose";
etc...

pero no quiero estar contando el numero de letras cada vez que tenga que asignar memoria para cada nombre, como se le asignaria la memoria??

perdona que pregunte tanto pero es que los punteros no se me dan
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines