Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - leosansan

#1
Programación C/C++ / Re: Ayuda con este programa
5 Diciembre 2014, 03:06 AM
Cita de: daz08 en  4 Diciembre 2014, 16:01 PM
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.


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


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
Cita de: gibranini en 21 Noviembre 2014, 03:50 AM
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,

#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
Cita de: NOIS en 20 Noviembre 2014, 09:29 AM
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 (cpp) [Seleccionar]
#include<stdio.h>
#include<locale.h>

int main(void){
  setlocale(LC_ALL, "Spanish");
  printf ("¡Hola leoñanñan! ¿Cuántos tenía años la canción número 2²?\n");
  printf ("2+3.5=%f  \n",2+3.5);
  float a=2.75+3.5;
  printf ("Observa la coma en lugar del punto para marcar los decimales: %g\n",a);
  float b=a*a;
  printf ("b=%f\n",b);
  printf ("¡Ño! enésima \n");
  return 0;
}


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


#4
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 (cpp) [Seleccionar]
printf("\nLa matriz con intercambio de diagonal principal por la secundaria\n\n");
printf("\n");

for (i = 0; i < fila; i++) {
   aux = matriz[i][i];
   matriz[i][i] = matriz[i][columna - 1 - i];
   matriz[i][columna - 1 - i] = aux;
}
   
for (i=0;i<fila;i++) {
   for (n=0;n<columna;n++)
    printf("[%d]",matriz[i][n]);
   printf("\n");
}


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


#5
Cita de: Bachanilorac en 17 Noviembre 2014, 06:08 AM
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 (cpp) [Seleccionar]
fgets(nombre, 18, stdin);

en lugar del cin.

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


#6
Cita de: rir3760 en 16 Noviembre 2014, 02:31 AM
......................................
Ya que la idea es copiar la cadena en dos arrays otra opción mas sencilla y con el mismo efecto es:
frase3[letra2] = frase2[letra2] = frase1[letra1];
letra2++;

.........................

Incluso más sencillo:

frase3[letra2] = frase2[letra2++] = frase1[letra1];

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



#7
Cita de: AxelP en 15 Noviembre 2014, 06:10 AM
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 (cpp) [Seleccionar]
for (letra1 = 0; letra1 <= strlen(frase1) ; letra1++)
 if (frase1[letra1] != ' ')
   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 (cpp) [Seleccionar]
if (strcmp (frase3 , strrev(frase2))  == 0)
 printf("\nTu frase es palindroma!");
else
 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
Cita de: vangodp en 12 Noviembre 2014, 15:39 PM
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
EDITADO con una sensible mejoría.


Cita de: crack81 en  8 Noviembre 2014, 18:48 PM
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 (cpp) [Seleccionar]
Ingrese un valor :
10000000
9999991 7 2
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 (cpp) [Seleccionar]
void SumaDePrimos ( int num ) {
  int i , i2 , j , num1 , flag = 0 ,cont = 0 , suma = 0 ;
  num1 = ( num % 2 == 0 ) ? num - 1 : num ; /* TOMO EL IMPAR SI NO LO ES */
  for( i = num1 ; i >= -2 ;  i -= 2 ) { /* VOY DE DOS EN DOS Y EVITO LA OPERACION % */
    if ( i == 1 )  i = 2 ;   /* ¡¡¡¡¡¡ */
    if ( i == - 2 )  i = 1 ; /* ¡¡¡¡¡¡ */
    i2 = i * i ; /* EVITO LA OPERACION SQRT */
    for ( j = 1 ; j <= i2 ; j += 2 ) {
      if ( i % j == 0 ) {
         cont++ ;
         if ( cont == 3 ) /* SI OCURRE NO ES PRIMO Y CORTO EL BUCLE */
           break ;
       }
    }
    if ( cont == 2 || cont == 1 ) {
      suma += i ;
      if ( suma < num )
        printf ("%d " , i ) ;
      else if ( suma == num ) {
        printf ("%d " , i ) ;
        break;
      }
      else if ( suma > num )
        suma -= i ;
      if ( flag == 0 ) /* TOMO EL IMPAR SI NO LO ES */
        i = num1 - i + 1 , flag = 1 ;
    }
    cont=0;
  }
}


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


#10
Cita de: crack81 en  8 Noviembre 2014, 17:02 PM
..................................................
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! ..... !!!!