Ir para conteúdo
Fórum Script Brasil

palliativos

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre palliativos

palliativos's Achievements

0

Reputação

  1. #include <stdio.h> int comprimento (const char *s) { int i = 0; while(s+i != "\0") { i++; } return i; } void main() { const char *s; const char v[] = {"abc"}; s = &v[0]; printf("%d", comprimento(s)); //puts(s[0]); } Olá galera, tenho esse programa acima onde tento fazer com que ele mostre o número de caracteres q tem um array de char. mas quando rodo tá ficando em loop infinito. Acredito que seja um erro bobo, por favor peço ajuda. Grato! RESOLUÇÃO: Já resolvi o problema. Em vez de "\0" tem de ser '\0'. porque se coloca "" é como se fossem dois bytes.
  2. Olá amigos, boa tarde! Abaixo descrevo o código que tenho que faz a ordenação de um vetor pelo método de MergeSort. Meu problema é que preciso retornar no main o número de inversões do processo. Na verdade eu não sei como identificar as inversões e também tenho problemas com recursividade. Segue o código abaixo e desde já fico agradecido. Qualquer informação será bem vinda! #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> void Intercala (int p; int q; int r; int v[]) { int i, j, k, *w; w = malloc ((r-p) * sizeof (int)); i = p; j = q; k = 0; while (i < q && j < r) { if (v[i] <= v[j]) w[k++] = v[i++]; else w[k++] = v[j++]; } while (i < q) w[k++] = v[i++]; while (j < r) w[k++] = v[j++]; for (i = p; i < r; i++) v[i] = w[i-p]; free (w); } void Mergesort (int p; int r; inr v[]) { if (p < r-1) { int q = (p + r)/2; Mergesort (p, q, v); Mergesort (q, r, v); Intercala (p, q, r, v); } } int main() { int t, i, n, j; scanf("%d", &t); for (i=0; i<t; i++) { scanf("%d", &n); int a[n], inversoes = 0; for (j=0; j<n; j++) { scanf("%d", &a[j]); } printf("\n"); Mergesort (0, n, a); printf("%d\n", inversoes); } return 0; }
×
×
  • Criar Novo...