Autor Tema: Ejercicio de C  (Leído 2696 veces)

Desconectado Julia23

  • Newbie
  • *
  • Mensajes: 2
Ejercicio de C
« en: 18 de Mayo de 2005, 05:15:23 pm »
Hola,
Tengo que hacer este ejercicio.

Crear un programa que tenga un menú, en el que se permitan las siguientes opciones:

A partir de un fichero de texto.
1.- Contar las vocales, mayusculas y minúsculas. Hay que mostrar por pantalla cuantas apariciones hay de cada vocal.

2.- Sumar todos los números que aparezcan. Se supone que todos los números estan dentro del rango de los enteros.

3.- Dada una palabra introducida por teclado, mostrar por pantalla si la palabra se repite una o más veces dentro del fichero. Utilizar un esquema algorítmico apropiado.

4.- Crea un segundo fichero que contenga todas las palabras del primer fichero pasadas a mayuscula, no hay que copiar los números.

5.- Salir del programa

Y esto es lo que tengo echo.

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

void abrir(char ruta[]);

void pasa_a_mayusculas(char []);
char mayuscula(char);

char menu();

void main ()
{
char ruta [100];
char op;
do{
op=menu();
switch (op){
case '1':
comptar(ruta);
break;
case '2':
sumar(ruta);
break;
case '3':
repetida(ruta);
break;
case '4':
pasar(ruta);
break;
}
}while (op!='5');
}

char menu()
{
abrir;
char op;
printf ("1-Comptar vocals.\n");
printf ("2-Sumar tots els números que apareguin.\n");
printf ("3-Buscar paraules repetides.\n");
printf ("4-Pasar a majuscules")
printf ("5-Salir\n");
scanf ("%c", &op);
return op;
}

void abrir(char ruta[])
{

FILE *fichero;
printf ("Introduzca la ruta absoluta del archivo a leer:");
scanf ("%s", ruta);
fichero = fopen (ruta, "wt");
fclose (fichero);
}

void comptar(char ruta[])
{
char frase[80];
int pos=0, as=0, es=0, is=0, os=0, us=0;

fichero=fopen (ruta, "r+");
while (!feof(fichero))

FREAD!!?
SEPARAR PALABRAS DEL FICHERO

do{
switch (frase[pos])
{
case (frase[pos]=='a' | 'A'): as++;
case (frase[pos]=='e' | 'E'): es++;
case (frase[pos]=='i' | 'I'): is++;
case (frase[pos]=='o' | 'O'): os++;
case (frase[pos]=='u' | 'U'): us++;
pos++;
}
while (frase[pos]!='\0')
}

printf(" Hay %d a\n Hay %d e\n Hay %d i\n Hay %d o\n Hay %d u\n",as,es,is,os,us);

}


COMPARAR REPETIDAS
{
int repetida=0;
char palabra[50];
printf ("Introduzca una palabra:");
scanf ("%s", &palabra);
fichero=fopen (ruta, "r+");
while (!feof(fichero))
strcmp(&palabra)
repetida++;

if (repetida!=0)
printf("La paraula %s esta repetida &d vegades", &paraula, repetida);
else
printf("La paraula no hi es");
}

PASAR A MAYUSCULAS
void main()
{
char palabra[50];
printf ("Introduzca una palabra:");
scanf ("%s", &palabra);
pasa_a_mayusculas (palabra);

}

void pasa_a_mayusculas(char frase[50])
{
int i;
for (i=0;frase!='\0';i++) frase=mayuscula(frase);
printf ("%s\n", frase);
}

char mayuscula (char letra)
{
if (letra>='a' && letra<='z')
letra-=32;
return letra;
}

Me falta rellenar los huecos. Una ayudita porfa!

Desconectado jirho

  • Member
  • ***
  • Mensajes: 303
Re: Ejercicio de C
« Respuesta #1 en: 18 de Mayo de 2005, 10:33:39 pm »
1.- Contar las vocales, mayusculas y minúsculas. Hay que mostrar por pantalla cuantas apariciones hay de cada vocal:

Hacer un vector dinamico que se inicialice con la primera letra del archivo y la guarde, de ahi en adelante comienze a contar y comparar. Esto es para no gastar memoria insuficientemente.

Crear los vectores min y mayus e ir comparando letra por letra. Tambien
->Conclusion de una u otra manera se pierde mucho tiempo

Lo otro es hacer un codigo largo de if(letra==let), tedioso, pero mejor en cuanto a rendimiento y complejidad...
/***********************************************************/
/***********************************************************/

2.- Sumar todos los números que aparezcan. Se supone que todos los números estan dentro del rango de los enteros:

Como es un archivo de texto deben ser caracteres y lo mejor es trabajar asi para no estar convirtiendo a enteros, ya que no sabes con exactitud el formato del archivo no puedes trabajar directamente con int.

Si la condicion es que no hayan numeros en medio de palabras, seria identificar el primer caracter de cada palabra y mirar si es o no numero.
/***********************************************************/
/***********************************************************/

3.- Dada una palabra introducida por teclado, mostrar por pantalla si la palabra se repite una o más veces dentro del fichero. Utilizar un esquema algorítmico apropiado:

Comparar: if(strcmp(cad,cad1)==0)
/***********************************************************/
/***********************************************************/

4.- Crea un segundo fichero que contenga todas las palabras del primer fichero pasadas a mayuscula, no hay que copiar los números:

Sacar los numeros y Pasar las letras eso ya lo tienes...
/***********************************************************/
/***********************************************************/
[root@local_host jirho]#Conecting to underground zone...:superman:

http://www.hackeando.com/gifs/logomini.gif

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License