• Jueves 2 de Mayo de 2024, 04:29

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 ... 3 4 [5]
101
C/C++ / Re: Problemas Para Usar El While En C
« en: Martes 25 de Mayo de 2004, 17:20 »
Cita de: "patitofeo"
:hola: Bueno segun otro post tuyo, el bucle deberia romperse cuando el numero_anyo fuera mayor que 3 no es cierto?

entonces la condición del while seria (numero_anyo<=3);

y no '>3'  ni '>=3'.

Espero haberte ayudado. saludos

dinos si es eso.

 :whistling:
Hola,lo que yo necesito,es q el bucle se salga,si se le introduce un numero_anyo < de 3,ya q el numero de años q se cursa en la carrera,como minimo es 3.Y despues de ello,quiero q los datos,que me piden por pantalla,me los meta en un fichero binario.Gracias.

102
C/C++ / Re: Ayuda Uso De Matriz Tridimensional En C
« en: Martes 25 de Mayo de 2004, 17:17 »
Cita de: "juank"
la solucion que das no sirve por varias razones:
1- es lenguaje c++ y se requiere en c.
2- no estas creeando una matriz en ningun momento.
    Solo estas creando un vector, lo que haces es a lo que yo
    graciosamente llamo el metodo cochino, el cual es simular con un vector una
    matriz.
3- Como bien se ha informado i82maria se necesita hacerlo con tres apuntadores
    razon por la cual nuevamente tu solucion no sirve y se ratifica el punto nro 2.

4- Tu simulacion permite acceder a las coordenadas del vector de esta manera:
Código: Text
  1. cout &#60;&#60; setw(5) &#60;&#60; a[L*M*i + M*j + k];
  2.  
lo cual solo simula una matriz pero en ningun momento es tal, simplemente es un vector unidimensional.
si fuese una matriz, INCLUSO CREADA DINAMICAMENTE se accederia asi:
a[L][M][K]
que es como se observa en el link que he posteado, aunque solo se hace con matrices bidimensionales.
Gracias por entenderlo,pero insisto,en el link q me has dicho viene matriz bidimensional,y yo necesito matriz tridimensional,con lo cual a la hora de reservar memoria,creo que sera diferente,vuelve a mirar por favor,el codigo,q escribi antes a ver si es correcto.Muchas gracias.
Saludos desde Andalucia

103
C/C++ / Re: Ayuda Uso De Matriz Tridimensional En C
« en: Martes 25 de Mayo de 2004, 17:08 »
Cita de: "juank"
de la froma en como te mostre en el link de la pagina de teleport media esta hecho con puntero doble para hacer una matriz bidimensional,
para hacer una matriz tridimencional con el metodo no 'cochino'
sera como esta en ese link pero con un puntero triple y asignando un nuevo vector a la segunda dimension del vactor.

no es nada facil..
trata de entender el codigo fuente de la matriz bidimensional creada dinamicamente (en el link que cocoloque arriba)y una vez lo hayas entendido intenta crear el de tres dimensiones.

AHhhhhhhhhhhhhhhhhhhhhhh :scream:

ahora que leo tu post completo me doy cuenta que en ningun momenmto dices que la matriz tiene que ser creada dinamicamente o si?

Lo que pasa es que me deje guiar por el post de Noel Solw que trata de explicar algo asi...

lo siento lo que hay que hacer es esto:

Código: Text
  1.  
  2.  
  3.  
  4. K = numero de alumnos.
  5. L = numero de cursos.
  6. M = numero de asignaturas.
  7.  
  8. float datos[K][L][M];
  9.  
  10.  

Lo siento te estaba complicando mucho la vida para algo tan sencillo.
Juank,la matriz que tengo que manejar,debe ser dinamica, por eso creo que lo que te puse del puntero triple,queria saber si estaba bien.Por eso,te pedi,si podia mirar el codigo,es q tengo poca idea,de esto,y necesito un empujon para empezar la practica,una vez sepa si defino bien,lamatriz, y como reservar memoria,entonces ya podre  iniciarla.Al menos eso espero.De todos modos muchas gracias.

104
C/C++ / Re: Ayuda Uso De Matriz Tridimensional En C
« en: Martes 25 de Mayo de 2004, 17:06 »
Cita de: "Noel Solw"
La pregunta era sobre una "matriz dinamica tridemnsional",
por eso vuelvo a mi propuesta original.
Por supuesto, si la matriz es estatica, el problema es completamente trivial y puede resolvers perfectamente como dice el Sr. Ingeniero.
Como ejemplo, te envio un ejemplo de como manipular una matriza dinamica, llenarla de valores consecutivos y exponerla en la pantalla.
Exito ! ! !

// program matrix.cpp
// matriz dinamica tridimencional.
// written in Borland C++ - ver 4.5

#include <iomanip.h>
#include <iomanip.h>

int GetDim(char x)
{
   int dim = -1;
   while(dim <= 0)
   {
      cout << x << " = ";
      cin >> dim;
   }
   return dim;
}   // GET DIM

void Init(int *a,int K,int L,int M)
{
   int counter = 0;
   for(int i = 0;i < K;i++)
      for(int j = 0;j < L;j++)
         for(int k = 0;k < M;k++)
            a[L*M*i + M*j + k] = counter++;
}   // INIT

void Show(int *a,int K,int L,int M)
{
   for(int i = 0;i < K;i++)
   {
      for(int j = 0;j < L;j++)
      {
         for(int k = 0;k < M;k++)
            cout << setw(5) << a[L*M*i + M*j + k];
         cout << endl;
      }
      cout << endl << endl;
   }
   cout << endl << endl;
}   // SHOW

void main()
{
   int K = GetDim('K'),
       L = GetDim('L'),
       M = GetDim('M');
   cout << endl;
   int *a = new int[K*L*M];
   Init(a,K,L,M);
   Show(a,K,L,M);
   cout << "end of program - good bye ! ! !" << endl;
   delete []a;
}   // MAIN
Te agradezco tu ayuda Noel,pero insisto mi practica es en lenguaje C, no en lenguaje C++,ydebo manejar una matriz dinamica tridimensional, en C.
Gracias de todos modos.

105
C/C++ / Re: Ayuda Uso De Matriz Tridimensional En C
« en: Martes 25 de Mayo de 2004, 12:19 »
Cita de: "juank"
pues asi como lo haces no..
asi:
Código: Text
  1.  
  2. float *M;
  3. M =(float*) malloc(a*b*c*sizeof(float));
  4.  
  5.  

ya asi el resto depende de como lo uses...

debes tener cuidado en no superar los limites de la matriz.
Pero al ser una matriz tridimensional no se deben usar punteros triples?. Por favor, cuando puedas me lo aclaras, porque a mi me habian dicho que era con puntero triple. Gracias.
Saludos desde Andalucia

106
C/C++ / Re: Problemas Para Usar El While En C
« en: Lunes 24 de Mayo de 2004, 21:33 »
Cita de: "patitofeo"
:hola: Bueno segun otro post tuyo, el bucle deberia romperse cuando el numero_anyo fuera mayor que 3 no es cierto?

entonces la condición del while seria (numero_anyo<=3);

y no '>3'  ni '>=3'.

Espero haberte ayudado. saludos

dinos si es eso.

 :whistling:
Lo que yo quiero es que el bucle se salga, cuando le meta un numero <3, y entonces me meta esos datos, en el fichero binario. Por favor,no se si etoy haciendo bien, dandole a citar,para responderle a usted,pero es que no se como se responde directamente a la persona. Si usted me lo puede decir, asi lo sabre para la proxima. Muchas gracias por su ayuda.

107
C/C++ / Re: Problemas Para Usar El While En C
« en: Lunes 24 de Mayo de 2004, 17:05 »
Cita de: "Diabliyo"
Hola:

Como recomendacion especifica tambien el error que teda...NO SOLAMENTE ki que quieras que haga...

El programa segun veo SIEMPRE escribe un fichero....  Debes de poner despues de WHILE el dato: fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);... ya que si te da una edad de 4, 5, 6.....N..... entonces se REPETIRA, hasta que nos de una edad de: 0, 1, 2,, entonces parara y escribira el dato en el fichero...

byeeeeeeee
Hola he hecho lo que tu me has dicho, pero nada,no me funciona, si que me compilar, pero no me coge bien la condición de salida, de while.

Asi es como he dejado el codigo, y no tengo ni idea porque no me coge bien, la condición de salida de do-while.

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo);
   
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
   
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
 }while(numero_anyo >=3);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}

Si puedes echale un vistazo, y me dices donde puedo tener el error. Vale?.
Gracias, saludos i82maria

108
C/C++ / Re: Ayuda Uso De Matriz Tridimensional En C
« en: Lunes 24 de Mayo de 2004, 17:00 »
Cita de: "juank"
K = numero de alumnos.
L = numero de cursos.
M = numero de asignaturas.

y suponiendo que las clasificaciones son int

int *p = (int *)malloc (K*L*M);

aunque esta es una manera sucia, lo mejor es hacer esto pero adicionandole un nuvo vector al sebgundo creado... nada facil para un principiante.:
http://teleportmedia.com/foro/viewtopic.php?t=223
Gracias por tu respuesta, la verdad es que tienes razon es dificil para una principiante como yo, lo del uso de matriz tridimensional. Pero según veo, sería una cosa asi:

float ***M;
M =(float***) malloc(a*b*c*sizeof(float));

void pintaMatriz(float ***Matriz, int a, int b, int c);

{
 int i, j, k;
 for(i=0; i<a; i++)
    for(j=0; j<b; j++)
      for(k=0; k<c; k++)
      {
         printf("\t\t m[%d][%d][%d]: %f\n": ", i,j,k, Matriz[j][k]);
      }
    }
   }
}

Por favor, dime funcionaria una cosa asi, a la hora de poder usar la matriz, y asi averiguar las calificaciones de los alumnos, en casa curso, y en cada asignatura.
Gracias, saludos i82maria

109
C/C++ / Uso De Un Bucle Do -while En C
« en: Domingo 23 de Mayo de 2004, 14:51 »
Hola, tengo un problema con el bucle do-while en C, quisiera que si alguien puede mirar el siguiente codigo, me diga si sabe donde está el error, porque no me funciona la condición de salida del bucle.

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo);
   
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
   
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
 }while(numero_anyo >3);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}







Mi intención es que el bucle se salga cuando el numero_anyo sea menor de 3, y lo escriba en el fichero binario.Puesto que como minimo el alumno debe estar tres años en la carrera ya que es una carrera de tres años.
Bueno, pues eso,si alguien es tan amable de echarme una manilla, por favor, que responda. Muchas gracias. Saludos desde Andalucia

110
C/C++ / Problemas Para Usar El While En C
« en: Domingo 23 de Mayo de 2004, 04:09 »
El do - while, se puede utilizar una variable entera como condición de salida?. Es que a mi no me funciona este codigo.


#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo);
   
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
   
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
 }while(numero_anyo !=0);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}







Lo que pretendo es que me presente los datos de arriba por pantalla, hasta que le meta un numero de años menor de 3, entonces se pare. Y esos datos los meta en un fichero binario.
Si alguien me puede ayudar, por favor,que lo haga es para un trabajo de fin de curso,de carrera.Para aprobar la asignatura de programacion.
Gracias

111
C/C++ / Tengo Problema Con Fichero Binario
« en: Sábado 22 de Mayo de 2004, 21:50 »
Bueno, aqui pongo el codigo, a ver si alguien me puede ayudar, porque me compila pero no me hace lo que necesito.

EL codigo es este
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo);
   
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
   
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
 }while(numero_anyo !=0);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}



Necesito que me pregunte por pantalla los datos, y me los meta en el fichero binario, y no lo consigo., Por favor,si alguien puede echarme una mano, se lo agradeceria, en ese caso, aqui pongo el codigo de la practica, por si alguien puede echarme una mano. Venga gracias. :huh:

112
C/C++ / Ayuda Para Completar El Codigo
« en: Domingo 16 de Mayo de 2004, 22:46 »
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo);
   
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
   
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
 }while(numero_anyo >3);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}


El codigo es este, me compila, pero no me hace lo que quiero. Quiero que me pide por teclado los datos, del alumno, y los meta en un fichero binario. La condicion de salida del do-while,es q el numero de años introducido,cuando sea menor de 3 se salga. Eso es lo que pretendo,pero no lo consigo.
Si alguien me puede ayudar, que vea este codigo, y me escriba a mi correo.
Gracias, ruego me contesten lo antes posible  :hola:

113
C/C++ / Necesito Ayuda, Fichero Binario
« en: Domingo 16 de Mayo de 2004, 20:49 »
El problema que tengo es el siguiente, tengo un fichero texto Alumnos.txt, en el que tiene el siguiente aspecto:
1 30957703
2 45698567
3 56985687
Es decir, el primer campo, son el numero identificativo de un alumno, y el segundo campo es el dni.
Pues bien, se necesita crear un fichero binario,alumnos.bin, que deberá recoger el dni del fichero texto alumnos.txt, y preguntar al usuario apellidos, nombre y numero de años.

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo);
   
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
   
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
 }while(numero_anyo !=0);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}








Por favor, si alguien lo sabe, que me lo diga, que lelvo todo el fin de semana, con el dichoso programa. Y estoy muy agobiada. Gracias

114
C/C++ / Ayuda Uso De Matriz Tridimensional En C
« en: Domingo 16 de Mayo de 2004, 20:22 »
Hola a todos, necesito ayuda, porque tengo que hacer una práctica en lenguaje de Programación C, que se trata de una matriz dinámica tridimensional , la primera dimensión está reservada para los alumnos, la segunda dimensión representa un curso concreto, y la terecera representa una asignatura. Todo esto es, porque se desean guardar calificaciones de alumnos, que cursan una titulación de 3 años lectivos.
Y a raiz de estos datos, tengo que averiguar las calificaciones de cada alumno, en cada curso, y en cada asignatura.


Si alguien quiere o puede ayudarme a comenzar la practica, es que no tengo mucha idea de matriz tridimensional, y una vez la utilice para averiguar las calificaciones de cada alumno,en cada curso, y en cada asignatura, entonces podré iniciar la practica. Si alguien está interesado en seguir ayudandome a elaborar la practica, pues que lo diga, y le envio el enunciado de la misma.
Muchas gracias.Saludos i82maria :lightsabre:

115
C/C++ / Re: Practica De Matriz Tridimensional En C
« en: Sábado 15 de Mayo de 2004, 01:50 »
Vereis mi problema,está en que tengo que coger y leer de un fichero de texto, el dni, y meterlo en un fichero binario. A partir de ahi tengo que crear una matriz tridimensional, y luego utilizarla. Y no se como utilizarla.

116
C/C++ / Ayuda Por Favor!!!!
« en: Sábado 15 de Mayo de 2004, 01:43 »
Por favor, si alguien me puede ayudar, que lea mis peticiones de antes. Y me conteste a mi correo. Necesito pasar de un fichero texto, en el se almacena un numero identificador, y el dni, de una serie de alumnos. Tengo que recoger el DNI, de ese fichero texto, y crear un fichero binario a partir del fichero texto, cogiendo el DNI del fichero texto, y pasandolo al binario. Pero no sé como hacerlo.
El fichero texto tiene este aspecto.
1 30458985
2 25698896




Es decir, se me ha ocurrido una cosa asi:

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   exit(1);
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   exit (1);
   
}


do {

 while((car = fgetc(fp) != 'n'))  /*se lee del fichero texto*/
  {    
      if(isspace(car) != 0) //si c es un espacio en blanco
      //car == " ") /*si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<10; i++)
         {
             car = fgetc(fp);
   
         
         }
         
     strcat(dni, car);
       /*PERO AQUI EL COMPILADOR ME DA UN ERROR, PORQUE NO ME DEJA*/
/*CONCATENAR UNA CADENA DNI, CON UN CARACTER*/
/*YO LO QUE PRETENDO ES LEER EL DNI,DEL FICHERO TEXTO,Y ALMACENARLO
EN UNA VARIABLE,PARA EL FICHERO BINARIO*/
           
        fwrite(&dni, sizeof(char), 1, ficbin);
         
     
       printf("Introduzca los apellidos: ");
        gets(d.apellidos);
        printf("Introduzca el nombre: ");
        gets(d.nombre);
        printf("Introduzca el numero de años: ");
        scanf("%d",&d.numero_anyo);
     }
    }/*cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}



Por favor si alguien me ayuda a encontrar el error, o la manera de que me funcione.

117
C/C++ / Practica De Matriz Tridimensional En C
« en: Viernes 14 de Mayo de 2004, 20:50 »
Hola, bueno, lo primero me voy a presentar, soy nueva en el foro, y tampoco sé muy bien, como se usa, Pero vereis, soy alumna de informática, y tengo que hacer una práctica de programacion en lenguaje C. Estoy un poco perdida, porque es mi primer año, y necesito ayuda, porque estoy agobiadilla. Yo voy a enviar el enunciado de la practica y adjunto tambien lo que yo llevo hecho. Si alguien me puede ayudar, se lo agradecería enormemente, porque es muy improtante para mi.

Esto es lo que yo llevo hecho, y mi primer problema, es que no consigo la linea
/*/*/*/* esta me da un error al compilar. Porque yo necesito sacar el dni, del fichero de texto para meterlo en el binario. Sé que es difícil, pero si alguien es un experto, me podría ayudar. Gracias.

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#define TAMANYODNI 10

struct alumno
{

  char DNI[10];
  char nombre[25];
  char apellidos[50];
  int numero_anyo;
 
 };
 
 typedef struct alumno DATOSALUMNO;
 

 
main()
{

FILE *fp;
FILE *ficbin;
DATOSALUMNO d;
char car;
char dni[10];
int i;
char nombre[25];
char apellidos[50];
int numero_anyo;

if((fp=fopen("alumnos.txt", "r"))== NULL)
{
    printf("El fichero alumnos.txt no existe\n"); //abrimos el fichero texto para lectura
   return -1;
}
   
if((ficbin =fopen("alumnos.bin", "wb"))== NULL)
{
    printf("El fichero no se puede crear\n"); //abrimos el fichero texto para lectura
   return -1;
   
}


do {

 while((car = fgetc(fp) != '\n'))  /*se lee del fichero texto*/
  {    
      if(isspace (car) == 0) //si c es un espacio en blanco
      /*car == " ") si c es un espacio en blanco*/  
      {
     
         
   for(i = 0; i<TAMANYODNI; i++)
         {
             dni = fgetc(fp);
   
         
         }
        strcpy(d.DNI, dni);  
 }/*cierre del if*/  
} /*cierre del while*/
         
 do{        
       printf("Introduzca los Apellidos: ");
        gets(apellidos);
    printf("\n");
        printf("Introduzca el Nombre: ");
        gets(nombre);
    printf("\n");
        printf("Introduzca el Numero de años: ");
        scanf("%d",&numero_anyo);
   
    strcpy(d.nombre, nombre);
    strcpy(d.apellidos, apellidos);
    d.numero_anyo = numero_anyo;
   
   
    fwrite(&d, sizeof(DATOSALUMNO), 1, ficbin);
   
 }while(numero_anyo !=0);
  /* }cierre del while*/
   
}while(!feof(ficbin));

 
 fclose(ficbin);
 fclose(fp);
 
}









Adjunto el enunciado de la practica.

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