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ú

Temas - tenji

#1
Hola a todos. Necesito extraer números leidos de 2 ficheros para insertarlos de manera ordenada en un nuevo fichero que genero. Hay una dificultad añadida, no puedo usar array  :-(. ¿me podrias ayudar?. NO SE COMO PODER INSERTARLOS BIEN.
Este es mi código. En él, viene escrito el enunciado

import java.io.*;
import javax.swing.JOptionPane;

/**
*
Se quiere crear una clase llamada MezclaFicheros en la que se van
  a crear dos ficheros(llamados NUM1.dat y NUM2.dat con números
  enteros ). Los números de ambos ficheros los introducimos por
  teclado en orden creciente. Por ejemplo, primero introducimos
  Nº números del fichero 1(p.ej:4), introducimos los números
  (p.ej: 4,6,8,10) y después los del otro fichero (1,3,5,7,8).
          Una vez creado ambos ficheros, crearemos otro llamado MEZCLA.dat  que
          tendrá los números de los dos ficheros mezclados en orden.     (1,3,4,5,6,7,8,8,10).
*/
       public class MezclaFicherosSinArray {

/**
* Método escribirFichero. Dado un nombre de fichero, escribe una serie de numeros
* introducidos por teclado
* @param nombreFichero
* @throws IOException
*/
public static void escribirFichero(String nombreFichero) throws IOException{

    File fichero =new File (nombreFichero);
    FileOutputStream fileout = new FileOutputStream (fichero);
    DataOutputStream dataOS = new DataOutputStream(fileout);
    String texto=JOptionPane.showInputDialog("Cuantos numeros quiere introducir");
    int totalNum=Integer.parseInt(texto);
   
    for (int i=0;i<totalNum; i++)
    {
    String texto2=JOptionPane.showInputDialog("Inserte numero");
int num=Integer.parseInt(texto2);
        dataOS.writeInt(num);
    }
    dataOS.close(); //cerrar strearn

}
/**
* Método leerFichero. Método que lee numeros de un fichero
* @param nombreFichero
* @throws IOException
*/

public static void leerFichero(String nombreFichero)throws IOException{

    File fichero = new File (nombreFichero);
    FileInputStream filein = new FileInputStream (fichero) ;
    DataInputStream dataIS = new DataInputStream (filein);
 
    int e;
    try {
    while (true) {
       
        e = dataIS.readInt(); //recupera la edad
        System.out.println("Numero: "+ e);
    }
    }catch (EOFException eo) {}
    dataIS.close(); //cerrar stream

}

/**
*Método mezclaFicheros. Método que recoge numeros de 2 ficheros dados y los escribe de
*manera ordenada en uno nuevo llamado MEZCLA.DAT
* @param fichero1
* @param fichero2
* @throws IOException
*/
public static void mezclaFicheros(String fichero1, String fichero2) throws IOException{


    File fichero =new File ("MEZCLA.dat");
    FileOutputStream fileout = new FileOutputStream (fichero);
    DataOutputStream dataOS = new DataOutputStream(fileout);
   
    File ficheroleido1 = new File (fichero1);
    FileInputStream filein = new FileInputStream (ficheroleido1) ;
    DataInputStream dataIS = new DataInputStream (filein);
   
    File ficheroleido2 = new File (fichero2);
    FileInputStream filein2 = new FileInputStream (ficheroleido2) ;
    DataInputStream dataIS2 = new DataInputStream (filein2);
       
    int num1,num2;
   
    try {
    num1 = dataIS.readInt();
    num2= dataIS2.readInt();
    while (true)
    {
if(num1<num2)
{
dataOS.writeInt(num1);
        dataIS.readInt();
}else{
if(num1>num2)
{
dataOS.writeInt(num2);
        dataIS2.readInt();
}else{
    dataOS.writeInt(num2);
    dataIS.readInt();
}
}

    }
   
    }catch (EOFException eo) {}
   
    try{
    num1 = dataIS.readInt();
    while(true){
   
    dataOS.writeInt(num1);
    dataIS.readInt();
    }
    }catch(EOFException e){}
   
    dataIS.close();
    dataIS2.close();
    dataOS.close();
   
    System.out.println("RESULTADO FINAL");
    leerFichero("MEZCLA.dat");
}

/**
* Método main
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {

escribirFichero("NUM1.dat");
escribirFichero("NUM2.dat");

System.out.println("FICHERO NUM1.DAT");
leerFichero("NUM1.dat");

System.out.println("FICHERO NUM2.DAT");
leerFichero("NUM2.dat");

System.out.println("FICHERO MEZCLA.DAT");
mezclaFicheros("NUM1.dat", "NUM2.dat");


}


}





Muchas gracias, un saludo y espero que podais ayudarme
#2
Hola a todos, escribo en el foro para saber si me pudieran ayudar con un ejercicio. Dice asi:
Crear una clase Automóvil cuyos atributos serán: matricula, cilindrada, consumo y marca. Escribir el/los constructores necesarios para esta clase.
•   Crear una clase Coche, hija publica de Automóvil que contenga Nº de puertas y todos los atributos heredados de la clase automóvil. Define el constructor.
•   Crear una clase Motocicleta, hija publica de Automóvil, sus atributos serán los heredados de la clase automóvil. Define el constructor.
•   Gestiona un concesionario con un máximo de 25 motocicletas y 75 coches organizados en arrays de objetos. Obtener un listado de las motocicletas y los coches de los que disponemos.

Bien, mi codigo es este:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#define MC 2000

using namespace std;
class Automovil{
                char matricula, marca;
                int cilindrada, consumo;
                Automovil *sig;
      public:
                Automovil();
                Automovil(char ma,char mar, int ci, int con);
                               void ver_automovil();
      } ;
     
class Coche:virtual public Automovil{
      int numpuertas;
      public:
             Coche():Automovil(){numpuertas=0;}
             Coche(char ma,char mar, int ci, int con,int numpu):Automovil(ma,mar,ci,con){numpuertas=numpu;};
      } ;
     
class Motocicleta:virtual public Automovil{
      public:
             Motocicleta():Automovil(){};
             Motocicleta(char ma,char mar, int ci, int con):Automovil(ma,mar,ci,con){};
   };
     
class Lista{
      private:
              Automovil *lauto;
      public:
             Lista(){lauto=NULL;}
             void alta_coche();
             void alta_moto();
             int val(int min, int max);
             void cadenas(char *a);
             void ver_lista_coche();
             void ver_lista_moto();
           };

void Lista::ver_lista_moto(){
     Automovil *aux= lauto;
     while(aux){
                aux->ver_automovil();
               
                   }
   }         
             
void Lista::ver_lista_coche(){
     Automovil *aux= lauto;
     while(aux){
                aux->ver_automovil();
               
                   }
   }
   
void Lista::alta_moto(){
        char ma;char mar;
        int ci; int con;int ok;int i;
        do {
            ok=1;
            cout<<"Introduzca la marca de la moto:\t";
            cadenas(&ma);
            cout<<"Introduzca la matricula de la moto:\t";
            cadenas(&mar);
            cout<<"Introduzca la cilindrada de la moto:\t";
            ci=val(4,8);
            cout<<"Introduzca el consumo de la moto:\t";
            con=val(4,8);
           
            }while(!ok);

         }       

void Lista::alta_coche(){
        char ma;char mar;
        int ci; int con;int numpu;int ok;int i;
        do {
            ok=1;
            cout<<"Introduzca la marca del vehiculo:\t";
            cadenas(&ma);
            cout<<"Introduzca la matricula del vehiculo:\t";
            cadenas(&mar);
            cout<<"Introduzca el numero de puertas del vehiculo:\t";
            numpu=val(4,8);
            cout<<"Introduzca la cilindrada del vehiculo:\t";
            ci=val(4,8);
            cout<<"Introduzca el consumo del vehiculo:\t";
            con=val(4,8);
                        }while(!ok);

         }

int Lista:: val(int min, int max){
    long re;
    do{
         cin>>re;
         if(re<min||re>max)
         cout<<"Error\t";
       
      }while(re<min||re>max);
    return re;
    }
   
void Lista::cadenas(char *a){
         char b[MC];
         int n;
         fflush(stdin);
         fgets(b,MC-1,stdin);
         n=strlen(b);
         b[n-1]='\0';
         strcpy(a,b);
          }
         
void Automovil::ver_automovil(){
     int tipo;
     switch(tipo){
     case 1:cout<<"COCHE";
     break;
     default:
             cout<<"MOTO";
             break;}
             cout<<"MARCA:"<<marca<<endl;
             cout<<"MATRICULA"<<matricula<<endl;
             cout<<"CONSUMO"<<consumo<<endl;
             cout<<"CILINDRADA"<<cilindrada<<endl;
    }
     
void sel(int tipo, Lista *lista){
             switch(tipo){
             case 1: lista->alta_moto();
             break;
             case 2: lista->alta_coche();
             break;
             case 3: lista->ver_lista_moto();
             break;
             case 4: lista->ver_lista_coche();
             break;
             default:
             break;
             }

}

int main()
{
    int res,i;
    Lista *lista;
    Motocicleta motos[25];
    for(i=0;i<25;i++)
    motos[i]=new Motocicleta;
    Coche coches[75];
    for(i=0;i<75;i++)
    coches[i]=new Coche;
    do{
    cout<<"*****************BIENVENIDOS AL CONCESIONARIO MONGOCONGO*************"<<endl;
    cout<<"1.Alta moto"<<endl;
    cout<<"2.Alta coche"<<endl;
    cout<<"3.ver motos"<<endl;
    cout<<"4.ver coches"<<endl;
            res = val(1,4);
            sel(res,lista);
            }while(res!=4);

    system("PAUSE");
    return 0;
}


Necesito saber como almacenar las motos y los coches (previa creacion de ambas claro).
Agradeceria que me dijeran todos los fallos posibles, trucos, consejos...que me ayuden a ir al grano y evitar quebraderos de cabeza.

Muchas gracias y espero tener respuesta.
Un saludo
Tenji

#3
Hola buenas tardes, quisiera que me ayudarán a realizar el siguiente programa en el cúal he de emplear 2 listas y un fichero. He de decir para quien vea el código que he realizado, que soy novato en esto de la programación y no se me da muy bien que digamos, por ello es probable que haya cosas que sobren (doy por hecho que faltan cosas).

El enunciado es el siguiente:

Se pretende realizar un programa en C para los clubes de fútbol, que permita realizar la gestión de fichajes para la próxima temporada.
El programa dispondrá de una lista de jugadores disponibles que podrán ser fichados por el equipo, siempre que la suma de los sueldos
no supere el presupuesto del club.

FUNCIONAMIENTO:
Se parte de los listas, una para los jugadores disponibles y otra para los jugadores elegidos. Ambas estarán vacías al principio. El programa deberá leer los datos de los jugadores disponibles, cuyo número es inderterminado. Se leerán por teclado hasta que tecleemos un nombre en blanco.

Los datos que nos interesan de cada jugador son:
-Nombre(50 caracteres max.)
-Sueldo(en EUROS)

A continuación se leerá el presupuesto del club, también en EUROS.

Una vez leída toda la información quedará almacenada en memoria y se presentará un menú en pantalla que permita:
-(E)legir: si pulsamos 'E' o 'e', leeremos el nombre del jugador elegido. Si lo encuentra en la lista, lo añadirá a la lista
del equipo, siempre y cuando el presupuesto lo permita.
-(Q)uitar jugador: si pulsamos 'Q' o 'q', eliminaremos un jugador elegido anteriormente. Se leerá su nombre y si está en la lista del equipo, se volverá
a añadir a la lista de jugadores disponibles.
-(S)alir: si pulsamos 'S' o 's', saldremos del programa creando un fichero binario secuencial con los datos de los jugadores disponibles y liberando antes
toda la memoria asignada para la lista de jugadores disponibles.

El programa debe mostrar esto (mas o menos):

Presupuesto: 5000 / Queda: 5000
   Jugadores            Equipo
----------------------------------------------------------
   Casillas(990)
   Raúl(1500)
   Torres(1240)
   Villa(1000)
                  Gasto=0

(E)legir      (Q)uitar jugador                    (S)alir

Si elegieramos a Villa sucedería esto:

Presupuesto: 5000 / Queda: 4000
   Jugadores            Equipo
----------------------------------------------------------
   Casillas(990)            Villa(1000)
   Raúl(1500)
   Torres(1240)
   
                  Gasto=1000

(E)legir      (Q)uitar jugador                     (S)alir



Bien, púes esto es lo que llevo de código y que por supuesto no funciona.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct futbolistas{
        struct futbolistas *sig;
        float sueldo;
        char nombre[50];
}Datos;
typedef Datos *Lista;
typedef Datos *NODO;

int main(){

int i=0,ok,opciones;
float presupuesto = 5000;
Lista *listafutbolistasdisponibles=NULL;
Lista *listafutbolistaselegidos=NULL;

NODO *nuevo=NULL;
NODO *aux=NULL;

do{
      nuevo=(NODO*)malloc(sizeof(NODO));
      puts("Introduzca el nombre del futbolista:\n");
      fflush(stdin);
      fgets(nuevo->nombre,50-1,stdin);
      puts("Introduzca el sueldo del futbolista:\n");
      fflush(stdin);
      scanf("%f",&nuevo->sueldo);
      nuevo->sig=listafutbolistasdisponibles;
                  if(listafutbolistasdisponibles==NULL){
                       listafutbolistasdisponibles=nuevo;                           
                  }else{
                        nuevo->sig=listafutbolistasdisponibles;
                        listafutbolistasdisponibles=nuevo;
                        }
      }while(nuevo->nombre=="");

aux=listafutbolistasdisponibles;
while(aux){
           i++;
           printf("Presupuesto: %f / Queda: %f \n", presupuesto, presupuesto);
           printf("Jugadores \t\t Equipo \n");
           printf("------------------------------------------------ \n");
           printf("%s ( %.2f )\n", aux->nombre,aux->sueldo);
           printf("\t\t Gasto\n");
           aux=aux->sig;
           }
printf("(E)legir \t (Q)uitar jugador\t (S)alir\n");

    system("PAUSE");
    return 0;
}



No he completado todo lo que dice el enunciado por que quiero hacerlo paso a paso y asegurarme de que lo que hago lo hago bien.

Agradecería una respuesta/ayuda, gracias

Hasta pronto(espero).
#4
Hola a todos, me estreno en este foro con un programa que consiste en fichar jugadores para un equipo de fútbol. Para ello tengo un presupuesto de 50,000,000 de euros y cada vez que fiche un jugador, debo de introducir el sueldo a pagar del jugador, el cúal, se restará al presupuesto que tengo. Os muestro el código que he hecho y después os explico mis dudas/problemas.
Antes de mostrarlo, me gustaría aclarar que soy primerizo en esto de la programación y no domino bien el concepto de almacenaje de datos en un array y en una variable en general, por lo que seguramente habrá cosas innecesarias.

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 50

void restarpresupuesto(float a, float b);

int main(){
int i,j,ok,respuesta;
float sueldo[N];
char cadena[5][N];
float presupuesto = 50000000 ;
printf("Vamos a fichar jugadores\n");
do{
              for(i=0;i<2;i++){
                        printf("Introduzca el nombre del jugador %d: ",i+1);
                        fflush(stdin);
                        fgets(cadena,N-1,stdin);
                        printf("El jugador %s cobra: ",cadena);
                        scanf("%f",&sueldo[N]);
                        restarpresupuesto(sueldo[N],presupuesto);
                       
                        }
        printf("Desea fichar mas jugadores? Pulse:0-SI o 1-NO \n");
         scanf("%d",&respuesta);
}while(respuesta==0);
printf("EL EQUIPO ESTA FORMADO POR:\n");
   
for(i=0;i<2;i++){
    printf("El jugador numero %d que se llama: %s ", i+1,cadena);
    printf("y cobra %f euros\n ", sueldo[N]);
           }
       
    if (i>1){
        printf("\nHas fichado %d jugadores \n",i);
        }  else
               printf("\nHas fichado 1 jugador\n");

system("pause");
fflush(stdin);
return 0;
}

   void restarpresupuesto(float a, float b){
         float presupuestofinal;
         presupuestofinal=(b - a);
         printf("Le queda %f euros de presupuesto \n",presupuestofinal );
}


1. Quisiera saber como puedo hacer para que cada vez que introduzca sueldos de los jugadores, eston se resten al presupuesto partiendo del resultado de la resta anterior. Ejemplo: Parto de 5000 euros, el jugador 1 cobra 400, me quedan 4600, para cuando introduzca el sueldo del segundo jugador, quiero que la resta se inicie desde 4600 y no desde 5000.
No se como hacerlo.¿Me ayudan?.
2. Cuando muestro los resultados, solo me muestra el primer sueldo que introduzco en todos los jugadores, es decir, si pongo que el primer jugador cobra 500, todos, independientemente de lo que introduzca, van a cobrar 500 euros. En definitiva solo me almacena el primer numero que introduzco. ¿que debo hacer?.
Agradecería una respuesta.

Ejemplo de ejecución/compilacion:
Vamos a fichar jugadores
Introduzca el nombre del jugador 1: PEPE
El jugador PEPE
cobra: 600000
Le queda 49400000.000000 euros de presupuesto
Introduzca el nombre del jugador 2: MANOLO
El jugador MANOLO
cobra: 234234
Le queda 49765768.000000 euros de presupuesto
Desea fichar mas jugadores? Pulse:0-SI o 1-NO
1
EL EQUIPO ESTA FORMADO POR:
El jugador numero 1 que se llama: PEPE
y cobra 234234.000000 euros
El jugador numero 2 que se llama: MANOLO
y cobra 234234.000000 euros

Has fichado 2 jugadores
Presione una tecla para continuar . . .

Gracias por su atención y espero que me puedan ayudar
Hasta pronto (Espero).