Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - leosansan

#1211
Sólo tiene un pequeño fallo, no "termina" de hacer lo que quiere. En tú código se produce el resultado
1234567
 12345
   123
     1
cuando debería ser:
1 2 3 4 5 6 7
  1 2 3 4 5
    1 2 3
      1 2   <=== ésta faltaría en tú código.
       1
Saludos!.
#1212
Programación C/C++ / Re: Variable i variable aux
26 Octubre 2012, 11:52 AM
Cita de: Ander123 en 26 Octubre 2012, 10:39 AM
Hola, no entiendo muy bien el funcionamiento de la variable aux en este trozo de programa. Se supone que la variable aux queda con lo declarado en el for anterior pero la segunda parte no me queda clara. Se supone que la variable i es menos o igual que aux, que es todo lo del primer ciclo for:S, no entiendo como puede ser menos o igual a 3 instrucciones distintas.Gracias;)

for(i=0;  (frase=getchar())!='\n';  ++i)
                       aux=i;  
                       for  (i=0;  i<=aux;  ++i)
Y por qué no.
Fíjate en el resultado del printf en el siguiente caso, y observa como la variable i sufre un incremento de tres unidades por los tres i++ que se encuentra antes de volver a tomar un nuevo valor:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,aux=0;
    char frase[80];
for(i=0; (frase[++i]=getchar())!='\n';++i)
        {
            aux=i;
            for  (i=0;  i<=aux;  ++i)
            printf ("aux=%d  i=%d\n",aux,i);
        }
return 0;
}

Por cierto, dos puntualizaciones:
* tú código como está
Código (cpp) [Seleccionar]
for(i=0;  (frase=getchar())!='\n';  ++i) te dará error.
* por qué vas cambiando de foro las casi mismas cuestiones?[/size]
#1213
CitarFijate que he reeditado el post anterior.
Saludos
#1214
Cita de: Caster en 25 Octubre 2012, 20:15 PM
pero sigo sin entender el error
Tal como lo tenías
Código (cpp) [Seleccionar]
" minutos = segundos/60; " era una operación entre enteros y devolvía un entero, por eso siempre te daba SI.
Puedes seguir declarando a segundos como entero pero usar:
Código (cpp) [Seleccionar]
minutos = segundos/60.0;
O bien, siguiendo con segundos como entero,  hacer un casting:
Código (cpp) [Seleccionar]
minutos = (double) segundos/60;
#1215
Cita de: TaLaP0 XoR BiT en 25 Octubre 2012, 21:30 PM
Muchas gracias Leonsansan, pero realmente es asi disminuye de a dos no de 1, es decir, en la primera linea saldra 1234567, en la segunda le restamos dos, 12345 y asi sucesivamente. Pero gracias. una cosa mas que libreria es esa <iomanip>???
CitarEntonces el enunciado tiene un fallo ya que al llegar a 12 debajo va el 1 y si no tiene "hueco" irá debajo del 1 o debajo del 2, porque no tendrá sitio en medio de ambos.
La librería es para el uso de "setw· que permite configurar el "espaciado"
#1216
Cita de: TaLaP0 XoR BiT en 25 Octubre 2012, 19:25 PM
Buen dia a todos, he comenzado a estudiar C++, y tengo dudas con las iteraciones y las estructuras repetitivas.

me dejaron un programa que pida un numero que este numero siempre sea impar y que despues imprima lo siguiente:

por ejemplo si introduces el 7

                                 1234567
                                   12345
                                     123
                                      12
                                       1


CitarCreo que sería más exacto:
                                    1 2 3 4 5 6 7
                                       1 2 3 4 5
                                          1 2 3
                                           1 2
                                            1
Creo que lo he complicado demasiado, no estoy inspirado, pero es lo que te piden:
Código (cpp) [Seleccionar]
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
   int a,cont =0;
   cout << "Introduce un numero IMPAR: "<<endl;
   cin >> a;
   while (a>=0)
      {
           for (int i=1;i<=a;i++)
               cout<<i<<" " ;
           if (a<=3 )
               {a-=1;cont ++;}
           else
               {a-=2;cont+=2 ;}
           cout <<endl << setw(cont) << " ";
      }
   return 0;
}

Redito: tengo que "ajustarlo" para números más grandes de 11.
#1217
Cita de: Caster en 25 Octubre 2012, 19:40 PM
Entonces que hago?
Reedite el post anterior, léelo o cambia simplemente de ejercicio.
#1218
Cita de: Caster en 25 Octubre 2012, 19:22 PM
y ya he elegido uno que me parece que pensando un poco puedo llegar a sacarlo, y ese es el primer problema que se me presenta, que tipo de variable puedo usar para almacenar un numero de 10 cifras, he probado de las siguientes maneras:
Y ninguna me ha servido, la única forma que se me ocurre es utilizando un array,
CitarEl número que aparece en el ejemplo no está en un fichero, es el número. Si usaramos otros lenguajes podríamos manejarlo tal como viene, pero en C el tamaño-en cifras- es muy limitado, a no ser que uses librerias para el manejo de números grandes, que las hay.
Te propondría que intentes el de la suma todos los números naturales menores que mil que sean múltiplos de 3 ó 5. Verás lo que puede dar de sí un ejemplo tan sencillo
#1219
Cita de: ricardo2013 en 25 Octubre 2012, 14:33 PM
Gracias leosansan, pero no soluciona el problema (lo he probado).
CitarEs curioso, a mí entrando más de 10 caracteres si me funciona
#1220
Cita de: ricardo2013 en 25 Octubre 2012, 13:08 PM
¿Por qué no me pide por pantalla el valor de día?
Por la "basura" que queda en el buffer, entiéndase excesos de caracteres introducidos que hay que eliminar. Como aficionado te propongo esta solución:
Código (cpp) [Seleccionar]
#include <iostream>
#include <limits>
#include<stdio.h>
using namespace std;

int main()
{
    char nombre[10] = "";
    int dia = 0;
    cin.getline(nombre, 10, '\n');
    cin.ignore(numeric_limits<int>::max(), '\n');
    while (getchar ()!='\n');
    cout << "dia: ";
    getchar ();
    cin >> dia;
    cout << "dia: " << dia << endl;

    return 0;
}

Saludos!.