[Ayuda]Diccionario de sinonimos, antonimos, paronimos en C

Iniciado por nolosabe, 5 Octubre 2011, 20:09 PM

0 Miembros y 1 Visitante están viendo este tema.

nolosabe

Hola, soy nuevo en el foro, y necesito ayuda con un programa que me mandaron como proyecto para el instituto en el que tengo que crear un programa que guarde palabras, varios sinonimos, un solo antonimo y un solo paronimo... tiene que tener un menu que permita al usuario agregar palabras (altas) dar de baja palabras, modificar (por errores ortograficos), consultar una palabra, y listar todas.

estoy trancado con el tema de los archivos binarios.. no tengo idea del tema porque falte a clase ya que estaba enfermo.
les dejo lo que tengo hecho hasta ahora, hay funciones que las tengo con // porque aun no estan declaradas... me tira como 8 errores, a ver si me pueden auxiliar.

MUCHAS GRACIAS

ARREGLE EL CODIGO, PERO SI ME PUEDEN AYUDAR CON ALGUNA DE LAS FUNCIONES QUE ME FALTAN POR HACER LES AGRADEZCO


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

void alta(int);
/*void baja();
void modificar();
void consultar();
void listarSin(int);
void listarAnt();
void listarPar();*/
void subMenu();
int total();

#define LARGO 100
#define DICCIONARIO "c:\dicc.bin"

struct dato{
char palabra[20];
char sinonimo1[20],sinonimo2[20],sinonimo3[20];
char antonimo[20];
char paronimo[20];
int borrado;
}diccionario[LARGO];

FILE *archivo = NULL;

void main(){
int opcion=0,pos=total();
char salir='n';
while (salir!='s'){
clrscr();
printf("\n   DICCIONARIO \n");
printf("1) Ingresar \n");
printf("2) Eliminar \n");
printf("3) Modificar \n");
printf("4) Consultar \n");
printf("5) Listar \n");
printf("0) Salir \n");
opcion=getch();
switch(opcion){
case '1': pos=total();
pos++;
alta(pos);
break;
case '2': //baja();
break;
case '3': //modificar();
break;
case '4': //consultar();
break;
case '5': subMenu();
break;
case '0': printf("\n ¨Esta seguro que desea salir? (s/n)");
salir=getch();
clrscr();
break;
default:printf("\n opcion incorrecta");
getch();
clrscr();
break;
}//fin switch
}//fin while
}//fin void main



void subMenu(){
clrscr();
int opc;
char salir='n';
printf("\n Listar Palabras existentes \n");
printf("\n1) Listar sinonimos");
printf("\n2) Listar antonimos");
printf("\n3) Listar paronimos");
printf("\n4) Listar: sinonimos, antonimos y paronimos");
printf("\n0) Volver al menu principal");
opc=getch();
clrscr();
while(salir!='s'){
switch(opc){
case '1': //listarSin();
break;
case '2': //listarAnt();
break;
case '3': //listarPar();
break;
case '4': //listarSin();
//listarAnt();
//listarPar();
break;
case '0': printf("\n ¨Desea volver al menu principal (s/n)?");
salir=getch();
break;
default:printf("\n OPCION INCORRECTA");
getch();
break;
}//Fin switch submenu
}//fin while
}//fin subMenu


int total(){
clrscr();
int total;
archivo=NULL;
archivo=fopen(DICCIONARIO,"rb");//abro el archivo diccionario.bin como solo lectura
if(archivo==NULL){
printf("\n Error al abrir el archivo");
fclose(archivo);
}
else{
fseek(archivo,0,SEEK_END);
total=ftell(archivo) / sizeof(struct dato);//divido el tama¤o del archivo entre el tama¤o de la estructura para saber cuantas hay
}
return total;//devuelvo el valor de la variable total(int)
}

void alta(int pos){
char opc=' ',confirmar=' ';
archivo=NULL;
clrscr();
printf("\n Ingresar palabra/s \n");
printf("\n Palabra: ");
gets(diccionario[pos].palabra);
clrscr();
printf("\n ¨Desea ingresar un sinonimo? (s/n)");
opc='a';
// while(opc!='s' || opc!='n'){
opc=getch();
if(opc=='s'){
clrscr();
printf("ingrese un sinonimo: ");
gets(diccionario[pos].sinonimo1);
opc=' ';
clrscr();
printf("\n¨Desea ingresar otro sinonimo? (s/n)");
opc=getch();
if(opc=='s'){
clrscr();
printf("ingrese otro sinonimo: ");
gets(diccionario[pos].sinonimo2);
opc=' ';
clrscr();
printf("\n¨Desea ingresar otro sinonimo? (s/n)");
opc=getch();
if(opc=='s'){
clrscr();
printf("ingrese otro sinonimo: ");
gets(diccionario[pos].sinonimo3);
}//if3
}//if2
}//if1
// }//while

clrscr();
printf(" Ingrese un antonimo: ");
gets(diccionario[pos].antonimo);
printf("\n Ingrese un paronimo o presione enter para no ingresar nada: ");
gets(diccionario[pos].paronimo);
clrscr();
printf(" Usted ingreso\n");
printf("\n\n Palabra: %s \n Sinonimos: %s, %s, %s\n Antonimo: %s\n Paronimo: %s",diccionario[pos].palabra,diccionario[pos].sinonimo1,diccionario[pos].sinonimo2,diccionario[pos].sinonimo3,diccionario[pos].antonimo,diccionario[pos].paronimo);
printf("\n\n Esta seguro que desea agregar estos datos al diccionario(s/n)");
confirmar=getch();
if(confirmar=='n'){
printf("\n Los datos no se escribieron en el archivo");
}//IF
else{ if(confirmar=='s'){
archivo=fopen(DICCIONARIO,"ab+");
fwrite(&diccionario[pos],sizeof(struct dato),1,archivo);
fclose(archivo);
}//if
}//else
}//funcion
:?:
Gracias a todos por su ayuda, espero yo también ser de ayuda para alguien mas