Lectura opcional de una serie de variables

Iniciado por amgarciac, 14 Septiembre 2013, 12:22 PM

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

amgarciac

Buenos días, estoy intentando realizar un problema que me lea una secuencia de términos (monomios de grado 1), dentro de los cuales he de identificar el coeficiente y la variable (una letra). A cada uno de estos he dedicado una variable, respectivamente un integer y un "char".

Dado que bien el coeficiente sea uno (por lo que sobra su inserción como dato de entrada) o no exista variable (por lo que damos con un término independiente), he establecido unos enunciados condicionales a la hora de establecer las sentencias de entrada de datos (todas en base a un cin): un if para que me lea ambos y otros dos para cada uno de ellos. Pero tengo un problema, ya que no me respeta ni los espacios ni los saltos de línea; incluso es imposible continuar ya que se da una infinitud de saltos de línea, incontrolables.

De todos modos, antes de finalizar os expondré un ejemplo de entrada y otro de salida:

ENTRADA
   -13t      8k    w
      +34
-10p

SALIDA
-13.t
8.k
1.w
34.
-10.p


Agradecería vuestra ayuda.
Un saludo.

ivancea96

Acuérdate de poner el código para que podamos revisarlo.


Sobre eso, CIN lee hasta que haya un espacio o un salto de línea. Si quieres que CIN lea espacios, escribe en su lugar
Código (cpp) [Seleccionar]
cin.getline(variable,numero de caracteres);

amgarciac

#2
Hola, le agradezco su respuesta, pero voy a proceder a exponerle el código y a explicarle posteriormente, ya que ando un poco desconcertado:

int main(void)
{
int coeficiente = 0;
char variable;

while (cin >> coeficiente >> variable)
{
if (coeficiente == '\0')
cout << 1 << "." << variable;
else if (variable == '\0')
cout << coeficiente << ".";
else
cout << coeficiente << "." << variable;

cout << endl;
}
}


Como pueden ver, el código ampara el caso en el que se lee el número, sea positivo o negativo junto a la variable (una letra de la 'a' a la 'z'), pero yo quiero que se lea el número en los siguientes casos:


  • Términos con variable, todos los coeficientes aparecen explícitamente y son nºs positivos. Dos términos consecutivos se separan por un único carácter "enter"'
  • Términos de todo tipo, sean positivos o negativos; separados por un único carácter enter
  • Estos términos también pueden ir separados por espacios además de los enters; de manera arbitraria

Dada la complejidad (que haya un signo sin nº), ... no sé si utilizar int o char, o solo un string; o emplear un determinado procedimiento.

VÉASE EL ENUNCIADO EN https://docs.google.com/file/d/0B70hcRCqJ3n6Y3ludEowbThHVlk/edit?usp=sharing

Alien-Z

El error está en que, al leer los datos de esta manera, haces que obligatoriamente primero se lea un número y luego un carácter:

Código (cpp) [Seleccionar]
cin >> coeficiente >> variable

Por tanto no se puede introducir el coeficiente o la incógnita sola.

Deberías almacenarlo todo como carácteres (incluído el coeficiente) y después analizar si se ha introducido un signo, un número o una letra.

Saludos.

amgarciac

Buenas, al final lo hice como me sugeriste: haciendo uso de un string.

Muchas gracias por su respuesta.
Un saludo.