Hay algo que no me queda claro.
En el Ejercicio 8:
b)
int LongitudCadena(char cad[]) { int l; for(l = 0; cad[l] != 0; l++); return l; }
(N)
Mal: Bueno, no hacemos más que contar hasta encontrar el nulo, pero con un bucle for.
En el código dice lo siguiente:
for(l = 0; cad[l] != 0; l++);
l = 0, si cad[l] no es igual a 0, l se incrementa en 1.
En la parte de cad[l] no es igual a 0, SI es igual a 0, si la estás declarando como 0 apenas empieza el for.
Entonces =/
Lo que estás comparando es el valor del array en la posición l, no el valor de l, por lo tanto en la posición l==0 del arreglo puede haber cualquier valor.
Mi comentario es por el ejercicio 8a:
int LongitudCadena(char cad[]) { int l = 0; while(cad[l]=0) l++; return l; }
Lo marque como mal y me aparece:
Mal: Bueno, no hacemos más que contar hasta encontrar el nulo.
Lo haria mientras el valor de cad[l] sea 0, pero nunca llegaria a contar hasta el ultimo porque el primer valor de un char[] nunca es nulo (solo en el caso que sea un char vacio). Asi que no funciona.
int LongitudCadena(char cad[]) { int l = 0; while(cad[l]!=0) l++; return l; }
Esta seria la correccion, hacerlo mientras el valor de cad[l] NO sea nulo.
Las sentencias siguientes son equivalentes:
while(cad[l]) l++; while(cad[l]!=0) l++;
Ten en cuenta que la conversión entre valores enteros y booleanos es que cualquier valor distinto de cero se considera verdadero, y un valor nulo se considera falso.
Por lo tanto, cad[l] será falso sólo cuando contenga el carácter nulo.
Hola.
En el ejercicio 8.c, dice que dará como resultado un carácter
de más, lo compilé y me dió de respuesta 4 (Hola). Aquí el
código:
int i;
char saludo[5] = "Hola";
i = LongitudCadena(saludo);
cout << i;
Hola Raúl,
Tienes razón. El algoritmo contará correctamente la cantidad de caracteres en la cadena. El otro error sigue vigente: no contabiliza correctamente la cadena nula, al saltarse la verificación del primer carácter.
Cuando podamos, corregiremos el comentario. Gracias.
Steven
hay un problema y es que cuando se asignan las variables no pueden empezar con números y en todos las variables se declara como:
int 1 = 0;
o como:
int 1;lo cual no es valido puesto que el primer y único carácter de identificación es un numero
Hola xhunik,
Creo que el problema es con la fuente del texto en la página porque tenemos escrito una ele y no un uno; es decir, tenemos esto,
int l = 0;
y no,
int 1 = 0;
Perdona la confusión.
Steven
© Julio de 2003, Salvador Pozo, salvador@conclase.net