Ir para conteúdo

POWERED BY:

Arquivado

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

Graciele

struct

Recommended Posts

Oi pessoal...Eu tenho que fazer um trabalho e o professor me deu a dica de usar struct...Porem eu não sei como usar...Ja procurei no google... porem nao consigo entender...soh sei declarar...porem nao sei colocar dados e visualizar...Principalmente quando envolve ponteiro dentro do struct...Será que vocês poderiam me ajudar???Obrigada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom...

 

Eu tenho que fazer um programa de implementação...

Conhece Grafos???

 

G= (V, A)

 

V = conjunto de Vertices

A = conjunto de Arestas

 

Obs: Tentei colocar as imagens do grafo e da 1ª estrutura porem nao consegui... se você quiser posso te enviar por e-mail...

 

vou escrever aki os 2 tipos de estrutura que o prof fez...

 

1ª:

 

struct EGrafo{

int numNos;

int numRotulo;

int **matriz;

};

 

 

sendo que **matriz ele disse que é ponteiro do ponteiro...

 

ok

eu ia ulitizar esse...

...

..

.

 

O outro seria:

 

struct EAresta{

int no;

char rotulo;

struct EAresta * proxAresta;

};

 

struct ENo{

int no;

struct EAresta * proxAresta;

struct ENo*proxNo;

};

 

struct EGrafo{

int qtd;

struct ENo*prim;

struct ENo*fim;

};

 

struct EGrafo.grafo;

 

Bom o problema maior é que eu nao sei como fazer para utilizar... em c++

Nao sei como acrescentar dados e nem como vou faezr para ele mostrar...

 

Obrigada pela atenção...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo de Struct

#include <iostream.h>#include <stdlib.h>struct EGrafo{	int numNos;	int numRotulo;	int matriz[5][10];};EGrafo grafo;int main(){	  // Iniciando todas as posições da matriz da estrutura	  for(grafo.numNos = 0; grafo.numNos <= 4; grafo.numNos++)	  {		   for(grafo.numRotulo = 0; grafo.numRotulo <= 9; grafo.numRotulo++)		   {				grafo.matriz[grafo.numNos][grafo.numRotulo] = 0;		   }	  }	  // Exibindo na tela os valores da matriz	  for(grafo.numNos = 0; grafo.numNos <= 4; grafo.numNos++)	  {		   for(grafo.numRotulo = 0; grafo.numRotulo <= 9; grafo.numRotulo++)		   {				cout<<grafo.matriz[grafo.numNos][grafo.numRotulo]<<endl;		   }	  }	  system("PAUSE");	  return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow Vergil...Mto Obrigada...Mais uma dúvida... tem como colocar ponteiro junto com matriz???ou o tal ponteiro ponteiro???Para que serve esse "raio" de ponteiro...Faz diferença eu usar ou nao???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq o primeiro numero nao esta aparecendo???#include <iostream.h>#include <stdlib.h>#include <stdio.h>struct Grafos{ int numNos; int numRotulos; int matriz[100][100]; int qtd;};Grafos g;int main(){ int i,j; Grafos g; int qtd=0; cout << "Quantidade de Grafos: "; cin >> g.qtd; for ( g.numNos=0; g.numNos<g.qtd; g.numNos++) { cout << "Numeros de Nos: "; cin >> g.matriz [g.numNos][g.numRotulos]; for ( g.numRotulos=0; g.numRotulos<1; g.numRotulos++) { cout << "Numero de Rotulos: "; cin >> g.matriz [g.numNos][g.numRotulos]; } } for ( g.numNos=0; g.numNos<g.qtd; g.numNos++) { cout<<endl; cout << "Grafos: (" << g.matriz [g.numNos][g.numRotulos]; for ( g.numRotulos=0; g.numRotulos<1; g.numRotulos++) { cout << ", " << g.matriz [g.numNos][g.numRotulos]<< ")"; cout<<endl; cout<<endl; } } system("PAUSE"); return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu posso dizer onde está o erro, mas vou me limitar a falar superficialmente de matriz. Já faz um bom tempo que estudei grafos, não lembro quase nada. http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

 

for (g.numNos=0; g.numNos<g.qtd; g.numNos++)	{		cout << "Numeros de Nos: ";		cin >> g.matriz [g.numNos][g.numRotulos]; // erro de lógica aqui

você está gravando o número de nós na matriz, nas linhas de 0 a g.qtd, mas não está informando em qual coluna da matriz. g.numRotulos não foi inicializado, então o programa grava o valor numa coluna qualquer da matriz.

 

Uma dica para gravar dados em matrizes. Faça um for para contar as linhas e um for dentro do for das linhas para receber os valores das colunas. Por exemplo: Cadastrar notas de de 3 alunos em 5 avaliações.

for(linha=0; linha<=2; linha++)	  {		  for(coluna=0; coluna<=4; coluna++)		  {			   cin>>matriz[linha][coluna];		  }	  }

Assim você sabe onde exatamente gravou os dados. Se quiser recuperar as notas do 2 aluno:

 

for(coluna=0; coluna<=4; coluna++){	 cout<<matriz[1][coluna];}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que você poderia me ajudar mais uma vez...Tem como eu declarar uma matriz que possa receber tanto numero quanto letras???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um vetor de caracteres (char)Obs.: o número que você colocar dentro deste vetor será uma String(texto)

Compartilhar este post


Link para o post
Compartilhar em outros sites

porem ele nao aceita...quando eu faço: char No_Origem [10][10]; char No_Destino [10][10]; char Rotulos[10][10];Na hora que roda eu coloco por exemplo: S1 para No_origemAi ele pula o NO_Destino e vai direto para Rotulos..vou colocar o programa aki...#include <iostream.h>#include <stdlib.h>#include <stdio.h>#include <string>struct Grafos{ int origem, destino; char No_Origem [10][10]; char No_Destino [10][10]; char Rotulos[10][10];};Grafos g;int main(){ Grafos g; int qtd=0; cout << "Quantidade de Grafos: "; cin >> qtd; for ( g.origem=0; g.origem<qtd; g.origem++) { for ( g.destino=0; g.destino<qtd; g.destino++) { cout << "No Origem: "; cin >> g.No_Origem [g.origem][g.destino]; cout << "No Destino: "; cin >> g.No_Destino [g.origem][g.destino]; cout << "Rotulo: "; cin >> g.Rotulos [g.origem][g.destino]; } } for ( g.origem=0; g.origem<qtd; g.origem++) { for ( g.destino=0; g.destino<qtd; g.destino++) { cout << endl; cout << "( " << g.No_Origem [g.origem][g.destino]; cout << ", " << g.No_Destino [g.origem][g.destino]; cout << ", " << g.Rotulos [g.origem][g.destino] << " )"; cout << endl; } } system("PAUSE"); return 0;}Onde eu estou errando???Eu queria que ele mostrasse ( S0 , S1 , b )ele ate mostra se eu trabalhar soh com numeros...tiraro char e deixa como int mesmo...ele mostra como eu quero... porem eu preciso que ele faça isso com letras...mostre da forma como eu coloquei ( S0 , S1 , b )...Pode me ajudar???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando for publicar seu código coloque-o entre a tag "code" http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

#include <iostream.h>#include <stdlib.h>#include <stdio.h>#include <string> // Você não usou comandos dessa bibliotecastruct Grafos{int origem, destino;char No_Origem [10][10];char No_Destino [10][10];char Rotulos[10][10];};Grafos g;int main(){	Grafos g;	int qtd=0;	cout << "Quantidade de Grafos: ";	cin >> qtd;	for ( g.origem=0; g.origem<qtd; g.origem++)	{		cout << "No Origem: ";		cin >> g.No_Origem [g.origem]; // ou gets(g.No_Origem[g.origem]);		cout << "No Destino: ";		cin >> g.No_Destino [g.origem]; // ou gets ''		cout << "Rotulo: ";		cin >> g.Rotulos [g.origem];	// ''	}	for ( g.origem=0; g.origem<qtd; g.origem++)	{		cout << endl;		cout << "( " << g.No_Origem [g.origem];		cout << ", " << g.No_Destino [g.origem];		cout << ", " << g.Rotulos [g.origem] << " )";		cout << endl;	}	system("PAUSE");	return 0;}

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.