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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5
11  Programación / Programación C/C++ / Re: duda sobre estructuras y funciones en: 2 Febrero 2019, 20:03 pm
graciasss!!!
12  Programación / Programación C/C++ / Re: duda sobre estructuras y funciones en: 31 Enero 2019, 00:27 am
hola gracias por tu respuesta, ya lo estoy corrigendo el código, te hago una consulta, en el punto b cuando te pide tres variables mas del tipo creado, me esta pidiendo que cree en vez de tener solamente x e y en la estructura, que cree 3 mas o sea ponele, float x float y float z float m float l, ya se que no queres que las declare de forma global, pero en el caso de la estructura no te queda mas opción que declararlas ahi o no?, hasta ahora los ejemplos que vi de estructuras siempre se declara la estructura y después se la llama desde el main
13  Programación / Programación C/C++ / duda sobre estructuras y funciones en: 30 Enero 2019, 00:38 am
hola nakamas, espero que estén todos bien, graciass de antemano por toda la ayuda que siempre me dan.
tengo un problema en el que me combinan estructuras con funciones dice lo siguiente:

1. Se desea representar puntos sobre un plano de coordenadas reales x y, y asignarle a cada uno un carácter para identificarlos.
a) Cree una estructura que permita representar estos puntos
b) Declare tres variables del nuevo tipo creado, asígneles valores e imprima en pantalla los datos de cada punto.
c) Cree una función que devuelva la distancia entre dos puntos
d) Cree una función que tome un arreglo de puntos e imprima en pantalla cual es el más alejado del origen.


el punto b no lo hice pero el resto esta mas o menos hecho, mi duda es con el ultimo punto,o sea el d no entiendo muy bien como hacer las llamadas o que pasar como parámetro, me dicen si voy bien encaminado?
hasta ahora hice esto:
Código
  1.  
  2. #include <math.h>
  3. float distancia(float x1,float y1,float x2,float y2);
  4. float distalorigen(float pt[]);
  5. struct punto
  6. {
  7.    float x;
  8.    float y;
  9. }puntos[3];
  10.  
  11. int main()
  12. {
  13. int i;
  14. float dist,resultado;
  15. for(i=0;i<3;i++)
  16. {
  17.    printf("ingrese los datos del punto %d\n",i+1);
  18.    scanf("%f",&puntos[i].x);
  19.    scanf("%f",&puntos[i].y);
  20. }
  21. for(i=0;i<3;i++)
  22. {
  23.    printf("el punto ingresado es %d\n",i+1);
  24.    printf("%f  ",puntos[i].x);
  25.    printf("%f  ",puntos[i].y);
  26.    printf("\n");
  27. }
  28. dist=distancia(puntos[0].x,puntos[0].y,puntos[1].x,puntos[1].y);
  29. printf("la distancia entre los puntos ingresados es \n %.2lf",dist);
  30. resultado=distalorigen(puntos);
  31. printf("el punto mas alejado del origen es \n %.2lf",resultado);
  32.  
  33. }
  34. float distancia (float x1,float y1,float x2,float y2)
  35. {
  36.    float d;
  37.    d=sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)));
  38.    return d;
  39. }
  40. float distalorigen(float pt[])
  41. {
  42.    int i;
  43.    float mayor=0;
  44.    float R;
  45.    for(i=0;i<3;i++)
  46.    {
  47.        R=sqrt(((pt[i]-0)*(pt[i]-0))+((pt[i+1]-0)*(pt[i+1]-0)));
  48.        if(R>mayor)
  49.        {
  50.            mayor=R;
  51.        }
  52.    }
  53.  
  54.    return mayor;
  55. }
  56.  
  57.  

en la linea 32 me salta un error y me dice que no le puedo pasar el arreglo tipo float de la estructura a la función, tampoco se como especificar que punto es el mayor una vez que calculo cual R es el mayor, disculpen si tengo algún error conceptual groso, es que me quema la cabeza esta materia
14  Programación / Programación C/C++ / Re: nueva funcion en c en: 15 Enero 2019, 20:56 pm
siii graciass!!
15  Programación / Programación C/C++ / Re: nueva funcion en c en: 15 Enero 2019, 05:28 am
Hola creo que entendí tu idea, pero como haces para pasarle como parámetro la letra?, o sea suponete que yo ingreso  la 'a' en el main a través del caracter c, y se lo quiero pasar como parámetro a la función a través de la sentencia void suprimirletra(cad,c), en el momento que  hago eso y entra en el cuerpo de la función, mi función que esta definida como void suprimirletra(cadena,char l), no toma la letra 'a' a través de char l, sino que usa a l como caracter a suprimir
16  Programación / Programación C/C++ / nueva funcion en c en: 15 Enero 2019, 01:31 am
hola de nuevo, estoy a full porque rindo en febrero 3 materias, y una de ellas es esta, tengo que crear tres funciones e implmentarlas, son las siguientes
int cuentavocales(char cad)
void suprimirletra(char cadena[,char letra)
void ponespaciosenblanco(char cadena,numblancos)
me salieron todas menos la de suprimir letra, el problema es que no me pasa como parámetro de referencia mi caracter que le paso en el main, me iguala cadena[i=='l', es decir me toma a l como caracter y yo quiero que lo use como variable, pensé en hacerlo por referencia, pero el enunciado del problema me pide que la función la defina tal cual la puse arriba, mi código quedo así:
Código
  1. int cuentavocales(char cadena[]);
  2. void suprimirletra(char cadena[],char l);
  3. void ponblancosalprincipio(char cadena[],int numblancos);
  4.  
  5. int main()
  6. {
  7.    char cad[80],c;
  8.    int x,resultado;
  9.    printf("ingrese una cadena por favor\n");
  10.    gets(cad);
  11.    resultado=cuentavocales(cad);
  12.    printf("la cantidad de vocales es %d\n",resultado);
  13.    printf("que letra desea suprimir?\n");
  14.    scanf("%c",&c);
  15.    suprimirletra(cad,c);
  16.    printf("cuantos espacios en blancos desea tener\n");
  17.    scanf("%d",&x);
  18.    ponblancosalprincipio(cad,x);
  19.    return 0;
  20.  
  21. }
  22.  
  23. int cuentavocales(char cadena[])
  24. {
  25.    int i=0,cont=0;
  26.    while(cadena[i]!='\0')
  27.    {
  28.        if(cadena[i]=='a'||cadena[i]=='e'||cadena[i]=='i'||cadena[i]=='o'||cadena[i]=='u'||cadena[i]=='A'||cadena[i]=='E'||cadena[i]=='U'||cadena[i]=='O'||cadena[i]=='I')
  29.        {
  30.            cont++;
  31.        }
  32.        i++;
  33.    }
  34.    return cont;
  35. }
  36. void suprimirletra(char cadena[],char l)
  37. {
  38.    int i=0;
  39.    while(cadena[i]!='\0')
  40.    {
  41.        if(cadena[i]=='l')
  42.        {
  43.            printf(" ");
  44.        }
  45.  
  46.        i++;
  47.    }
  48. puts(cad);
  49.    return;
  50. }
  51. void ponblancosalprincipio(char cadena[],int numblancos)
  52. {
  53.    int i=0,j;
  54.    while(cadena[i]==cadena[0])
  55.    {
  56.        for(j=0;j<numblancos;j++)
  57.        {
  58.            printf(" ");
  59.        }
  60.        i++;
  61.    }
  62.    puts(cadena);
  63.    return ;
  64. }
  65.  



pd:la gente que esta en este foro me ayuda mas que los ayudantes de mi facultad, mil gracias de antemano
17  Programación / Programación C/C++ / Re: recursividad cruzada en: 14 Enero 2019, 01:00 am
perfecto gracias a todos!!
18  Programación / Programación C/C++ / Re: recursividad cruzada en: 13 Enero 2019, 20:56 pm
Por favor no se enojen conmigo, tengo una duda que a estas alturas va a ser estupida, pero cuando se retorna un 1 o un 0, dependiendo de si el usuario digita un negativo o un positivo, como te se da cuenta que el numero  es positivo o negativo?¿, no seria mejor que al evaluar la condición dentro del if, cuando chequea que es postivo avise mediante un printf que lo que se ingreso es postivo?, tenganme paciencia pliss :-*
19  Programación / Programación C/C++ / Re: recursividad cruzada en: 13 Enero 2019, 20:29 pm
Aunque ya tengas el tema solucionado, lo importante es resolver las dudas que quedan así que...
- <sizeof()> se usa para obtener el número de bytes que ocupa un tipo de dato. En ese código te devuelve el número de bytes que ocupa un <unsigned long long>.
- <--s> significa decrementar <s> en 1. Al igual que se suele hacer <i++>, se puede hacer también <i-->, <++i> o <--i>. A veces da igual usar el prefijo o el sufijo (cuando es una sentencia aislada, que no va como "encadenada"). El prefijo primero hace el incremento/decremento y después el resto de la sentencia; el sufijo primero hace el resto de la sentencia y al final hace el incremento/decremento.
Código
  1. for(int i = 0; i < 5; i++) // aqui da igual i++ o ++i porque esta solo
  2.    printf("%d", i++); // primero muestra i y luego lo incrementa en 1. Salida: 0, 2, 4
  3.  
  4. for(int i = 0; i < 5; i++)
  5.    printf("%d", ++i); // incrementa i y luego lo muestra. Salida: 1, 3, 5 (el 5 se muestra aunque la condicion es i < 5)



Si haces <num >> 1> lo que haces es mover los bits de <num> una posición a la derecha. Si tienes:
a = 01011001
a >> 1
a = 00101100
Si el número es negativo se extiende con unos:
a = 11010011
a >> 1
a = 11101001

Como dato interesante que si no te paras a estudiar los bits no te das cuenta es que mover una posición a la izquierda un número en binario es equivalente a multiplicar ese número por 2. Y entonces moverlo una posición a la derecha es equivalente a dividirlo por 2, aunque si es impar se hará obviando los decimales.



Entonces para que entiendas el código ese que la verdad aunque poco efectivo, me parece impresionante:
Usa una función donde manda un <unsigned long long> que es el número a calcular y le pasa como segundo parámetro el número de bits que ocupa un número <unsigned long long> (con <sizeof()> saca el número de bytes y eso por 8, en bits).
Entonces cuando <s == 1> es decir, cuando sólo quede el bit más significativo se retorna ese bit (que valdrá 1 si el número es negativo o 0 si no lo es). Y si <s != 1>, mueve todos los bits una posición a la derecha y decrementa el número de bits que quedan todavía. Algo así en un caso simplificado:
n = 4 (0100) s = 4
s == 1? No -> n = 2 (0010) s = 3
s == 1? No -> n = 1 (0001) s = 2
s == 1? No -> n = 0 (0000) s = 1
s == 1? Si -> return n (return 0)

n = -2 (1110) s = 4
s == 1? No -> n = -1 (1111) s = 3 // los negativos se extienden con 1 para que sigan siendo negativos (cosas del complemento a 2)
s == 1? No -> n = -1 (1111) s = 2
s == 1? No -> n = -1 (1111) s = 1
s == 1? Si -> return n (return 1)



Una función de ese estilo es mejor que no muestre nada por pantalla por si quieres usar esa función dentro de un condicional, sería más funcional entonces sin los <printf()>:
Código
  1. int positivo(int n){
  2.    if(n >= 0)
  3.        return 1;
  4.    else
  5.        return !negativo(n);
  6. }
  7.  
  8. int negativo(int n){
  9.    if(n < 0)
  10.        return 1;
  11.    else
  12.        return !positivo(n);
  13. }

Espero que esto te ayude a entender y profundizar más en todo lo que se puede hacer con la programación. Suerte :-X

graciassss aja!, que lindo paseo me pegaron xD
20  Programación / Programación C/C++ / Re: recursividad cruzada en: 13 Enero 2019, 20:24 pm
perdon no habia entrado a la segunda pagina
Páginas: 1 [2] 3 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines