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

#391
Programación C/C++ / Re: ayuda
3 Marzo 2014, 11:32 AM
Cita de: eferion en  3 Marzo 2014, 11:17 AM
Podías haberle puesto alguna macro de por medio... jejejeje

¡¡¡Lo tendré en cuenta para la próxima!!!.

¡¡¡¡ Saluditos! ..... !!!!


#392
Cita de: hail to the helix en  3 Marzo 2014, 00:42 AM
Hola, hace poco inicie a programar con contadores y me dejaron este problema al momento de compilar no me marca el incremento que quería

LA EMPRESA TELMEX A DECIDIDO INCREMENTAR LA TARIFA DE LA RENTA MENSUAL POR USO DEL TELEFONO EN 4% MENSUAL. LA TARIFA DE ABRIL DE 2019 ES DE $27.00. ELABORAR UN ALGORITMO QUE IMPRIMA EL MONTO DE LA RENTA MENSUAL PARA OCTUBRE DEL 2021.

Codigo¿Cómo debo especificar el contador?
Gracias

Creo que las variables que pides están prefijadas: 18 meses y $27, con lo que no tiene mucho sentido pedir al usuario que las introduzcas. Pero tal como lo tienes te las mantengo.

En lo que hay que fijarse es que el aumento es de un 4% mensual, o sea cada mes.

En principio no te hace falta un array para ver el precio final:


Citar

      Programa que muestra cuanto cuesta la renta en octubre del 2021

      Cuantos meses voy a calcular?
      18

       Dame el costo de la renta: 27

      El precio en octubre es: $54.697
      Presione una tecla para continuar . . .



Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
   int i,n;
   float precio;
   system("cls"),system("color 6");
   printf("\n\tPrograma que muestra cuanto cuesta la renta en octubre del 2021 \n\t");
   printf("\n\tCuantos meses voy a calcular?\n\t");
     scanf("%i",&n);
    printf("\n\t Dame el costo de la renta: ");
    scanf("%f",&precio);
    for(i=1;i<=n;i=i+1)
     precio*=1.04;
    printf("\n\t\a\aEl precio en octubre es: $%g",precio);
   printf("\n\t");
   system("PAUSE");
   return EXIT_SUCCESS;
}


Otra cosa es que quisieras una tabla con los valores mensuales, tipo:

Citar

      Programa que muestra cuanto cuesta la renta en octubre del 2021

      Cuantos meses voy a calcular?
      18

       Dame el costo de la renta: 27

      El precio en octubre de 2021 es: $ 54.697


       Siendo la variacion de la renta por mes
              1: 28.08
              2: 29.2032
              3: 30.3713
              4: 31.5862
              5: 32.8496
              6: 34.1636
              7: 35.5302
              8: 36.9514
              9: 38.4294
              10: 39.9666
              11: 41.5653
              12: 43.2279
              13: 44.957
              14: 46.7553
              15: 48.6255
              16: 50.5705
              17: 52.5933
              18: 54.697
resione una tecla para continuar . . .


Código (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
   int i,n;
   float precio[100];
   system("cls"),system("color 6");
   printf("\n\tPrograma que muestra cuanto cuesta la renta en octubre del 2021 \n\t");
   printf("\n\tCuantos meses voy a calcular?\n\t");
     scanf("%d",&n);
   printf("\n\t Dame el costo de la renta: ");
   scanf("%f",&precio[0]);

   for(i=1;i<=n;i=i+1)
     precio[i]=1.04*precio[i-1];
   printf("\n\t\a\aEl precio en octubre de 2021 es: $%7g\n\t",precio[i-1]);
   printf("\n\t");
   printf("\n\t Siendo la variacion de la renta por mes \n");
   for(i=1;i<=n;i=i+1)
     printf("\t\t%d: %g \n",i,precio[i]);
   system("PAUSE");
   return EXIT_SUCCESS;
}


Un detalle final, ya que estas programando en C++ usa sus funciones propias, como cout para imprimir y cin para la toma de valores . No tiene mucho sentido que metas los printf , el scanf y la librería <cstdio>, mejor que <stdio.h>, que son cosas más propia del C.

¡¡¡¡ Saluditos! ..... !!!!


#393
Programación C/C++ / Re: ayuda
3 Marzo 2014, 10:54 AM
Cita de: engelx en  3 Marzo 2014, 10:28 AM
leosansan... la intención del foro es aprender, no hacer el trabajo...

por otro lado... wtf con la ecuación? XD de donde rayos sacaste?
por otros lado me suena a que es dependiente del valor final, ya que tienes 3 variables independientes y una sola ecuación

a demás evaluándola todos los valores manejados me dan 7869 en la primera parte del if y >=1 para todo entre 0 y 34 en la segunda parte...
podrías explicar la lógica de tu respuesta en este código sin tener el valor final?


Es un sistema de ecuaciones indeterminado ya que hay tres variables y sólo dos ecuaciones. Ello da lugar a que puedan existir infinitas soluciones, al menos en el campo real. Otra cosa es si la solución que se busca es entera.

Y no tienen mayor misterio que plantear las ecuaciones:

* 75*x+99*y+40*z=7869

* x+y+z=100

Despejando una de las variables de la segunda, yo elegí la x, y sustituyendo en la primera, para a continuación volver a despejar una de las variables en la ecuación resultante de la primera sustitución, yo tomé la y, y tomar como parámetro o variable, la "i" del for, a la variable restante z. Simple pero efectivo, salvo pifia por mi parte.

Como comentó eferion quería que el código quedará "ofuscado" para que no se diga que había resuelto el ejercicio.


¡¡¡¡ Saluditos! ..... !!!!



#394
Programación C/C++ / Re: ayuda
3 Marzo 2014, 09:46 AM
Cita de: Gh057 en  3 Marzo 2014, 01:19 AM
hola rafa011, primero resuélvelo  en lápiz y papel; llegarás a un algoritmo que resuelve tu problema como te indica engelx, luego lo codificas a c++. saludos.

Yo le dejo el papel y el lápiz para que haga los números ya que see trata de una par de ecuaciones simples, pero acabará en algo como esto:

Citar

hombres=33   mujeres=46   niños=21

Process returned 0 (0x0)   execution t
[/quote]

Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{
 int i=0;
 for(i=0;i<98;i++)
   if ((100-(369+35*i)/24-i)*75+99*(369+35*i)/24+40*i==7869 && (100-(369+35*i)/24-i>=1)  )
     printf ("\nhombres=%d   mujeres=%d   ni\xA4os=%d\n",100-(369+35*i)/24-i,(369+35*i)/24,i);
 return 0;
}


¡¡¡¡ Saluditos! ..... !!!!


#395
Mantengo lo dicho por Gh057 en su totalidad.

Pero claro, ¿a lo mejor es que te sientes inseguro de usar las ¡instrucciones printf y scanf ?.

Por si este fuera tu caso te propongo una solución al primer ejercicio, los demás te tocan a ti.

Sólo  destacar un detalle, main, que es lo que en C se llama una función, es por cuestiones del estándar de C una función de tipo int (entero) y requiere que se termine retornando un entero (return 0, por ejemplo):


Código (cpp) [Seleccionar]

#include <conio.h>
#include <stdio.h>
#define MAX 10

int main()
{
 int vector[MAX]={0};
 int i=0;
 float suma=0.0,media;
 while(i<MAX){
   printf ("\nIntroduzca la componente %d: ",i+1);
   scanf ("%d",&vector[i]);
   suma+=vector[i++];
 }
 media=suma/MAX;
 printf("\nLa media es %g\n",media);
 getch();
 return 0;
}


Y para cuando postees el código elige las etiquetas GeSHi y toma la C++ y en medio de las etiquetas Code que aparecen "pegas" tu código. Al no hacerlo de esta manera parte del código no sale correcta, especialmente las matrices.

Y ahorita a estudiar un poco los printf y scanf. Cuando tengas algo de código de tu propia cosecha lo cuelgas, planteas tus dudas y seguro que habrá quien te ayude. ¡¡¡Ánimo!!!.


¡¡¡¡ Saluditos! ..... !!!!


#396
Cita de: People95 en  3 Marzo 2014, 00:28 AM
Leosansan, no sabes como te lo agradezco, sin ti aún estaría estancado en el principio  ;D
..........................................................................

Por último, ya sólo tengo un fallo más, y con eso ya habré terminado el programa y no os daré más por saco...

A la hora de comprobar si la nueva tabla es legal (que siempre caerá la pelota), tengo que mirar si nunca se cumple esto:



entonces para solucionar esto pongo en el switch:

..................................................................
Pero actua como si nada, como si estuviera correcto
Error o tengo inicializado en el principio como 0


Supongo que partimos de que la matriz inicial es válida y que el problema surge al cambiar un valor de la matriz y aparecer la "trampa" que puede encerrar a la pelota , ¿O.K?.

En tal caso habrá que validar el cambio hecho, en el sentido que si ha provocado una "trampa" debe devolver el valor que había, vamos deshacer el cambio introducido.

Eso lo consigues así:


Código (cpp) [Seleccionar]

case 2:
    /************************************/
          for(i=0;i<49;i++)
            for(j=0;j<48;j++)
              if (matriu[i][j]==1 && matriu[i+1][j+1]==1 && matriu[i][j+2]==1)
            puts("ERROR NO SE HA HECHO NINGUN CAMBIO");
            matriu[columna][fila] = 0;
    /************************************/
        for(i=0;i<50;i++)
        {
           printf("\t\t");
            for(j=0;j<50;j++)
            {
               if(matriu[i][j]==1)
                  printf("X");
               else if(matriu[i][j]==0 )
                  printf(".");
           }
           printf("\n");
        }
        break;
      default:


Introduce 0 y 3 para que veas lo que sucede.

Lo que te  planteo es una opción. A mí me gustaría más hacer la validación en el case 1, pero respeto tu opción, es igualmente válida.


¡¡¡¡ Saluditos! ..... !!!!



#397
Cita de: leosansan en  2 Marzo 2014, 20:15 PM
Vamos, que le falta el using namespace st.


O no:

Código (cpp) [Seleccionar]

#include <iostream>
#include <conio.h>

int main()
{
   float num = 2.576;
   float num2 = 2.3;
   std::cout << num+num2 << std::endl;
   getch();
   return 0;
}


¡¡¡¡ Saluditos! ..... !!!!


#398

Era por una mala "colocación" de las instrucciones:

Código (cpp) [Seleccionar]

´´´´´´´´´´´´´´´´´´´´´
     }while(columna>=51 && fila>=51);
          i=columna,j=fila;
          if (matriu[i][j] == 0)
            matriu[i][j] = 1;
          break;
case 2:
  while(i<49){
            if (matriu[i+1][j]==1 && matriu[i-1][j]==1 && matriu[i][j-1]==1)
              printf("ERROR");
            error=1;
            break;
        }

        for(i=0;i<50;i++)
        {
           printf("\t\t");
            for(j=0;j<50;j++)
            {
               if(matriu[i][j]==1)
                  printf("X");
               else if(matriu[i][j]==0 )
                  printf(".");
           }
           printf("\n");
        }
        break;
      default:
printf("El numero introducido es incorrecto.\n");

..........


Mira lo que sale ahora:


Si hay algún otro problema insiste

¡¡¡¡ Saluditos! ..... !!!!



#399


Aquí está la solución, era como te comenté un problema de comparar en el if, con dos iguales y de asignar después con un solo igual y sobra el "else" que sigue:

Código (cpp) [Seleccionar]


........................................
  i=columna,j=fila;

   if (matriu[i][j] == 0)
    matriu[i][j] = 1;
..........................................



¡¡¡¡ Saluditos! ..... !!!!


#400
Cita de: People95 en  2 Marzo 2014, 20:09 PM
.............................................................
Tengo esto:

............................................................................
Pero al compilar me sigue dando la tabla igual, no me cambia los valores, por tanto creo que el fallo está aquí:

 i=columna,j=fila;  
 
  if (matriu[i][j] = 0)
    matriu[i][j] = 1;
   else matriu[i][j] = 0;


Como lo puedo solucionar???

Están mal comparados en los if, ya que asignas con un solo =, en lugar de comparar al usar dos ==:

Citar
if (matriu[i ][j] == 0)
      matriu[i ][j] = 1;
   else matriu[i ][j] ==0;
<==esta línea sobra, ya era cero

De todas formas, cuelga el código que llevas hecho, matriz incluida, si no es difícil ver los errores.

¡¡¡¡ Saluditos! ..... !!!!