#include <iostream>
#include <cmath>
using namespace std;
int main(){
int numero, numero_copia;
double n, n_copia, sumando, suma;
cin >> numero;
numero_copia = numero;
n = 0;
for (numero_copia = numero; numero_copia > 0; n++)
numero_copia = numero_copia / 10;
cout << "\n\nEl numero de cifras es " << n << ".\n\n";
----> numero_copia = numero;
----> suma = 0;
----> n_copia = n;
----> for (n_copia = n; n_copia > 0; n_copia--) {
----> numero_copia = numero_copia % 10;
----> suma = suma + pow (numero_copia,n);
}
if (suma == numero)
cout << "\n\nEs narcisista.";
else
cout << "\n\nNo es narcisista.";
system("pause");
}
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int numero, numero_copia;
double n, n_copia, sumando, suma;
cin >> numero;
numero_copia = numero;
n = 0;
for (numero_copia = numero; numero_copia > 0; n++)
numero_copia = numero_copia / 10;
cout << "\n\nEl numero de cifras es " << n << ".\n\n";
----> numero_copia = numero;
----> suma = 0;
----> n_copia = n;
----> for (n_copia = n; n_copia > 0; n_copia--) {
----> numero_copia = numero_copia % 10;
----> suma = suma + pow (numero_copia,n);
}
if (suma == numero)
cout << "\n\nEs narcisista.";
else
cout << "\n\nNo es narcisista.";
system("pause");
}
numero_copia=numero;
mientras ( numero_copia > 0 ) hacer:
suma= resultado + pow (numero_copia mod 10);
numero_copia= numero_copia div 10;
fmientras
leer primer numero (a veces veras que el primer valor de secuencia es de fin de programa, tipico en tests)
mientras (numero != -1 ) hacer
veces que ha salido = 1 (es el minimo de veces que va a salir, aunque el siguiente sea diferente)
leer siguiente numero
mientras (el numero siguiente sea el mismo que el anterior)
suma++
leer otro numero
fin de mientras
imprimir numero y suma
fin de mientras
#include <iostream>
using namespace std;
int main(){
int numero, numero_2, suma;
cout << "\nIntroduce números y se codificarán por el método RLE (salir con -1)\n";
cin >> numero;
while (numero != -1){
suma = 1;
cin >> numero_2;
while (numero_2 == numero){
suma ++;
cin >> numero_2;
}
cout << "\n\n " << numero << " " << suma <<".";
}
system("pause");
}
analca3 escribió:Vale, ya he entendido el primero =P. La verdad es que sí, me complico la vida muchas veces, pero bueno, a seguir aprendiendo ^^, ese me ha quedado bastante claro, es fácil una vez que se entiende.
El segundo no lo veo del todo... no sé cómo hacer que una expresión evalúe según lo que tenía el valor anterior. A ver, sé, pero claro, no con solamente una variable...#include <iostream>
using namespace std;
int main(){
int numero, numero_2, suma;
cout << "\nIntroduce números y se codificarán por el método RLE (salir con -1)\n";
cin >> numero;
while (numero != -1){
suma = 1;
cin >> numero_2;
while (numero_2 == numero){
suma ++;
cin >> numero_2;
}
cout << "\n\n " << numero << " " << suma <<".";
}
system("pause");
}
Eso me funciona, pero sólo con el primer número xD, en cuanto cambio de número se producen errores lógicos -.-. Obviamente sé que está mal y se ve claramente, la variable numero nunca cambia de valor... por eso, es que no sé cómo evaluar si una variable tenía el mismo valor que anteriormente, ya que una vez le asignas otro valor, el antiguo se machaca por así decirlo...
Muchas gracias por tu ayuda =).
Salu2!!!
exitfor escribió:Necesitas un poco de psudocódigo, luego pasarlo a código funcional es un momento.
nueva entrada es distinta de -1? almacenar entrada. Es -1? empezar la ejecución siguiente:
de inicio a fin, leer posicion a posicion.
si posición actual es superior a primera posición, comparas posicion actual con la anterior. incrementas hasta que sea distinto.
das la salida almacenada.
Éso sería si cada entrada va almacenando y luego procesa de golpe. Si quieres hacerlo a medida que vas introduciendo cada carácter, lo adaptas en un plis plas.
Saludos.
entero leído <- leerEntero()
entero contador <- 0
entero anterior <- leído
mientrasQue leído distinto -1 hacer
si anterior igual a leído hacer
contador <- contador + 1
si_no
imprimir "contador anterior"
contador = 1
anterior = leído
finSi
leído <- leerEntero()
finMQ
#include <iostream>
using namespace std;
int main(){
int numero, numero_2, suma;
cout << "\nIntroduce números y se codificarán por el método RLE (salir con -1)\n";
cin >> numero;
while (numero != -1){
suma = 1;
cin >> numero_2;
while (numero_2 == numero){
suma ++;
cin >> numero_2;
}
cout << "\n\n " << numero << " " << suma <<".";
----->numero=numero_2;
}
system("pause");
}