|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - LiLou
Páginas: [1]
1
« en: Jueves 17 de Febrero de 2011, 11:27 »
Aprovecho para preguntar yo tambien, pero en C, perdon si no sirve tambien para Pascal. La funcion main seria tal que así: int main(){ int t1[M], t2[M]; //t1 = serie actual, t2 = serie mas larga int n1=0, n2=0; //longitud de las series int x; //lector printf("Intro. serie de enters acabada en 0:n"); scanf("%d", &x ); //inicializacion del primer entero leer_e(t1, n1, x); //inicializacion de la 1a serie while(!u_s_o_d(n1)){ //ultima serie ordenada decrec. tratar_t(t1, n1, t2, n2); leer_e(t1, n1, x); } resultado(t2, n2); return 0; }
Lo importante es decubrir como ha de ser la accion tratar_t. Yo lo he hehco de esta forma, pero debe de haber algun error, pues no me sale bien: void tratar_t(int t1[], int &n1, int t2[], int &n2){ if(n1>n2) copiar(t1,t2,n1,n2); //else no hacer nada, la serie mas larga es la ultima t2 } void copiar(int t1[], int t2[], int &n1, int &n2){ int i, j=0; for(i=0; i<=n1; i++){ t1[i]=t2[j]; j++; } n2=j; }
El programa entero (ejecutadlo para ver qué resultados os da ): #include <stdio.h> #define M 100 void leer_e(int t[], int &n, int &e); bool u_s_o_d(int &n); void tratar_t(int t1[], int &n1, int t2[], int &n2); void resultado(int t[], int &n); void copiar(int t1[], int t2[], int &n1, int &n2); int main(){ int t1[M], t2[M]; //t1 = serie actual, t2 = serie mas larga int n1=0, n2=0; //longitud de las series int x; //lector printf("Intro. serie de enters acabada en 0:n"); scanf("%d", &x ); //inicializacion del primer entero leer_e(t1, n1, x); //inicializacion de la 1a serie while(!u_s_o_d(n1)){ //ultima serie ordenada decrec. tratar_t(t1, n1, t2, n2); leer_e(t1, n1, x); } resultado(t2, n2); return 0; } void leer_e(int t[], int &n, int &e){ int i=0; while(t[i]<=e || e!=0){ t[i]=e; i++; } n=i; //longitud de t1 printf("%d", n ); //para comprobar que valor tiene n } bool u_s_o_d(int &n){ return(n==0); } void tratar_t(int t1[], int &n1, int t2[], int &n2){ if(n1>n2) copiar(t1,t2,n1,n2); //else no hacer nada, la serie mas larga es la ultima t2 } void resultado(int t[], int &n){ int i; printf("nSerie mes larga: %dn", n ); for(i =0; i <=n ; i ++) printf("%d ", t [i ]); } void copiar(int t1[], int t2[], int &n1, int &n2){ int i, j=0; for(i=0; i<=n1; i++){ t1[i]=t2[j]; j++; } n2=j; }
Páginas: [1]
|
|
|