Exercici 3.1: Com a exercici per practicar amb taules de punters a strings us proposem que feu un programa que declari un vector de 1000 chars, que permeti a l'usuari introduir paraules o frases que s'aniran emmagatzemant de forma consecutiva dins d'aquest vector (separades pel caràcter '\0'); que un vector de punters a char (ÍNDEX) vagi emmagatzemant les adreçes de les paraules dins del vector de caràcters (màxim 50 paraules); que acabi la introducció de les paraules amb la paraula clau "FI" (no s'inclourà en la llista); i que, finalment, imprimeixi per pantalla la llista de paraules o frases per ordre alfabètic.Com a pista per a resoldre el problema podeu treballar sobre el fitxer PCHR_ORD.C, que mostra un esquema bàsic de funcions més comentaris per a resoldre el problema.
#include <stdio.h>
#include <string.h>
/* feu servir la funció strcmp(s1,s2); per comparar strings:
aquesta funció retorna un enter que val 0 si s1=s2,
<0 si s1<s2, >0 si s1>s2 */
char text[1000]; /* vector on es guardaran les frases
separades per '\0' */
char *frase[50]; /* vector on es guardaran els punters
al text */
void main(void)
{
/* declaració variables locals */
/* inicialitzacions */
/* bucle llegir frase */
/* llegir frase amb gets(&text[i]); on i és l'índex del
caràcter on es col.locarà la següent frase */
/* repetir fins que la frase sigui "FI"*/
/* ordenar les frases fent servir, per exemple, l'algorisme
de la bombolla */
/* NO INTERCANVIAR ELS CARACTERS, NOMES ELS PUNTERS! */
/* per i=0 fins i=nºfrases-2 fer */
/* per j=i+1 fins nºfrases-1 fer */
/* si (frase[j]>frase[i]) llavors
frase[i]<=>frase[j] (intercanviar punters) */
/* fiper j */
/* fiper i */
/* bucle imprimir frases */
}
Exercici 3.2: Per rematar l'exercici anterior, amplieu els rangs a 40.000 caràcters i 500 frases, estructureu el programa en funcions d'introduir, ordenar, i imprimir frases, i guardeu els caràcters sobre memòria dinàmica.