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

#1
gracias, como se añaden nuevas librerias al IDE?, uso VS.
#2
gracias por el link, podrías facilitarme otro de algún post donde se explique sockets desde 0? (a poder ser en C)

Gracias
#3
Hola, la idea es sencilla: un programa en c++ que se conecte a una URL mediante HTTP get.

Una vez conectado, el servidor devuelve un objeto en JSON.

He pensado usar curlpp, pero es realmente necesario para una simple petición http? En caso de que no, como podría hacerlo? tendría que crear un socket?

Gracias.
#4
mm no se que funcion es perror, de hecho, tampoco se me permite trabajr con stdlib.h :(
#5
Estoy intentando abrir este fichero de esta forma:

Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{

FILE *fp, *fpp;

if(fp = fopen("C:/users/robert/desktop/entrada", "r")==NULL) puts("error archivo entrada.");
if(fpp = fopen("C:/users/robert/desktop/salida", "w")==NULL) puts("error archivo salida.");

.
.
.
.
.
.



el problema es que al ejecutar el programa hace el primer if con el primer puts y segundos despues se cuelga y deja de funcionar, la ruta del archivo es la correcta.

al compilar da los siguientes warnings (codeblocks):

Citarwarning: assignment makes pointer from integer without a cast [enabled by default]

warning: assignment makes pointer from integer without a cast [enabled by default]

alguna idea?
#6
perdon por este reflote pero he estado volviendo a intentar sacar el ejercicio desde 0 y no hay manera  :rolleyes:

alguien podria explicarme porque este codigo no funciona?, se que debo tener algun error de logica o algo pero no soy capaz de autocorregirme:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <math.h>

int funcion(int numero);
void main(){

int numero; int cifras; int primeracifra; int suma=0;

siguiente:

suma=0;

scanf("%d", &numero);

if(numero==0 || scanf("%d", &numero)!=1){
       puts("\nfin de datos o datos incorrectos");
       return;
}
if(funcion(numero)==-1) goto siguiente;
else{
       if(primeracifra*cifras==suma) printf("\n%d cumple la condicion");
       fflush(stdout);
       goto siguiente;
}
}


int funcion (int numero){

int cifra=1; int *cifras=cifras; int *suma=suma; int *primeracifra=primeracifra;
int i=10;

if(numero%i==0) return -1; //numero de una sola cifra
cifra++;
for(i;i<=10000000000;i=i*10){
   if(numero/i==0) break;
   cifra++;
}
*cifras=cifra;
for(cifra;cifra>1;cifra--){
   *suma=numero/(pow(10,cifra));
   *suma=*suma+*suma;
}
*suma=*suma+(numero%10);
*primeracifra=(numero/pow(10,*cifras));
}


salu2

medificado:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <math.h>

void funcion(int numero, int *cifrass, int *primeracifraa, int *sumaa);
void main(){

int numero; int cifras; int primeracifra; int suma=0;
int *cifrass;
int *primeracifraa;
int *sumaa;

*cifrass=cifras;
*primeracifraa=primeracifra;
*sumaa=suma;


suma=0;

while(scanf("%d", &numero) && numero != 0){

if(numero/10==0) continue;
funcion (numero, cifrass, primeracifraa, sumaa);
if(primeracifra*cifras==suma) printf("\n%d cumple la condicion");
fflush(stdout);
}
}



void funcion(int numero, int *cifrass, int *primeracifraa, int *sumaa){

int cifra=2; int s;
int i=100;
int cif;

for(i;i<=10000000000;i=i*10){
    if(numero/i==0) break;
    cifra++;
}
cifrass=&cifra;
for(cifra;cifra>1;cifra--){
    s=numero/(pow(10,cifra));
    s=s+s;
}
cif=cifra;
sumaa=&s+(numero%10);
s=(numero/pow(10,cif));
primeracifraa=&s;
}


sigue sin salir.

edit: obviad lo del declarar a main como un void hehe  :silbar:
#7
Cita de: leosansan en  6 Enero 2014, 13:25 PM
Antes que nada un par de detallitos:

* la función main es de tipo int, así lo establece el estándar del C, y por tanto hay que declararla como tal, con su consiguiente return al final de la misma.

* tienes que acostumbrarte a indentar y/o sangrar y/o tabular el código, si no es casi imposible seguirlo.

Respecto al código:

* hay que poner printf o puts antes de la introducción de datos, si no queda la pantalla parpadeando y quien vaya a usarlo y no sepa de que va se quedará muy, pero que muy, mosqueado. ;) ;) ;)

* tal como lo tienes faltaría un break en el if  de la función, sin el else,  si no no sale del bucle y se queda la pantalla como si no ocurriera nada.

* no hay mayor problema con el segundo while de la función main, salvo que está de más y te complica todo el código.

* un error frecuente en este  tipo de ejercicios es que haces uso de una variable aplicándole una operación, tipo "num/=10" y pasa  lo que pasa, que al volver a querer usar esa variable con su valor original ya no es el valor actual, de ahí que yo use num y num_0 para no perder el valor inicial por si te hiciera falta, que efectivamente te va a hacer falta.

* debes habituarte a poner printf, tantos como sean necesarios, para ver como evolucionan las variables a lo largo del código. En tu caso es conveniente que pongas un printf justo antes del último if de la función y veras que sorpresa te llevas con los valores de suma y cont. No paran  de salir distintos valores  para cada una de las variables y, curiosamente el valor de la variable "cont" siempre vale dos. Hazlo y piensa en el por qué.

* no tiene como mucho sentido un for y que dentro de su cuerpo de sentencias lo que aparezca sea un if, con su condición correspondiente. Te puedes ahorrar el if poniendo la condición entre los dos puntos y coma del for, que para eso está.

Y me dejo de rollo. He aquí una salida al código que te propongo:


Bueno antes de nada aprovecho para darte la enhorabuena a ti también, llevo poco en el foro pero desde que he entrado todas las respuestas que he visto por tu parte son claras, completas y precisas, tratando siempre de modificar lo menos posible el codigo inicial y la verdad es que da gusto con gente así  ;)

Vamos por partes:

Respecto a lo de la funcion main tipo int... si la verdad es que ya lo explicaste en otro hilo y soy consciente de ello, solamente que lo he hecho así por vago y ahorrar el return.

Sobre lo de indentar el codigo, tambien estoy consciente de ello... la verdad es que desde un principio no lo he hecho y ahora me va a costar acostumbrarme.

Sobre las printf, si. tienes razon, lo que ocurre es que estos codigos son ejercicios de examen y nos piden expresamente que obviemos printfs y demas, el motivo es que en mi universidad, los examenes son escritos y el programa nunca sera siquiera compilado por lo que carece de sentido las printfs y solo nos quitarian tiempo.

Tambien las uso para ver el valor que tiene una variable en un momento determinado, pero como en un examen escrito me es imposible hacerlo trato de evitarlo e intento sacar el codigo de una tacada y que este perfecto antes de compilarlo, que seria la unica manera de tenerlo perfecto en el examen.... La verdad es que con este ejercicio (como con muchisimos otros  :-[ :-[) he tenido que tirar de ello jaja, aun asi gracias por el consejo).

Sobre lo del breake sin el else, la verdad es que no tenia ni idea pensaba que seria indiferente poner el else que no.  :-X

Una duda que me ha surgido ahora al leer tu codigo es que en todas las printfs hay al final un 163 0 un 162 que no se para que sirven. :-X

Y lo de las variables con operaciones dentro.. si, es verdad gracias  :rolleyes: :rolleyes:

Ah y sobre lo de "dejarte de rollos" no! porfavor no!, la verdad es que todos estos ejercicios ni siquiera tengo que entregarlos, solamente los hago para coger agilidad de cara al examen, solo busco aprender lo maximo posible, y un par de comentarios y explicaciones me ayudan mas que cualquier codigo ya hecho  ;) Muchisimas gracias
#8
Cita de: do-while en  6 Enero 2014, 00:38 AM

Dentro del cuerpo del bucle no modificas num, luego si entra en el bucle, nunca saldrá.
Lo que puedes hacer es leer en número antes de llegar al primer bucle, y al final del while que hay en su interior, justo antes de la llave de cierre, leer el siguiente número. Por ejemplo.

No he mirado si hay mas errores. Por cierto, no tengas miedo de utilizar el tabulador, tu código quedará mas organizado y será mas fácil leerlo (tal y como está es un caos y molesta bastante tener que leerlo).

¡Saludos!

muchas gracias, si lo de tabularlo es verdad lo que ocurre es que no se cuales son las tabulaciones correctas  :rolleyes: :rolleyes:

sobre el codigo, he tenido en cuenta lo que me has dicho y lo he medificado tal que asi:

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <math.h>

#define N 5


int funcion(int num);

void main(){

int num, contmain;
int y;
if(scanf("%d", &num) && (num!= 0 && num>9)){

y=funcion(num);

if(y==1){ contmain ++;
                    printf("\n%d cumple la condicion", num);
}

if(contmain<N)printf("%d numeros que cumplen", contmain);
}

}



int funcion(int num){

int i, suma, cont=1;
int primeracifra;

suma=num%10;


for(i=10;i<=1000000;i*10){

    if(num/i!=0){
            cont++;
            suma+=num/i;
    }
    else break;
}




primeracifra=num/(i/10);

if(primeracifra*cont==suma) return 1;
else return 0;

}


otra vez pido disculpas por no tabularlo correctamente, si pudiera alguien pasar un link o algo para aprender me comprometo a hacerlo.

haciendo un par de pruebas creo que el problema está en el for que empieza en la linea 36:

Código (cpp) [Seleccionar]

for(i=10;i<=1000000;i*10){

    if(num/i!=0){
            cont++;
            suma+=num/i;
    }
    else break;
}


este bucle no acaba nunca y no se a que se puede deber. salu2
#9
Hola, he estado intentando sacar este ejercicio:



Y aqui el codigo que he estado picando:

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <math.h>

#define N 5


int funcion(int num);

void main(){

int num, contmain;
int y;
while(scanf("%d", &num) && num!= 0){ //para que el 0 marque el finales de la cadena

while(num/10!=0){ //while(el numero tenga como minimo, decenas)

y=funcion(num);

if(y==1){ contmain ++;
                   printf("\n%d cumple la condicion", num);
}

if(contmain<N)printf("%d numeros que cumplen la condicion", contmain);
}

}

}

int funcion(int num){

int i, suma=num%10, cont=1; //este contador cuenta en numero de cifras del numero y la variable suma empieza con el valor de las unidades del numero
int primeracifra;

for(i=10;i<=1000000;i*10){

   if(num/i!=0){
           cont++; //contador de cifras
           suma+=num/i;  //para ir sumando las cifras, recordemos que suma ya tiene asignado el valor de las unidades
   }

}
i=10;

primeracifra=num/pow(i,cont-1); //la primera cifra es el numero divido entre i elevado al contador -1

if(primeracifra==suma) return 1; //si se cumple la condicion retorna 1
else return 0;

}



el codigo compila con 0 errores y 0 warnings pero a la hora de ejecutarlo y meter los numeros se cuelga.

Agradezco cualquier aportacion  :rolleyes: :rolleyes: :rolleyes: ;D  :xD

EDIT: disculpas por no indentar el codigo pero soy un inutil incapaz
#10
jaja nada hombre :), pero nisiquiera he usado un array de dim 2, solo con 2 variables equipo1 y equipo2.

Sospecho que lo que a ti te han podido es algo un pelín mas complejo... lo digo porque no he usado en ningún momento los punteros que tu has dicho. si puedes subes el enunciado de la practica y nos aseguramos

feliz año ;D