• Viernes 19 de Abril de 2024, 10: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.


Mensajes - i82maria

Páginas: [1] 2 3 ... 5
1
Visual C++ / Arboles En Qt4 Con C++
« en: Martes 5 de Diciembre de 2006, 18:17 »
Hola a todos, necesito obtener aquellos nodos que sean descendientes a un nodo. He conseguido que em diga cuantos nodos tienen descendientes, pero no cuales son. Si alguien sabe de c++ y de qt, Por favor ruego me ayuden.
Aqui adjunto el texto del codigo que tengo hecho.

[CODE]
int NodoBinario::numDescendientes(FunctorNodo *f)
{
   int numDes = 0;
   if(esHoja())  //no tiene hijos
       return 0;      
   else {
       if(hijoIzquierdo())
          numDes+= 1+hijoIzquierdo()->numDescendientes(f);
       if(hijoDerecho())
          numDes+= 1+hijoDerecho()->numDescendientes(f);
   }
   return numDes;
}   

Y luego en el principal se hace asi:
//DESCENDIENTES DE UN NODO
void Practica::descendientes(void)
{
bool ok = true;
QString resultado; //creamos una lista

// Creamos un functor que inserte el campo informativo de
// cada nodo en la lista
InsertarLista(functor);
   
// Pedimos un entero al usuario
QString str=QInputDialog::getText( this, "Descendientes nodo", "Introduzca un valor entero",
        QLineEdit::Normal, QString::null, &ok);

  if ( ok && !str.isEmpty() )
  {
    int numero = str.toInt( &ok );
    if (! ok )
    {
      QMessageBox::critical(this, appName, "Debe introducir un número entero");
    }
    else
    {
      _nodoActual = _arbol->buscarNodo(numero);
      if(_nodoActual) {
                 _nodoActual->numDescendientes(&functor);
        QMessageBox::information(this, appName, "El numero de descendientes es: " +QString::number(_nodoActual->numDescendientes(&functor)));  

      }
      else
      {
            QMessageBox::information(this, appName, "EL nodo no pertenece al arbol");
      }
    }
   }
     resultado = functor.verResultado();
     QMessageBox::about(this, appName, "Los descendientes son= " +resultado);
}     

Y aqui es donde tengo mi problema q no me muestra los descendientes.

Gracias, saludos.

2
GNU/Linux / Re: Necesito Un Linux Que Tengan Librerias Qt4
« en: Jueves 21 de Septiembre de 2006, 20:40 »
Cita de: "X.Cyclop"
Se llaman distros o distribuciones de GNU/Linux. :P

Puedes usar Ubuntu, Suse o Pedorra. :whistling:

Los LiveCDs no creo que sirvan.
Pero estas distribuciones ya vienen con las librerias de qt4.
???
Por favor responda y digame de donde me las puedo bajar.

3
GNU/Linux / Necesito Un Linux Que Tengan Librerias Qt4
« en: Jueves 21 de Septiembre de 2006, 19:51 »
Hola a todos, tengo que hacer unas practicas con la librerias de qt, version 4, en lenguaje C++ y necesito saber si alguien me puede recomendar algun linux para instalar en casa, o algun sitio donde me puedan ayudar a hacer esto.
Gracias

4
C/C++ / Listas Simples En C
« en: Jueves 8 de Junio de 2006, 13:35 »
Hola a todos necesito crear dos listas a partir de un fichero de texto en C.
La funcion recibe como parametro el nombre del fichero y un entero que puede ser o 1 o 2, si es 1, debe contener solo los apellidos y si es 2 los dni.
Pongo aqui abajo el codigo que he hecho para ver si le encuentran algun fallo.
Pq es q solo me muestra una linea por cada lista.
[CODE]
#include <stdio.h>
#include <malloc.h>
#include <string.h>

struct datos{
   char ape1[15];
   char DNI[10];
   int edad;
 };

struct lista1{
   char ape1[15];
   struct lista1 *sig;
 };

struct lista2{
   char DNI[10];
   struct lista2 *sig;
 };


main()
{
  char fichero[15];
  char resp;
  struct datos d;
  struct lista1 *cabeza1 = NULL;
  struct lista2 *cabeza2 = NULL;
  int n;
  int opc;
  printf("\nIntroduzca el fichero: ");
  scanf("%s", fichero);
  getchar();
  fflush(stdin);
 
  do{
   d = introducirDatos();
   anyadirAlumnos(d, fichero);
   printf("\nDesea introducir un alumno mas : ? ");
    scanf("%c", &resp);
    getchar();
    fflush(stdin);
   
    }while(resp =='s' || resp == 'S');
   
    getchar();
    verFichero(fichero);
    getchar();
   do{
   cabeza1 = pasarFichero(fichero, 1);
     printf("\nLISTA APELLIDOS\n");
     mostrarLista1(cabeza1);
     getchar();
   
   cabeza2 = pasarFichero(fichero, 2);
 
       printf("\nLISTA DNI\n");
     mostrarLista2(cabeza2);
 
    printf("\nDesea crear otra lista?\n");
    scanf("%d", &opc);
    }while(opc <2);
     
 }



void *pasarFichero(char *fichero, int n)
  {
     FILE *pf;
     struct datos d;
     struct lista1 *cabeza1 = NULL;
     struct lista2 *cabeza2 = NULL;
     struct lista1 *aux1 = NULL;
     struct lista2 *aux2 = NULL;
     if((pf = fopen(fichero, "r"))==NULL){
         printf("Error de memoria\n");
    exit(-1);
   }
   while(fscanf(pf, "%s %s %d", d.ape1, d.DNI, &d.edad)==3)
   {
      if(n==1){
         aux1 = nuevoElemento1();
         strcpy(aux1->ape1, d.ape1);
         if(!listaVacia1(cabeza1)){
          cabeza1 = aux1;
          }
          else{
                aux1->sig = cabeza1;
      cabeza1 = aux1;
      }
      return (cabeza1);
           }
      if(n==2){
           aux2 = nuevoElemento2();
         strcpy(aux2->DNI, d.DNI);
         if(!listaVacia2(cabeza2)){
          cabeza2 = aux2;
          }
          else{
                aux2->sig = cabeza2;
      cabeza2 = aux2;
      }
      return(cabeza2);
         }
       }
  }

5
C/C++ / Listas Dobles En C
« en: Martes 6 de Junio de 2006, 17:18 »
Hola a todos, que tal?, tengo un problemilla necesito pasar de un fichero binario en C a una lista doblemente enlazada. Yo tengo el codigo, pero no se pq no me muestra bien la lista doble, si alguien puede ayudarme por favor, aqui abajo adjunto el codigo q tengo hecho. Gracias
Esto es el codigo de las funciones.
Código: Text
  1.  
  2. /************** funcion para reservar memoria para el nuevo elemento*/
  3. struct listaDoble *nuevoElemento()
  4. {
  5.    struct listaDoble *a;
  6.    a = (struct listaDoble*)malloc(sizeof(struct listaDoble));
  7.    return a;
  8.    
  9. }
  10.  
  11. /*********** funcion que calcula si la lista esta vacia**************/
  12. int listaVacia(struct listaDoble*cabeza)
  13. {
  14.    if(cabeza == NULL) /*la lista esta vacia*/
  15.       return 1;
  16.    else
  17.        return 0;     /*la lista no esta vacia*/
  18.  }
  19.  
  20. void leerDatosFichero(char *fichero, struct listaDoble **cabeza)
  21. {
  22.   FILE *p;
  23.   struct listaDoble *aux;
  24.  
  25.   /*se reserva espacio para el nuevo elemento*/
  26.   aux = nuevoElemento();
  27.   p = fopen(&#34;conejos2006.bin&#34;, &#34;rb&#34;);
  28.   if(p== NULL)
  29.   {
  30.      printf(&#34;&#092;nError de lectura del fichero&#092;n&#34;);
  31.      exit(-1);
  32.   }
  33.  
  34.   while(fscanf(p, &#34;%s %d %lf&#34;, aux-&#62;codigo, &aux-&#62;edad, &aux-&#62;peso)==3)
  35.   {
  36.      insertarLista(cabeza, aux-&#62;codigo, aux-&#62;edad, aux-&#62;peso);
  37.   }
  38.  
  39.   fclose(p);
  40. }
  41.  
  42. /************funcion que inserta elementos al comienzo de la lista*/  
  43.  void insertarLista(struct listaDoble **cabeza, char *codigo, int edad, double peso)
  44.  {
  45.     struct listaDoble *nuevo = NULL;
  46.     struct listaDoble *aux = NULL;
  47.    
  48.     /*se reserva espacio para el nuevo elemento*/
  49.     nuevo = nuevoElemento();
  50.     strcpy(nuevo-&#62;codigo, codigo);
  51.     nuevo-&#62;edad = edad;
  52.     nuevo-&#62;peso = peso;
  53.    
  54.     if(listaVacia(*cabeza))
  55.     {
  56.       *cabeza = nuevo;
  57.       nuevo-&#62;sig = NULL;
  58.       nuevo-&#62;anterior = NULL;
  59.     }
  60.    
  61.     else {
  62.     aux = *cabeza;
  63.      nuevo-&#62;sig = aux;
  64.      aux-&#62;anterior = nuevo;
  65.      *cabeza = nuevo;
  66.      }
  67.        
  68.  }
  69. /*****************muestra los elementos de la lista desde el principio hasta el fin***/
  70. void visualizarDirecta(struct listaDoble *cabeza)
  71. {
  72.   if(!listaVacia(cabeza))
  73.   {
  74.     printf(&#34;&#092;n Codigo: %s&#092;n&#34;, cabeza-&#62;codigo);
  75.     printf(&#34; Edad: %d&#092;n&#34;, cabeza-&#62;edad);
  76.     printf(&#34; Peso: %.3lf&#092;n&#34;, cabeza-&#62;peso);
  77.     visualizarDirecta(cabeza-&#62;sig);
  78.   }
  79. }
  80.  
  81.  /****************funcion que comprueba si existe un fichero***/
  82.  int existeFichero()
  83.  {
  84.    FILE *f;
  85.    f = fopen(&#34;conejos2006.bin&#34;, &#34;rb&#34;); /*abre fichero para lectura*/
  86.    if(f == NULL) /*el fichero no existe*/
  87.    {
  88.       return 0;
  89.    }
  90.     else {
  91.        fclose(f);
  92.        return 1;
  93.      }
  94.   }  
  95. [QUOTE]
  96. Aqui pongo el principal es decir el main.
  97. [/QUOTE]
  98.  
  99.  
#include "cabecera.h"

main()
{
struct listaDoble *cabeza = NULL;
int opc;
int existeF;
char fichero[30];

/*
  if(argc <2) {
          printf("El numero de argumentos debe ser 2\n");
     exit(-1);
     }
   */
do{
   do{
     opc = menu();
     }while(opc <1 || opc >10);
     
     switch(opc)
     {
      case 1: /*Pasar del fichero a una lista*/
       /*
       guardarDatosFichero(argv[1], cabeza);
       printf("\nLos datos se han guardado correctamente\n");
    printf("\nPulse intro para seguir");
    getchar();
    getchar();*/
    existeF = existeFichero();
    if(existeF == 0)
    {
      printf("No existe el fichero conejos\n");
      exit(1);
     }
     else {
       leerDatosFichero("conejos2006.bin", &cabeza);
       printf("Los datos han sido grabados\n");
       visualizarDirecta(cabeza);
       printf("La lista es \n");
       
     printf("\nPulse intro para seguir");
    getchar();
    getchar();
    }
         
       break;
       
       case 10:
         printf("\nSALIR DEL PROGRAMA DE CONEJOS\n");
    printf("\nPulse intro para seguir\n");
   
    getchar();      
       break;
       
     }
    }while(opc!=10);
  }
 
  /*******************funcion del menu de opciones de la lista*****************/
int menu()
{
  int opc;
  system("clear");
  printf("\n MENU DE PRACTICA DE LISTAS\n\n");
  printf("\n 1. Pasar del fichero a lista en un fichero. ");
  printf("\n 10. Salir del programa. ");
  printf("\n\n  Introduzca una opcion: ");
  scanf("%d", &opc);
 
  return opc;
}

6
ADA / Necesito Alguien Que Sepa Pvm
« en: Martes 3 de Enero de 2006, 15:32 »
Hola, vereis, necesito alguien qye me pueda orientar, tengo que ahcer una practica en pvm, no sabia de que hacerlo, y se me ha ocurrido si estaria bien, hacerlo de producto de matrices, o es demasiado simple. Por favor, hemirado y re que te mirado en internet y no encontre nada interesante. alguien pede ayudarme.

Gracias. FELIZ AÑO A TODOS

7
ADA / Re: Alguien Sabe Algo De Pvm
« en: Martes 3 de Enero de 2006, 15:27 »
Cita de: "Nagisa"
Uhm... Por que no buscas en Google??  :blink: Yo lo he buscado tal cual ("pvm") y me han salido mas de 5.000 resultados en Español. :lol:
Hola, si he buscado me gustaria hacer una practica en pvm, y no sabia de que hacerla, quisiera saber si la puedo hacer de producto de matrices, alguien me puede orientar, por favor. es importante
gracias, saludos y FELIZ AÑO NUEVO

8
C/C++ / Ayuda Con El Codigo Es De Ficheros, Listas En C
« en: Martes 13 de Diciembre de 2005, 14:58 »
Hola a todos el codigo es este.
[CODE]
La funcion que me piden, qes que dado el nombre del fichero como parametro, y un entero, cree dos listas, una que contenta solo los apellidos y otra que contenga solo los dni. Si el entero es 1, la lista contendra solo los apellidos, y si el entero es 2 la lista contendra solo los dnis. uego me pide que devuelva la cabeza al programa principal.

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

struct datos{
   char ape1[15];
   char DNI[10];
   int edad;
  };

struct lista1 {
    char ape1[15];
     struct lista1 *sig;
    };

struct lista2 {
    char DNI[10];
    struct lista2 *sig;
 };


 void *pasarFichero(char *fichero, int n){
  {
     FILE *pf;
     struct datos d;
     struct lista *cabeza1 = NULL;
     struct lista *cabeza2 = NULL;
     struct lista *aux1 = NULL;
      struct lista *aux2 = NULL;
     if((pf = fopen(fichero, "rb"))==NULL){
         printf("Error de memoria\n");
    exit(-1);
   }
   while(fread(&d, sizeof(struct datos),1, pf) == 1) {
      if(n==1){
         aux1 = (struct lista1*)malloc(sizeof(struct lista1));
         strcpy(aux->ape1, d.ape1);
         if(cabeza1 ==NULL){
          cabeza1 = aux1;  
          }
          else{
                aux1->sig = cabeza1;
      cabeza1 = aux1;
      }
      return (cabeza1);
               
         }
       else(n==2){
           aux2 = (struct lista2*)malloc(sizeof(struct lista2));
         strcpy(aux->ape1, d.DNI);
         if(cabeza2 ==NULL){
          cabeza2 = aux2;
         
          }
          else{
                aux2->sig = cabeza2;
      cabeza2 = aux2;
      }
      return(cabeza2);
         }
       }
  }

Por favor, yo hice esta funcion, si hay alguien que sepa como se hace, o que me diga donte te ngo el error. gracuas

9
C/C++ / Pasar De Ficheros A Listas
« en: Lunes 12 de Diciembre de 2005, 20:40 »
Tengo una estructura llamada datos, que contiene los campos, dni, apellidos, y edad. Creo un fichero que tenga esos campos. Y ahora tengo que creear una lista con los apellidos, y otra con los dnis. Si alguien me puede ayudar, estoy desesperada. Gracias
Esto es lo que yo llevo hecho hasta ahora.

[CODE]
#include <stdio.h>
#include <malloc.h>
#include <string.h>

struct datos{
   char ape1[15];
   char DNI[10];
   int edad;
 
};
/*
struct lista1 {
    char ape1[15];
   
    struct lista *sig;
    };

struct lista2 {
    char DNI[10];
    struct lista2 *sig;
 };
 
  */  
struct datos introducirDatos();
void anyadirRegistro(struct datos d, char *fichero);
void verFichero(char *fichero);

 

main()
{
 FILE *p;
 char fichero[20];
 char resp;
  struct datos d;
  int n;
 
 
  printf("\nIntroduzca el nombre del fichero que desee: ");
  gets(fichero);
  fflush(stdin);
 
   

/*   struct actores *v;
   v = (struct actores *) malloc(sizeof(struct actores);*/
 do{
  d = introducirDatos();

 
  printf("¿Desea introducir un estudiante mas: ");
  scanf("%s", &resp);
  fflush(stdin);
 
  }while(resp == 's' || resp == 'S');
   anyadirRegistro(d, fichero);
 
/verFichero(fichero);
 }
 
struct datos introducirDatos()
{
  struct datos aux;
   printf("Apellido1: ");
    gets(aux.ape1);
    printf("DNI: "),
    gets(aux.DNI);
    printf("Edad: ");
    scanf("%d", &aux.edad);
    getchar();
    fflush(stdin);
 return (aux);
 }
 
void anyadirRegistro(struct datos d, char *fichero)
{
  FILE *fp;
 fp = fopen(fichero, "ab");

 
  fwrite(&d, sizeof(struct datos),1, fp);
  fclose(fp);
}
 
void verFichero(char *fichero)
  {
    FILE *fp;
    struct datos d;
    fp = fopen(fichero, "rb");
    /*)==NULL) {
        printf("Error al abrir el fichero\n");
   exit(-1);
    }*/
    while(fread(&d, sizeof(struct datos),1 , fp)==1)
    {  
         printf(" %s %s  %d \n", d.ape1, d.DNI, d.edad);
     }
     fclose(fp);
  }
/*

10
C/C++ / Re: Matriz De Tres Dimensiones En C
« en: Sábado 25 de Junio de 2005, 22:59 »
Cita de: "juez"
a esto te refieres por ejemplo
Curso 1 = calculo I, fisica, programacion I, algebra, ingles I

Curso 2 = calculo II, fisica II, programacion II, algebra II, ingles II

que cada curso tiene un grupo de materias ?
Son 6 cursos y cada curso tiene 5 asignaturas.

11
C/C++ / Vector De Estructuras Almacenarlo En Listas En C
« en: Sábado 25 de Junio de 2005, 22:58 »
Hola a todos, necesito si alguien puede orientarme en como hacer lo siguiente:

Una funcion que reciba un vector de estructuras, struct registro *v, y almacene sus datos en dos listas, lista 1 y lista2, ordenadas por el campo nombre, de forma tal que en la lista 1 esten los registros cuyo campo anyo sea impar
y en la lista 2 aquellos que son pares.

struct registro
{
char nombre[15];
char pais[15];
int anyo;
};

struct registro *v;

Por favor, si alguien me puede ayudar, gracias.

12
C/C++ / Re: Matriz De Tres Dimensiones En C
« en: Jueves 23 de Junio de 2005, 01:16 »
Cita de: "pitukilloloco"
Para calcular el número de estudiantes es muy fácil. Dices que es un archivo binario, entonces me imagino que debes de tener el tamaño en caracteres del nombre y el otro campo ha de ser un entero ¿no? entonces sólo divides el tamaño de este archivo entre el número de bytes que tiene cada registro (tamaño en bytes del campo nombre más el tamaño en bytes que ocupa el entero del identificador) y el resultado es el número de estudiantes. Lo que no está claro en lo que expusiste es de donde se va a sacar la información de las calificaciones de cada alumno. Tampoco me queda claro lo que entiendes por "cursos" y "asignaturas". Cuando llevé la carrera de computación esta se componía de ciertas materias (por ejemplo Cálculo I, Álgebra I, Programación I, Hardware I) que tenías que cursar cada semestre, y cada semestre iban cambiando estas materias ¿qué podría entender por cursos y asignaturas con este esquema?
Veras son 6 cursos, y 5 asignatura por curso, se trata de una matriz tridimensional que dice en cada fila aparecen las 5 calificaciones de cada
alumno, en cada columna la calificacion correspondiente a cada asignatura, y una tercera dimensión las calificaciones correspondientes a cada curso.

Ejemplo curso 1, asignatura calculo, fisica, programacion, algebra, ingles
entiendes ahora lo que quise decir.

Respecto a lo que me dices, entonces lo de calcular el numero de estudiantes en C, es facil, no?

Gracias por responder.

13
C/C++ / Matriz De Tres Dimensiones En C
« en: Miércoles 22 de Junio de 2005, 19:13 »
Hola a todos tengo que hacer un ejercicio super interesante, pero necesito ayuda, porque estoy un poco perdida, resulta que se trata de una matriz dinamica que almacena una serie de notas obtenidas en unas asignaturas por un conjunto de alumnos. Me dice que las filas de la matriz, son 6 que s el numero de cursos por año, las columnas son las asignaturas que son 5 por año y otra dimension,es la de calificaciones correspondientes a cda curso.

tambien me dice que hay un fichero binario que contiene el nombre del alumno y un identificador.

Ej:
Pepa 1
Luis 2
etc.

Me pide q calcule el numero de estudiantes q hay en el fichero, q cree la matriz e inserta las calificaciones de cada estudiante. en la fila de la matriz correspondiente al identificador del alumno en el fichero,
Si alguien se le da bien esto y me puede dar una orientacion, la idea la tengo pero no s como exponerla. Gracias.

14
C/C++ / Error De Ejecucion De Listas En C
« en: Viernes 17 de Junio de 2005, 23:42 »
Hola a todos, que ta, estoy haciendo una practica de listas, parece q el programa compila perfectamente, pero a la hora de ejecutar, no se porque me da un error de ejecucion que pone
Nombre........................NULL
y no se porque es, creo que dice q es en la funcion visualizarNodo de una lista.

void visualizarNodo(struct lista *cabeza)
{

   
        printf("\n Nombre..........: %s", cabeza->nombre);
         printf("\n Apellido1.......: %s", cabeza->ape1);
         printf("\n Apellido2.......: %s", cabeza->ape2);
         printf("\n Edad............: %d", cabeza->edad);
       printf("\n");      
      
}No se pero si alguien puede ayudarme, porfa que lo haga, pq no se pq da ese tipo de error.
 gracias

15
C/C++ / Re: Relacionar Dos Ficheros De Texto En C
« en: Martes 14 de Junio de 2005, 18:33 »
Cita de: "JuanK"
si ya tienes la idea ;)
Pero no me funciona, porfi, me puedes decir como seria exactamente la funcion.
Gracias

16
C/C++ / Re: Relacionar Dos Ficheros De Texto En C
« en: Martes 14 de Junio de 2005, 16:42 »
Cita de: "JuanK"
debes tener abiertos los tres archivos y a medida que sacas registros de uno, saces los del otro, es decir:

1- buscas la matricula del automovil en el archivo d automoviles
2- con la matricula buscas en el archivo de autos-nif el NIF correspondiente a esa matricula
3- con el nif buscas en la tabla de nif los datos que faltan.

Por supues que hay muchas maneras de hacerlo, todo depende de comoq uieras y del tamaño los archivos, si son pequeños (menos de 2 mb por archivo) lo que puedes hacer  es cargar todos los archivos, cada uno en un array en memoria y luego hacer las busquedas sobre los arrays.

Si quieres algo mas profesional podrias hacer un ordenamiento de datos y usar algoritmos de busqueda.. pero te quitaria mas tiempo.
Lo primero gracias por responderme, veras seria una cosa asi, en C:

[CODE]
fp1 = fopen("vehiculos.txt", "r");

   fp2 = fopen("propietarios.txt", "r");

   fp3 = fopen("vehiculosPropietario.bin", "rb");

   while(fscanf(fp1, "%s %d %f", c1.tipo, &c1.matri, &c1.coste) == 3)
   {
      
      while(fscanf(fp2, "%s %s %s %s", p1.nombre, p1.apellidos, p1.NIF, p1.direccion) == 4)
      {
         while(fread(&bin, sizeof(struct vehiculoPropietario),1, pf1)==1)
         {

         if(c1.matri == matri)
            {
               encontrado = 1;
               c1.matri = bin.matri;

                 if(strcmp(bin.NIF,p1.NIF )==0){
                                            imprimirCoche(matri);
                                           imprimirCliente(bin.NIF);

Seria algo asi???

17
C/C++ / Re: Relacionar Dos Ficheros De Texto En C
« en: Martes 14 de Junio de 2005, 14:30 »
Cita de: "JuanK"
si ;)
Vale pero como se hace en C, es q tengo dudas acerca de ello.

18
C/C++ / Relacionar Dos Ficheros De Texto En C
« en: Martes 14 de Junio de 2005, 13:51 »
Hola buenas, tengo un problemilla a la hora de hacer una funcion, resulta que me piden, que teniendo un fichero de texto de clientes (nombre, apellidos, dni, y direccion) y uno de coches(tipo, matricula, coste), debo visualizar dad su matricula un coche, y su clienre correspondiente. Y bueno tengo la idea, de que si tengo q abrir los dos ficheros, primero en el de coches, buscar la matricula, pero luego, me pierdo a la hora de relacionar, para buscar el Nif en el de clientes, y q me muestre aquel cliente q tiene ese coche.

Tambien cuenta con un registro binario, (matri, NIF), tengo q hacer uso de este, para relacionar los otros?.

Aqui pongo el codigo q he hecho, si alguien puede ayudarme, para decirme donde tengo el fallo, no consigo q me ejecute bien.

[CODE]
int consultaCocheCliente(int matri)
{
   FILE *fp1, *fp2, *fp3;
   struct vehiculo c1;
   struct propietario p1;
   struct vehiculoPropietario bin;
   
   int coincide = 0;

   fp1 = fopen("vehiculos.txt", "r");

   fp2 = fopen("propietarios.txt", "r");

   fp3 = fopen("vehiculosPropietario.bin", "rb");

   while(fscanf(fp1, "%s %d %f", c1.tipo, &c1.matri, &c1.coste) == 3)
   {
      if(c1.matri == bin.matri)
      {

        while(fscanf(fp2, "%s %s %s %s", p1.nombre, p1.apellidos, p1.NIF, p1.direccion) ==4)
        {
          if(strcmp(p1.NIF, bin.NIF)==0)
          {

                 imprimirCocheMatricula(bin.matri);
                 imprimirPropietarioNIF(p1.NIF);
                coincide = 1;
          }            
        }
      }         
   }
    return(coincide);
   fclose(fp1);
   fclose(fp2);
   fclose(fp3);
}
Gracias
Saludos Maria

19
C/C++ / Re: Matrices Tridimensional En C
« en: Viernes 10 de Junio de 2005, 16:46 »
Cita de: "fuhrer"
Hola que tal.

Lo unico que debes hacer es pasar los datos a tu misma imagen o a otra, dependiendo de como lo quieras hacer. Por ejemplo, si tienes una imagen de 256X256, puedes hacer algo como esto:
Código: Text
  1.  
  2. void Binariza(int **I, int umbral){
  3.      int i, j;
  4.      for(i = 0;i &#60; 256;i++)
  5.         for(j = 0;j &#60; 256;j++)
  6.            if(I[i][j] &#60; umbral)
  7.              I[i][j] = 0;
  8.            else I[i][j] = 255;
  9.      }
  10.  
  11.  
Y eso es todo.

Hasta luego.
Muchas gracias, eres muy amable, pero una pregunta, si segun creo el caso es que la imagen es una matriz tridimensional, habira que modificar un poco lo que tu me has escrito no?.

Saludos desde España. Maria

20
C/C++ / Matrices Tridimensional En C
« en: Miércoles 8 de Junio de 2005, 19:55 »
Hola a todos, a  ver como explico yo esto, resulta que tengo que hacer una practica que va sobre matrices tridimensionales en C, pues bien, la reserva ya se como se hace, en este caso es asi:

byte reservaMatriz(byte ***imagen, int f, int c)
  {    int i;
 
      *imagen = (byte **)malloc((f)*sizeof(byte *));
      for(i=0; i< f; i++)
      {
         (*imagen) = (byte *) malloc(c* sizeof(byte));
      }
   
  }

La matriz se llama imagen,y la funcion para guardarla en un fichero es esta:
se le pasa el nombre del fichero, la matriz, el numero d efilas y columnas y el nivel de gris de la imagen.

void crearFicheroMixto(char *fichero, byte **imagen, int f, int c, int n_gris)
  {
   /*aqui la imagen se pasa como puntero doble pq ya no lo vamos a modificar*/
   
       char cadena[10]; //para el comentario de la cabecera
    FILE *pf;
    int i;
 
    pf = fopen(fichero, "w"); /*abrimos el fichero para escritura en modo texto*/   
    if(pf == NULL)
    {
       printf("\nError de apertura, del fichero %s \n", fichero);
      exit(-1);
    }
    fprintf(pf, "%s\n", "P5");
   fprintf(pf, "%d %d\n", c, f);
   fprintf(pf, "%d\n", n_gris);
   
   /*escribimos la parte binaria*/
   
   for(i=0; i<f; i++)
   {
     fwrite(imagen, sizeof(byte), c, pf);
   }
   fclose(pf); /*cerramos el fichero*/
}

Pues bien, mi problema esta, que no se muy bien como enfocar ahora esto, el proceso de binarizacion, si alguien sabe darme alguna idea, se lo agradeceria.Muchas gracias

Binarización
Consiste en trasformar una imagen de niveles de gris en una imagen binaria, esto es, en la que tan solo hay dos niveles de gris: 0 (negro) y 255 (blanco). La transformación se realiza según la función:
 0 siI(i, j)<=t

255 siI()i, j >t
Siendo I(i,j), el valor de luminosidad del pixel colocado en las coordenadas (i,j) de la imagen, y t el valor de umbral para la binarización.

21
C/C++ / Re: Listas Relacionadas Con Ficheros En C
« en: Miércoles 8 de Junio de 2005, 19:43 »
Cita de: "pitukilloloco"
Si tu problema consiste en cómo escribir registros a un archivo, aquí te paso una liga, en este mismo foro, de un sencillo programa en C que efectúa altas, bajas y modificaciones en un archivo.
http://foros.solocodigo.com/index.php?showtopic=15531
 Si quieres insertar un registro en alguna posición del archivo, entonces necesariamente tienes que crear otro archivo; pasarle todos los registros a ese archivo hasta la posición donde quieres insertar el nuevo registro; insertarle el registro; copiar los registros restantes; borrar el archivo antiguo y renombrar el nuevo. Como ves, esto es muy ineficiente cada vez que insertes un registro. Una manera de hacerlo más eficiente es crear un archivo de índices que maneje el de los registros y cuando modificas dando de alta, insertando o dando de baja algun registro manterer ordenado el archivo de índices. ¿esto responde a tus dudas?
Gracias me has sido de gran ayuda, si no te importa me voy a aatrever a pedirte otro favor, es sobre matrices tridimensionales, tengo que hacer una practica, y es un poco compleja, sobre todo pq no entiendo muy bien lo de las matrices tridimensionales, si estas interesado en ayudarme, respondeme esto,
gracias por toedo

22
C/C++ / Re: Listas Relacionadas Con Ficheros En C
« en: Lunes 6 de Junio de 2005, 21:31 »
Cita de: "pitukilloloco"
Bueno, eso sí lo entiendo, pero yo te preguntaba cómo tenías pensado hacerla ¿usando memoria dinámica para crear los elementos en memoria? si va a ser dinámica en memoria ¿por qué preguntabas que no sabias como escribir en un archivo?
Si sabes lo que pido, por favor, ayudame, si que es memoria dinamica, pero necesito que el archivo se actualice cada vez que inserto, o elimino de la lista, eso es lo que no se hacer

23
C/C++ / Re: Listas Relacionadas Con Ficheros En C
« en: Miércoles 1 de Junio de 2005, 17:28 »
Cita de: "pitukilloloco"
No acabo de entenderte bien. Vas a leer toda esa información desde un archivo de texto ¿verdad? Ahora, al leerlos ¿vas a crear dinámicamente en memoria cada elemento que contenga información de la estructura y los vas a enlazar para crear la lista? ¿en qué momento vas a insertar al principio o al final o visualizar la lista por apellido? ¿para que necesitas que escriba en el fichero si todo lo manejas en memoria?
Yo lo que necesito es crear la lista, y al crearla incluir la lectura e insercion de todos los registros existentes en el fichero.
Por ejemplo si tengo

El fichero listas.txt es este

maria jimenez moral 24
jesus leon muñoz 30

Pues q a la hora de insertar al principio, si meto otro elemento mas por ejemplo
luis delgado moreno 50

que lo inserte al principio de la lista, considerando el fichero listas.txt

luis delgado moreno 50
maria jimenez moral 24
jesus leon muñoz 30

se quedaria asi la lista.
Espero que me hayas entendido.
Gracias pòr responderme

24
C/C++ / Listas Relacionadas Con Ficheros En C
« en: Miércoles 1 de Junio de 2005, 14:40 »
Hola a todos, que tal, vereis tengo un problemilla, tengo hecha una practica de listas, que tiene q hacer una serie de cosas,insertar al principio, insertar al final, insertar por apellido1, borrar por apellido1, visualizar por apellido1, etc. La cuestion es que me piden que cree la lista, a partir de los datos incluidos en un fuichero texto, es decir, que la funcion crear Lista, debe incluir la lectura e inserción de todos los registros que existe en el fichero.
Pues bien yo tengo la practica entera, pero no he conseguido que escriba en el fichero, solo que lo lea del fichero, asi que les pongo el codigo que tengo de la funcion cogerDatosTexto, y si alguien sabe como enfocar la funcion crear Lista, por favor que m eche una mano.

Código: Text
  1.  
  2. #include &#34;listas.h&#34;
  3.  
  4. void cogerDatosTexto(struct lista **cabeza)
  5. {
  6.  
  7.     FILE *p; //declaro un puntero al fichero
  8.     struct lista *actual;
  9.     struct lista *aux;
  10.   char nombre[15];
  11.   char ape1[20];
  12.   char ape2[20];
  13.   int edad = 0;
  14.  
  15.  if((p=fopen(&#34;listas.txt&#34;,&#34;r&#34;)) == NULL) // abro para lectura
  16.  {
  17.    printf(&#34;&#092;n Error al abrir el archivo&#092;n&#34;);
  18.    exit (1);
  19.  }
  20.  
  21.   *cabeza=NULL;
  22.  
  23.     while(fscanf(p,&#34;%s %s %s %d&#34;,nombre,ape1,ape2,&edad)== 4)
  24.     {
  25.     //reservamos espacio para el nuevo elemento
  26.     actual = nuevoElemento();
  27.        
  28.      strcpy(actual-&#62;nombre,nombre);
  29.     strcpy(actual-&#62;ape1,ape1);
  30.     strcpy(actual-&#62;ape2,ape2);
  31.     actual-&#62;edad=edad;
  32.     actual-&#62;sig = NULL;
  33.     if(*cabeza ==NULL)
  34.       *cabeza = actual;
  35.     else
  36.       aux-&#62;sig = actual;
  37.     aux = actual;
  38.   }
  39.    fclose(p);
  40.  
  41. }
  42.  
  43.  
  44.  


Aqui les pongo el fichero de cabecera

Código: Text
  1.  
  2. /*Declaracion de estructuras y funciones*/
  3.  
  4. #include &#60;stdio.h&#62;
  5. #include &#60;stdlib.h&#62;
  6. #include &#60;conio.h&#62;
  7. #include &#60;string.h&#62;
  8. #include &#60;malloc.h&#62;
  9. #define SI 1
  10. #define NO 0
  11.  
  12. struct lista
  13. {
  14.     char nombre[15];
  15.     char ape1[20];
  16.     char ape2[20];
  17.     int edad;
  18.     struct lista *sig;
  19. };
  20. struct lista *nuevo;
  21. void cogerDatosTexto(struct lista **cabeza);
  22.  
  23. void introducirDatos(struct lista *dat);
  24.  
  25. struct lista* nuevoElemento();
  26. int presentaMenu(void);
  27. void crearLista(struct lista **cabeza);
  28. int listaVacia(struct lista *cabeza);
  29. void insertarPrincipio(struct lista **cabeza);
  30. void visualizarNodo(struct lista *cabeza);
  31.  
  32. void mostrarLista(struct lista *cabeza);
  33. void insertarFinal(struct lista **cabeza);
  34. void insertarPorApellido1(struct lista **cabeza,char *ape1);
  35.  
  36. void visualizarPorApellido1(struct lista *cabeza,char *ape1);
  37. struct lista* buscarPersona(struct lista *cabeza, char *ape1);
  38. void visualizarCabezaCola(struct lista *cabeza);
  39. void visualizarColaCabeza(struct lista *cabeza);
  40. void liberarMemoria(struct lista **cabeza);
  41. void liberarMemoriaRecursivo(struct lista **cabeza);
  42. void grabarLista(struct lista *cabeza, char *fichero);
  43. void borrarPorApellido1(struct lista **cabeza, char *ape1);
  44.  
  45. void liberarRecursivo(struct lista **cabeza);
  46. void liberar(struct lista **cabeza);
  47. int listaOrdenadaApellido(struct lista *cabeza);
  48.  
  49.  


No crean qe quiero q me hagan la practica, ya les digo solo necesito que al insertar datos, se insetten tamien en el fichero, poruqe yo tengo hecho todo el resto de la practica.
Muchas gracias

25
C/C++ / Re: Suma De Filas Y Columnas En Una Matriz
« en: Jueves 19 de Mayo de 2005, 17:00 »
Cita de: "kinita"
Necesito un algoritmo en turbo c++ que me lea una matriz de nxn y que me sume cada una de las filas y cada una de las columnas y me muestre los totales y la fila mayor y la columna mayor. Gracias
Hola veras, no te puedo hacer el codigo, porque lo necesitas en C++, pero si te pongo en C, el codigo de la funcion de sumar. Espero q te sirva de algo, de ayuda.
Saludos



void suma(double A [N][N], double B[N][N], int a, int b, int c)
{
  int i, j;
 for(i= 0; i<a ; i++)
   for(j=0; j<c ; j++){
   C[j] = 0;
      C[j] = A[j] + B[j];
   }
}

Páginas: [1] 2 3 ... 5