Upload
junior-souza
View
237
Download
18
Embed Size (px)
DESCRIPTION
Lista Exercicios - Estrutura de Dados
Citation preview
Nome: Diego de Souza Nava
RA: 9902004391
Turma: 4º semestre
EXERCICIOS
1º
#include <stdio.h>
#include <conio.h>
void main (void) {
int i, j;
int Tam, Matriz[29][29];
int Linha, Coluna, LinhaAtual, ColunaAtual;
for (i=0;i<29;i++)
for (j=0;j<29;j++)
Matriz[i][j] = 0;
do {
printf("\nTamanho da Matriz (nro. impar entre 5 e 29): ");
scanf("%d",&Tam);
} while ((Tam%2==0) || (Tam>29) || (Tam<5));
Linha = 0;
Coluna = Tam/2;
Matriz[Linha][Coluna] = 1;
for (i=2;i<=Tam*Tam;i++) {
LinhaAtual = Linha;
ColunaAtual= Coluna;
if (((Linha-1)<0) && ((Coluna-1)<0)){
Linha = Tam-1;
Coluna = Tam-1;
}else
if (((Linha-1)<0) && ((Coluna-1)>=0)){
Linha = Tam-1;
Coluna = Coluna - 1;
}else
if (((Linha-1)>=0) && ((Coluna-1)<0)){
Linha = Linha -1;
Coluna = Tam-1;
}else
if (((Linha-1)>=0) && ((Coluna-1)>=0)){
Linha = Linha - 1;
Coluna = Coluna -1;
}
if (Matriz[Linha][Coluna] == 0) {
Matriz[Linha][Coluna] = i;
}else{
Linha = (LinhaAtual+1)>=Tam ? 0 : LinhaAtual+1;
Coluna = ColunaAtual;
Matriz[Linha][Coluna] = i;
}
}
for (i=0;i<Tam;i++){
for (j=0;j<Tam;j++)
printf("%3d ", Matriz[i][j]);
printf("\n");
}
getch();
}
2º
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main (void){
int linha, coluna, i;
printf("Digite a mensagem\n");
gets(Texto);
for (linha=0;linha<64;linha++)
for (coluna=0;coluna<4;coluna++) Matriz[linha][coluna] = ' ';
i = 0;
linha = 0;
coluna = 0;
while(Texto[i]!='\0'){
if (Texto[i]!=' '){
Matriz[linha][coluna] = Texto[i];
}else{
Matriz[linha][coluna] = 'X';
}
if (++coluna > 3){
coluna = 0;
if (++linha >63){
printf("Limite de caracteres ultrapassado"); getch();
exit;
}
} i++;
}
i = 0;
for (coluna=0;coluna<4;coluna++){
for (linha=0;linha<65;linha++){
if (Matriz[linha][coluna]==' '){
Criptografado[i] = ' '; i++;
break;
}
Criptografado[i] = Matriz[linha][coluna]; i++;
}}
Criptografado[i] = '\0';
printf("\n%s",Criptografado);
getch();
}
3º SOLUCAO UTILIZANDO NOTACAO DE VETORES E MATRIZES
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main(void){
float VetorLinha[30], VetorColuna[30], MatrizResultado[30][30]; int N, P, linha, coluna;
do {
printf("Qual a dimensao P? "); scanf("%d",&P);
} while ( (P>30) || (P<0));
do {
printf("Qual a dimensao N? "); scanf("%d",&N);
} while ( (N>30) || (N<0));
for(linha=0;linha<N;linha++){
printf("Elemento %d: ", linha);
scanf("%f", &VetorLinha[linha]);
}
for(coluna=0;coluna<P;coluna++){
printf("Elemento %d: ", coluna);
scanf("%f", &VetorColuna[coluna]);
}
for (linha=0;linha<N;linha++){
for (coluna=0;coluna<P;coluna++)
{
MatrizResultado[linha][coluna] = VetorLinha[linha] *VetorColuna[coluna];
}
}
for (linha=0;linha<N;linha++){
for (coluna=0;coluna<P;coluna++){
printf("%f ", MatrizResultado[linha][coluna]);
}
printf("\n");
}
getch();
}
/* SOLUCAO UTILIZANDO NOTACAO DE PONTEIROS E ALOCACAO DINAMICA DE MEMORIA */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h> void main(void){
float *VetorLinha, *VetorColuna, *MatrizResultado; int N, P, linha, coluna;
do {
printf("Qual a dimensao P? "); scanf("%d",&P);
} while ( (P>30) || (P<0));
VetorLinha = (float *)calloc(P,sizeof(float)); /* alocacao dinamica */ do {
printf("Qual a dimensao N? "); scanf("%d",&N);
} while ( (N>30) || (N<0));
VetorColuna = (float *)calloc(N,sizeof(float));
MatrizResultado = (float *)calloc(N*P,sizeof(float));
if (!MatrizResultado || !VetorLinha || !VetorColuna){
printf("Erro de alocacao de memoria. Programa terminado"); getch();
exit;
}
for(linha=0;linha<N;linha++) { printf("Elemento %d: ", linha);
scanf("%f", (VetorLinha + linha));
}
for(coluna=0;coluna<P;coluna++) { printf("Elemento %d: ", coluna);
scanf("%f", (VetorColuna + coluna));
}
for (linha=0;linha<N;linha++) {
for (coluna=0;coluna<P;coluna++) {
*(MatrizResultado + linha*P +coluna) = *(VetorLinha+linha) *(VetorColuna+coluna);
}
}
for (linha=0;linha<N;linha++) {
for (coluna=0;coluna<P;coluna++) {
printf("%f ", *(MatrizResultado + linha*P +coluna));/* ponteiros */
}
printf("\n");
}
getch(); free(VetorLinha); free(VetorColuna); free(MatrizResultado);
}
4º
SOLUCAO UTILIZANDO NOTACAO DE VETORES E MATRIZES
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define TAM_MAX 1000
struct Prova {
float Valor; charNome[51];
};
void main(void){
struct Prova Vetor[TAM_MAX]; inti, troca;
float aux_valor; charaux_nome[51];
for (i=0;i<TAM_MAX;i++){
printf("Digite o Nome[%d]: ", i); scanf("%s", Vetor[i].Nome);
printf("Digite o Valor[%d]: ", i); scanf("%f", &Vetor[i].Valor);
}
do {
troca = 0;
for (i=0;i<TAM_MAX-1;i++)
{
if (Vetor[i].Valor>Vetor[i+1].Valor) /* vetores */
{
troca = 1;
aux_valor = Vetor[i].Valor; Vetor[i].Valor = Vetor[i+1].Valor; Vetor[i+1].Valor = aux_valor;
strcpy(aux_nome, Vetor[i].Nome); strcpy(Vetor[i].Nome,Vetor[i+1].Nome); strcpy(Vetor[i+1].Nome,aux_nome);
}
}
} while (troca==1);
for (i=0;i<TAM_MAX;i++){
printf("%s \t %f \n", Vetor[i].Nome,Vetor[i].Valor); /* vetores */
}
getch();
}
SOLUCAO UTILIZANDO NOTACAO DE PONTEIROS E ALOCACAO DINAMICA DE MEMORIA
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#define TAM_MAX 1000 struct Prova {
float Valor; charNome[51];
};
void main(void){
struct Prova *Vetor; inti, troca; floataux_valor; charaux_nome[51];
Vetor = (struct Prova *) calloc(TAM_MAX, sizeof(struct Prova)); if (!Vetor) {
printf("Erro na alocacao de memoria."); getch();
exit;
}
for (i=0;i<TAM_MAX;i++) { printf("Digite o Nome[%d]: ", i);
scanf("%s", (Vetor +i)->Nome); printf("Digite o Valor[%d]: ", i); scanf("%f", &(Vetor +i)->Valor);
}
do {
troca = 0;
for (i=0;i<TAM_MAX-1;i++) {
if ((*(Vetor+i)).Valor > (*(Vetor+i+1)).Valor) { troca = 1;
aux_valor = (Vetor+i)->Valor;
(Vetor+i)->Valor = (Vetor+i+1)->Valor;
(Vetor+i+1)->Valor = aux_valor;
strcpy(aux_nome, (Vetor+i)->Nome); strcpy((Vetor+i)->Nome,(Vetor+i+1)->Nome); strcpy((Vetor+i+1)->Nome,aux_nome);
}
}
} while (troca==1);
for (i=0;i<TAM_MAX;i++) {
printf( "%s \t %f \n", (Vetor+i)->Nome,(Vetor+i)->Valor); /* ponteiros */
}
getch(); free(Vetor);
}