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

#401
Vamos, que le falta el using namespace st.

Código (cpp) [Seleccionar]

#include <iostream>
#include <conio.h>
using namespace std;

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


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



#402
Siguiendo los pasos del "maestro==rir3760" por usar funciones que no quede:

Código (cpp) [Seleccionar]

#include<stdio.h>
#include <stdlib.h>

int main()
{
 int i,n;
 printf("\n\n");
 printf("\nTama\xA4o de la mitad superior: \n");
 scanf ("%d",&n);

 for(i=1;i<=n;i++)
   repetir (n-i,' ',2*i-1,'*');
 for(i=n-1;i>=1;i--)
   repetir (n-i,' ',2*i-1,'*');
 return EXIT_SUCCESS;
}

void repetir(int reps, char ch,int reps1, char ch1)
{
 int j,k;
 printf("\t\t");
 for (j = 1; j <=reps; j++)
   putchar(ch);
 for (k = 1; k <=reps1; k++)
   putchar(ch1);
 putchar('\n');
}


Ante el "otro" código, el del printf, tan solo mirar boquiabierto y, como siempre, aprender de sus aportaciones, todo un lujo para el foro.

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



#403


Sin más comentarios que los que te pongo en el código:

Código (cpp) [Seleccionar]

#include<stdio.h>
int main()
{
  int n,i,j;
  printf("\nTama\xA4o de la mitad superior: \n");
  scanf ("%d",&n);
  printf("\n\n");
  for(i=1;i<=n;i++){  /** fijate que aqui i aumenta **/
    printf("\t\t");
    for(j=1;j<=n-i;j++)/** cada vez un espacio menos **/
        printf(" ");
    for(j=1;j<=2*i-1;j++)/** cada vez dos "*" mas **/
      printf("*");     /** despues de los espacios **/
  printf("\n");
  }

  for(i=n-1;i>=1;i--){  /** fijate que aqui i disminuye **/
    printf("\t\t");
    for(j=1;j<=n-i;j++)/** cada vez un espacio mas **/
      printf(" ");
    for(j=1;j<=2*i-1;j++)/** cada vez dos "*" menos **/
      printf("*");     /** despues de los espacios **/
  printf("\n");
  }
  return 0;
}


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




#404
Programación C/C++ / Re: Problema con loop
2 Marzo 2014, 18:01 PM

Como comentó tan certeramente rir3760, otra forma es con un array de longitud variable, una vez ingresado el número de palabras:

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>

#define NUM_CHARS  128

int main(void)
{
  int num_pals;
  int i;

  puts("Numero de productos:");
  if (scanf("%d", &num_pals) != 1)
    return EXIT_FAILURE;
  while (getchar()!='\n');
 
  char palabra[num_pals][NUM_CHARS];

  for (i = 0; i < num_pals; i++){
    printf("Nombre del producto no %d:\n", i + 1);
    scanf("%s", palabra[i]);
   }
   /* ... */
   return EXIT_SUCCESS;
}


En realidad el formato que ha usado rir3760 para el scanf tan sólo asegura que la entrada es un número.

Me explico:

* si introduces as canta error.
* si introduces 12 todo O.K
* Si introduces 12as por error el scanf toma el 12 y de paso se salta otro scanf porque en  el llamado buffer o memoria intermedia queda el resto, en este caso la "as" que toma el siguiente scanf de forma automática. De ahí el uso del while para "limpiar" el buffer. Haz la prueba con él activado y desactivado y veras lo que sucede.

¿Qué habría entonces que hacer?. Sencillamente comprobar que la variable "num_pals" se corresponde con un entero y sólo un entero. Pero imagino que ya tendrás tiempo más adelante de ir viendo esos detallitos que parecen chorradas y que pueden arruinar un código que parecía impecable.


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


#405
Cita de: m@o_614 en  2 Marzo 2014, 01:11 AM
Saludos, tengo un archivo que tengo que leer e imprimir en pantalla y este archivo es bastante grande, el problema es que no lo imprime completo, pero si le empiezo a quitar lineas ya me lo imprime bien, lo que hace es que mientras mas lineas le agrego, en pantalla las lineas de al principio van desapareciendo, o sea me va cortando la parte de arriba para darle lugar a las lineas que voy agregando abajo,¿a que se debe esto y como puedo solucionarlo??

gracias

Una forma simple es cambiando en propiedades de la consola el alto, que se encuentra en propiedades, y poner un número más alto. Tosco pero efectivo.

El otro recurso es leer por partes el documento.


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





#406
Cita de: People95 en  1 Marzo 2014, 21:10 PM
Exacto, por cada paso que da hacia bajo o hacia derecha/izquierda sumar 1

Pero para eso tiene que dar previamente un paso, no puedes ponerlo como algo suelto.

Aunque el código que cuelgas está verde, la verdad es que me ha resultado interesante, o más bien curioso, el ejercicio.

Así que he decidido  madurarlo un poco. Tal y como está es funcional, pero muy mejorable, vamos que también está verde .... pero funciona. Ya te toca a ti mejorarlo un poco, al menos tienes una referencia de cómo atacarlo, una al menos.

Fíjate en el detalle de que el contador lo comienzo en dos, ya luego resto justamente dos. ¿Y porqué ese capricho?. Para que no salgan el cero y el uno y se confundan con los ceros y unos que ya habían en la matriz. Una picardía sin más.

Por cierto, no has dejado en la matriz inicial más que un camino, la columna 1, para recorrer el pinball si eliges a la derecha y llegar al final. Creo que deberías cambiar/disminuir los 1 o X.

Y una imagen de que furula:



Código (cpp) [Seleccionar]

#include <stdio.h>

int main()
{
  int inicio,i,j,cont=0,flag=0;
  char direccion;
  int matriu[10][10]={
  {0,0,0,0,0,0,0,0,0,0},
  {0,1,0,0,1,0,0,0,1,0},
  {0,1,0,1,0,0,0,1,0,0},
  {0,1,0,0,0,0,1,0,0,0},
  {0,0,0,0,0,0,0,0,0,1},
  {0,1,1,1,1,0,0,0,1,0},
  {0,0,0,0,0,0,0,1,0,0},
  {0,0,0,0,0,0,1,0,0,0},
  {0,0,0,0,0,1,0,0,0,0},
  {0,0,0,0,0,0,0,0,0,0},
  };

  do{
    printf("\nIntroducir el numero de columna por el cual desea lanzar la primera bola (1-10): ");
    scanf("%d",&inicio);
  }while(inicio>=11);
  inicio--;

  do{
    printf("\nEn caso de encontrarse con un obstaculo, en que direccion\n quiere que se dirija la bola, derecha (D-d) o izquierda (I-i): ");
    scanf(" %c", &direccion);
  }while(direccion!='D' && direccion!='d' && direccion!='I' && direccion!='i');
  for(i=0;i<10;i++)
  {
     printf("\t\t");
      for(j=0;j<10;j++)
      {
          if(matriu[i][j]==1)
            printf("X ");
          else
            printf(". ");
     }
     printf("\n");
  }
  i=0,j=inicio,cont=2;
  matriu[i][j]=cont++;
  while(i<9){
    if ((j==-1 ||  j==10) ){
      puts("FIN ANTES DE TIEMPO");
      flag=1;
      break;
    }
    else if (matriu[i+1][j]==0)
      matriu[++i][j]=cont++;
    else if (direccion=='D' || direccion=='d'&& matriu[i][j+1]==0 )
      matriu[i][++j]=cont++;
    else if (direccion=='D' || direccion=='d'&& matriu[i][j+1]==1 ){
      puts("FIN ANTES DE TIEMPO");
      flag=1;
      break;
    }
    else if (direccion=='I' || direccion=='i' && matriu[i][j-1]==0)
      matriu[i][--j]=cont++;
    else if (direccion=='I' || direccion=='i' && matriu[i][j-1]==1){
      puts("FIN ANTES DE TIEMPO");
      flag=1;
      break;
    }
  }
  if (flag==0)
    puts("FINAL EXITOSO");
  for(i=0;i<10;i++)
  {
     printf("\t\t");
      for(j=0;j<10;j++)
      {
         if(matriu[i][j]==1)
            printf("X ");
         else if(matriu[i][j]==0 )
            printf(". ");
         else
            printf("%d ",matriu[i][j]-2);
     }
     printf("\n");
  }
  return 0;
}


Mejora lo, es lo que me ha salido a bote pronto y a estas horas ya estoy de retirada.

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




#407
Cita de: Cragser en  1 Marzo 2014, 20:15 PM
- ¿Es diferente '\0' a "\0" en C  para recorrer un puntero en una cadena de caracteres?-

Lo primero es un caracter y lo segundo una cadena.

Si vas a recorrer una cadena en busca del caracter nulo elige la primera forma.


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


#408

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.

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



#409
Cita de: SrCooper en 28 Febrero 2014, 21:56 PM
.............................................
PD: acostumbrate a usar las etiquetas GeSHi cuando escribas código en un foro para que sea más fácil de leer

Aunque las has usado mejor elige las de C++, así el código sale coloreado y es más fácil de seguir.

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


#410

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.

Como ya te indicó do-while el problema está en un '\n' que queda en el bufffer. En este caso con un simple cin.get() te lo "comes".

Código (cpp) [Seleccionar]

#include<iostream>
#include<cstring>

using namespace std;

struct pro{
  string codigo;
  string nombre;
  string descripcion;
  string laboratorio;
  double precio;
  double iva;
  int existencia;
  };

void leer(struct pro *apt)
{
  double IVA = 0.16;
  double total;
  cout<<"Teclea el Codigo "<<endl;
  getline (cin,apt->codigo);///YA PASA POR AQUI
  cout<<"Nombre "<<endl;
  getline (cin,apt->nombre);
  cout<<"Descripcion: "<<endl;
  getline (cin,apt->descripcion);
  cout<<"Laboratorio: "<<endl;
  getline(cin,apt->laboratorio);
  cout<<"Precio: "<<endl;
  cin>>apt->precio;
  total=(apt->precio*IVA);
  apt->iva=total;
  cout<<"Cuantos hay en existencia"<<endl;
  cin>>apt->existencia;
}


void imprimir(struct pro *ap)
{
  cout<<" CODIGO:      "<<ap->codigo<<endl;
  cout<<" NOMBRE:      "<<ap->nombre<<endl;
  cout<<" DESCRIPCION: "<<ap->descripcion<<endl;
  cout<<" LABORATORIO: "<<ap->laboratorio<<endl;
  cout<<" PRECIO:      "<<ap->precio<<endl;
  cout<<" IVA:         "<<ap->iva<<endl;
  cout<<" EXISTENCIA:  "<<ap->existencia<<endl;
}
int main ()
{
  int n=0;
  pro * apt=0;
  cout<<"Numero de elementos"<<endl;
  cin>>n;
  cin.get();/// <== AQUI ///
  apt= new pro[n];
  for(int i=0;i<n;i++)
   leer(&apt[i]);
  for(int j=0;j<n;j++)
   imprimir(&apt[j]);

  delete [] apt ;
  return 0;
}


¡¡¡Que diferencia con las etiquetas Code!!!.

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