hola YreX-DwX, te agradezco mucho el tiempo que has dedicado a la respuesta, la verdad es que mi profesor no nos ha dado muchas clases y no tengo las bases necesarias para resolver el problema, intente hacer el pseudo codigo para el problema, lo hice de la siguiente forma:
PEDIR numero
SI NUMERO es igual o menor que 9 ENTONCES
MOSTRAR "El numero "x9+1 = " Numero +1 veces 1"
SINO
MOSTRAR "Introduzca un numero entre 1 y 9"
FIN SI
Lo primero: ese pseudocódigo no es muy correcto. Estás pidiendo un número <= 9 para mostrar el número en sí. Lo que tienes que hacer es calcular el número en base al que tú pides.
Además es importante el uso correcto de las comillas para mostrar mensajes. Las comillas significan que debe aparecer tal cual. Si pones "numero", se escribirá "numero"; si escribes: numero, se escribirá el valor del numero.
Hasta aquí creo entender el problema, sin embargo se me complica al querer escribir código para "numero+1" veces 1, no se en realidad como crear el bucle para ir colocando los 1 las veces que define numero.
Para crear bucles tienes que usar un sentencia while() o for():
SENTENCIA WHILEUn bucle while(condicion) es un bucle que se repite mientras la condición que pongas dentro sea cierta. Es importante, dentro del bucle modificar algo que afecte a la condición pues sino el bucle siempre será cierto/falso y entonces nunca saldrás/entrarás.
Por ejemplo, para crear el primer número sabiendo el número de dígitos:
PEDIR numeroCifras
i := 1
numero := 0
MIENTRAS i <= numeroCifras HACER
numero := numero + (i * pow(10, numeroCifras-i)) // pow(base, exponente)
i := i + 1
FIN MIENTRAS
MOSTRAR "El numero de " + numeroCifras + " cifras es: " + numero
SENTENCIA FORUn bucle for(inicializacion, condicion, actualizacion) ejecuta lo que pongas en la inicialización cuando empieza, se repite como el while() cada vez que se cumple la condición y tras terminar cada iteración se ejecuta la actualización. El mismo ejemplo de antes con un for() sería:
PEDIR numeroCifras
numero := 0
PARA i := 1 HASTA numeroCifras INCREMENTO 1 HACER
numero := numero + (i * pow(10, numeroCifras-i))
// En este caso no se incrementa la i aqui porque ya lo hemos puesto en el INCREMENTO
FIN PARA
El for() puede parecer un poco más raro, te dejo la forma que tiene en C:
for(int i = 1; i <= numeroCifras; ++i){
// lo que sea
}
// Intentar usar i aqui da error porque solo existe dentro del for()
También puedes declarar la variable fuera. La diferencia es que si la declaras en el for() solo podrás usarla dentro del for() y si la declaras fuera podrás usarla una vez termine el bloque for().
int i;
for(i = 1; i <= numeroCifras; ++i){
// lo que sea
}
// Aqui puedes usar la i porque esta declarada fuera del for()
Te dejo que intentes pasar esto a C, no tiene mucha complicación y es más gratificante si lo consigues tú. Lo único un poco raro es la función pow() pero ya existe en C, para poder usarla tienes que incluir la biblioteca <math.h>.
PD: Un bloque while() se puede convertir en un bucle for() y viceversa. La norma general es que si el bucle depende de un contador o índice se use for() y si la condición es de otro tipo, se utilice un while(). Pero ambas soluciones van a ser correctas. En el caso anterior, el uso correcto sería el for() pues depende de un contador i.
No se como hacer un arreglo, lo cheque en algunas paginas pero la verdad me perdí por completo, la forma en que puse el primer código, uso las funciones que me enseño el profesor pero no nos ha enseñado otras, solo conozco if y else ¿Podrías orientarme sobre que funciones estudiar para poder llegar a hacer el ejercicio?
Muchisimas gracias
No sé qué pretende que hagáis en este ejercicio pero me parece indispensable el uso de bucles para poder completarlo.
Creo que es mejor que primero lo intentes sin usar arrays/arreglos y luego le vayas introduciendo cosas. Mejor ir poco a poco comprobando que lo que tienes funciona que meter muchas cosas y luego hacerte un lío para arreglar los fallos.
Los arrays están muy relacionados con el bucle for(), te pongo un ejemplo básico de uso de un array con un for():
#include <stdio.h> // Biblioteca para la funcion printf()
#define LONGITUD 10 // Constante que se llama LONGITUD y vale 10. Es recomendable que las uses en vez de inventarte un numero dentro del codigo.
// Si en algun momento quieres cambiar la longitud, solo tendras que cambiar ese 10. Si has ido poniendo 10 por todo el codigo, tendras que cambiarlo muchas veces
int main(){
int digitos[LONGITUD]; // Declaras un array estatico <digitos> con una longitud de lo que valga LONGITUD (10)
// La primera posicion del array es 0 y la ultima es LONGITUD-1 (9). Se accede a cada posicion con []
for(int i = 0; i < LONGITUD; ++i){
digitos[i] = i; // Guardamos en cada posicion el valor del indice: 0, 1, 2, 3, 4, 5,...
}
printf("El contenido del array es:\n"); for(int i = 0; i < LONGITUD; ++i){
}
return 0;
}
Los arrays son un tema muy amplio, te recomiendo que busques algún recurso (libros, pdfs, vídeos,...) sobre programación en C. Y las dudas que te surjan las preguntes por aquí porque si tengo que explicarte todo, se va a hacer un tema enorme. Así puedes profundizar más y con más ejemplos.
Ya tienes bastantes cosas para probar.
Suerte.