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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30
251  Programación / Programación C/C++ / Re: ejercicios en c en: 16 Junio 2011, 19:14 pm
Lo que pasaba es que si por ejemplo:

int strlen(char *cadena)

Esa es la funcion pero por parametro seria:

int strlen(&cadena)

Se enviaria la direccion cadena y el parametro de la funcion almacenaria el valor de esa direccion,en este caso de la cadena.Pero claro estudie que las cadenas y arrays ya estan definidos en memoria,y no haria falta pasar la direccion...O eso creo.

No hace falta; vuélvete a leer este enlace:

http://www.cplusplus.com/doc/tutorial/functions2/

Si continúas sin entenderlo crea otro post y pregunta.

Pero imaginate que no sabes cuanto mide la cadena,imaginemos que has cazado la cadena con gets y a lo mejor son 9 letras(abcdefgh + el caracter de final de cadena)

Entonces¿seria la misma estructura,incrementando y luego decremento?

Fíjate que en mis códigos nunca “sé” el tamaño de las cadenas ::).
252  Programación / Programación C/C++ / Re: ejercicios en c en: 16 Junio 2011, 17:42 pm
Bueno, el tema se complica si me dijiste que has empezado con C/C++ hace cosa de un mes. En el código estoy manejando cadenas y punteros:

http://www.cplusplus.com/doc/tutorial/arrays/
http://www.cplusplus.com/doc/tutorial/pointers/

Antes de que te lo explique, déjame mencionarte que en:

Código
  1. int strlen(char *cadena)

char *cadena es simplemente un parámetro. Si utilizásemos esta función deberíamos pasar una cadena, un array, al parámetro llamado cadena, ¿entiendes? Mira esto para más información:

http://www.cplusplus.com/doc/tutorial/functions/
http://www.cplusplus.com/doc/tutorial/functions2/

A lo que iba, cuando hayas estudiado cadenas y punteros entenderás que (supongamos el siguiente ejemplo):

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main()
  5. {
  6. char string[] = "Hola";
  7.  
  8. char *ptr = string;
  9.  
  10. printf("Elementos de la variable string:\n");
  11.  
  12. for(int a = 0; a <= strlen(string); a++)
  13. {
  14. printf("string[%d] = %c\n", a, string[a]);
  15. }
  16.  
  17. printf("\nElementos de la variable ptr:\n");
  18.  
  19. for(int b = 0; b <= strlen(ptr); b++)
  20. {
  21. printf("ptr[%d] = %c\n", b, ptr[b]);
  22. }
  23.  
  24.  
  25. return 0;
  26. }

ptr es un puntero que apunta a la variable (cadena) string. Al apuntar se reservan 5 celdas de memoria (vamos a llamarlo así) y se pone en ptr el contenido de string. O sea, quedaría una cosa así:

string[0] = “H” (siempre empieza por la celda 0)
string[1] = “o”
string[2] = “l”
string[3] = “a”
string[4] = “\0” (carácter nulo para finalizar la cadena)

y lo mismo con ptr:

ptr[0] = “H”
ptr[1] = “o”
ptr[2] = “l”
ptr[3] = “a”
ptr[4] = “\0”


Entonces esto es aplicable a la función strlen. ptr apunta a cadena. Lo bueno viene ahora. Ponemos por caso que le pasamos, al parámetro de la función, la cadena: elhacker. Luego la cadena cadena quedaría:

cadena[0] = “e”
cadena[1] = “l”
cadena[2] = “h”
cadena[3] = “a”
cadena[4] = “c”
cadena[5] = “k”
cadena[6] = “e”
cadena[7] = “r”
cadena[8] = “\0”


y ptr igual. Con el bucle avanzamos ptr hasta la penúltima celda (ptr[7]) pero cadena sigue en la primera celda (cadena[0]). Entonces se resta, en este caso 8 – 0, y queda el tamaño final.

Sé que lo explico fatal y fantasma306 lo explicó más breve y simple pero mira, así tienes diferentes opciones :).
253  Programación / Programación C/C++ / Re: ejercicios en c en: 16 Junio 2011, 14:58 pm
solo un pequeño fallo, al final del bucle tienes que desincrementar ptr, por que al ser un char* tambien cuenta el caracter '\0';

Verdad; añade solamente después del while:

Código
  1. *ptr--;

Dark Invader, respondo a tu duda después, que ahora no puedo.
254  Programación / Programación C/C++ / Re: ejercicios en c en: 15 Junio 2011, 20:46 pm
Código
  1. int strlen(char *cadena)
  2. {
  3. char *ptr = cadena;
  4.  
  5. while(*ptr++);
  6.  
  7. return ptr - cadena;
  8. }

Ya tienes la función strlen sin necesidad de usar la librería string ;D.
255  Foros Generales / Foro Libre / Re: ¿Cuántas asignaturas me pueden quedar en 4º para ir a Bachillerato? en: 15 Junio 2011, 18:13 pm
Pues para suspender ética te lo tienes que currar...
256  Programación / Programación C/C++ / Re: punto de inicio de ejecucion de un programa en: 15 Junio 2011, 14:28 pm
Depende del compilador y del enlazador que uses. Eso sí, aunque lo pudieras hacer no pertenecería al estándar de C/C++.
257  Programación / Programación C/C++ / Re: Fecha de creacion de ficheros en C en: 13 Junio 2011, 13:28 pm
En C/C++ no existe ninguna librería o funciones estándar para saber los atributos de un archivo. Dependiendo si usas:

258  Programación / Programación C/C++ / Re: [?]programar con apis de windows ¿por donde empezar? en: 12 Junio 2011, 10:37 am
Como ya dijiste que sabías un poco de C++ y estabas familiarizado con la API de Windows, antes de que empieces seriamente te recomiendo que te pases por aquí:

http://msdn.microsoft.com/en-us/library/60k1461a.aspx

Te enseña a usar básicamente el IDE de Microsoft y de paso aprendes algo de programación orientada a Windows.

Por otro lado, estos tipos de datos que mencionaste debes saber que son únicamente para Windows. Para más información pásate por aquí:

http://msdn.microsoft.com/en-us/library/aa505945.aspx
http://msdn.microsoft.com/en-us/library/cc230273%28v=PROT.10%29.aspx
259  Programación / Programación C/C++ / Re: Cual elijo C ó C++?? en: 8 Junio 2011, 22:54 pm
Es lo mismo.
260  Programación / Programación C/C++ / Re: Cual elijo C ó C++?? en: 8 Junio 2011, 20:43 pm
El cambio entre estos dos lenguajes es simple, pero se deben tener factores a la hora de elegir entre uno de éstos.

El primer punto, y el más importante seguramente, es que C es un lenguaje estructurado o sea, es la técnica para escribir programas de manera clara. Por eso, se eliminan las instrucciones de transferencia incondicional y se usa la estructura: secuencia, selección e iteración. Por otro lado, C++ es un lenguaje básicamente orientado a objetos, o sea, basado en las técnicas de herencia, abstracción, polimorfismo y encapsulamiento.

http://en.wikipedia.org/wiki/Object-oriented_programming
http://en.wikipedia.org/wiki/Structured_programming

Yo simplemente te dije la diferencia que, desde mi punto de vista, es la más importante pero si quieres saber más en detalle, te aconsejo que entres en http://unthought.net/c++/c_vs_c++.html.

Mi recomendación personal es que empieces por C y luego vayas a C++ sin dudarlo.
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines