Programação Orientada à Procedimentos II Programação Orientada à Procedimentos I Processamento Paralelo Lógica de Programação Introdução à Computação Informática Básica

 

 

Informática Básica
Introdução à Computação
Lógica de Programação
Programação Orientada à Procedimentos I
Programação Orientada à Procedimentos II

Processamento Paralelo


Uma Possível Solução ...




#include "stdio.h"
#include "conio.h"
#include "ctype.h"
#include "string.h"
#include "stdlib.h"

void menu();
void cadastrar();
void matriz();
void preencher(int *);
void imprimir(int *,int);
void calcular(int *,int *,int *);
void inverter();
void inverte(char *, char *);

void main()
{
char op;
while (op!='4')
	{
	clrscr();
	menu();
	op=getch();
	switch (op)
		{
		case '1':cadastrar();break;
		case '2':inverter();break;
		case '3':matriz();break;
		case '4':break;
		}
	}
}
void menu()
{
for (int a=0;a<26;a++)
	{
	gotoxy(27+a,9);printf("*");
	gotoxy(27+a,14);printf("*");
	}
for (a=0;a<5;a++)
	{
	gotoxy(27,9+a);printf("*");
	gotoxy(52,9+a);printf("*");
	}
gotoxy(30,10);printf("1 - Cadastrar Usuario");
gotoxy(30,11);printf("2 - Inverter Frase");
gotoxy(30,12);printf("3 - Matriz");
gotoxy(30,13);printf("4 - Sair");
}

void cadastrar()
{
char nome1[30],nome2[30];
clrscr();
printf("Digite o primeiro nome: ");
gets(nome1);
printf("Digite o segundo nome: ");
gets(nome2);
strlwr(nome1);
strlwr(nome2);
nome1[0]=toupper(nome1[0]);
nome2[0]=toupper(nome2[0]);
puts(nome1);
puts(nome2);
getch();
}

void matriz()
{
int mat1[2][3][2],mat2[2][3];
clrscr();
preencher(&mat1[0][0][0]);
imprimir(&mat1[0][0][0],2);
printf("\n");
imprimir(&mat1[0][0][1],2);
calcular(&mat1[0][0][0],&mat1[1][2][1],&mat2[0][0]);
printf("\n");
imprimir(&mat2[0][0],1);
getch();
}

void preencher(int *p)
{
randomize();
for (int a=0;a<12;a++)
	{
	*p=rand()%51+50;
	p++;
	}
}

void imprimir(int *p,int incre)
{
for (int a=0;a<2;a++)
	{
	for (int a=0;a<3;a++)
		{
		printf("%d ",*p);
		p+=incre;
		}
	printf("\n");
	}
}

void calcular(int *p1,int *p2,int *p3)
{
for (int a=0;a<6;a++)
	{
	*p3=*p1+*p2;
	p1+=2;
	p2-=2;
	*p3++;
	}
}

void inverter()
{
char frase[60],invertida[60];
clrscr();
printf("Digite a Frase: ");
gets(frase);
inverte(&frase[0],&invertida[0]);
}

void inverte(char *p1, char *p2)
{
char *p3,*p4;
int a=0,cont=0;
strcpy(p2,p1);
p2+=strlen(p2);
*p2=' ';
p2++;
*p2=NULL;
p2-=strlen(p1)+1;
strcpy(p3,strrev(p2));
p4=p3;
p3--;
do
	{
	p3++;
	if	(*p3==' '||*p3==NULL)
		{
		p4=p3;
		while(cont!=0)
			{
			p3--;
			*p2=*p3;
			p2++;
			a++;
			cont--;
			}
		p3=p4;
		}
	cont++;
	}while(*p3!=NULL);
p2--;
*p2=NULL;
a--;
p2-=a;
puts(p1);
puts(p2);
getch();
}