problema con un ejercicio

Iniciado por espdante, 18 Agosto 2012, 23:54 PM

0 Miembros y 1 Visitante están viendo este tema.

espdante

Que hay muy buenas, soy nuevo en este foro, y antes de nada, me presento. Me llamo Luis, tengo 26 años, soy tecnico informatico y estudio programacion en c++ a distancia que no dire el nombre de la pagina para no darles publicidad gratuita xd.

Despues de esta breve presentación, os pido ayuda para realizar un ejercicio, es decir que me deis orientacion ya que mañana es domingo y la verdad estoy muy pero muy saturado con el ejercicio y hasta que no me salga no me pienso ir a dormir xd. No quiero que me digais el programa esta mal y tienes que hacer esto o lo otro, si no que me digais la pregunta concreta que hago mas abajo, tengo claro que el ejercicio está mal y no está terminado, pero me gustaría ir ejecutandolo e ir viendo yo paso a paso por qué esta mal e ir arreglandolo.

Este es el ejercicio en cuestion: Hacer un programa que contenga una función con el prototipo bool aumento(char numero[10]);. La función debe incrementar el número pasado como parámetro en una cadena de caracteres de 9 dígitos. Si la cadena no contiene un número, debe devolver false, en caso contrario debe devolver true, y la cadena debe contener el número incrementado.

y esto es lo que llevo hasta ahora...

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

bool aumento (char numero[10])
{
                  int i;
cout<<"Introducir el numero cifra a cifra:";
for (i=0; i<9; i++)
{
cout<<"Cifra numero "<<i <<":";
cin>>numero[i];
}
cout<<"La cifra es: ";
for (i=0; i<9; i++)
{
cout<<numero[i];
}

for(i=0; i<9;i++)
{
do
{
for (int x=9; x<0;x++)
{
if (numero [ x ] = 9)
{
numero [ x ] = 0;
numero [ x-1 ] = numero [ x-1 ] + 1;
}
else
{
numero [ x ] = numero[ x ] + 1;
}

}
}
while (numero[i]!=0);
}

for (i=0; i<9; i++)
{
cout<<numero[i];
}
}

int main()
{

}

El problema viene a la hora de llamar a la funcion aumento en el main. No se como hacerlo, mi profesor me dice que ponga aumento(aquí_le_pasas_la_variable);
Pero... que variable? he probado de todas las maneras que se me han ocurrido, creando un int (me dice que no es compatible con un bool), creando otro bool (con la misma respuesta)....

A ver si me podeis ayudar, porque me estoy desesperando y hasta el lunes no puedo contactar con mi profesor.
Un saludo y gracias.

avesudra

Mmm bienvenido al foro eso lo primero , para la proxima vez que postees pon el código bajo las etiquetas GeSHi que colorea el código , de momento la pongo yo:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

bool aumento (char numero[10])
{
  int i;
  cout<<"Introducir el numero cifra a cifra:";
  for (i=0; i<9; i++)
  {
     cout<<"Cifra numero "<<i <<":";
     cin>>numero;
  }
  cout<<"La cifra es: ";
  for (i=0; i<9; i++)
  {
     cout<<numero;
  }
  for(i=0; i<9;i++)
  {
     do
     {
        for (int x=9; x<0;x++)
        {
           if (numero [ x ] = 9)
           {
              numero [ x ] = 0;
              numero [ x-1 ] = numero [ x-1 ] + 1;
           }
           else
           {
              numero [ x ] = numero[ x ] + 1;
           }
        }
     }
     while (numero!=0);
  }
  for (i=0; i<9; i++)
  {
        cout<<numero;
  }
}

int main()
{

}

Ahora bien , lo que te dice tu profesor es lógico , deberias pedir el número en el main , y después pasarselo a la función como te dice el.La variable que tienes que pasarle es la que pidas en el main , que debe ser una cadena con diez carácteres.
Regístrate en

espdante

perfecto muchas gracias por tu ayuda, en eso no habia caido... si es que estas no son horas para programar... jeje muchas gracias por la ayuda ya te comentare que tal me fue xd.

avesudra

Cita de: espdante en 19 Agosto 2012, 02:22 AM
perfecto muchas gracias por tu ayuda, en eso no habia caido... si es que estas no son horas para programar... jeje muchas gracias por la ayuda ya te comentare que tal me fue xd.
Me alegro , si tienes alguna otra duda no dudes en volver a comentar.

¡Un saludo!
Regístrate en

espdante

#4
pues si sigo con dudas a ver esto es lo que modifiqué:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

bool aumento (char numero[10])
{
for(i=0; i<9;i++)
{
do
{
for (int x=9; x<0;x++)
{
if (numero[x] = 9)
{
numero[x] = 0;
numero[x-1] = numero[x-1] + 1;
}
else
{
numero[x] = numero[x] + 1;
}

}
}
while (numero[i]!=0);
}

for (i=0; i<9; i++)
{
cout<<numero[i];
}
return 0;
}

int main()
{
int i;
char numero[10];
cout<<"Introducir el numero cifra a cifra empezando por la izquierda:"<<endl;
for (i=0; i<9; i++)
{
cout<<"Cifra numero "<<i+1 <<":";
cin>>numero[i];
}
cout<<"La cifra es: ";
for (i=0; i<9; i++)
{
cout<<numero[i];
}
aumento(numero[10]);
cin.get();cin.get();
}




El problema viene de que sigo sin poder llamar a la funcion en el main... me da error, que hago mal?

avesudra

Yo lo tengo hecho pero paso de hacerte la tarea, porque por lo que se vé o no has atendido mucho en la clase o no te interesa, el fallo lo tienes en tropescientosmil lados pero en esa función es que debe de ser así:
Código (cpp) [Seleccionar]
aumento(numero);
Regístrate en

espdante

#6
te voy a decir unas cuantas cosas.
primero, no voy a clase lo hago a distancia (estudio en casa y no tengo clases), segundo, el ejercicio lo quiero hacer yo y no que me lo des tu, en ningun momento te pedi eso se ve que tu tampoco sabes leer y/o atender, tercero, para darme ese tipo de contestacion mejor no contestes, prefiero quedarme con la duda. Se ve que tu ya naciste sabiendo programacion y en lugar de decir pues mira tienes esto mal por esta cosa y por esto otro, vas a criticar y dartelas de que tu sabes mas que el otro. Prefiero seguir con mis tropecientos mil fallos, "gracias" por tu "ayuda".

avesudra

#7
Cita de: espdante en 20 Agosto 2012, 00:29 AM
te voy a decir unas cuantas cosas.
primero, no voy a clase lo hago a distancia (estudio en casa y no tengo clases), segundo, el ejercicio lo quiero hacer yo y no que me lo des tu, en ningun momento te pedi eso se ve que tu tampoco sabes leer y/o atender, tercero, para darme ese tipo de contestacion mejor no contestes, prefiero quedarme con la duda. Se ve que tu ya naciste sabiendo programacion y en lugar de decir pues mira tienes esto mal por esta cosa y por esto otro, vas a criticar y dartelas de que tu sabes mas que el otro. Prefiero seguir con mis tropecientos mil fallos, "gracias" por tu "ayuda".
Vale me parece bien , pero es que esos fallos son de cajón , yo no nací sabiendo programación , pero ni fui a clase ni lo hice a distancia.No he dicho que te lo vaya a hacer , ni he intentado vacilarte aunque sientas eso, pero son fallos muy faciles que en clase ya sea a distancia o en persona supongo que daran las lecciones(por eso lo de se ve que no has atendido y/o interesado en la clase). Entiendo que te haya molestado por eso pido disculpas con mucha rabia porque no dejo de decir que todo lo que viene a continuación me ha costado mucho trabajo y muchos errores y en este foro ni en ningún otro verás post mios que digan que porqué una variable no está declarada, pero claro es muy dificil coger un libro , buscar en google... que gran trabajo eh , hago esto por pasión , si tu lo hicieses te aseguro que estarías como yo muchas veces hasta las claras del día leyendo una puñetera biblia de C para enterarme de como funciona , pero cuesta mucho trabajo leerse 1000 páginas y decenas de papers en inglés , prefiero poner un post y que esta gente me indique letra a letra lo que tengo que escribir , te pones así de exigente siendo el único que se ha ofrecido a ayudarte aunque ale no se ni porque lo hago pero ahí tienes.
En cuanto a las dudas ya que quieres que te diga donde están todos los errores, copio tu código lo pego en el compilador (que también es muy complicado leer esto siguiente)y me dice esto:
In function 'bool aumento(char*)':|
52|error: 'i' was not declared in this scope|
In function 'int main()':|
95|error: invalid conversion from 'char' to 'char*'|
95|error:   initializing argument 1 of 'bool aumento(char*)'|
||=== Build finished: 3 errors, 0 warnings ===|

El primer error , pues que la variable i no está declarada.
El segundo error, es que el compilador se vuelve loco por una barbaridad y no sabe ni lo que dice.
El tercer error cuando pasas un array de carácteres a una función , si ya está declarado no hace falta volver a redeclararlo por eso no puedes poner otra vez que el array es de diez espacios, por lo que no sería así:
Código (cpp) [Seleccionar]
aumento(numero[10]);Si no así:
Código (cpp) [Seleccionar]
aumento(numero);
Pues la variable ya la has declarado y no necesitas volver a redeclararla.
Y en cuanto a la función , el algoritmo no sé si está bien pero se observan algunas errores garrafales como estos:
Código (cpp) [Seleccionar]
for (int x=9; x<0;x++)
Genera un bucle que no se ejecutará pues 'x' sin las comillas nunca será menor a cero pues es 9.
Código (cpp) [Seleccionar]
if (numero[x] = 9)
No se puede usar el operador de asignación para comparar se usa el '==' sin las comillas o sea quedaría así:
Código (cpp) [Seleccionar]
if (numero[x] == 9)
Y en cuanto a otras cosas es que tengas en cuenta , que los valores de los carácteres no son los mismos que los valores enteros , es decir , que el 9 en carácter ,es 57 en entero , aunque para eso se usan las comillas que sirven para transformarlo , entonces al tener una cadena de caracteres no puedes comparar con enteros , si no con carácteres de esta forma:
Código (cpp) [Seleccionar]
if (numero[x] == '9')
Con las comillas que lo que hacen es tranformar el 9 (o el caracter que sea) a 57 , o sea a su valor entero.
El algoritmo está mal ,¿también quieres que te diga lo que tienes mal y como ponerlo para que salga?
Regístrate en

espdante

a ver chico, una cosa es que te guste y otra muy distinta que lo hagas por aprender algo, o al menos intentarlo, a ti te costara poco porque ya sabes o quizas te costo poco porque tu leiste un curso mejor o porque directamente te cuesta menos aprender... hay gente y gente a algunos les cuesta mas y a otros menos, no tienes por que dartelas de listo. ya te digo que a mi el mismo codigo que tengo en microsoft visual c++ no me da error y me ejecuta el codigo sin problema, solo me daba el error anterior.

que seas el unico que me ha contestado? eso no te da derecho a ir de... como decirlo sin que tu te molestes? da igual mejor no digo nada por lo mismo. Es mas que yo sepa no te he puesto un cuchillo en el cuello para que contestes es un foro! tu responde a lo que quieras.

Te ha sobrado todo lo que no era codigo, puede que me haya confundido pero ya te digo que no podia ejecutar el codigo por lo que no podia ver los errores y por mas que miraba, no lo encontraba, yo trabajo y solo puedo estudiar a estas horas en las que tengo sueño y no doy pie con bola. por lo que creo que esos errores como lo del 0 son pasables. Te crees que no he buscado por google? que no he intentado leer libros? pero da la casualidad que todos los libros que leo van dedicados a gente que sabe otro lenguaje y les cuesta menos asimilarlo. O eso o yo soy tonto. Pero vamos tranquilo que ya no vuelvo a preguntar, porque si por preguntar contestas asi...

Y no fijate prefiero quedarme con el ejercicio sin hacer a que me des la solucion. Gracias de nuevo.

rir3760

Cita de: espdante en 20 Agosto 2012, 02:47 AMda la casualidad que todos los libros que leo van dedicados a gente que sabe otro lenguaje y les cuesta menos asimilarlo.
En ese caso empieza con una aplicación enfocada en los conceptos generales de programación como PSeInt. Una vez domines los fundamentos pasas a un lenguaje de propósito general como C++.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language