/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

catalogo de canciones

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
rochy



Registrado: 11 Feb 2006
Mensajes: 53

MensajePublicado: 06/09/2007 10:37 am
Título: catalogo de canciones

hola a todos, tengo k hacer lo sigt., pongo lo k tengo k hacer mas abajo y segun valla avanzando pondre lo que valla haciendo, para que me den sugerencias y me ayuden con los problemas que se me puedan presentar:P :

Tarea Laboratorio Desarrollar una aplicación en C para la administración de un catálogo de canciones. El catálogo tiene que guardar en un archivo los siguientes datos para cada canción: Título, Artista, Género. La aplicación debe permitir realizar tres acciones: Agregar una canción al catálogo, eliminar una canción del catálogo, y buscar canciones por cualquiera de los criterios (por título, por artista o por género). Para hacer más fácil el desarrollo pueden echarle un vistazo a los structs y también las librerías que se encuentran en . El formato del archivo queda a opción de ustedes..
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 241
Ubicación: Cono Sur

MensajePublicado: 06/09/2007 12:52 pm
Título:

Hola

Foro: "Trabajos de clase"???

Un saludo.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 07/09/2007 6:11 am
Título:

Habra que esperar algunos dias ya que indica que va a colocar sus avances.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
rochy



Registrado: 11 Feb 2006
Mensajes: 53

MensajePublicado: 07/09/2007 6:17 am
Título: estoy empezando

como veran no se gran cosa sobre c, pero voy probando,ahora mismo estoy probando para ver como creo un archivo para el catalogo para ir escribiendo dentro del mismo, este es el codigo de una prueba , el problema es k solo sale la pantalla negra como por dos seg. cuando lo compilo., a ver si me dan una manito (repito estoy probando), gracias desde ya.

#include<stdio.h>

int main(){

FILE *fopen(char *archivo, char *w);
printf("escriba algo---->");

int fputs(const char *archivo, FILE *stream);
return 0;

}
Volver arriba
cheroky



Registrado: 22 Sep 2005
Mensajes: 1372
Ubicación: En ecx esperando un call

MensajePublicado: 07/09/2007 6:19 am
Título:

Un manual de C te seria de GRAN ayuda.

S2.
_________________
- Explícito es mejor que implícito.
- Simple es mejor que complejo.
- Complejo es mejor que complicado.
- Plano es mejor que anidado.
- Ralo es mejor que denso.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 07/09/2007 6:36 am
Título:

Tiene toda la razon Cheroky ya que tienes algunos errores de concepto en el sentido de que tu programa solo incluye los prototipos de ciertas funciones:
Código:
FILE *fopen(char *archivo, char *w);

/* ... */

int fputs(const char *archivo, FILE *stream);

Estos (los prototipos o firmas) le indican al compilador, cuando se utiliza esa funcion, cual es su valor de retorno y su numero y tipo de argumentos.

Estos prototipos no es necesario incluirlos porque eso es lo que realizas al incluir el archivo de inclusion "stdio.h", lo que tienes que hacer es declarar un conjunto de variables y pasar estas a las llamadas a funcion.

Hay algunos tutoriales sobre C que puedes utilizar de guia en la seccion de este sitio "Cursos".

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
rochy



Registrado: 11 Feb 2006
Mensajes: 53

MensajePublicado: 20/09/2007 7:17 pm
Título: creo k he logrado algo

bueno les cuento que he leido alguito y me parece k es mejor hacerlo con strucs esto es lo que tengo aunque me da un par de errores que no he podido arreglar a ver si me dan una mano compilenlo y veran a que me refiero


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include<ctype.h>

const int Ta=100;
const int Tb=100;
const int Tc=100;
const int Td=100;
const int Te=100;

struct Archivo{

char Titulo[100];
char Interprete[100];
char Genero[100];

};
void Agregar(struct Archivo *);
void Eliminar(void);
void Buscar(struct Archivo *);
void Desplegar(struct Archivo *);
void Menu(void);


struct Archivo M[100];
int Cant=0;

int main(){

int a,b=1000;

do{
Menu();
printf("\n\nIntroduzca su Opcion:");
scanf("%d",&a);

fflush(stdin);
switch(a){
case 1:{
if(Cant<Te){
Agregar(&(*M));
} else{
system("CLS");
printf("Catalogo Lleno\n");
}
break;
}

case 2:{
if(Cant>0){
Eliminar();
} else{
system("ClS");
printf("Catalogo Vacio\n");
}
break;
}

case 3:{
Buscar(M);
break;
}
case 4:{
Desplegar(M);
break;
}
case 5:{
printf("\n\n\n\n ESTA SALIENDO \n\n\n");
break;
}
default: break;
}

} while(a!=5);
//sleep(b);
return 0;
}

void Agregar(struct Archivo *k){

system("CLS");
char EX=0;
do{
system("CLS");

printf("\t\t*****Seccion de Agregar Nuevos Canciones*****\n");
printf("\nIntroduzca el Titulo:");
gets(k[Cant].Titulo);
fflush(stdin);
printf("\nIntroduzca el Interprete:");
gets(k[Cant].Interprete);
fflush(stdin);
printf("\nIntroduzca el Genero:");
gets(k[Cant].Genero);
fflush(stdin);
system("CLS");

printf("\t\t*****Seccion para Agregar Nuevas Canciones ****\n");
printf("Los Datos Introducidos son:\n");
printf("\n%s",k[Cant].Titulo);
printf("\n%s",k[Cant].Interprete);
printf("\n%s",k[Cant].Genero);

printf("Presione S->aceptar / N->volverlos a Introducir: ");
scanf("%c",&EX);
fflush(stdin);
EX=toupper(EX);

} while(EX!='S');
Cant++;
system("CLS");
}

void Eliminar(){

system("CLS");
char op=0;
int b;
if(Cant>0)b=Cant-1;

printf("\t\t*****Seccion de Elimiar Canciones");
printf("\nLos Datos de la Cancion No. %d son:\n",Cant);
printf("\n%s",M[b].Titulo);
printf("\n%s",M[b].Interprete);
printf("\n%s",M[b].Genero);

do{

printf("Desea Eliminar (S/N)");
scanf("%c",&op);
fflush(stdin);
op=toupper(op);

if(op=='S'){
Cant--;
printf("Se Elimino Contacto");
}else if(op=='N') break;

}while(op!='S');
system("CLS");
}

void Buscar(struct Archivo *K){

system("CLS");
char Nom[Ta];
int C,a,o=0;
printf("\t\t*****Seccion de Busqueda de Canciones*****\n");

printf("\nIntroduzca el Nombre para Iniciar la Busqueda:");
gets(Nom);
fflush(stdin);
for(a=0;a<Cant;a++){
toupper(Nom);
toupper(K[a].Titulo);
C=strcoll(K[a].Titulo,Nom);
if(C==0){
printf("\n\nCancion No.%d\n\n",Cant);
printf("Titulo: %s \n",K[a].Titulo);
printf("Interprete: %s \n",K[a].Interprete);
o++;
break;
}
}
if(o==0)printf("\n\nNo Hay Canciones con Este Nombre\n\n");
system("PAUSE");
system("CLS");
}

void Desplegar(struct Archivo *K){

int a;
system("CLS");

for(a=0;a<Cant;a++){
printf("\nTitulo\t Interprete\t Genero\t \n\n");
printf("%s\t %s\t\t %s\t\t %s\t\t\n\n",K[a].Titulo,K[a].Interprete,K[a].Genero);
}


printf("________________________________________________________________________________\n\n");
printf("Hay %d Canciones en el catalogo\n\n",Cant);

system("PAUSE");
system("CLS");

}
void Menu(){

printf("\n\n\n");
printf(" **********************************************\n");
printf(" * Catalogo de Canciones *\n");
printf(" * by *\n");
printf(" * Rossmary Perez *\n");
printf(" **********************************************\n\n\n");
printf(" **********************************************\n");
printf(" * 1. Buscar Canciones *\n");
printf(" * 2. Agregar Canciones *\n");
printf(" * 3. Borrar Canciones *\n");
printf(" * 4. Mostrar EL Catalogo de Canciones *\n");
printf(" * 5. Salir del Catalogo *\n");
printf(" **********************************************\n");

}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 21/09/2007 2:16 pm
Título:

Si utilizas un compilador decente, lo utilizas en su modo mas estricto y le pones un poco de esfuerzo podrias eliminar tu solo una buena cantidad de errores.

* Para empezar es recomendable (pero no indispensable) cambiar la definicion "int main()" por "int main(void)" ya que esta ultima es mas explicita.

* Tambien deberias eliminar en la funcion "main" a la variable "b" ya que no la utilizas, por cierto la funcion sleep no forma parte del estandar de C, donde se ubique su prototipo depende del compilador utilizado: bien podria estar en los headers que incluyes o tal vez no.

* En la misma linea que la funcion "main" si vas a definir funciones que no reciban argumentos es (en mi opinion) mejor utilizar la forma "fn(void)" por la razon ya mencionada.

* La funcion "toupper" espera como argumento un caracter y devuelve este (si aplica) en mayusculas. En la funcion "Buscar" las dos veces que llamas a esta funcion le estas pasando la direccion en memoria donde se almacenan cadenas (esto es de tipo "char *"):
Código:
toupper(Nom);
toupper(K[a].Titulo);


* En la funcion "Desplegar" llamas a la funcion printf indicandole a esta que imprima cuatro cadenas pero tu solo provees tres:
Código:
printf(
   "%s\t %s\t\t %s\t\t %s\t\t\n\n",
   K[a].Titulo,
   K[a].Interprete,
   K[a].Genero
);


* En C90 (mejor (y mal) conocido como ANSI C) no se pueden intercalar declaraciones con otro tipo de sentencias, debes primero colocar todas las declaraciones y solo despues de estas las demas sentencias (tecnicamente "executive statements"). El error se encuentra al principio de la funcion "Buscar":
Código:
{
   system("CLS");
   char EX = 0;


Esto ultimo tambien ocurre en la funcion "Eliminar".

* En la funcion "Buscar" declaras un arrays con un numero de elementos que solo se puede calcular en tiempo de ejecucion:
Código:
char Nom[Ta];

Esto no es valido en C90 pero si en C99.

* El uso de los operadores '*' y '&' combinados en esta sentencia:
Código:
Agregar(&(*M));

Son innecesarios, habria que cambiar a:
Código:
Agregar(M);



----


Aparte de eso el estilo del programa se puede mejorar muchisimo:

* Variables con nombres como Ta, Tb, Tb no dicen nada sobre estas, habra que darles nombres mas descriptivos.

* El nombre "struct Archivo" deberias cambiarlo por uno mas exacto, por ejemplo "registro" o "cancion".

* fflush(stdin) es una extension y su soporte depende del compilador utilizado, por lo mismo lo mejor es evitarlo y apegarse al estandar tanto como sea posible.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
rochy



Registrado: 11 Feb 2006
Mensajes: 53

MensajePublicado: 21/09/2007 6:51 pm
Título:

realmente estoy mas preocupada por que el programa funcione que por mi estilo de programar en este momento, estoy usando dev c++
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3657
Ubicación: Mexico

MensajePublicado: 21/09/2007 8:41 pm
Título:

rochy escribió:
realmente estoy mas preocupada por que el programa funcione que por mi estilo de programar en este momento

No hay problema siempre y cuando seas tu la unica que desarrolle la aplicacion.

Ahora bien, si deseas que alguien mas revise el codigo fuente de ese programa y te ayude a desarrollarlo un buen estilo es necesario para que a estos (me refiero a los participantes activos de estos foros) les sea tan facil como sea posible entenderlo.

Ejemplos de un buen estilo son la identacion que permite visualmente agrupar las sentencias en bloques asi como nombres descriptivos de variables indicando cual es la funcion de cada una de estas en el programa.

Un ejemplo de mal estilo son, como ya te mencione, los nombres Ta, Tb, Tc, etc. porque a los ojos de un programador que no este familizariado con la intencion del programa (y la forma en que tu planeas que esto se realize) le sera mas dificil de entender la funcion de cada una de estas variables. Si esto se acumula reduces las posibilidades de que alguien en los foros tenga la voluntad de estudiar a fondo tu programa ya que realizaria un esfuerzo extra que tu bien podrias ahorrarle.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
rochy



Registrado: 11 Feb 2006
Mensajes: 53

MensajePublicado: 23/09/2007 7:16 pm
Título: ahora no compila no se k hacer :(

Código:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include<ctype.h>

const int Ta=100;
const int Tb=100;
const int Tc=100;
const int Td=100;
const int Te=100;

struct Archivo{

char Titulo[100];
char Interprete[100];
char Genero[100];

};
void Agregar(struct Archivo *);
void Eliminar(void);
void Buscar(struct Archivo *);
void Desplegar(struct Archivo *);
void Menu(void);


struct Archivo M[100];
int Cant=0;

int main(){

int a,b=1000;

do{
Menu();
printf("\n\nIntroduzca su Opcion:");
scanf("%d",&a);

fflush(stdin);
switch(a){
case 1:{
if(Cant<Te){
Agregar(&(*M));
} else{
system("CLS");
printf("Catalogo Lleno\n");
}
break;
}

case 2:{
if(Cant>0){
Eliminar();
} else{
system("ClS");
printf("Catalogo Vacio\n");
}
break;
}

case 3:{
Buscar(M);
break;
}
case 4:{
Desplegar(M);
break;
}
case 5:{
printf("\n\n\n\n ESTA SALIENDO \n\n\n");
break;
}
default: break;
}

} while(a!=5);
//sleep(b);
return 0;
}

void Agregar(struct Archivo *k){

system("CLS");
char EX=0;
do{
system("CLS");

printf("\t\t*****Seccion de Agregar Nuevos Canciones*****\n");
printf("\nIntroduzca el Titulo:");
gets(k[Cant].Titulo);
fflush(stdin);
printf("\nIntroduzca el Interprete:");
gets(k[Cant].Interprete);
fflush(stdin);
printf("\nIntroduzca el Genero:");
gets(k[Cant].Genero);
fflush(stdin);
system("CLS");

printf("\t\t*****Seccion para Agregar Nuevas Canciones ****\n");
printf("Los Datos Introducidos son:\n");
printf("\n%s",k[Cant].Titulo);
printf("\n%s",k[Cant].Interprete);
printf("\n%s",k[Cant].Genero);

printf("Presione S->aceptar / N->volverlos a Introducir: ");
scanf("%c",&EX);
fflush(stdin);
EX=toupper(EX);

} while(EX!='S');
Cant++;
system("CLS");
}

void Eliminar(){

system("CLS");
char op=0;
int b;
if(Cant>0)b=Cant-1;

printf("\t\t*****Seccion de Elimiar Canciones");
printf("\nLos Datos de la Cancion No. %d son:\n",Cant);
printf("\n%s",M[b].Titulo);
printf("\n%s",M[b].Interprete);
printf("\n%s",M[b].Genero);

do{

printf("Desea Eliminar (S/N)");
scanf("%c",&op);
fflush(stdin);
op=toupper(op);

if(op=='S'){
Cant--;
printf("Se Elimino Contacto");
}else if(op=='N') break;

}while(op!='S');
system("CLS");
}

void Buscar(struct Archivo *K){
     system("CLS");
     char Nom[Ta];
     int C,a,o=0,selec;
     printf("\t\t*****Seccion de Busqueda de Canciones*****\n");
     printf("********Elija una opcion de busqueda**********\n");
printf("         **********************************************\n");
printf("         *     1. Busqueda por titulo                 *\n");
printf("         *     2. Busqueda por interprete             *\n");
printf("         *     3. Busqueda por Genero                 *\n");
printf("         **********************************************\n");
 scanf("%d",&selec);


     if (selec==1){
     printf("\nIntroduzca el Titulo para Iniciar la Busqueda:");
     gets(Nom);
 
    for (int lala = 0; lala<=Ta; lala++)
    {
      Nom[lala] = toupper(Nom[lala]);
    }
   
     fflush(stdin);
     for(int a=0;a<Cant;a++){
       C=strcoll(K[a].Titulo,Nom);
       if(C==0){
             printf("\n\nCancion No.%d\n\n",Cant);
             printf("Titulo: %s \n",K[a].Titulo);
             printf("Interprete: %s \n",K[a].Interprete);
             o++;
             break;}
     else if (selec==2){       
     printf("\nIntroduzca el Interprete para Iniciar la Busqueda:");
     gets(Nom);
       for (int lala = 0; lala<=Ta; lala++)
    {
      Nom[lala] = toupper(Nom[lala]);
    }
     fflush(stdin);
     for(int a=0;a<Cant;a++){
       C=strcoll(K[a].Titulo,Nom);
       if(C==0){
             printf("\n\nCancion No.%d\n\n",Cant);
             printf("Titulo: %s \n",K[a].Titulo);
             printf("Interprete: %s \n",K[a].Interprete);
             o++;
                          break;}
     if (selec==3){       
     printf("\nIntroduzca el Genero para Iniciar la Busqueda:");
     gets(Nom);
       for (int lala = 0; lala<=Ta; lala++)
    {
      Nom[lala] = toupper(Nom[lala]);
    }
     fflush(stdin);
     for(int a=0;a<Cant;a++){
       C=strcoll(K[a].Genero,Nom);
       if(C==0){
             printf("\n\nCancion No.%d\n\n",Cant);
             printf("Titulo: %s \n",K[a].Titulo);
             printf("Interprete: %s \n",K[a].Interprete);
             o++;
             break;}
     
             }
       }
  if(o==0)printf("\n\nNo Hay Canciones con Este Nombre\n\n");
     system("PAUSE");
     system("CLS");
     }
     
     
void Desplegar(struct Archivo *K) {

int a;
system("CLS");

for(a=0;a<Cant;a++){
printf("\nTitulo\t Interprete\t Genero\t \n\n");
printf("%s\t %s\t\t %s\t\t %s\t\t\n\n",K[a].Titulo,K[a].Interprete,K[a].Genero);
}


printf("________________________________________________________________________________\n\n");
printf("Hay %d Canciones en el catalogo\n\n",Cant);

system("PAUSE");
system("CLS");

}
void Menu(){

printf("\n\n\n");
printf(" **********************************************\n");
printf(" *             Catalogo de Canciones          *\n");
printf(" *                      by                    *\n");
printf(" *               Rossmary G. Perez            *\n");
printf(" **********************************************\n\n\n");
printf(" **********************************************\n");
printf(" *     1. Agregar Canciones                   *\n");
printf(" *     2. Borrar Canciones                    *\n");
printf(" *     3. Buscar Canciones                    *\n");
printf(" *     4. Mostrar EL Catalogo de Canciones    *\n");
printf(" *     5. Salir del Catalogo                  *\n");
printf(" **********************************************\n");


}
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com