Você está na página 1de 11

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; char
Nome[51];
};
void main(void){
struct Prova Vetor[TAM_MAX]; int
i, troca;
float

aux_valor; char
aux_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);
}
getch();
}

/* vetores */

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; char
Nome[51];
};
void main(void){
struct Prova *Vetor; int
i, troca; float
aux_valor; char
aux_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);
}

Você também pode gostar