• Viernes 29 de Marzo de 2024, 02:54

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Nevhazovat

Páginas: [1]
1
C/C++ / Menu
« en: Martes 22 de Mayo de 2007, 16:57 »
Hola.

Tengo una duda con el siguiente menu.
Código: Text
  1.  
  2.    int opcion;
  3.    for(;;)
  4.    {
  5.       do
  6.       {
  7.       printf("/\/\/ MENU \/\/\");
  8.       printf("1. ALUMNOS.");
  9.       printf("2. PROFESORES.");
  10.       printf("3. VOLVER.");
  11.  
  12.       printf("Elije un número: ");
  13.       scanf("%d", &opcion);
  14.       }
  15.       while (opcion>3 || opcion<1);
  16.  
  17.       switch (opcion)
  18.       {
  19.     case 1: Alumnos();
  20.         break;
  21.     case 2: Profesores();
  22.         break;
  23.     case 3: printf("\nVOLVER.");
  24.         break;
  25.       }
  26.     if(opcion==3) break;
  27.    }
  28.  

Con ese código, cuando pulso un número que no está entre 1 y 3, el programa no hace nada (vuelve a pedir un número). ¿Cómo podría hacerlo también para que al introducir una letra o un símbolo el programa no pete y funcione igual que si hubiera introducido un numero no permitido, en este caso por ejemplo, el 4?

Saludos.

2
C/C++ / Paso De C++ A C
« en: Jueves 1 de Febrero de 2007, 12:06 »
Hola.

Busacando en internet he dado con un programa que necesito, pero el problema es que está en C++. Me gustaría pasarlo a C.

¿Alguien podría decirme cómo?

EDITO: Pues no pongo el mensaje y se me olvida el código..vaya cabeza tengo.

Código: Text
  1. #include<iostream.h>
  2. class DivDiff{
  3. float *x,*f;
  4. int n,intial,final;
  5. public:
  6. void iovalues();                
  7. float dd(int,int);
  8.                     };
  9. void DivDiff::iovalues()
  10. {
  11.  cout<<"Enter number of points :"<<endl;
  12.  cin>>n;
  13.  x=new float[n];
  14.  f=new float[n];
  15.  for(int i=0;i<n;i++)
  16.     {cout<<"Enter x["<<i<<"]"<<endl;
  17.      cin>>x[i];
  18.      cout<<"Enter f["<<i<<"]"<<endl;
  19.      cin>>f[i];}
  20.  while(1){
  21.           cout<<"Enter intial r(-1 to exit)"<<endl;
  22.           cin>>intial;
  23.           if(intial==-1)break;
  24.           cout<<"Enter  final r"<<endl;
  25.           cin>>final;
  26.           cout<<dd(intial,final)<<endl;
  27.          }
  28. }
  29. float DivDiff::dd(int intial,int final)
  30. {
  31.  float temp=0;
  32.  if((final-intial)==1)
  33.     temp=(f[final]-f[intial])/(x[final]-x[intial]);
  34.  else
  35.     temp=(dd(intial+1,final)-dd(intial,final-1))/(x[final]-x[intial]);
  36.  return temp;
  37. }
  38.  

3
Matlab / Adaptación Evolutiva
« en: Jueves 25 de Enero de 2007, 00:45 »
Hola a todos.

Estoy con un problema centrado en la tesis evolutiva de Darwin según la cual las especies con menor nivel adaptativo mueren.

Tengo que:

En cada instante del tiempo o época considerar una cadena de 200 especies, cada una interactuando con sus dos vecinos más cercanos en la cadena.

A cada especie se le asigna un nivel de adaptabilidad, variables aleatorias i.i.d. U(0,1) a tiempo inicial.

La evolución procede por selección natural de las especies con menor nivel adaptativo. En cada época (paso del tiempo) la evolución de los más débiles afecta a las especies con las que interactúan y el más débil y los vecinos con los que interactúa son remplazados por copias de las variables aleatorias i.i.d. U(0,1), copias de la distribución a tiempo inicial.

El interés se centra en el comportamiento de X1(n);X2(n), . . . . ,Xs(n) cuando n tiende a + infinito. Concretamente, en el comportamiento asintótico de las siguientes variables aleatorias:

El promedio del nivel adaptativo del sistema Z(n) = (X1(n)+X2(n)+¢ ¢ ¢+Xs(n))/s

La proporción de especies con nivel adaptativo en un subintervalo de [0,1). En particular, consideraremos la partición del intervalo en m subintervalos de igual longitud A(k) = [(k - 1)/m; k/m), k = 1,2,....m.

Si las variables aleatorias Z(n); P1(n), . . . , Pm(n) convergen en distribución, cuando n tiende a + infinito, a las variables aleatorias Z; P1, . . . , Pm, podemos usar el método de Monte Carlo para estimar los valores esperados mu = E[Z]; ro(1)=E[P1], . . . , ro(m)=E[Pm] observando los niveles adaptativos alcanzados en el sistema con el paso del tiempo, digamos luego de T épocas. T debe ser una valor grande. Para m = 10 y s = 200.

RESUMIENDO:

Se trata de realizar un programa que genere un vector aleatorio U(0,1) de tamaño 200.

De ese vector se calculará el mínimo (especie más débil) y se eliminará junto a su dos vecinos en el vector. Estos 3 individuos eliminados han de ser reemplazados por otras tantas copias de las variables aleatorias i.i.d. U(0,1), copias de la distribución inicial.

Hay que utilizar el método de Monte Carlo para estimar los valores esperados observando los niveles adaptativos alcanzados en el sistema con el paso del tiempo T, que ha de ser un valor grande.

Hay que realizar un histograma de todo este jaleo. Son 200 especies del 0 al 1 en 10 intervalos (m=10) por lo que en cada intervalo caerán 20.

Se calcular el vector (U=rand(1,200)) calcular su mínimo (min(U)) y el histogrma (hist(U)) pero no se como programar para que me haga la simulación con T = 1000 iteraciones, por ejemplo, y me elimine el mínimo y sus vecinos y luego calcular la media y desviación típica de los datos.

¿ALGUIEN ME PUEDE DAR ALGUNA INDICACIÓN, IDEA O SUGERENCIA?

Cualquier ayuda será bien recibida. Siento el tocho pero es que me gustaría que quedase claro.

Muchas gracias.

Un saludo.

4
C/C++ / Números Palindrómicos
« en: Viernes 12 de Enero de 2007, 00:21 »
Saludos a todos.

Tengo que hacer un programa que pida un número n por teclado y escriba a continuación los n primeros números capicúa o palindrómicos. ¿Alguien tiene una idea de como puedo iniciarlo?

Gracias por la atención.

5
C/C++ / Operaciones Con Ficheros
« en: Viernes 15 de Diciembre de 2006, 01:39 »
Hola.

Ahora mismo estoy con una práctica de ficheros. El programa me permite introducir datos en el fichero y luego consultarlos. Pero me gustaría poder hacer "operaciones" con los datos introducidos en el fichero, pero no ando muy sobrado y me gustaría saber como podría hacerlo.

¿Alguien me puede echar una mano? Ahí va el código.

Citar
/*Escribir un programa en C que a partir de un fichero dado con el formato adecuado:
a) Cuente el nº de clientes de un banco con al menos 40 años y saldo en cuenta inferior a 1.200 euros;
b ) Imprima el saldo menor y el saldo mayor de los clientes mayores de 30 años;
c) Imprima la edad media de todos los clientes;
d) Imprima el número de clientes que se llaman igual y viven en la misma ciudad;*/

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


struct banco {
int Ncliente;
char Nombre[15];
char Ap[20];
int Edad;
int Saldo;
char Ciudad[20];
};
struct banco Banco[10]; /* max 10 clientes */
/* variable global para guardar los datos de los clientes */

void InsertarCliente();
/* Añade un nuevo cliente al final del fichero */

void ConsultarCliente();
/* Consulta los datos personales de un cliente a traves de la clave del fichero */

void ConsultarEstadisticas();
/* Consulta las estadisticas de los clientes introducidos */


void InsertarCliente()
/* Anade un nuevo cliente al final del fichero */
{FILE *fp;
int Edad, NCliente, Saldo;
char Nombre[20], Ap[20], Ciudad[20];
printf("Cuales son los datos del cliente a insertar?\n");
printf("NCliente:");
scanf("%d", &NCliente);
fflush(stdin);
printf("Nombre:");
gets(Nombre);
fflush(stdin);
printf("Apellido:");
gets(Ap);
printf("Edad:");
scanf("%d", &Edad);
fflush(stdin);
printf("Saldo:");
scanf("%d",&Saldo);
fflush(stdin);
printf("Ciudad:");
gets(Ciudad);
if ((fp=fopen("banco.txt", "a"))==NULL) /* detecta error */
{printf("Error al abrir el fichero");
}
fprintf(fp, "%d %s %s %d %d %s\n", NCliente, Nombre, Ap, Edad, Saldo, Ciudad);
/* escribimos el registro al final del fichero */
if (fclose(fp)==0)
{printf("\nFichero cerrado correctamente");
}
else {printf("Error al cerrar fichero");
}
}

void ConsultarCliente()
/* Consulta los datos personales de un cliente a traves del campo clave NCliente */
{FILE *fp;
int i=0, salir=0, Mat;
printf("Cual es el numero de matricula del cliente a consultar? ");
scanf("%d", &Mat);
if ((fp=fopen("banco.txt", "r"))==NULL) /* detecta error */
{printf("Error al abrir el fichero");
}
do
{/* de paso guardamos los datos en estructuras adecuadas */
fscanf(fp, "%d %s %s %d %d %s\n", &(Banco.Ncliente), Banco.Nombre, Banco.Ap, &(Banco.Edad), &(Banco.Saldo), Banco.Ciudad);
if (Mat==Banco.Ncliente)
{printf("%d %s %s %d %d %s\n", Banco.Ncliente, Banco.Nombre, Banco.Ap, Banco.Edad, Banco.Saldo, Banco.Ciudad);
salir=1;
}
else
{i++;
}
}
while (salir!=1 && !feof(fp));
if (fclose(fp)==0)
{printf("\nFichero cerrado correctamente");
}
else {printf("Error al cerrar fichero");
}
getch();

}

void ConsultarEstadisticas()
/* Consulta las estadisticas de los clientes introducidos */

{

//AQUÍ SUPONGO QUE IRÍAN LAS OPERACIONES

main ()
{FILE * fp, *fp2;
char c;
int x, resp;
char titulo[15][30];
char director[15][20];
int cinta[15];
for (;
{do
{//clrscr();
printf("\nMENU PROGRAMA\n");
printf("----------------\n");
printf("1. Insertar nuevo cliente\n");
printf("2. Consultar cliente\n");
printf("3. Terminar\n");
scanf("%d", &resp);
}
while (resp!=1 && resp!=2 && resp!=3 && resp!=4); /* solo aceptamos respuestas validas */
switch (resp)
{case 1: InsertarCliente();
break;
case 2: ConsultarCliente();
break;
case 3: ConsultarEstadisticas();
break;
default: printf("\nFin de programa\a");
exit(0);
break;
}
}
}

6
C/C++ / Clave Secreta En C
« en: Miércoles 13 de Diciembre de 2006, 20:59 »
Hola.

Estoy haciendo un programa que acepta una clave secreta y evalúa la que el usuario teclea posteriormente, con un máximo de 5 intentos.

Este es el código.

Citar
#include <stdio.h>
#include <string.h>

void main(void)
{
   char clave [20], prueba [20];
   int comparacion, contador=0;

   printf ("Clave: ");
   gets(clave);
   printf ("\nRepite la clave: ");
   gets(prueba);

   comparacion=strcmp(clave, prueba);

   for (contador=0;contador<5;contador++)
   {
  if(comparacion)
  {
   printf ("\nLa clave es incorrecta.\nRepite la clave: ");
   gets(prueba);
   comparacion=strcmp(clave, prueba);
  }
  else
  {
   contador=5;
   printf ("\nLa clave es correcta.");
  }
   }
  if (contador==5)
  {
   printf("Ha superado los intentos permitidos");
  }
   getchar();
}

Lo que me gustaría saber es como hacer para que una vez introducida la comprobación de la clave, si esta es distinta de la original, me vaya diciendo los caracteres que están bien posicionados y si hay alguno que está desordenado pero que está en la clave original también lo indique. Vamos practicamente lo que hace el juego del Lingo.

Otra cosa que he intentado, y que no me sale, es que al introducir la clave original en lugar de mostrar los caracteres que se teclean, muestre asteriscos. Se que se utiliza getch() para que no imprima el caracter y putchar('*') para que me imprima el asterisco. Pero cuando ingreso la clave (digamos de 4 caracteres, por ejemplo) al pulsar intro me pone el 5º asterisco y, claro, luego al comprobar la contraseña no me funciona.

Lo dicho. Un poco de ayuda no viene mal.

Gracias por tomarse la molestia en leer este tocho.

Un saludo.

Páginas: [1]