Plataforma: URI
Problema: 1244
Enunciado: Crie um programa para ordenar um conjunto de strings pelo seu tamanho. Seu programa deve receber um conjunto de strings e retornar este mesmo conjunto ordenado pelo tamanho das palavras, se o tamanho das strings for igual, deve-se manter a ordem original do conjunto.
Linguagem: C
Solução:
#include <stdio.h> #include <stdlib.h> #include <string.h> int compare(const char a[], const char b[]) { return strlen(a) < strlen(b); } int main() { int n, pos, i, j; char palavras[51][51]; char linha[2700]; char *token; scanf("%i ", &n); while (n--) { fgets(linha, 3000, stdin); pos = 0; token = strtok(linha, " \n"); for (i = 0; token != NULL; i++) { strncpy(palavras[i], token, 50); token = strtok(NULL, " \n"); } qsort(palavras, i, 51, compare); for (j = 0; j < i - 1; j++) printf("%s ", palavras[j]); printf("%s\n", palavras[j]); memset(palavras, 0, sizeof(palavras)); } return 0; }