Necesito un poco de ayuda :$

Iniciado por Carlos2210, 18 Abril 2016, 01:09 AM

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

Carlos2210

Hola a todos, termine de escribir supuestamente un programa que me lanza numeros capicua en intervalos definidos por el usuario; lo que pasa es que solo me lanza un valor que es el siguiente de la letra "a" poer de ahi acaba todo :c. Que mas le falta para que siga generando más valores ????

#include <iostream>

using namespace std;

int main ()
{
   int a,b,s,c = 0,total = 0;
   
   cout << "Por favor ingrese el primer numero: ";
   cin >> a;
   
   cout << "Por favor ingrese el segundo numero: ";
   cin >> b;
   
   while ( a < b )
   {
       a += 1;
       s = a;
           while ( s > 0)
           {
               c = c * 10 + s%10;
               s /= 10;
           }
       if ( c == a)
       {
           ++total;
           cout << c ;
       }  
   }
    cout << "\nEl numero de terminos capicua es " << total << endl;
    return 0;
}

AlbertoBSD

supuestamente tu codigo esta incompleto, realmente no se aque te refieres cuando dices "a intervalos regulares definidos por el usuario"

Que representa a? que representa b?

al parecer el ciclo que hace el trabajo es este:


while ( s > 0) {
c = c * 10 + s%10;
s /=10;
}


Le agrege un:

printf("%i\n",c);
para visualizar cuando vale c en cada iteracion me da de salida cuando agrego 10000 y 10002 como numeros a y b respectivamente:

1
10
100
1000
10001
10001
100012
1000120
10001200
100012000
1000120001
El numero de terminos capicua es 1


Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

HardForo

#2
Yo lo haria asi:


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

/*
Capicupa (palindromo) ?
*/

const char* r_bool(bool b);
bool es_capicua(int x);
void print_capicua_rango(int a, int b);


int main(void)
{
cout << r_bool(es_capicua(10000)) << endl; // false
cout << r_bool(es_capicua(10001)) << endl; // true
cout << r_bool(es_capicua(10501)) << endl; // true
cout << r_bool(es_capicua(807)) << endl; // false
cout << r_bool(es_capicua(808)) << endl; // true

print_capicua_rango(19,100);

getchar();
}

void print_capicua_rango(int a, int b){
int i,count=0;
for (i=a; i<b; i++){
if (es_capicua(i)){
cout << i << endl;
count++;
}
}
cout << "El numero de terminos capicua es " << count;
}

bool es_capicua(int x){
char buffer [10];
int i;
bool exito = true;

itoa(x,buffer,10);

int len = strlen(buffer);
for (i = 0; i<(int)len/2 && exito; i++)
exito = buffer[i]==buffer[len-1-i];

return exito;
}

const char* r_bool(bool b){
 return (b ? "true" : "false");
}


HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *