Variable i variable aux

Iniciado por Ander123, 26 Octubre 2012, 10:39 AM

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

Ander123

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)

leosansan

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]

Ander123

#2
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

leosansan

Cita de: Ander123 en 26 Octubre 2012, 12:54 PM
pero no entiendo bien como funciona
CitarTe 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

Ander123

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.

leosansan

Cita de: 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.
CitarAl 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 ,...