elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Variable i variable aux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Variable i variable aux  (Leído 1,974 veces)
Ander123

Desconectado Desconectado

Mensajes: 101


Ver Perfil
Variable i variable aux
« 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)


« Última modificación: 26 Octubre 2012, 10:46 am por Ander123 » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Variable i variable aux
« Respuesta #1 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]


En línea

Ander123

Desconectado Desconectado

Mensajes: 101


Ver Perfil
Re: Variable i variable aux
« Respuesta #2 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
« Última modificación: 26 Octubre 2012, 13:04 pm por Ander123 » En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Variable i variable aux
« Respuesta #3 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
En línea

Ander123

Desconectado Desconectado

Mensajes: 101


Ver Perfil
Re: Variable i variable aux
« Respuesta #4 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.
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Variable i variable aux
« Respuesta #5 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 ,...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines