• Viernes 17 de Mayo de 2024, 06:29

Autor Tema:  Una duda con un programa basico  (Leído 2689 veces)

tkc009

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Una duda con un programa basico
« en: Viernes 29 de Enero de 2010, 16:47 »
0
Hola a todos, miren tengo una duda con un programa que lo fui haciendo a travez de un tutorial, pero hay una cosa que no se me aclaro:

Código: C++
  1. #include <stdio.h>
  2.  
  3. int main()
  4.     {
  5.     float x1, x2, paso;
  6.     float y, i;
  7.     printf("Tabla de valores para la funcion Y=X*X-5*X+10n");
  8.     printf("nIntroduce el valor menor de x: ");
  9.     scanf("%f",&x1);
  10.     printf("Introduce valor mayor de x: ");
  11.     scanf("%f",&x2);
  12.     printf("Introduce el incremento del valor x: ");
  13.     scanf("%f",&paso);
  14.     for (i=x1;i<=x2;i=i+paso)
  15.         {
  16.         y=i*i-5*i+10;
  17.         printf("nX= %15f Y= %15f",i, y);
  18.         }
  19.         while(getchar()!='n');
  20.         getchar();
  21. }
  22.  

yo se que bueno se introducen los 3 valores, bueno despues de eso dentro del for que tenemos y=i*i-5*i+10; osea la primera i de este calculo que es remplazado por x1 y luego la segunda i por x2 y por ultimo por paso, esto es lo que no se me aclara

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #1 en: Viernes 29 de Enero de 2010, 21:04 »
0
Estas completamente equivocado y confundido, el valor de i en toda la ecuacion vale lo mismo, no tiene 3 valores diferentes como mencionas. Por lo que estas mencionando, me parece que tu confusion viene de aqui:

Código: C++
  1.  
  2. for (i=x1;i<=x2;i=i+paso)
  3.         {
  4.         y=i*i-5*i+10;
  5.         printf("nX= %15f Y= %15f",i, y);
  6.         }
  7.  
  8.  

Esa linea en realidad significa:
1. Guarda el valor de x1 en i (i=x1).
2. Pregunta si el valor de i es menor o igual que X2 (i<=X2)
Si es menor o igual, entra al ciclo.
Si es mayor, sales del ciclo (ve al paso 6)
3. Calcula la equacion e imprime el resultado.
4. Incrementa el valor de i en paso (i=i+paso)
5. Regresas al paso 2
6. Salida del ciclo

Segun esto, y suponiendo que tienes X1= 1, X2 = 3, paso = 1, significaria que el ciclo se ejecuta 3 veces, ya que iria de 1 hasta 3, incrementando de uno en uno, y por lo tanto la primera vez que entra al ciclo, TODOS los valores de i en la ecuacion se sustituyen por el valor de 1, esto significa que tu ecuacion:

y=i*i-5*i+10

se tranforma en:

y=1*1-5*1+10

La segunda vez se tranforma en

y=2*2-5*2+10

y asi sucesivamente.

Si aun asi no entiendes, me parece que tendrias que regresarte a la materia de algoritmos, es especial la seccion que trata sobre ciclos, contadores y acumuladores.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

tkc009

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #2 en: Viernes 29 de Enero de 2010, 22:58 »
0
Muchas gracias profesorx hoy empeze a ver el siglo "for", me aclaraste la duda de muy lejos  :D sabia que estaba completamente equivocado, y bueno yo muy agradecido jaja.
Salu2

tkc009

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #3 en: Domingo 31 de Enero de 2010, 20:09 »
0
Ahora tengo otra duda con otro programa que es este:

Código: C++
  1. #include <stdio.h>
  2.  
  3. int main()
  4.     {
  5.      float x1, x2, paso;
  6.      float i, y;
  7.      printf("nTabla de valores para la funcion Y=X*X-5*X+10");
  8.      printf("nnIntroduce el menor valor de x: ");
  9.      scanf("%if",&x1);
  10.      printf("nIntroduce el mayor valor de x: ");
  11.      scanf("%if",&x2);
  12.      if (x1>x2)
  13.         {
  14.         printf("nLo siento vuelta a intentarlo");
  15.         return;
  16.         }
  17.         printf("nIntroduce el incremento del valor x: ");
  18.         scanf("%if",&paso);
  19.        
  20.         if (paso<=0)
  21.            {
  22.                     printf("nLo siento vuelta a intentarlo");
  23.                     return;
  24.                     }
  25.         for (i=1;i<=x2;i=i+paso)
  26.             {
  27.             y=i*i-5*i+10;
  28.             printf("Y= %if X= %if",y, i);
  29.             }
  30. while(getchar()!='n');
  31. getchar();
  32. }
  33.  
  34.  

yo lo ejecuto con dev-c++ pero el compilador creo que dice que es un error del return, cual seria exactamente el problema

Garethsoul

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #4 en: Lunes 1 de Febrero de 2010, 06:54 »
0
Primero que nada buenas je al final te dejo el codigo ya funcionando te comento los errores que vi y correji:

1) como sabras la funcion int main(){} debe de retornar un entero SIEMPRE! vos estabas poniendo el
Código: C++
  1.  return;
  2.  
pero te faltaba agregarle o una variable entera o el numero 0 EJEMPLO
Código: C++
  1.  return 0;
  2.  
.
 
2)El otro error que vi es que tratabas de tomar los valores float con scanf usando la letra incorrecta ya que para cada tipo de variable se usa una letra distinta EJEMPLO
Código: C++
  1. scanf("%if",&x2); // asi lo ponias vos
  2. scanf("%f",&x2); //como es un float usas la letra f y solo f
  3.  
 
si la variable x2 en ves de ser float fuese int usarias lo siguiente
Código: C++
  1.  scanf("%i",&x2); // o tambien podes usar %d si mal no recuerdo
  2.  
 
y no hace falta que pongas tantos "return 0" con que lo pongas antes de cerrar la funcion main anda igual.
El codigo que sigue es con los returns de MAS.
 
Código: C++
  1. #include <stdio.h>
  2.  
  3. int main()
  4.     {
  5.      float x1, x2, paso;
  6.      float i, y;
  7.      printf("nTabla de valores para la funcion Y=X*X-5*X+10");
  8.      printf("nnIntroduce el menor valor de x: ");
  9.      scanf("%f",&x1);
  10.      printf("nIntroduce el mayor valor de x: ");
  11.      scanf("%f",&x2);
  12.      if (x1>x2)
  13.         {
  14.         printf("nLo siento vuelta a intentarlo");
  15.         return 0;
  16.         }
  17.         printf("nIntroduce el incremento del valor x: ");
  18.         scanf("%f",&paso);
  19.  
  20.         if (paso<=0)
  21.            {
  22.                     printf("nLo siento vuelta a intentarlo");
  23.                     return 0;
  24.                     }
  25.         for (i=1;i<=x2;i=i+paso)
  26.             {
  27.             y=i*i-5*i+10;
  28.             printf("Y= %f X= %f",y, i);
  29.             }
  30. while(getchar()!='n');
  31. getchar();
  32.  
  33.  
  34. return 0;
  35. }
  36.  
  37.  
 
y ACA TENES SIN LOS RETURNS los probe a ambos funcionan igual.
Código: C++
  1. #include <stdio.h>
  2.  
  3. int main()
  4.     {
  5.      float x1, x2, paso;
  6.      float i, y;
  7.      printf("nTabla de valores para la funcion Y=X*X-5*X+10");
  8.      printf("nnIntroduce el menor valor de x: ");
  9.      scanf("%f",&x1);
  10.      printf("nIntroduce el mayor valor de x: ");
  11.      scanf("%f",&x2);
  12.      if (x1>x2)
  13.         {
  14.         printf("nLo siento vuelta a intentarlo");
  15.          }
  16.         printf("nIntroduce el incremento del valor x: ");
  17.         scanf("%f",&paso);
  18.  
  19.         if (paso<=0)
  20.            {
  21.                     printf("nLo siento vuelta a intentarlo");
  22.  
  23.                     }
  24.         for (i=1;i<=x2;i=i+paso)
  25.             {
  26.             y=i*i-5*i+10;
  27.             printf("Y= %f X= %f",y, i);
  28.             }
  29. while(getchar()!='n');
  30. getchar();
  31.  
  32.  
  33. return 0;
  34. }
  35.  
  36.  

Cualquier duda avisa :)

tkc009

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #5 en: Miércoles 3 de Febrero de 2010, 07:23 »
0
Gracias garethsoul, mi otra duda es

Código: C++
  1. int main()
  2.          {
  3.          int cat1, cat2, hip;
  4.          char pregunta[1];
  5.          pregunta[0] = 's';
  6.          while ((pregunta[0]=='s') || (pregunta[0]=='S'))
  7.  

como funciona pregunta[0] = 's' si alguien me lo pueda explicar. Estoy viendo c++ por cuenta propia xq me interesa y voy viendo de un tutorial que nada mas te tira ejersicios xD

Garethsoul

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #6 en: Miércoles 3 de Febrero de 2010, 20:48 »
0
de nada.

Sobre lo ultimo no entiendo que es lo que queres saber...?

si estas viendo C++ por cuenta propia te recomiendo esta pagina que explica todo detalladamente y con ejemplos.

 c.conclase.net    /curso/    index          .php

tkc009

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #7 en: Jueves 4 de Febrero de 2010, 04:57 »
0
Lo que yo quiero saber como funciona pregunta[0] = 's' osea en el elemento 0 se reserva la letra s?. Con respecto a c.conclase lo vi y sinceramente no me gusto como lo explican, gracias igualmente.

Garethsoul

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #8 en: Jueves 4 de Febrero de 2010, 19:12 »
0
exacto los tipos de variable char almacenan caracteres en este caso la letra s;

también podes crear un vector char (osea char vector[]) para que almacene una cadena de caracteres osea una frase ejemplo;

Código: C++
  1.  #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5.          {
  6.     char H[12]="Hola Mundo";
  7.     //DEBES tener en cuenta que las cadenas se ponen entre doble comilla (") y los caracteres entre simple comilla (')
  8.     //y si lo quisieras imprimir haces
  9.     cout<<H<<endl<<endl;
  10.     //Tambien si quisieras lo podes imprimir por caracter EJEMPLO
  11.     for(int i=0;i<10;i++)
  12.     cout<<"La letra que pertenece al vector numero "<<i<<" es: "<<H[i]<<endl;
  13.     cout<<endl;
  14. system("pause");
  15. return 0;
  16. }
  17.  
  18.  

compila eso y ahi te explica bien je. (te subiria la imagen ya compilado pero no tengo permiso para postear links......

Cualquier duda avisa.

tkc009

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Una duda con un programa basico
« Respuesta #9 en: Jueves 4 de Febrero de 2010, 23:41 »
0
Ajam entendi, y por que si yo por ejemplo pregunta[0] ponele que pongo pregunta[1] y obvio que dentro de este elemento voy a reserva el caracter s no funciona como deberia? a que se debe esto.
Gracias garethsoul lo voy a tener en cuenta tu ejemplo  ^_^