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

#461
Programación C/C++ / Re: Duda bucles for anidados
9 Noviembre 2018, 18:53 PM
Hola ArnauCC, el codigo lleva un error para que tu lo corrigas, ya se te dio un codigo que funciona y uno que no, si realmente te interesara aprender, estarias investigando. que hace o que no hace las partes del codigo que no entiendes, te aseguro que asi aprenderás mas.

Saludos
#462
Programación C/C++ / Re: Duda bucles for anidados
9 Noviembre 2018, 18:37 PM
Nivel avanzado de C?

Tengo 15 años programando en C y C++, y nunca he visto ni se, para que se utiliza la funcion "setlocale".... ni mi interesa saber para que es.


Código (cpp) [Seleccionar]

#include<iostream>

using namespace std;

int main() {
int  N,i,j,k;
cout<< "Cantidad: ";
cin>>N;
k=1;
i = 0;
while(i < (N+ (N-1))) {
j = 0;
while(j < ((i<N)? (i+1):(N-k) )) {
cout<<'*';
j++;
}
k+=(i>=N);
cout<<'\n';
i++;
}
}




Todavia lo quieres con FOR?

#include<iostream>

using namespace std;

int main() {
int  N,i,j,k;
cout<< "Cantidad: ";
cin>>N;
k=1;
for(i = 0; i < (N+ (N-1)); i++,k+=(i>=N) ) {
for(j = 0; j < ((i<N)? (i+1):(N-k) );j++) {
cout<<'*';
}
cout<<'\n';
}
}
#463
Programación C/C++ / Re: Duda bucles for anidados
9 Noviembre 2018, 18:15 PM
Pues lo hice con While, pero si entienes como se forman estos, lo podras migrar facilmente a for

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

int main() {
char temporal[20];
int  N,i,j,k;
printf("Cantidad: ");
fgets(temporal,20,stdin);
N = strtol(temporal,NULL,10);
k=1;
i = 0;
while(i < (N+ (N-1))) {
j = 0;
while(j < ((i<N)? (i+1):(N-k) )) {
putc('*',stdout);
j++;
}
k+=(i>=N);
putc('\n',stdout);
i++;
}

}


Saludos!
#464
Dudas Generales / Re: Duda con baneo.
9 Noviembre 2018, 17:51 PM
Limpia cualquier cookie del navegador, o de preferencia cambialo, si era crhome, usa firefox.

Pero antes de entrar, asegurate de Que tu IP sea distinta a la ultima que ellos tengan registrada.

Cambia de Nombre y/o correo. Si puedes usar un Sistema Linux Llive o algo similar estaria mejor.

asi mismo asegurate de que tus moviles, no entren a esa pagina de ninguna manera.

Existia un pagina que te hacia un escaneo a la maquna, nada intrusivo, pero podrian determinar de X forma que era la misma maquina aunque borraras las cookies, esto utilizando las firmas de tu maquna como version de drivers instalados entre otras cosas. Si este es el caso, lo mas recomendables es que cambies de Maquina ademas de realizar todo lo anterior.

Saludos.
#465
Cita de: Zorronde en  9 Noviembre 2018, 02:08 AM
No se si el RECUVA sirve para eso

Pues depende si ya borraron los datos del navegador o no.

Tienes el navegador funcional?
#466
Seguridad / Re: NECESITO AYUDA
9 Noviembre 2018, 01:07 AM
recomendaciones.

- Cambiar las contraseñas de TODAS las cuentas de Correo.
- Activar 2FA de los correos, con un numero telefónico que no este en un smartphone (Teléfono desechable que solo pueda recibir los mensajes de texto).
- Cambiar las contraseñas de las redes sociales y activar 2FA de estas mismas.

Todo lo anterior desde una Computadora Segura, recien instalado o desde un sistema Live.

Saludos
#467
Cita de: Camilo1998 en  8 Noviembre 2018, 20:39 PM
Que seria todo lo que tiene de exclusivo la internet superficial?

reformula tu pregunta y quitale todo el cantifleo.. (Explicate mejor)

Interenet superficial.... vides de gatitos, NoP0r y mas NoP0r. Streming de video en general consume como el 80% del trafico de internet.

Saludos
#468
Programación C/C++ / Re: Programa de divisas
8 Noviembre 2018, 22:50 PM
Cita de: elgilun en  8 Noviembre 2018, 22:26 PM
5) if ... else if... else if... else... con pruebas de condición sobre enteros, debes usar switch / case.

Estaba por comentarle cosas similares, pero me ganaste.

respecto al codigo tiene fallas e ineficiencias por ejemplo el siguiente codigo hace varias comprofaciones inecesarias.


  for(i=0;i<7;i++){
  cout<<"moneda "<<mon[i]<<endl;
  cout<<"cantidad "<<moneda[i]<<endl;
  if (i==0){
  cout<<"cantidad en Quetzales "<<moneda[i]*7.72<<endl;
  total=total+(moneda[i]*7.72);
  }else if (i==1){
  cout<<"cantidad en Quetzales "<<moneda[i]*8.8<<endl;
  total=total+(moneda[i]*8.8);
  } else if (i==2){
  cout<<"cantidad en Quetzales "<<moneda[i]*5.89<<endl;
  total=total+(moneda[i]*5.89);
  }else if (i==3){
  cout<<"cantidad en Quetzales "<<moneda[i]*10.03<<endl;
  total=total+(moneda[i]*10.03);
  }else if (i==4){
  cout<<"cantidad en Quetzales "<<moneda[i]*7.7<<endl;
  total=total+(moneda[i]*7.7);
  }else if (i==5){
  cout<<"cantidad en Quetzales "<<moneda[i]*5.55<<endl;
  total=total+(moneda[i]*5.55);
  }else if (i==6){
  cout<<"cantidad en Quetzales "<<moneda[i]*5.13<<endl;
  total=total+(moneda[i]*5.13);
  }
  }


Siendo que todo eso esta dentro de un for realmente i solo puede tener un valor a la vez por lo cual podrias poner TODO FUERA DEL FOR y ahorrarte las evaluaciones de la siguiente manera.


cout<<"moneda "<<mon[0]<<endl;
cout<<"cantidad "<<moneda[0]<<endl;
cout<<"cantidad en Quetzales "<<moneda[0]*7.72<<endl;
total=total+(moneda[0]*7.72);

cout<<"moneda "<<mon[1]<<endl;
cout<<"cantidad "<<moneda[1]<<endl;
cout<<"cantidad en Quetzales "<<moneda[1]*8.8<<endl;
total=total+(moneda[1]*8.8);


cout<<"moneda "<<mon[2]<<endl;
cout<<"cantidad "<<moneda[2]<<endl;
cout<<"cantidad en Quetzales "<<moneda[2]*5.89<<endl;
total=total+(moneda[2]*5.89);

cout<<"moneda "<<mon[3]<<endl;
cout<<"cantidad "<<moneda[3]<<endl;
cout<<"cantidad en Quetzales "<<moneda[3]*10.03<<endl;
total=total+(moneda[3]*10.03);

cout<<"moneda "<<mon[4]<<endl;
cout<<"cantidad "<<moneda[4]<<endl;
cout<<"cantidad en Quetzales "<<moneda[4]*7.7<<endl;
total=total+(moneda[4]*7.7);

cout<<"moneda "<<mon[5]<<endl;
cout<<"cantidad "<<moneda[5]<<endl;
cout<<"cantidad en Quetzales "<<moneda[5]*5.55<<endl;
total=total+(moneda[5]*5.55);

cout<<"moneda "<<mon[6]<<endl;
cout<<"cantidad "<<moneda[6]<<endl;
cout<<"cantidad en Quetzales "<<moneda[6]*5.13<<endl;
total=total+(moneda[6]*5.13);


O dentro del FOR pero ahorrandote los IF de igualmanera


float fix[7] = {7.72,8.80,5.89,10.03,7.71,5.58,5.13};

for(i=0;i<7;i++){
cout<<"moneda "<<mon[i]<<endl;
cout<<"cantidad "<<moneda[i]<<endl;
cout<<"cantidad en Quetzales "<<moneda[i]*fix[i]<<endl;
total=total+(moneda[i]*fix[i]);
}


Este ultimo es el mas eficiente a mi manera de ver las cosas, sobre el por que no los imprime seria cuestion de que me expliques como  es que funciona esta parte del codigo. Yo se como funciona, pero si no entienda esa parte no sabras realmente que estas haciendo


if (reporte=="si"){

#469
Recomendaciones antes de darte la solucion.

Si es muy comun vengan aqui preguntan por su tarea, y no hay problema cuando se tiene tiempo se les ayuda, sin embargo lo que no acepto es que vengan con un código copiado/pegado de quien sabe cuantas fuentes distintas. (Si se va a copiar un codigo es por que lo entiendes y no tienes dudas de que hacada una de sus instrucciones)

Tienes tanto "printf" como "cout", esto denota que has copiado y pegado el codigo de distintas fuentes de programacion, ademas se notan estilos de programacion diferente. Ademas las funciones de adorno como SetConsoleTextAttribute entre otras son incesarias, te estan enseñando a programar no a diseñar, asi que podrias presindir de ellas para hacer la tarea un poco mas sencilla.

El problema de tu codigo radica en que copiaste o tu mismo hiciste un codigo que esta mal, no considera los arreglos de forma correcta, esto es no empiezas desde la poscion 0.

En programacion empezamos a contar desde 0 como el primer elemento. Con exepcion de Visual Mi3rd4 que si lo hace apartir de la posicion 1 para el primer element

Si tienes un arreglo de 4 elementos ej.

int Arreglo[4];

Lo ideal hacer un FOR o While para Rellenarlo empezando desde la posicion 0 hasta la poscion 3.

Cuenta conmigo:

arreglo[0] = 1; //La posicion 0 del arreglo es el primer elemento del mismo
arreglo[1] = 2; //La posicion 1 del arreglo es el segundo elemento del mismo
arreglo[2] = 3; //La posicion 2 del arreglo es el tercer elemento del mismo
arreglo[3] = 4; //La posicion 3 del arreglo es el cuarto elemento del mismo.




En tu codigo tienes un FOR donde inicias a la variable 'i' desde 1 hasta menor o igual a 4.
Cuando realmente deberia de inicialzarse en 0 hasta menor que 4

Tu codigo:


for(i=1;i<=4;i++)
{


Cuando deberia de ser lo siguiente para todos los FOR desde donde los capturas hasta donde los imprimes


for(i=0;i<4;i++)
{


La razon por la cual salen valores no validos es por que estas leyendo en posiciones de memoria que estan siendo utilizadas por otras variables.

Saludos!
#470
Programación C/C++ / Re: Valor primo absoluto C++
8 Noviembre 2018, 17:17 PM
Derterminar si un numero es Primo


Cita de: Morx en  8 Noviembre 2018, 16:00 PM
Como se podria crear una lista con todos los primos absolutos desde 1 hasta un numero en cuestion?

Bienvenido al mundo de los numeros primos, la respuesta te la estas dando tu mismo.

Primero necesitas determinar los numero Primos que existen desde 2 hasta el numero en cuestion.

Una vez definida esa lista necesitas procesar los digitos de cada uno de esos numeros y detenerminar si suma es un numero primo hasta llegar a un solo digito.

Por lo cual tu primer problema es detenerminar si un numero es primo o no.

Metodos para lo mismo hay muchos, desde exhaustivos, probabilisticos.

Lo ideal para estar 100% seguro de que es primo o no, es ir contruyendo una lista de numeros primos, y probar todos los numero siguientes contra esa lista. Por ejemplo emepzamos con el 2, primer numero primo.

Luego 3, ¿es tres divisible entre 2? en otras palabras ¿ 3 modulo 2 es 0 ?  Si la respuesta a esta ultma es negativa podemos agregar 3 a nuestra lista de numeros primos.

Luego 4, ¿Es cuatro divisible entre 2? si 4 % 2 es 0, entonces 4 No es numero primo.

Luego 5 es cinco divisible entre 2, como 5%2 no es 0, y como 5 % 3 no es 0, entonces agregamos 5 a nuestra lista de numeros primos.

Asi sucedivamnete hasta el numero N, entonces ya con la lista definida de numeros primos, procedes a simplificar la suma de sus digiitos como mencionaste hasta llegar a un numero de un solo digito, con lo cual tienes tu problema resulto.


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

unsigned int *primos = NULL;
int n_primos = 0;

int agregar_numero(unsigned int numero);
int es_primo(unsigned int numero);
int es_primo_absoluto(unsigned int numero);

int main() {
unsigned int i,j;
unsigned int N = 0xFFFFFF;
agregar_numero(2);
printf("El numero %i es primo y ademas es Primo Absoluto\n",2);
i = 3;
while(i < N) {
j = 0;
if(es_primo(i)) {
printf("El numero %i es primo\n",i);
agregar_numero(i);
if(es_primo_absoluto(i)){
printf("El numero %i es primo y ademas es Primo Absoluto\n",i);
}
}
i+=2; //Vamos de 2 en 2 por que no necesitamos evaluar los numeros pares, es decir solo 3, 5, 7, 9 .... Asi evistamos llamdas inecesarias a la funcion es_primo, haciendo nuestro programa un tanto mas eficiente
}
return 0;
}

int agregar_numero(unsigned int numero) {
primos = realloc(primos,sizeof(int) * (n_primos+1));
primos[n_primos] = numero;
n_primos++;
}

int es_primo(unsigned int numero) { //Esta funcion solo determina correctamente si es primo o no, cuando ya hemos EVALUADO todos los numeros PREVIOS a este numero
int es_primo = 1;
int j = 0;
while(j < n_primos && primos[j] < (numero/2) && es_primo) {
es_primo = (numero % primos[j++] == 0) ? 0 : 1 ;
}
return es_primo;
}

int es_primo_absoluto(unsigned int numero) {
int retornar;
char temporal[20] = {0};
unsigned suma = 0;
int len,i;
sprintf(temporal,"%u",numero);
len = strlen(temporal);
if(len == 1) {
switch(numero) {
case 2:
case 3:
case 5:
case 7:
retornar = 1;
break;
default:
retornar = 0;
break;
}
}
else {
i = 0;
while(i < len) {
suma = temporal[i++] - '0';
}
if(es_primo(suma)) {
retornar = es_primo_absoluto(suma);
}
else {
retornar = 0;
}
}
return retornar;
}


Saludos