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.