• Miércoles 15 de Mayo de 2024, 18:16

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 - alexancoC++

Páginas: [1]
1
Visual C++ / Pilas
« en: Jueves 24 de Mayo de 2007, 01:10 »
Hola de nuevo, tengo que hacer un programa donde ir aplilando numeros uno detras de otro (con pilas) hasta que se entre un caracter. Tengo hecho el siguiente programa:

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6.  
  7.  
  8. struct Tpnode
  9. {
  10.   int valor;
  11.   Tpnode *siguiente;
  12. };
  13.  
  14. void push(Tpnode *, int);
  15.  
  16. void main()
  17. {
  18.   int numero=0;
  19.   Tpnode *pila1=NULL;
  20.   Tpnode *pila2=NULL;
  21.   do
  22.   {
  23.     printf("Introduce una cifra, caracter para salir\n");
  24.     scanf("%d",&numero);
  25.     push(pila1,numero);
  26.   }while(numero>=0 || numero<=9);
  27.  
  28. }
  29.  
  30. void push(Tpnode *pila1, int cifra)
  31. {
  32.   Tpnode *aux=NULL;
  33.   if(!(aux=new Tpnode))
  34.   {
  35.   printf("ERROR, no hay espacio!\n");
  36.   }
  37.   else
  38.   {
  39.     aux->valor=cifra;
  40.     *pila1=*aux;
  41.   }
  42. }
  43.  
  44.  

Lo paso correctamente en la función push? Lo tengo que pasar a pila1 mediante aux y sería algo parecido como lo que e hecho?

gracias, saludos!!

2
Visual C++ / Listas Dinámicas.
« en: Martes 15 de Mayo de 2007, 11:46 »
Hola, tengo una consultilla sobre listas dinámicas.

Tengo la siguiente estructura:

Código: Text
  1.  
  2. struct TNodo
  3. {
  4.   char Nombre[35];
  5.   char Telefono[9];
  6.   char Ciudad[20];
  7.   char Calle[35];
  8.   char Codigo[5];
  9.   TNodeLlista *Siguiente;
  10. };
  11.  
  12.  

Tengo que crear una función que permita añadir un nuevo nodo con la información de la estructura. Pero la lista tiene que estar ordenada alfabeticamente por el nombre.
Hice la función añadir con la función "new":
Código: Text
  1.  
  2. void afegir(TNodo *aux)
  3. {
  4.   if(!(aux=new TNodo))
  5.   {
  6.     printf("Espacio insuficiente!\n");
  7.   }
  8.   else
  9.   {
  10.     scanf("%d",&aux->TNodo);
  11.     printf("Nombre persona?\n");
  12.     scanf("%c",&TNodo->Nombre);
  13.     printf("Telefono?\n");
  14.     scanf("%c",&TNodo->Telefono);
  15.     printf("A que ciudad vive?\n");
  16.     scanf("%c",&TNodo->Ciudad);
  17.     printf("Calle?\n");
  18.     scanf("%c",&TNodo->Calle);
  19.     printf("Codigo?\n");
  20.     scanf("%c",TNodo->Codigo);
  21.   }
  22.  
  23.  
Sería correcto para añadir un nuevo nodo? Como sería para ordenarlo alfabeticamente por el nombre?

Muchas gracias, saludos.

3
C/C++ / Re: Ficheros
« en: Martes 1 de Mayo de 2007, 22:37 »
Para pasar a un fichero un vector de n elementos mediante un fwrite y para leerlo mediante un fread, se tiene que pasar valor por valor con un for, o no es necesario?

gracias

4
C/C++ / Re: Ficheros
« en: Martes 1 de Mayo de 2007, 12:47 »
Primero e pasado los nombres del vector con un for y los e escrito en el fichero con un fprintf.
Luego e vuelto a abrir el fichero y lo e ido leyendo con un fscanf, mediante un while con la condición que sea diferente de EOF, y los e ido printando en pantalla.

Correcto? o algo parecido?

saludos!

5
C/C++ / Re: Ficheros
« en: Martes 1 de Mayo de 2007, 12:10 »
Pero solo quiero coger de la estructura los Nombres de los alumnos, no toda entera.
Quiero leer los nombres del vector i escribirlos en el fichero Nombres.txt.
Luego abrir el fichero e ir leyendo e imprimiendo por pantalla el resultado de este fichero.

Gracias.

6
C/C++ / Ficheros
« en: Lunes 30 de Abril de 2007, 18:46 »
Hola, una consulta sobre ficheros. Tengo la siguiente estructura:

Código: Text
  1.  
  2. #define N 15
  3. #define LON 25
  4.  
  5. struct alumno
  6. {
  7.   char Nombre[LON];
  8.   long dni;
  9.   int Edad;
  10. };
  11.  
  12.  

y el siguiente vector donde guardo los alumnos:
Código: Text
  1.  
  2. alumno Clase[N];
  3.  
  4.  

El caso es que le paso los datos de los alumnos a dicho vector.
Después de pasarle los datos, tengo que hacer una función que lea los nombres de los alumnos y los escriba en el fichero Nombre.txt. Luego los irá leyendo y imprimirá el resultado por pantalla.
Mi pregunta es como tengo que hacerlo para que los lea y luego los escriba en dicho fichero? con un fscanf i fprintf? Como se debería hacer?

Muchas gracias, saludos.

7
Visual C++ / Re: Estructuras
« en: Jueves 19 de Abril de 2007, 23:13 »
Hola de nuevo!!!! Ya he acabado la practica. Pero al parecer cundo le paso los valores a la estructura assignatura no los debe leer bien. Me los acepta y no me da errores, pero al calcular la media de las notas no me encuentra ningun valor de assignatura.
Es posible que el problema este al llamar esta función? NO PUEDO UTILIZAR VARIABLES GLOBALES!!!
La función es la siguiente:

Código: Text
  1.  
  2. void menu_assignatures(assignatura t[M])
  3. {
  4.   int opcio;
  5.  
  6.   while(opcio!=3)
  7.   {
  8.     printf("Estas al menu Assignatures!\n\n");
  9.     printf("Quina opcio vols realitzar?\n\n");
  10.     printf("1. Introduir assignatura.\n");
  11.     printf("2. Modificar assignatura.\n");
  12.     printf("3. Sortir.\n");
  13.     scanf("%d",&opcio);
  14.  
  15.     switch(opcio)
  16.     {
  17.       case 1:
  18.                                   {
  19.       int codi_in=0,c=0,i=0,j=0,m=0;
  20.  
  21.       printf("Entra el codi de l'assignatura:\n");
  22.       scanf("%d",&codi_in);
  23.       c=buscar_codi(t,codi_in);
  24.       while(c==1)
  25.       {
  26.       printf("Assignatura ja introduida\n");
  27.       printf("Torna a introduir el codi\n");
  28.       scanf("%d",&codi_in);
  29.       c=buscar_codi(t,codi_in);
  30.       }
  31.       if(c==0)
  32.       {
  33.       if(i<40)
  34.       {
  35.       t[i].codi=codi_in;
  36.       printf("Introdueix el nom de l'assignatura:\n");
  37.       scanf("%s",t[i].Nom);
  38.       printf("Ara la nota de l'expedient:\n");
  39.       scanf("%f",&t[i].Nota);
  40.       printf("I per ultim lany en que la va realitzar:\n");
  41.       scanf("%d",&t[i].any);
  42.       i++;
  43.       }
  44.       else
  45.       {
  46.     printf("L'alumne no pot tenir mes assignatures\n");
  47.       }
  48.       }
  49.          
  50.       break;
  51.       }
  52.       case 2:
  53.       {
  54.       int busca_codi=0,b=0,i=0;
  55.  
  56.   printf("De quina assignatura vols modificar la nota i l'any?\n");
  57.       scanf("%d",&busca_codi);
  58.       b=buscar_codi(t,busca_codi);
  59.       if(b==1)
  60.       {
  61.       printf("Quina es la nova nota de l'alumne?\n");
  62.       scanf("%d",&t[i].Nota);
  63.       printf("I el nou any?\n");
  64.       scanf("%d",&t[i].any);
  65.       i++;
  66.       }
  67.       else
  68.       {
  69.       printf("Aquest codi no existeix!\n\n");
  70.       }
  71.       break;
  72.                     }
  73.       case 3:
  74.       {
  75.       break;
  76.       }
  77.     }
  78.   }
  79. }
  80.  
  81.  

A esta función la llamo asi:
Código: Text
  1.  
  2. menu_assignatures(Classe[i].Assignatures);
  3.  
  4.  
Y definida de la siguiente manera:
Código: Text
  1.  
  2. void menu_assignatures(assignatura []);
  3.  
  4.  

No se lo que puede pasar pero no debo hacer algo bien al llamar la función o dentro de ella.
Gracias de todos modos!!!!!
Saludos!

8
Visual C++ / Re: Estructuras
« en: Martes 17 de Abril de 2007, 12:53 »
Perfecto, ya no me da error!!!

Si tengo la siguiente estructura:

Código: Text
  1.  
  2. struct asignatura
  3. {
  4.   char Nombre[LON];
  5.   int codigo;
  6.   float Nota;
  7.   int año;
  8. };
  9.  
  10. struct alumno
  11. {
  12.   char Nombre[LON];
  13.   long dni;
  14.   int Edad;
  15.   float media;
  16.   asignatura Asignatures[M];
  17. }Clase[N];
  18.  
  19.  
Y quiero que me devuelva la nota media de las asignaturas que tiene, tendría que sumar la nota de todas sus asiganturas con un for dentro de cada alumno, y luego calcular la media y pasarla a Classe.media??

9
Visual C++ / Re: Estructuras
« en: Lunes 16 de Abril de 2007, 23:08 »
N lo tengo definido arriba de esta forma:

Código: Text
  1.  
  2. #define N 30
  3. #define M 40
  4. #define LON 25
  5.  
  6. bool buscar_codigo(alumno [],int );
  7.  
  8.  

Quizás tengo mal definida la función.
Para llamarlo lo hago de esta forma:

Código: Text
  1.  
  2. c=buscar_codigo(Clase[i].Asignatures,codigo_in);
  3. if(c==1)
  4. {
  5.   printf("Asignatura ja introducida\n");
  6.   printf("Vuelve a introducir el codigo\n");
  7.   scanf("%d",&codigo_in);
  8.                 c=buscar_codigo(Clase[i].Asignatures,codigo_in);
  9. }
  10.  
  11.  

Si el codigo existe vuelvo a llamar a la función. ¿Es así? ¿Se llama asi a la función y se define asi?

10
Visual C++ / Re: Estructuras
« en: Domingo 15 de Abril de 2007, 18:35 »
Hola de nuevo, sigo avanzando con la práctica. Recordando la estructura:
Código: Text
  1.  
  2. struct asignatura
  3. {
  4.   char Nombre[LON];
  5.   int codigo;
  6.   float Nota;
  7.   int año;
  8. };
  9.  
  10. struct alumno
  11. {
  12.   char Nombre[LON];
  13.   long dni;
  14.   int Edad;
  15.   float media;
  16.   asignatura Asignatures[M];
  17. }Clase[N];
  18.  
  19.  

Tengo que introducir una asignatura mirando que el codigo de la misma no exista. He pensado en hacer un bool como antes, sería esto?:

Código: Text
  1.  
  2. bool buscar_codigo(alumno Clase[],int num)
  3. {
  4.   int i;
  5.   for(i=0;i<N;i++)
  6.   {
  7.     if(Clase[i].Asignatures[i].codigo==num)
  8.     {
  9.       return true;
  10.     }
  11.   }return false;
  12. }
  13.  
  14.  
Esta función me da errooorrr!!!!!!

Después de comprobar que el codigo no esta, podría ponerle el nombre a la asignatura de esta forma?:

printf("Introduce el nombre de la asignatura:\n");
scanf("%s",&Clase.Asignatures.Nombre);

Gracias. Saludos.

11
C/C++ / Funcion Bool
« en: Sábado 14 de Abril de 2007, 13:48 »
Como defino una funcion tipo bool que me devuelva true o false. Por ejemplo en esta funcion:
Código: Text
  1.  
  2. ("que poner?") buscar(alumno Clase[],int num)
  3. {
  4.   int i;
  5.   for(i=0;i<N;i++)
  6.   {
  7.     if(Clase[i].dni==num)
  8.     {
  9.       return true;
  10.     }
  11.   }return false;
  12. }
  13.  
  14.  

Como defino esta funcion en el main para que la funcion buscar me devuelva un true o un false si encuentra el valor en la estructura?

A la funcion le paso un numero (que es un dni leido anteriormente) i el vector clase, y comprueva si existe o no en dicho vector. Pero no se bien como definir esta funcion con un bool!

Gracias. saludos

12
Visual C++ / Re: Estructuras
« en: Jueves 12 de Abril de 2007, 23:19 »
Una ultima pregunta.
Cuando pido el DNI al principio, se lo paso al vector clase asi?
Código: Text
  1.  
  2. printf("Introduce el dni\n");
  3. scanf("%d",&Classe[i].dni);
  4.  
  5.  
O no lo paso en el vector y lo paso como un scanf("%d",&dni) por ejemplo? Porque luego cuando hago la funcion buscar que reciba como parametro el vector de alumnos y el dni a buscar, de que forma se lo paso?

Muchisimas gracias!!!!!

saludos.

13
Visual C++ / Re: Estructuras
« en: Miércoles 11 de Abril de 2007, 23:38 »
Muchas gracias por tu ayuda!!!! me fue muy bien.

Pero una pregunta, como hago para cuando devuelva el booleano en un condicional me muestre los menús (con un if-else???).
Este punto es el que no acabo de entender muy bien.

Muchas muchas muchas gracias!!

Saludos.

14
Visual C++ / Estructuras
« en: Domingo 8 de Abril de 2007, 15:53 »
Buenas, tengo un problemilla con una práctica que estoy haciendo de estructuras.
Tengo la siguiente estructura:

Código: Text
  1.  
  2.  
  3. #define N 30
  4. #define LON 25
  5.  
  6. struct asignatura
  7. {
  8.   char Nombre[LON];
  9.   int codigo;
  10.   float Nota;
  11.   int año;
  12. };
  13.  
  14. struct alumno
  15. {
  16.   char Nombre[LON];
  17.   long dni;
  18.   int Edad;
  19.   float media;
  20.   asignatura asignaturas[40];
  21. }Clase[N];
  22.  
  23.  
  24.  

Primeramente tengo que definir un vector Clase donde se guardaran todos los alumnos, que como máximo seran 30. ¿Esta definido correctamente en la estructura de alumno (Clase[N])?

Posteriormente, el programa pide el DNI de un alumno, si este no existe se pide el nombre, la edad y luego se mostrará un menú de asignaturas (introducir asignatura, modificar, salir). Si el DNI introducido existe aparecerá directamente el menú de asignaturas.
¿Como miro si el DNI introducido después de pedirlo existe o no? ¿Tengo que tener en cuenta el vector clase que como máximo tiene 30?

¿Alguna idea de como hacerlo?

Gracias de antemano!!

Páginas: [1]