Olá amigos, estou tendo muita dificuldade num código aqui, pois, é a primeira vez que me deparo com a lista circularmente encadeada e com a biblioteca graphic.
Devo resolver o exercício por meio de estrutura de dados usando c.
Utilizo o dev-c++ v4.9.9.2. o qual não possui a biblioteca que comentei.
Então seguindo essas dicas:...
Instalação da Biblioteca BGI no ambiente Dev C++
O código binário do BGIm e maiores detalhes sobre suas funções e seus desenvolvedores
Os arquivos necessários para instalação do BGI no Dev C++ são:
graphics.h (copiar em C:\Dev-Cpp\include)
libbgi.a (copiar em C:\Dev-Cpp\lib)
2.1. Uso de Projetos
Para trabalhar em modo gráfico será necessário utilizar o conceito de Projeto. Um projeto
pode ser considerado como um container que armazena todos os elementos que irão
compor um programa.
2.1.1. Criando um novo projeto.
• Clique no menu "File" e selecione "New", "Project...".
• Escolha "Empty Project" e certifique-se que a opçao "C++ project" está selecionada.
• Escolha um nome para o projeto. Você pode dar qualquer nome válido para um
arquivo. O nome do projeto sera o nome do executável a ser gerado.
• Após escolher o nome, clique "OK".
• O Dev-C++ irá perguntar onde salvar o projeto, escolha um diretório apropriado e
salve o projeto.
2.1.2. Criando ou adicionando arquivos ao projeto.
Você pode criar arquivos fonte em branco, de duas formas:
• Clique no menu "File" e selecione "New Source File" ou
• Clique no menu "Project" e selecione "New File".
2.1.3. Configuração do uso da biblioteca gráfica no projeto.
Criado o projeto, você precisa dizer ao Dev-C++ que este deve utilizar a biblioteca BGIm
(que implementa o BGI para o Dev-C++). Isto é feito através da janela "Project
Options". Abaixo segue um conjunto de passos para realizar a tarefa.
• Clique no menu "Project" e escolha "Project Options"
• Clique na tab “Geral” e selecione “Win32 GUI”
• Clique na tab "Parameters"
• No campo "Linker", digite o seguinte texto (ver figura 1):
-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32
...consegui utiliza-la somente criando o projeto.cpp mas, na verdade queria um projeto.c
Sem falar que esse é só o início do problema...
Vejam o exercício.
Considere um polígono, inserido num plano cartesiano, cujos vértices vi
são representados por pares ordenados (xi,Yi):
Podemos representá-lo por uma lista p:[vi,v2,v3,...vn], tal que dois elementos
adjacentes em p representam uma aresta do polígono.
Para representar a aresta vn v1, podemos implementar p como uma lista circularmente
encadeada, pois assim, vn e v1 serão adjacentes. Baseando-se Nestas condições,
crie um tipo de dados que possibilite a manipulação de polígonos, oferecendo
as seguintes operações.
a) criar um polígono vazio.
b] Inserir um novo vértice entre v1 e vn
c) Remover um determinado vértice
d) Calcular o perímetro do polígono
e) Mostrar o polígono
f) Destruir o polígono.
E o código que consegui fazer até agora.
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
struct no
{
int info;
struct no *prox;
};
typedef struct
{
struct no *inicio;
}lista;
void init(lista *ls)
{
ls->inicio=NULL;
}
int empty(lista *ls)
{
if(ls->inicio==NULL)
return 1;
else
return 0;
}
void insert(lista *ls,int pvalor)
{
struct no *novo=(struct no*)malloc(sizeof(struct no));
novo->info=pvalor;
if(empty(ls))
{
novo->prox=novo;
}
else
{
struct no *navegador = ls->inicio;
while(navegador->prox!=ls->inicio)
{
navegador=navegador->prox;
}
navegador->prox=novo;
novo->prox=ls->inicio;
}
ls->inicio=novo;
}
void exibelista(lista *ls)
{
struct no *navegador=ls->inicio;
do
{
printf("x: %d \nEndereco: %x \nProx: %x \n",navegador->info,navegador,navegador->prox);
navegador=navegador->prox;
}while(navegador!=ls->inicio);
}
int main()
{
int i,num;
lista ls;
init(&ls);
do
{
printf("\t Menu \n");
printf("1 - Criar polígono \n");
printf("2 - Inserir um novo vértice entre v1 e vn \n");
printf("3 - Remover um determinado vértice \n");
printf("4 - Calcular o perímetro do polígono \n");
printf("5 - Mostrar o polígono \n");
printf("6 - Destruir o polígono \n");
printf("7 - sair \n");
scanf("%d",&num);
system("cls");
if(num<1||num>7)
{
printf("\n Opção inválida! Tente novamente.\n");
system("pause");
system("cls");
}
switch(num)
{
case 1:
printf("Atencao! Para sair pressione uma tecla na janela grafica\n");
system("pause");
system("cls");
initwindow(1000,700);
moveto(250,400);//v0 //posiciona cursor na posição (250,400)
lineto(500,150);//v1 //desenha uma linha de (500,150)
lineto(750,400);//v2 //desenha uma linha de (750,400)
lineto(700,650);//v3 //desenha uma linha de (700,650)
lineto(300,650);//vv-1 //desenha uma linha de (300,650)
lineto(250,400);//v //aponta p começo.
while(!kbhit()); // espera até alguma tecla se pressiona
closegraph();
system("cls");
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
initwindow(1000,700);
while(!kbhit()); // espera até alguma tecla se pressiona
closegraph(); // fecha janela gráfica
break;
case 6:
break;
}
}while(num!=7);
system("pause");
}
Como podem ver ainda contem muitos erros.
Não estou conseguindo mesclar a lista com as propriedades da biblioteca. Porque não sei como utilizar dois dados no mesmo no da lista. Para poder definir as coordenadas cartezianas e chegar perto do que a questão exige.
Espero que possam me dar uma luz. Porque esse dragão vai decidir os próximos seis meses da minha vida. rsss
Pergunta
R!ck
:blink:
Olá amigos, estou tendo muita dificuldade num código aqui, pois, é a primeira vez que me deparo com a lista circularmente encadeada e com a biblioteca graphic.
Devo resolver o exercício por meio de estrutura de dados usando c.
Utilizo o dev-c++ v4.9.9.2. o qual não possui a biblioteca que comentei.
Então seguindo essas dicas:...
...consegui utiliza-la somente criando o projeto.cpp mas, na verdade queria um projeto.cSem falar que esse é só o início do problema...
Vejam o exercício.
E o código que consegui fazer até agora.
Como podem ver ainda contem muitos erros.
Não estou conseguindo mesclar a lista com as propriedades da biblioteca. Porque não sei como utilizar dois dados no mesmo no da lista. Para poder definir as coordenadas cartezianas e chegar perto do que a questão exige.
Espero que possam me dar uma luz. Porque esse dragão vai decidir os próximos seis meses da minha vida. rsss
Desde já agradecido. = ]
Editado por R!ckLink para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.