[C con Clase] programa con la una función bool Incrementa(char numero[10])

Davidson, Steven srd4121 en njit.edu
Jue Jun 20 17:38:03 CEST 2013


Hola Aksel,

2013/6/19 Aksel <bendego00 en gmail.com>

> Hola,
> estoy intentando resolver el problema 4 de Arrays:
>

Para los ejercicios de nuestro curso de C++, recomiendo que los envíes a
nuestro apartado de correo-e dedicado para ellos:
ejercicioscpp en conclase.net Esto es para que los demás, que aún no ha
hecho los ejercicios, no tengan
la tentación de copiarse o incluso pensar que se hayan equivocado al
realizar su diseño e implementación.

[CORTE]


>
> bool incrementa( char numero[10])
> {
>     int n;
>     n=int(numero);
>

Esto no funcionará como quieres. La conversión es de tipo y no es una
conversión de los valores en el array. C++ no tiene ni idea de las
intenciones de los datos que guardas en un array, por lo que ni intenta
hacer esta conversión de "número-cadena" a un número entero.

Podrías usar la función estándar, 'atoi()', declarada en <cstdlib>, para
hacer la conversión. Sin embargo, esto va en contra de las intenciones de
hacer un ejercicio acerca de arrays y particularmente de cadenas de
caracteres. De hecho, el ejercicio trata de manipular los caracteres para
realizar la tarea de incrementar un número, sin cambiar su representación.


>         if (numero[10]='999999999')
>

Sé que sabes que esto está mal, pero para dejar las cosas bien claras,
indicaré las razones:

- Las comillas singulares sólo sirven para representar un solo carácter:
':', '0', '\n', '\021', 'j', etc..
- Para una cadena de caracteres, usamos las comillas: "hola", "1234",
"arg69ko-=", etc..
- Usas el operador [] de acceso a un elemento de un array, pero con el
índice 10 que rebasa la cantidad de elementos válidos en tal array.
- Usas el operador = de asignación en una condición. Lo más seguro es que
querías usar el operador == de igualación.
- Comparar cadenas de caracteres no resultará en algo deseado. Técnicamente
comparas direcciones de memoria y no sus elementos.

En general, podrías usar la función estándar 'strcmp()', declarada en
<cstring>. Sin embargo, no se permite tales funciones estándares en este
ejercicio; además, puedes prescindir de ella. Como necesitarás recorrer la
cadena, para validar su contenido, puedes aprovechar para recoger otro tipo
de información.

        {
>             n=0;
>             cout << "numero no soportado y devolvemos : "<< n <<endl;
>         }
>         else
>             n++;
>         cout << n;
>

Tienes que retornar un booleano.

}
>
>

Esperaremos a tus ejercicios por "privado".

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130620/35f37ecf/attachment.html>


Más información sobre la lista de distribución Cconclase