Curso de C

Lista de Exercícios

 Aula 4: Matrizes e Strings

Clique aqui para acessar o Gabarito da Lista 4

Exercício 1:
O que o programa a seguir faz? Qual e' o resultado obtido se o string fornecido for:

  a) "Ah! Eu to maluco!"
  b) "5*4+(3^3)+4*5"

#include <stdio.h>
#include <string.h>
#define TAM 20
main ()
{
char s[TAM];
int c, i, j;

for (i=0, j=strlen(s)-1; i<j; i++, j--)
   {
   c = s[i];
   s[i] = s[j];
   s[j] = c;
   }
}
 

Exercício 2:
O que imprime o programa a seguir? Tente entendê-lo e responder. A seguir, execute-o e comprove o resultado.

# include <stdio.h>
main()
{
int t, i, M[3][4];
for (t=0; t<3; ++t)
   for (i=0; i<4; ++i)
      M[t][i] = (t*4)+i+1;

for (t=0; t<3; ++t)
   {
   for (i=0; i<4; ++i)
       printf ("%3d ", M[t][i]);
   printf ("\n");
   }
}
 

Exercício 3:
Faça um programa que ordene um vetor de inteiros de N posições. Para isto você precisará usar um loop. Verifique o número de iterações até que o programa consiga finalmente ordenar o vetor. (sugestões: use N=6, N=8 e N=12).
 

DESAFIOS:

Exercício 1:
Implemente um programa que faça a multiplicação de 2 matrizes. Para isto, crie 3 matrizes inteiras com um bom tamanho (tipo 10X10). O programa deverá ler via teclado os tamanhos das matrizes que ele deseja multiplicar (e informá-lo dos limites). Para que a multiplicação seja possível, as matrizes precisam ter coor-denadas compatíveis, ou seja, o número de colunas da primeira matriz deve ser igual ao número de linhas da segunda. Sendo assim, o seu programa deverá verificar se as dimensões das matrizes são compatíveis (e estão dentro dos limites). Se não, o programa deverá enviar uma mensagem orientando, e pedir novamente as dimensões. Se as dimensões estiverem corretas, o programa deverá solicitar que o usuário digite as duas matrizes, e proceder a multiplicação. O resultado deverá ser armazenado na terceira matriz, que deverá ser apresentada como resultado.

Caso alguém não conheça o procedimento para a multiplicação de matrizes, segue aqui alguma orientação.
Suponha as matrizes A(mXn)

    | a11  a12 ... a1n |
A = | a21  a22 ... a2n |
    |  :               |
    | am1  am2 ... amn |

e B(nXt)

    | b11  b12 ... b1t |
B = | b21  b22 ... b2t |
    |  :               |
    | bn1  bn2 ... bnt |

A matriz C (mXt) = A*B será da seguinte forma:

    | a11*b11 +a12*b21 +...+a1n*bn1  a11*b12 +a12*b22 +...+ a1n*bn2  a11+b1t +a12*b2t +...+ a1n*bnt |
C = | a21*b11 +a22*b21 +...+a2n*bn1  a21*b12 +a22*b22 +...+ a2n*bn2  a21+b1t +a22*b2t +...+ a2n*bnt |
    |  ...                                                                                            |
    | am1*b11 +am2*b21 +...+amn*bn1  am1*b12 +am2*b22 +...+ amn*bn2  am1+b1t +am2*b2t +...+ amn*bnt |
 

Exercício 2:
Refaça o programa da página c530.html, ordenando as strings lidas por tamanho (menores primeiro, maiores depois).

  Sumário

Dúvidas? Dê uma olhadinha em nosso FAQ

Perguntas para a lista do Curso de C
Curso de C do CPDEE/UFMG - 1996-1998