Solução: Problema da moda - dificuldade 4 (Lúcio Ribeiro)

From AdonaiMedrado.Pro.Br
Revision as of 16:39, 5 June 2009 by 200.17.147.2 (Talk) (New page: // Lúcio Ribeiro #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char **vet=NULL; char *palavra=NULL; int k,linha=0,moda=1,cont=1, i,j; do ler e alocar: ...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

// Lúcio Ribeiro

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <string.h>


int main() { char **vet=NULL; char *palavra=NULL; int k,linha=0,moda=1,cont=1, i,j;

do /*ler e alocar*/ { scanf("%d",&k); palavra = (char *) realloc(palavra, sizeof(char)*(k+1)); if(palavra==NULL) { puts(":P\n"); exit(1);} scanf("%s",palavra); if(strcmp(palavra,"0")==0) break; else { linha++; vet = (char **) realloc(vet, sizeof(char*)*linha); *(vet+linha-1) = (char*) malloc(sizeof(char)*(k+1)); if(vet==NULL||*(vet+linha-1)==NULL) { puts(":P\n"); exit(1);} for(i=0;i<(k+1);i++) *(*(vet+linha-1)+i) = palavra[i]; } }while(1);

if(linha==1)/*importantissimo*/ { printf("%s",*vet); return 0; }

for(i=0;i<linha;i++) /*ordenar*/ { for(j=i+1;j<linha;j++) { if(strcmp(*(vet+i),*(vet+j))>0) { palavra = (char *) realloc(palavra, sizeof(char)*(strlen(*(vet+i))+1)); strcpy(palavra, *(vet+i)); *(vet+i) = (char*) realloc(*(vet+i),sizeof(char)*(strlen(*(vet+j))+1)); strcpy(*(vet+i), *(vet+j)); *(vet+j) = (char*) realloc(*(vet+j),sizeof(char)*(strlen(palavra)+1)); strcpy(*(vet+j), palavra); } } }

j=1; for(i=1;i<linha;i++)/*j eh parcial*/ { if(!strcmp(*(vet+i),*(vet+i-1))) j++; else j=1; if(j>moda) moda=j; }

for(i=1;i<linha;i++) { if(!strcmp(*(vet+i),*(vet+i-1))) cont++; else cont=1; if(cont==moda) printf("%s\n",*(vet+i)); } free(vet); return 0; }