Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ander123 en 26 Octubre 2012, 10:39 am



Título: Variable i variable aux
Publicado por: 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 esmenos o igual que aux, que es todo lo del primer cilo 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)


Título: Re: Variable i variable aux
Publicado por: leosansan en 26 Octubre 2012, 11:52 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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    int i,aux=0;
  7.    char frase[80];
  8. for(i=0; (frase[++i]=getchar())!='\n';++i)
  9.        {
  10.            aux=i;
  11.            for  (i=0;  i<=aux;  ++i)
  12.            printf ("aux=%d  i=%d\n",aux,i);
  13.        }
  14. return 0;
  15. }
Por cierto, dos puntualizaciones:
* tú código como está
Código
  1. for(i=0;  (frase=getchar())!='\n';  ++i)
te dará error.
* por qué vas cambiando de foro las casi mismas cuestiones?[/size]


Título: Re: Variable i variable aux
Publicado por: Ander123 en 26 Octubre 2012, 12:54 pm
Porque es el mismo programa pero cuestiones que no tienen nada que ver unas con las otras y asi no pregunto siempre a las mismas personas.. porque me saltan muchas dudas.
Ademas, el resultado es: "aux=1 i=0,aux=1 i=1", la variable i solo se incrementa 2 veces:S si dando como valor 0 es ya un incremento.
Por lo tanto la variable i es menor o igual a todo lo escrito en i, pero no entiendo bien como funciona. Menor o igual a i=0 etc..:S


Título: Re: Variable i variable aux
Publicado por: leosansan en 26 Octubre 2012, 13:59 pm
pero no entiendo bien como funciona
Citar
Te dejo esté rollo que es la descripción del proceso:

 si entras la cadena asdf :

for_1: i empieza en cero y la condición frase[++i]
lo incrementa, por lo que pasa q valer 1=aux
for_2: aux=1 e i desde cero a uno
     1 0....1 1

for_1: i que valía 1 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 4=aux
for_2:aux= 4 e i desde cero a 4:
    4 0 ...41....4 2...4 3...4 4

for_1: i que valía 4 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 7=aux
for_2:aux= 7 e i desde cero a 7:
7 0..7 1...........7 7

for_1: i que valía 7 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 10=aux
for_2:aux= 10 e i desde cero a 10:
10 0..10 1..10 2.........10 10

Y como la cadena era "asdf" produce sólo
cuatro ciclos:aux=1,4,7,10
Si entras una cadena más larga habrán más ciclos,
por ejemplo el siguiente sería:

for_1 : i que valía 10 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 13=aux
for_2:aux= 13 e i desde cero a 13:
13 0..13 1..13 2........13 13


Título: Re: Variable i variable aux
Publicado por: Ander123 en 26 Octubre 2012, 15:04 pm
Pero no lo deberia incrementar en 3 porque hay 3 i++ , por lo tanto deberia quedar
aux =2,i=2
aux=2, i=3
o esos i++ no incrementan?
bueno dejemoalo, eate programa aun es demasiado dificil.


Título: Re: Variable i variable aux
Publicado por: leosansan en 26 Octubre 2012, 15:17 pm
Pero no lo deberia incrementar en 3 porque hay 3 i++ , por lo tanto deberia quedar
aux =2,i=2
aux=2, i=3
o esos i++ no incrementan?
bueno dejemoalo, eate programa aun es demasiado dificil.
Citar
Al primer " i "sólo le afecta el incremento de la condición, de ahí que valga aux=1, los siguientes ya pasan por los tres incrementos de ahí que aux pase a valer 4 ,7 ,10 ,13 ,...