Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gRoOvE

[Resolvido] limpar parte da tela

Recommended Posts

bom galera, fiz um programa pra calcular areas, segue ele ai...mas coloquei um system("cls") e ele limpou a tela toda, gostaria q limpasse apenas a opracao q foi realizada, deixando o quadro com a legenda, seria possivel ??

 

#include "stdafx.h"
#include "areas_lib.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"


void main(void)
{
	char opcao, novo = 'c';
	float r,r1,r2,b,a,l1,l2;
	
	
	printf("|---------------------------------------------|\n");
	printf("|Escolha uma das opcoes p/ calcular a area	|\n");
	printf("|---------------------------------------------|\n");
	printf("|(c) Circulo		(t) Triangulo			 |\n");
	printf("|(r) Retangulo	  (e) Elipse				|\n");
	printf("|(P) Trapesio								 |\n");
	printf("|---------------------------------------------|\n\n");


	while(novo == 'c')
	{
		printf("Escolha uma opcao: ");
		fflush(stdin);
		scanf("%c",&opcao);
		switch(opcao)
		{
			case 'c':
				printf("\nDigite o raio do circulo: ");
				scanf("%f",&r);

				printf("Area do circulo: %.2f\n",A_Cir(r));
				break;
			
			case 'r':
				printf("\nDigite a base: ");
				scanf("%f",&b);
				printf("Digite a altura: ");
				scanf("%f",&a);

				printf("Area do retangulo: %.2f\n",A_Retg(b,a));
				break;

			case 't':
				printf("\nDigite a base: ");
				scanf("%f",&b);
				printf("Digite a altura: ");
				scanf("%f",&a);

				printf("Area do triangulo: %.2f\n",A_Trig(b,a));
				break;

			case 'e':
				printf("\nDigite o raio(x): ");
				scanf("%f",&r1);
				printf("Digite o raio(y): ");
				scanf("%f",&r2);

				printf("Area da elipse: %.2f\n",A_Elip(r1,r2));
				break;

			case 'P':
				printf("\nDigite a altura: ");
				scanf("%f",&a);
				printf("Digite o lado(a): ");
				scanf("%f",&l1);
				printf("Digite o lado(b): ");
				scanf("%f",&l2);

				printf("Area do trapesio: %.2f\n",A_Trap(a,l1,l2));
				break;

			default:
				printf("Codigo invalido!");
		}
	printf("\nContinuar(c) ou qualquer tecla para parar\n\n");
	system("cls");
	novo = getch();

	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom q eu saiba naum tem como..

jah ouvi falar de uma função chamada clreol(); mas nunca usei!

você pode jogar o quadro de legenda em um procedimento.. ai embaixo do comando de limpar a tela você chama o procedimento assim:

system("cls");
legenda();

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Algo um pouco mais elaborado...

 

Se estudar esse código, talvez te ajude um pouco... Criando um Handle de Screen secundário...

 

HANDLE srcMenu, srcPrincipal;
void MontaMenu();

int main(int argc, char* argv[])
{
	srcPrincipal = CreateConsoleScreenBuffer( GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CONSOLE_TEXTMODE_BUFFER, 0 );
	SetConsoleActiveScreenBuffer( srcPrincipal );

	SetConsoleTextAttribute(srcPrincipal, FOREGROUND_RED);

	char buf[1024];
	strcpy(buf, "Programa de teste de janela sobre janela em modo DOS\nPrograma versão 1.01 - Forum\nOmar Fernando Pessôa");
	DWORD num;
	WriteConsole( srcPrincipal, buf, strlen(buf), &num, 0);

	//Monta tela no meio
	MontaMenu();
	//------------------

	
	system("pause");
	CloseHandle(srcMenu);
	SetConsoleActiveScreenBuffer(srcPrincipal);

	system("pause");
	CloseHandle(srcPrincipal);

	return 0;
}

void MontaMenu()
{
	char buf[1024];
	strcpy(buf, "----------------------------------------\n|									  |\n|Programa versão 1.01 - Forum	   |\n| Omar Fernando Pessôa |\n----------------------------------------------");
	DWORD num;

	srcMenu = CreateConsoleScreenBuffer( GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, CONSOLE_TEXTMODE_BUFFER, 0 );
	SetConsoleActiveScreenBuffer( srcMenu );
	SetConsoleTextAttribute(srcMenu, FOREGROUND_BLUE);

	COORD pos = { 20,20 };
	SetConsoleCursorPosition(srcMenu,pos);

	WriteConsole( srcMenu, buf, strlen(buf), &num, 0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom q eu saiba naum tem como..

jah ouvi falar de uma função chamada clreol(); mas nunca usei!

você pode jogar o quadro de legenda em um procedimento.. ai embaixo do comando de limpar a tela você chama o procedimento assim:

system("cls");
legenda();

[]'s

como funciona esse "procedimento"? como crio ??

 

omar.pessoa

não intendi nada velho, sou iniciante...=//

Compartilhar este post


Link para o post
Compartilhar em outros sites

clreol() tem na conio.h e também não é recomendado usar essa biblioteca.

 

O jeito mais simples de se fazer isso sem ter que apelar pra handlers é colocar o código dentro do loop.

 

void main(void)
{
char opcao, novo = 'c';
float r,r1,r2,b,a,l1,l2;

do
{	system("cls");
printf("|---------------------------------------------|\n");
printf("|Escolha uma das opcoes p/ calcular a area	|\n");
printf("|---------------------------------------------|\n");
printf("|(c) Circulo		(t) Triangulo			 |\n");
printf("|(r) Retangulo	  (e) Elipse				|\n");
printf("|(P) Trapesio								 |\n");
printf("|---------------------------------------------|\n\n");

	printf("Escolha uma opcao: ");
	fflush(stdin);
	scanf("%c",&opcao);
	switch(opcao)
	{
		case 'c':
			printf("\nDigite o raio do circulo: ");
			scanf("%f",&r);

			printf("Area do circulo: %.2f\n",A_Cir(r));
			break;

		case 'r':
			printf("\nDigite a base: ");
			scanf("%f",&b);
			printf("Digite a altura: ");
			scanf("%f",&a);

			printf("Area do retangulo: %.2f\n",A_Retg(b,a));
			break;

		case 't':
			printf("\nDigite a base: ");
			scanf("%f",&b);
			printf("Digite a altura: ");
			scanf("%f",&a);

			printf("Area do triangulo: %.2f\n",A_Trig(b,a));
			break;

		case 'e':
			printf("\nDigite o raio(x): ");
			scanf("%f",&r1);
			printf("Digite o raio(y): ");
			scanf("%f",&r2);

			printf("Area da elipse: %.2f\n",A_Elip(r1,r2));
			break;

		case 'P':
			printf("\nDigite a altura: ");
			scanf("%f",&a);
			printf("Digite o lado(a): ");
			scanf("%f",&l1);
			printf("Digite o lado(b): ");
			scanf("%f",&l2);

			printf("Area do trapesio: %.2f\n",A_Trap(a,l1,l2));
			break;

		default:
			printf("Codigo invalido!");
	}
printf("\nContinuar(c) ou qualquer tecla para parar\n\n");
novo = getch();
} while (novo = ''c');
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom em C td é função vai!

bom oq eu qro dizer é pra você separar por módulos, assim poderá chamar um módulo qnd quiser, exemplo:

 

void Exemplo(){
	printf("|---------------------------------------------|\n");
	printf("|Escolha uma das opcoes p/ calcular a area	|\n");
	printf("|---------------------------------------------|\n");
	printf("|(c) Circulo		(t) Triangulo			 |\n");
	printf("|(r) Retangulo	  (e) Elipse				|\n");
	printf("|(P) Trapesio								 |\n");
	printf("|---------------------------------------------|\n\n");
}
int main(){
   Exemplo();
   getch();
   return 0;
}

volte a postar!

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu limpo usando o

 

clrscr();

 

simples assim

 

desculpa isso é usado para limpar a tela toda e não parte da tela

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom em C td é função vai!

bom oq eu qro dizer é pra você separar por módulos, assim poderá chamar um módulo qnd quiser, exemplo:

 

void Exemplo(){
	printf("|---------------------------------------------|\n");
	printf("|Escolha uma das opcoes p/ calcular a area	|\n");
	printf("|---------------------------------------------|\n");
	printf("|(c) Circulo		(t) Triangulo			 |\n");
	printf("|(r) Retangulo	  (e) Elipse				|\n");
	printf("|(P) Trapesio								 |\n");
	printf("|---------------------------------------------|\n\n");
}
int main(){
   Exemplo();
   getch();
   return 0;
}

volte a postar!

[]'s

ae quit, funcionou certinho com função :D

vlws velho ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.