Array
Publicado por Franco Cedillo (36 intervenciones) el 21/07/2005 08:06:40
Hola foristas,
Estuve intentando resolver el problema 4 del tema "arrays" que se presenta en el siguiente enlace: http://c.conclase.net/curso/index.php?cap=010
Mi duda surge en el tratamiento del arreglo, pues le doy un tamaño fijo y una asignación que no cubra todo el arreglo provoca un error ya que la función llamada trabaja bajo este supuesto.
Entonces no voy a supoer que el arreglo esté lleno, sino que lo llenaré de ceros siempre que sea necesario. No entiendo cómo averiguar la cantidad de ceros necesaria ni la posición inicial adecuada. También etuve pensando en que se puede trabajar directamente con el arreglo. El problema pide que incremente en una unidad el número que contiene la cadena. si no es número (sólo dígitos como elementos) arrojará false (aún no realizo esta parte del algoritmo)
Saludos.
#include <iostream.h>
#include <stdlib.h>
bool Incrementa(char numero[10])
{
bool es_digito=true;
int i=0, dig, num=0, potencia10=100000000;
while ( (i<9) && (es_digito) )
{
dig = numero[i];
if ( (dig<48) || (dig>58) )
es_digito = false;
else
{
dig = dig - 48;
num = num + dig*potencia10;
potencia10 = potencia10/10;
i++;
};
};
num++;
potencia10 = 1;
for (i=8;i>0;i--)
{
numero[i] = ((num/potencia10)%10)+48;
potencia10 = potencia10*10;
};
return (es_digito);
};
int main()
{
int i, fin=0;
char numero[10]="000000000";
// si no tengo 9 cifras entonces el programa falla
// creo que se podría completar con ceros a la izquierda
// en caso tenga menos de 9 cifras
// pero no sé cómo contar hasta el símbolo 0
// si ya tengo ceros antes, o si la última cifra es cero
if (Incrementa(numero))
for (i=0;i<9;i++)
cout<<numero[i];
else
cout<<"Error en dato";
cout<<"\n";
system("PAUSE");
return 0;
}
Estuve intentando resolver el problema 4 del tema "arrays" que se presenta en el siguiente enlace: http://c.conclase.net/curso/index.php?cap=010
Mi duda surge en el tratamiento del arreglo, pues le doy un tamaño fijo y una asignación que no cubra todo el arreglo provoca un error ya que la función llamada trabaja bajo este supuesto.
Entonces no voy a supoer que el arreglo esté lleno, sino que lo llenaré de ceros siempre que sea necesario. No entiendo cómo averiguar la cantidad de ceros necesaria ni la posición inicial adecuada. También etuve pensando en que se puede trabajar directamente con el arreglo. El problema pide que incremente en una unidad el número que contiene la cadena. si no es número (sólo dígitos como elementos) arrojará false (aún no realizo esta parte del algoritmo)
Saludos.
#include <iostream.h>
#include <stdlib.h>
bool Incrementa(char numero[10])
{
bool es_digito=true;
int i=0, dig, num=0, potencia10=100000000;
while ( (i<9) && (es_digito) )
{
dig = numero[i];
if ( (dig<48) || (dig>58) )
es_digito = false;
else
{
dig = dig - 48;
num = num + dig*potencia10;
potencia10 = potencia10/10;
i++;
};
};
num++;
potencia10 = 1;
for (i=8;i>0;i--)
{
numero[i] = ((num/potencia10)%10)+48;
potencia10 = potencia10*10;
};
return (es_digito);
};
int main()
{
int i, fin=0;
char numero[10]="000000000";
// si no tengo 9 cifras entonces el programa falla
// creo que se podría completar con ceros a la izquierda
// en caso tenga menos de 9 cifras
// pero no sé cómo contar hasta el símbolo 0
// si ya tengo ceros antes, o si la última cifra es cero
if (Incrementa(numero))
for (i=0;i<9;i++)
cout<<numero[i];
else
cout<<"Error en dato";
cout<<"\n";
system("PAUSE");
return 0;
}
Valora esta pregunta


0