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

#1231
Programación C/C++ / Re: ayuda en C
21 Octubre 2012, 14:01 PM
Cita de: howaboutno en 21 Octubre 2012, 13:33 PM
Al ejecutarlo, introduzco la opcion 1 y me calcula la longitud del circulo, pero al introducir la opción 2 o 3 no aparece nada mas.
A mí me funciono sin problemas las tres opciones.
No obstante, tienes que cambiar algunas variables de int a float y algo los "mensajes" de "Introducir":
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#define PI  3.141592
int main()
{
  int opcion;
  float r,longitud,superficie,volumen;
  printf("1.Longitud del ciculo \n");
  printf("2.Superficie del circulo \n");
  printf("3.Volumen esfera \n");
   do
  {
  printf("Introduce una opcion \n");

  scanf("%d",&opcion);
  }while(opcion<1||opcion>3);

  if(opcion==1)
  {
     printf("Introduce el radio del circulo \n");
     scanf("%g",&r);
     longitud=2*PI*r;
     printf("Longitud= %g",longitud);
        }
  else
     if(opcion==2)
        {
        printf("Introduce el radio del circulo \n");
        scanf("%g",&r);
        superficie=PI*r*r;
        printf("Superficie = %g",superficie);
       }
     else
     {
     printf("\n Introduce el radio de la esfera \n");
     scanf("%g",&r);
     volumen=4/3*PI*r*r*r;
     printf("Volumen =  %g",volumen);
   }
  return 0;
}

#1232
Cita de: FMR en 20 Octubre 2012, 22:31 PM
Tengo un problema al momento de programar para que sólo acepte 8 dígitos en un código de barras, tengo entendido que es con un strlen(.. pero me marca un error.

Lo que tiene que hacer este programa es que ingrese un código de barras y lo guarde pero sólo tiene que aceptar 8 dígitos, ni más ni menos, y tampoco letras.

Tengo este código pero me marca error:

Estas usando una función para char propiamente, y tu variable "Datos[c].CodigoBarras" es un numero entero. Lo que podrías hacer es calcular previamente los dígitos de dicho número y luego aplicar la condición a la variable contador si es 8 o no..
Para contar los dígitos de "VDatos[c].CodigoBarras" te valdría el siguiente código, cambiando "n" por "Datos[c].CodigoBarras":

Código (cpp) [Seleccionar]
#include<iostream>
using namespace std;

int main() {
   int n,contador=0;
   cin>>n;
   while(n>0){
       contador++;
       n=n/10;}
   cout<<contador<<endl;
   return 0;
}

#1233
La culpa de que sólo te salga un valor la tiene la setencia "n=n%10;". El código funcionando, y sin la variable contador que está de más , es:
Código (cpp) [Seleccionar]
#include<iostream>
using namespace std;

int main() {
    int n;
    cin>>n;
    while(n>0){
        cout<<n%10<<endl;
        n=n/10;}
    return 0;
}
#1234
Sólo te queda implementar el repetir otra figura:
Código (cpp) [Seleccionar]
#include<stdio.h>
int main(void){
    /*variables*/
    int numero,i,j,k;
    int fila,columna,espacio,blanco;
    char caracter;
    char sino;

   /*entorno*/
    printf("Introduce numero de filas (1-15):");
    scanf("%d",&numero);
    printf("numero de espacios:");
    scanf("%d",&espacio);
    printf("caracter de relleno:");
    fflush (stdin);
    scanf("%c",&caracter);
    if(caracter>='0' && caracter<='9'){

      for (fila=1; fila<=numero; fila++)
            {
                for (blanco=1; blanco<=numero-fila+espacio; blanco++)
                    printf(" ");
                for (columna=1; columna<=2*fila-1; columna++)
                    printf("%c",caracter);
                printf("\n");
            }
   }
      else

        for (i=1;i<=numero;i++)

            {
                for (k=1; k<=espacio; k++)
                    printf(" ");
                    {
                        for (j=1;j<=numero;j++)
                            printf("%c",caracter);
                        printf("\n");
                    }
            }
        return 0;
}
#1235
Cita de: Neo_System en 14 Octubre 2012, 14:39 PM
Este code lo hize solo pa practicar con malloc ; definitivamente
quedaria mas bonito usando arrays estaticos
Ya me parecía a mí. Pero creo que puedes prescindir de "char caract;":
Código (cpp) [Seleccionar]
#include <stdlib.h>
#include <stdio.h>

int main()
{
char *frase=(char*)malloc(sizeof(char)*64);
char *nuevo=(char*)malloc(sizeof(char)*64);
char *start= nuevo;
printf("Original: ");
gets(frase);
    printf(" Cifrado: ");
for (;*frase!= '\0';)
        {
            if (*frase==32 )
                *nuevo++= *frase++;
            else
                *nuevo++= 219- *frase++;
        }
    *nuevo++='\0';
    printf(" Cifrado: %s \n", start);
return 0;
}

Un saludo!
#1236
He respetado en lo posible el "formato" de tu código, ya que yo lo hubiera hecho diferente. Pero bueno, tienes corregido lo de valores negativos y que el usuario no pueda entrar valores que no sean entre 1 y 3. Además no me gusta perder siempre, con lo que le he puesto una variante a la máquina:quita fichas de forma aleatoria, así puedo ganar yo. Puedes desactivar esa opción eliminando el rand y activando la otra opción:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
    int main(){
    int fquitahombre=0,fquitamaquina=0,ftotales=0;
    char c;
    srand(time(0));
    printf("Bienvenido al juego de las fichas.\n");
    printf("Este juego consiste en ir retirando fichas, de un total de 17, el que retire la ultima ficha pierde.\n");
    printf("En cada turno puedes retirar 1,2 o 3 fichas.\n");
    printf("Empieza el juego:\n");
    ftotales=17;
    while(ftotales>0){
        printf("Retira las fichas que desees entre 1 y 3:");
        scanf("%d",&fquitahombre);
        while(fquitahombre > 3  || fquitahombre < 0){
        printf("Te dije entre 1 y 3:");
        scanf("%d",&fquitahombre);
        }
        ftotales=ftotales-fquitahombre;
        if (ftotales<=0)
            {
                printf("Quedan 0 fichas\n");
                printf("Has retirado la ultima ficha, por lo tanto, has perdido.");
                break;
            }
        /*fquitamaquina=4-fquitahombre;*/ /*<==tu opcion para perder siempre*/
        fquitamaquina=1+rand() % 3 ; /*mi opcion aleatorio, para poder ganar*/
        ftotales=ftotales-fquitamaquina;
        if (ftotales<=0)
            {
                printf("Quedan 0 fichas\n");
                printf("Has ganado.");
                break;
            }
        printf("La maquina quita %.0d\n",fquitamaquina);
        printf("Quedan %0.d fichas\n",ftotales);
    }
    c=getchar();
    c=getchar();
    return 0;
}
#1237
Usando arrays estáticos te queda más "light":
Código (cpp) [Seleccionar]
#include <stdlib.h>
#include <stdio.h>
int main()
{
int i;
char frase[64],nuevo[64];
        printf("Original: ");
gets(frase);
        for ( i=0;frase [i]!='\0';i++)
             nuevo[i]=219-frase [i];
        nuevo[i]='\0';
        printf(" Cifrado: %s", nuevo);
return 0;
}
#1238
Programación C/C++ / Re: RETOS C++
13 Octubre 2012, 15:45 PM
Para el diccionario por fuerza bruta. Genero una clave de forma aleatoria y la descubro letra a letra:
Código (cpp) [Seleccionar]
#include <iostream>
#include <ctime>
#include <cstdlib>
#define TAMAYO 4
char busca_codigo (char c);
using namespace std;
int main()
{
    srand(time(NULL));
    string codigo;
    for (int j=0;j<TAMAYO;j++)
        codigo [j]=rand()%(122-96) + 97;
    for (int j=0;j<TAMAYO;j++)
        cout <<codigo [j];
    cout << endl;
    for (int j=0;j<TAMAYO;j++)
        busca_codigo (codigo [j]);
    return 0;
}
char busca_codigo (char c)
{
    for (int i = 97; i <= 122; i++)
        {
            if(c==char (i))
                {
                    cout<< char (i);
                    break;
                }
        }
}
#1239
Programación C/C++ / Re: RETOS C++
12 Octubre 2012, 21:48 PM
Solucion al cuatro:

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main ()
{
    int i=1,n;
    char texto1[40],texto2[40];
    cout<<"Cuantas palabras desea ingresar: ";
    cin >> n ;
    getchar ();
    cout<<"\nIntroduce la  " << i << " palabra: ";
    gets(texto1);
    while (i<n)
    {
        cout<<"\nIntroduce la  " << i+1 << " palabra: ";
        gets(texto2);
        if (strcmp(texto1, texto2)<0)
            {
                i++;continue;
            }
        else
            strcpy (texto1,texto2);
        i++;
    }
     cout << "\nLa palabra menor es: " << texto1 << endl;
     return 0;
}
#1240
Con la misma presuncion que yoxter, pero para variar con un FOR:
#iclude <iostream>
using namespace std;
int main(int argc, char *argv[]) {

int i,principio,fin,escala;
    cout << "ingrese el numero de comienso: " ; cin >> principio;
cout << "ingre el numero limite: " ; cin >> fin;
cout << "ingrese el numero de subida: " ; cin >> escala;
    for (i=principio+escala;i<=fin;i+=escala)
        cout << i << endl;
return 0;
}