Vous êtes sur la page 1sur 8

Lista de exercícios para a prova de AEDSI

/* Escreva uma função que receba uma matriz bidimensional, o tamanho dela, e calcule a
soma de todos seus elementos. */
#include <stdio.h>
#include <stdlib.h>
#define MAX 1000

int matriz(int m1[][MAX],int l,int c)


{
int i, j, x, b = 0;
printf("entre com os valores da Matriz[%dx%d] ", l, c);
m1[l][c];
for(i = 0; i < l; i++)
{
for(j = 0; j < c; j++)
{
scanf("%d", &x);
m1[i][j] = x;
b += m1[i][j];
}
}
printf("A soma dos elementos da matriz eh %d \n", b);
}

int main()
{
int b, m2, l, c;
printf("Entre com o tamanho das matrizes (linha e coluna): ");
scanf("%d %d", &l, &c);
b = matriz(m2, l, c);
return 0;
}

/* Escreva uma função que receba uma matriz, o tamanho dela,uma posição (x,y) dela, e
calcule a soma de todos os seus vizinhos;*/
#include <stdio.h>
#include <stdlib.h>
#define MAX 100

int matriz(int m1[][MAX], int l, int c)


{
int i, j, x, b = 0, l1, c1;
printf("Entre com os valores da Matriz[%dx%d] :\n", l, c);
m1[l][c];
for(i = 0; i < l; i++)
{
for(j = 0; j < c; j++)
{
scanf("%d", &x);
m1[i][j] = x;
}
}
printf("Os elementos que compoem a Matriz[%dx%d], sao: \n", l, c);
for(i = 0; i < l; i++)
{ printf("|");
for(j = 0; j < c; j++)
{
printf(" %d ", m1[i][j]);
} printf("|\n");
} printf("\n\n");
printf("Qual a posicao deseja escolher da Matriz[%dx%d]\n\n", l, c);
printf("linha: \n");
scanf("%d", &l1);
printf("Coluna: \n");
scanf("%d", &c1);
printf("\nO Elemento escolhido da matriz foi A[%dx%d] cujo valor eh: %d\n", l1, c1, m1[l1-
1][c1-1]);
for(i = (l1-2); i < (l1+1); i++)
{
for(j = (c1-2); j < (c1+1); j++)
{
if(i >= 0 && i <= l && j >= 0 && j <= c);
b += m1[i][j];
}
}
b -= (m1[l1-1][c1-1]);
printf("A soma dos seus vizinhos eh: %d\n", b);
}
int main()
{
int b, m2, l, c;
printf("Entre com o tamanho da matriz (linha): \n");
scanf("%d", &l);
printf("Entre com o tamanho da matriz (coluna): \n");
scanf("%d", &c);
b = matriz(m2, l, c);
return 0;
}

Qeustao 2 professor
for(i = 0; i < LIM; i++)
for(j = 0; j< LIM; j++)
M[i][j] = rand()%10;
}
void imprime(int M[LIM][LIM])
{
int i, j;
for(i = 0; i < LIM; i++)
for(j = 0; j < LIM; j++)
printf("%d%c", M[i][j], j == DIM-1?'\n':' ');
}
int somavizinhos(int M[LIM][LIM], int x, int y)
{
int i, j, soma = 0;
for(i = x - 1; i <= x + 1; i++)
for(j = y -1; j <= y + 1; j++)
if(i >= 0 && i < LIM && j >= 0 && j < LIM);
soma += M[i][j];
return soma;
}
int main()
{
int M[LIM][LIM];
inicializa(M);
imprime(M);
int s = somavizinhos(M, 5, 5);
printf("soma = %d\n", s);
return 0;
}

/* Escreva uma função que receba duas matrizes de mesmo tamanho, A e B. Em seguida, ela
deve fazer B = A', ou seja, B recebe a transposta da matriz A; */
#include <stdio.h>
#include <stdlib.h>
#define MAX 100

int matriztrans(int m1[][MAX], int l, int c)


{
int i, j, x;
int m2[c][l];
printf("entre com os valores da Matriz A[%dx%d]:\n", l, c);
for(i = 0; i < l; i++)
{
for(j = 0; j < c; j++)
{
scanf("%d", &x);
m1[i][j] = x;
m2[j][i] = m1[i][j];
}
}
printf("Os elementos que compoem a Matriz A[%dx%d], sao: \n", l, c);
for(i = 0; i < l; i++)
{ printf("|");
for(j = 0; j < c; j++)
{
printf(" %d ", m1[i][j]);
} printf("|\n");
} printf("\n\n");
printf("Os elementos que compoem a Matriz At = B[%dx%d], sao:\n", c, l);
for(i = 0; i < c; i++)
{ printf("|");
for(j = 0; j < l; j++)
{
printf(" %d ", m2[i][j]);
} printf("|\n");
} printf("\n\n");
}

int main()
{
int m1, a, b;
printf("Entre com o tamanho da matriz (linha): \n");
scanf("%d", &a);
printf("Entre com o tamanho da matriz (coluna): \n");
scanf("%d", &b);
matriztrans(m1, a, b);
return 0;
}

/* Crie uma struct em C que armazene o nome, a altura e a data de nascimento de uma
pessoa. Em seguida, crie um programa que leia os dados de 4 pessoas e imprima os nomes
das pessoas com atura maior que 1,60m e com menos de 18 anos. */
#include <stdio.h>
#include <stdlib.h>
#define LIM 200

typedef struct data


{
int dia, mes, ano;
};
typedef struct data data_t;
struct pessoa
{
char nome[LIM];
float altura;
data_t datanascimento;
};
typedef struct pessoa pessoa_t;

int main()
{
pessoa_t pessoas[4];
int i;
for(i = 0; i < 4; i++)
{
printf("Entre com o nome: ");
fgets(pessoas[i].nome, 199, stdin);
printf("Entre com a altura: ");
scanf("%f", &pessoas[i].altura);
printf("Entre com a data de nascimento: ");
scanf("%d/%d/%d", &pessoas[i].datanascimento.dia, &pessoas[i].datanascimento.mes,
&pessoas[i].datanascimento.ano);
getchar();
}
for(i = 0; i < 4; i++)
{
int dia_convertido = 14 + 7*30 + (2014-18);
int dia_convertido2 = pessoas[i].datanascimento.dia + pessoas[i].datanascimento.mes *
30 + pessoas[i].datanascimento.ano * 365;
if(pessoas[i].altura > 1.60 && dia_convertido2 > dia_convertido)
printf("%s\n", pessoas[i].nome);
}
return 0;
}

/* Crie uma struct para armazenar os dados de um vetor em R3. Crie uma função que leia
dois vetores e calcule o produto escalar deles. */
#include <stdio.h>
#include <stdlib.h>
#define LIM 200

typedef struct vetor


{
float x, y, z;
};

int main()
{
struct vetor a, b;
float escalar = a.x*b.x + a.y*b.y + a.z * b.z;
printf("%f", escalar);
return;
}

/* Crie um TAD (tipo abstrato de dados) que modele o conceito de números complexos. –
Implemente as operações de soma, multiplicação e impressão na tela; */
#include <stdio.h>
#include <stdlib.h>

typedef struct
{
float real, imag;
} numero_complexo;

numero_complexo le_complexo()
{
numero_complexo a;
printf("Entre com a parte real: ");
scanf("%f", &a.real);
printf("Entre com a parte imaginaria: ");
scanf("%f", &a.imag);
return a;
}

numero_complexo soma(numero_complexo a, numero_complexo b)


{
numero_complexo c;
c.real = a.real + b.real;
c.imag = a.imag + b.imag;
return c;
}

numero_complexo imprime(numero_complexo a)
{
printf("%f + %fi", a.real, a.imag);
}

numero_complexo mult(numero_complexo a, numero_complexo b)


{
numero_complexo c;
c.real = a.real * b.real;
c.imag = a.imag * b.imag;
return c;
}

int main()
{
numero_complexo a, b, c, d;
a = le_complexo();
b = le_complexo();
c = soma(a,b);
d = mult(a, b);
imprime(c);
return 0;
}

/* Crie uma função que receba duas strings e determine se uma é anagrama de outra. –
Exemplo: amor, roma*/
#include <stdio.h>
#include <stdlib.h>
#define LIM 100

int checa_anagrama(char a[], char b[])


{
int primeiro[26] = {0}, segundo[26] = {0}, c = 0;
while (a[c] != '\0')
{
primeiro[a[c]-'a']++;
c++;
}
c = 0;
while (b[c] != '\0')
{
segundo[b[c]-'a']++;
c++;
}
for (c = 0; c < 26; c++)
{
if (primeiro[c] != segundo[c])
return 0;
}
return 1;
}
int main()
{
char a[100], b[100];
int flag;
printf("Entre com primeiro nome: ");
gets(a);
printf("Entre com o segundo nome: ");
gets(b);
flag = checa_anagrama(a, b);
if (flag == 1)
printf("\t\"%s\" e \"%s\" eh um anagrama.\n", a, b);
else
printf("\t\"%s\" e \"%s\" nao eh anagrama.\n", a, b);
return 0;
}

/* Escreva um programa que simule o jogo da forca */


#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAX 100

void forca(char entrada[])


{
int tentativas = 0, i, acertou;
char ch; saida[MAX];
for(i = 0; i < strlen(entrada); i++)
saida[i] = ' ';
saida[strlen(entrada)] = '\0';
while(tentativas < 5)
{
acertou = 0;
printf("Entre com um caracter: ");
scanf("%c", &ch);
getchar();
for(i = 0; i < strlen(entrada); i++)
if(entrada[i] == ch)
{
saida[i] = ch;
acertou = 1;
}
if(acertou == 0)
}
}
/* Escreva uma função que receba um número inteiro e escreva o valor dos bits 15, 16 e 17
deste número. */
#include <stdio.h>
#include <stdlib.h>

void escreva(int a)
{
int i;
for(i = 15; i < 18; i++)
{
if((a & (1 << i)) == 0)
printf("0");
else
printf("1");
}
printf("\n");
}

int main()
{
int a;
scanf("%d", &a);
escreva(a);
return 0;
}

Outra forma de fazer.

void escreva(int a)
{
int i;
for(i = 31; i >= 0; i--)
{
if((a & (1 << i)) == 0)
printf("0");
else
printf("1");
}
printf("\n");
}

int main()
{
int a;
scanf("%d", &a);
escreva(a);
return 0;
}