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 - crack81

#221
Bueno antes te doy las gracias porque este tema no lo conocia asi que me puse a investigar y creo que esta es la solucion que buscabas

Código (cpp) [Seleccionar]
#include <iostream>
#include <ctype.h>
using namespace std;


int (*func[])(int) = {islower,isupper,isdigit};
string mensaje[] = {"una letra minuscula", "una letra mayuscula", "un numero"};

int main() {

  char ch;
  cout<<"ingrese unc caracter "<<endl;
  cin>>ch;

  for(int i=0;i<3;i++){
    if((*func[i])(ch)){
       cout<<"ingreso "<<mensaje[i]<<endl;
       break; }

  }
   cin.get();
   cin.get();
return 0;
}

la verdad muy interesante el tema de punteros a funciones
#222
Tu problema es la funcion   scanf("%c", &respuesta); en ocasiones no funciona bien, y no absorbe esa pulsación de Intro que ha quedado en el buffer del teclado después de la lectura del caracter.

Ese es el riesgo cuando usas "scanf" para leer caracteres, especialmente si lo mezclas con otras cosas

para corregir el error duplica la funcion   scanf("%c", &respuesta); y veras que ya funciona o usa arreglo de caracteres y solo coge la primera posicion
#223
Hay varias forma de hacerlo pero esta me parecio mas similar a como lo quieres
eso de poner char a, *funManCad[] = {"islower", "isupper", "isdigit"};
ya no son funciones sino que las convertistes a un arreglo de caracteres


Código (cpp) [Seleccionar]
#include<iostream>
#include <ctype.h>
using namespace std;

int main(){
    char ch;

   cout<<"Ingrese un caracter "<<endl;
   cin>>ch;

   if(islower(ch)) cout<<"Es minuscula"<<endl;
   else if(isupper(ch)) cout<<"Es mayuscula"<<endl;
   else if (isdigit(ch)) cout<<"Es un numero "<<endl;
   else cout<<"No es minisucula, mayusucula o numero"<<endl;

cin.get();
cin.get();
return 0;
}


mi version esta en c++ pero creo que se entiende
saludos...
#224
Java / Re: Ejercicio Java
14 Diciembre 2014, 07:06 AM
prueba con este codigo parece que resuelve tu problema

Código (java) [Seleccionar]
public static void contar(){
       int cont=1;
       String data=" hola como eats         asdgasd     asdg         ";
       for(int i=0;i<data.length();i++){
          if(i>0 && data.charAt(i)==' ' && data.charAt(i-1)!=' '){
              cont++;

       
          }
       
       }
       
       if(data.length()>0 && data.charAt(data.length()-1)==' ' || cont<=2){
          cont--;
       }
       
       System.out.println(cont);
   }


el codigo intenta evitar las posibles excepciones
#225
Programación C/C++ / Re: C++
17 Noviembre 2014, 02:26 AM
Bueno este es un foro dedicado a resolver dudas especificas de alguna tema
si quieres algun tutorial de c++
te recomiendo la pagina cconclase búscala en google tiene un curso de lo mas basico a lo mas avanzado eso si lee con tranquilidad y trata de asimilar todo porque a programar no se aprende de un dia para otro y por ultimo a programar se aprender programando asi que practica y practica.
#226
Listo tu codigo recuerda practicar mas saludos...

Código (java) [Seleccionar]
public class rand {

public static void main(String[] args) {

char[] chr={'A','C','D'};
char[] aleatorio=new char[25];

for(int i=0;i<=24;i++){
aleatorio[i]=chr[(int)(Math.random()*3)];
System.out.print(aleatorio[i]);//solo muestra el arreglo
}


}

}
#227
avesudra revisa tu programa porque se bloquea si pones 27 o un numero mayor a 10,000 se mete en un bucle infinito no se cual pueda ser el error porque ahora no tengo tiempo

y la funcion que puse en mi codigo la "performancecounter_diff" solo es para medir el tiempo que tarda la aplicacion pero la puedes quitar que solo es para fines demostrativos
#228
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

esto puedo variar por la velocidad de la maquina donde se realize aun asi les dejo el codigo completo para que hagan sus pruebas

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

void SumaDePrimos(int x){
 int cont=0,suma=0,flag=0;

 for(int i=x;i>=1;i--){
  if((i%2==0) and (i>2)){continue;}
   for(int j=i;j>=1;j--){
       if(i%j==0){cont++;}
   }
   if(cont==2 or cont==1){
       suma=suma+i;
       if(suma<x){printf("%d ",i);}
       else if(suma==x){printf("%d ",i); break; }
       else if(suma>x){suma=suma-i;}

       if(flag==0){i=x-i; flag=1;}
   }
   cont=0;
 }
}

double performancecounter_diff(LARGE_INTEGER *a, LARGE_INTEGER *b)
{
 LARGE_INTEGER freq;
 QueryPerformanceFrequency(&freq);
 return (double)(a->QuadPart - b->QuadPart) / (double)freq.QuadPart;
}

int main(){
 int x;
 LARGE_INTEGER t_ini, t_fin;
 double secs;

 printf("Ingrese un valor \n");
 scanf("%d",&x);

 QueryPerformanceCounter(&t_ini);
 SumaDePrimos(x);
 QueryPerformanceCounter(&t_fin);

 secs = performancecounter_diff(&t_fin, &t_ini);
 printf("\n%.16g milliseconds\n", secs * 1000.0);


return 0;}



#229
Tienes una razón barbara y que la verdad que como explicas se reduciría el tiempo enormemente.

Esto le servirá mucho  a nuestro compañero pero hay recordad que esta es su tarea nosotros damos una posible solución.

Pero a un así me gusto tu idea leosansan saludos...
#230
tu codigo espero te sirva y practica mas

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

void SumaDePrimos(int x){
 int cont=0,suma=0;

 for(int i=x;i>=1;i--){
   for(int j=i;j>=1;j--){
       if(i%j==0){cont++;}
   }
   if(cont==2 or cont==1){
       suma=suma+i;
       if(suma<x){printf("%d ",i); }
       else if(suma==x){printf("%d ",i);  break; }
       else if(suma>x){suma=suma-i;}
   }
   cont=0;
 }
}

int main(){
 int x;

 printf("Ingrese un valor \n");
 scanf("%d",&x);

 SumaDePrimos(x);


return 0;}