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


 


Tema destacado: [AIO elhacker.NET 2013] Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 94
1  Programación / Programación C/C++ / Re: Ayuda con este programa en: 5 Diciembre 2014, 03:06
Hola, tengo el problema que la variable por me arroja cero siempre, les dejo el código, podría ser una tontería, pero estoy en semestrales y entre tanto no veo el problema.

Código
  1.   por=(tv/v)*100; //aquí esta el problema
  2.   printf("\n\n\n\n\tEl porcentaje de las personas que votaron: %.2f %",por);
  3.  

O en vez del explícito cast sencillamente multiplica uno de los enteros por 1. :


 
Citar
  (
    (1.*
tv/v)*100; //ya no esta aquí esta el problema
    printf("\n\n\n\n\tEl porcentaje de las personas que votaron: %.2f %",por);



¡¡¡¡ Saluditos! ..... !!!!


2  Programación / Programación C/C++ / Re: Ayuda con error Code::Blocks y Windows 8.1 en: 22 Noviembre 2014, 12:20
Instale Code Blocks en mi PC, y cuando quiero ejecutar algún proyecto o código me aparece esto:
   " No such file or directory "

Compile un "hola mundo" por que pensé que el proyecto que hice estaba mal pero tambien me salio lo mismo,

Código:
#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

alguien sabe por que me pasa esto?, el codeblocks me funcionaba bien, luego tuve que formatear mi pc y lo volví a instalar y me sucedió esto,   :-( :-(


Es muy probable que lo hayas guardado con extensión "  .c " en lugar de con " .cpp " como corresponde a un código de C++.  ;)

¡¡¡¡ Saluditos! ..... !!!!


3  Programación / Programación C/C++ / Re: [C++] Problema con vocales con tilde y caracteres especiales. en: 21 Noviembre 2014, 20:49
Hola, estoy realizando un programa de cifrado y desencriptación, explico.
.................................................................
En el nivel 2, en una de las fases convierto los caracteres a cadenas. Si los caracteres son convencionales funciona perfectamente, pero si son vocales con tilde o la letra 'ñ' el programa se detiene inesperadamente.

¿Como podría solucionar esto?


¿ Has probado a usar el teclado en español ?. Te pongo un ejemplo de su uso:

Código
  1. #include<stdio.h>
  2. #include<locale.h>
  3.  
  4. int main(void){
  5.  setlocale(LC_ALL, "Spanish");
  6.  printf ("¡Hola leoñanñan! ¿Cuántos tenía años la canción número 2²?\n");
  7.  printf ("2+3.5=%f  \n",2+3.5);
  8.  float a=2.75+3.5;
  9.  printf ("Observa la coma en lugar del punto para marcar los decimales: %g\n",a);
  10.  float b=a*a;
  11.  printf ("b=%f\n",b);
  12.  printf ("¡Ño! enésima \n");
  13.  return 0;
  14. }

¡¡¡¡ Saluditos! ..... !!!!


4  Programación / Programación C/C++ / Re: Matriz principal con secundaria en: 21 Noviembre 2014, 20:40
Haz mezclado parte de tu código con el que te propuso rir3760.

A ver si con esto te funciona ( sobra la e=10 que no sé que pintaba en todo esto):

Código
  1. printf("\nLa matriz con intercambio de diagonal principal por la secundaria\n\n");
  2. printf("\n");
  3.  
  4. for (i = 0; i < fila; i++) {
  5.   aux = matriz[i][i];
  6.   matriz[i][i] = matriz[i][columna - 1 - i];
  7.   matriz[i][columna - 1 - i] = aux;
  8. }
  9.  
  10. for (i=0;i<fila;i++) {
  11.   for (n=0;n<columna;n++)
  12.    printf("[%d]",matriz[i][n]);
  13.   printf("\n");
  14. }

¡¡¡¡ Saluditos! ..... !!!!


5  Programación / Programación C/C++ / Re: ingresar frase y devolver al reves en: 17 Noviembre 2014, 08:18
Hola tengo una duda
.. Trabajo en este programa c++

pero no sé cómo solucionar el tema del espacio, es decir si escribo un nombre compuesto sólo me imprime al revés el primer nombre..
Tienes alguna idea que me pueda orientar para solucionarlo?
Te lo agradecería.


Prueba con:

Código
  1. fgets(nombre, 18, stdin);

en lugar del cin.

¡¡¡¡ Saluditos! ..... !!!!


6  Programación / Programación C/C++ / Re: Identificar frases palíndromas en: 16 Noviembre 2014, 14:05
......................................
Ya que la idea es copiar la cadena en dos arrays otra opción mas sencilla y con el mismo efecto es:
Código
  1. frase3[letra2] = frase2[letra2] = frase1[letra1];
  2. letra2++;
.........................

Incluso más sencillo:

Código
  1. frase3[letra2] = frase2[letra2++] = frase1[letra1];

¡¡¡¡ Saluditos! ..... !!!!



7  Programación / Programación C/C++ / Re: Identificar frases palíndromas en: 15 Noviembre 2014, 20:33
Hola a todos, tengo que hacer un programa que identifique las frases palíndromas. Tengo este código, pero falla en el if al comprobar la cadena con la cadena invertida:

En esencia la idea está bien pero mal implementada:

* Al usar "strrev(frase2)" de forma automática la frase 2 queda invertida y lógicamente es siempre igual a si misma.

* Lo anterior lleva al uso de una tercera cadena para guardar frase1 igual a frase2:

Código
  1. for (letra1 = 0; letra1 <= strlen(frase1) ; letra1++)
  2.  if (frase1[letra1] != ' ')
  3.    frase2[letra2++] = frase1[letra1] , frase3[letra2 - 1] = frase1[letra1];

 y a continuación no hay más que comparar frase3 con frase2 invertida.

* Pero ahí viene el otro error grave que tienes que es comparar en el if dos cadenas con "==" cuando eso en C no es válido. Para ello has de usar "strcmp":

Código
  1. if (strcmp (frase3 , strrev(frase2))  == 0)
  2.  printf("\nTu frase es palindroma!");
  3. else
  4.  printf("\nTu frase no es palindroma!");

Con esas correcciones tu código es totalmente funcional.

Aunque las otras ideas que te han dado son más "chachis".

P.D:Te falta el "return" de main.

¡¡¡¡ Saluditos! ..... !!!!


8  Programación / Programación C/C++ / Re: [C] Limpiando la stdin correctamente... en: 12 Noviembre 2014, 16:01
Y que te parece mi scanf cañero que te ajora to lo anterior?
char cadena[100];
scanf ( "%99[^\n]%*c", cadena );

con esta criatura lees un string de maximo 99 chars, te mete el \0 al final, evita el molesto enter y también el tener que limpiar ningún buffer XDDD  :silbar:
A ver que opinan  ;-)

¿Y si metes 120 caracteres dónde crees que se van a situar los restantes a 99?. ¡¡¡¡ EN EL BUFFER ¡¡¡. Por lo tanto, en ese caso queda por limpiarlo si te excedes en el tamaño.  ;)

Es más, en ese caso el "%*c" se comería el primer caracter en exceso, quedando en el buffer los restantes y "acompañados" del "\n" con lo que si hay otro scanf posterior se lo saltaría.

¡¡¡¡ Saluditos! ..... !!!!


9  Programación / Programación C/C++ / Re: Por favor ayuda con un programa en C, números primos en: 9 Noviembre 2014, 16:24
EDITADO con una sensible mejoría.


como dijo avesudra se puede afinar mas y lo hice quitando todos los numeros pares mayores a 2 con esto se reducen en 50% la velocidad de procesamiento

si alguien quiere ver cuanto mejora el rendimiento en su maquina les dejo el codigo completo les da el tiempo de procesamiento en milisegundos

mi version original con una cifra de 10000000 casi se quedaba congelada la maquina
con el arreglo de leosansan tarda unos 3319 milisegundos
y descartando los pares unos 1572 milisegundos


No me gusta en general  el uso de las operaciones "%"  y "sqrt" por su costo y en lo posible evito su uso. No es que esté mal pero si puedo evitarlas mejor que mejor.

Aquí una salida, como indica crack81, para 10 000 000:

Código
  1. Ingrese un valor :
  2. 10000000
  3. 9999991 7 2
  4. 274.1995607633197 milliseconds

Como se observa he bajado el valor de crack81 de 1572 ms a tan solo 274 ms.  :)

Y respetando la idea original de crack81 ahí va la función que logra lo anterior:

Código
  1. void SumaDePrimos ( int num ) {
  2.  int i , i2 , j , num1 , flag = 0 ,cont = 0 , suma = 0 ;
  3.  num1 = ( num % 2 == 0 ) ? num - 1 : num ; /* TOMO EL IMPAR SI NO LO ES */
  4.  for( i = num1 ; i >= -2 ;  i -= 2 ) { /* VOY DE DOS EN DOS Y EVITO LA OPERACION % */
  5.    if ( i == 1 )  i = 2 ;   /* ¡¡¡¡¡¡ */
  6.    if ( i == - 2 )  i = 1 ; /* ¡¡¡¡¡¡ */
  7.    i2 = i * i ; /* EVITO LA OPERACION SQRT */
  8.    for ( j = 1 ; j <= i2 ; j += 2 ) {
  9.      if ( i % j == 0 ) {
  10.         cont++ ;
  11.         if ( cont == 3 ) /* SI OCURRE NO ES PRIMO Y CORTO EL BUCLE */
  12.           break ;
  13.       }
  14.    }
  15.    if ( cont == 2 || cont == 1 ) {
  16.      suma += i ;
  17.      if ( suma < num )
  18.        printf ("%d " , i ) ;
  19.      else if ( suma == num ) {
  20.        printf ("%d " , i ) ;
  21.        break;
  22.      }
  23.      else if ( suma > num )
  24.        suma -= i ;
  25.      if ( flag == 0 ) /* TOMO EL IMPAR SI NO LO ES */
  26.        i = num1 - i + 1 , flag = 1 ;
  27.    }
  28.    cont=0;
  29.  }
  30. }

¡¡¡¡ Saluditos! ..... !!!!


10  Programación / Programación C/C++ / Re: Por favor ayuda con un programa en C, números primos en: 8 Noviembre 2014, 17:06
..................................................
Pero a un así me gusto tu idea leosansan saludos...

Me alegra tu opinión y , efectivamente se puede mejorar pero tal como indicas, no es plan de hacerle la tarea con virguerias.   ;)

Un fuerte saludo amigo crack81.

¡¡¡¡ Saluditos! ..... !!!!


11  Programación / Programación C/C++ / Re: Por favor ayuda con un programa en C, números primos en: 8 Noviembre 2014, 16:51
tu codigo espero te sirva y practica mas

Sólo le veo un "pero" a tu propuesta y es que si introduces 123456789  sencillamente se eterniza la respuesta. El problema radica en que después de encontrar el primo mayor, 123456761, sigue comprobando con el 123456760, 123456759, ...... y como  ves son muchos millones de primos a comprobar hasta llegar al 23.

La modificación que propongo lo que hace es, después de localizar al primo mayor más próximo al número introducido, es continuar comprobando desde el número introducido menos el mayor  primo calculado es decir: 12346789 - 123456761 = 28 e inferiores. Como ves se pasa de comprobar millones de números a unas pocas decenas lo que redunda en una mayor velocidad:  :)

Código
  1. void SumaDePrimos ( int num ) {
  2.  int i , j , flag = 0 ,cont = 0 , suma = 0 ;
  3.  for( i = num ; i >= 1 ; i-- ) {
  4.    for ( j = i ; j >= 1 ; j-- )
  5.       if ( i % j == 0 )
  6.         cont++ ;
  7.    if( cont == 2 || cont == 1 ) {
  8.      suma += i ;
  9.      if ( suma < num )
  10.        printf ( "%d " , i ) ;
  11.      else if ( suma == num ) {
  12.        printf ( "%d " , i ) ;
  13.        break;
  14.      }
  15.      else if ( suma > num )
  16.        suma -= i ;
  17.      if ( flag == 0 ) /* AQUI ESTA LA DIFERENCIA */
  18.        i = num - i , flag = 1 ;
  19.    }
  20.    cont=0;
  21.  }
  22. }


Evidentemente se puede mejorar con sucesivas aproximaciones pero no es plan de hacer la tarea totalmente.

¡¡¡¡ Saluditos! ..... !!!!


12  Programación / Programación C/C++ / Re: Ayuda programa en C! en: 5 Noviembre 2014, 22:05
¿No debería ser un punto y coma en vez de solamente una coma? jejeje

"Creo" que puedes separar instrucciones/funciones, como el scanf y el printf, por una coma sin necesidad de un punto y coma para cada uno de ellos. Vamos, como el declarar varias variables del tipo int, como ejemplo: int i , j , k ;

Gran maestro yo??? jajajaja, me halagas.

A cada uno lo que se merece y sí, es un halago a tus profundos conocimientos de C++...y C.

¡¡¡¡ Saluditos! ..... !!!!


13  Programación / Programación C/C++ / Re: Ayuda programa en C! en: 5 Noviembre 2014, 18:58
leosansan, se te coló una coma entre el printf y el scanf.

No se me coló, lo puse así para ahorrar una línea por cada pareja de printf y scanf .  :rolleyes:

Por un momento pensé que ibas a meter macros jejejeje

 ;-) Y dale, ¡Ouggg Gran Maestro!, estando tú presente ni me atrevo a esas cosas.  :)

Un fuerte abrazo amigo eferion.

¡¡¡¡ Saluditos! ..... !!!!


14  Programación / Programación C/C++ / Re: Ayuda programa en C! en: 5 Noviembre 2014, 17:26
Buenas amigo aqui esta tu codigo lo reutilize del tuyo porque me dio flojerea tenias problemas con las llaves{}
.....................................................

Falta el tipo "int" de la función main.  ;)

¿Y por qué no usar el mismo for de entrada de los datos para ir averiguando la posición? :

Código
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main ( ) {
  5.  int n , cont , pos = 1 ;
  6.  float vector [ 80 ] ;
  7.  printf ( "Cuantos numeros?: " ) , scanf ( "%d" , &n ) ;
  8.  for ( cont = 0 ; cont < n ; cont++ ) {
  9.    printf ( "x = " ) , scanf ( "%f" , &vector [ cont ] ) ;
  10.      if( cont > 1 && ( abs ( vector [ cont ] - vector [ 0 ] ) ) < abs ( vector [ pos ] - vector [ 0 ] ) )
  11.        pos = cont ;
  12.  }
  13.  printf( "\nLa posicion del mas cercano es: %d\n " , pos ) ;
  14.  return 0;
  15. }

¡¡¡¡ Saluditos! ..... !!!!


Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 94
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines