PDA

Ver la versión completa : ayuda programa en C!!!



a_itt
04-10-2007, 20:50
Hola soy nueva en todo esto de la programacion y necesito que alguien me ayude! Tengo que realizar un programa que capture un texto, que imprima un histograma en el que se refleje la proporción de palabras que hay en él. En el histograma, tengo que mostrar las proporciones de palabras de una a diez letras, considerando como de diez letras todas aquellas palabras mayores de 10 letras. Para realizar las barras del histograma, debo utilizar cualquier caracter distintivo. Un caracter indica un 1 por ciento del total, por lo que la cantidad total de caracteres deberá ser de 100. Así, la salida podría tener la siguiente apariencia:

N Histograma
= ====================
1 **
2 ***
3 **********
4 *****************
5 ******************
6 *****************
7 **************
8 **********
9 ******
10 ***

El programa no es tan dificil, pero no puedo usar ni arreglos, ni cadenas...

La verdad no se como hacerle :S:S:S:S:confused: :confused: :confused: :( :( :(

j8k6f4v9j
04-10-2007, 21:39
Bueno, puedes empezarlo e ir colgando (nopaste.com, por ejemplo) tus resultados para ir obteniendo así comentarios y sugerencias por parte de los usuarios del foro. Así es más probable que obtengas ayuda, comprenderás mejor lo que se está haciendo y avanzarás más rápidamente.

Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

gondar_f
04-10-2007, 22:01
Hola a_itt:

no se si entendi bien, pero intentare responderte, teniendo en cuenta las limitaciones que comentas y alguna que me imagino que no comentaste, queda un diseño de programa muy patetico pero hace lo que pides:

sea como sea el texto capturado acabara en una cadena o será un archivo, realmente no importa tanto sea cual sea la opción:

necesitas 1 variable para acumular (de aqui en adelante acumulador) temporalmente el largo de la cadena, inicializada a 0.

necesitas 10 variables inicializadas a 0, una para acumular la cantidad de palabras con x tamaño (1 variable para las palabras de una letra, 1 varible para las palabras de 2 letras...)

necesitas un bucle que recorra todas los caracteres de la cadena o caracteres del archivo.

con una una construcción interativa if-else compruebas si el carcter es una letra o no, si es una letra sumas uno a una variable acumulador, si no lo es significa que es fin de palabra (sea este caracter una:como, punto, espacio en blanco, salto de linea...), con una sentencia switch y usando de valor la variable acumulador: más o menos algo así:

if ((entrada[i]>75 && entrada[i]<105)||(entrada[i]>55 && entrada[i]<70)) { /*son 2 rangos, mayusculas y minusculas, no lo se de memoria miralo en tabla ascii*/
acumulador++;
}
else {
switch (acumulador) {
0: break;
1: palabrade1letra++; break;
2: palabrade2letra++; break;
...
9: palabrade9letra++; break;
default: palabrade10letra++; //asi tienes las de 10 letras o más
}
acumulador=0;
}

bien con eso ya tienes en variables la cantidad de apareciciones del tamaño de cada palabra, ahora toca mostrar los resultados...

Llegados a este punto la cosa es simple y ya finalizado el búcle, hacer un bucle para cada tamaño usando de contador el valor de la variable acumuladora de palabras de ese tamaño:
printf("\nN Histograma");
printf("\n= ===========================");

printf("\n1 ");
for(i=1; i>palabrade1letra; i++)
printf("*");

printf("\n2 ");
for(i=1; i>palabrade2letra; i++)
printf("*");

...

printf("\n10 ");
for(i=1; i>palabrade10letra; i++)
printf("*");

Espero que te sirva las indicaciones que te di, ya hace un buen tiempo que no toco el lenguaje C y estás es solo una idea... si te sirve completa el código y ponlo un poco bonito

Un Saludo

a_itt
04-10-2007, 23:14
muuchas gracias!!!

Tuve que reemplazar par de cositas, y terminarlo obviamente :D. Muchas muchas gracias!!!