• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Decrypter

Procurar indice !

12 mensagens neste tópico

Boa noite !

Já fiz a pesquisa aqui no fórum mas não encontrei concretamente o que queria .

Tenho de fazer um programa em C em que se simula uma loja de componentes electrónicos.

Criei 3 strings , nome , código e tipo . Criei um vector de números, para a quantidade .

Tenho duas dúvidas :

- Pedidos e inseridos esses dados ao/pelo utilizador , devo permitir adicionar mais do que um componente no qual guardo essas 4 informações. Como é que, consigo descobrir o índice em que essas informações ficaram guardadas ? Passo a explicar melhor, como é que , escrevendo o utilizador por exemplo o código de um certo componente, consigo identificar qual o componente em si (qual o índice),com todas as restantes informações, para, por exemplo, o apagar , ou vender , etc ?

- Como é que, apago um certo componente ?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me que o melhor nessa situação seria usar uma hash table, usando o código como chave.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Passo a explicar melhor, como é que , escrevendo o utilizador por exemplo o código de um certo componente, consigo identificar qual o componente em si (qual o índice),com todas as restantes informações, para, por exemplo, o apagar , ou vender , etc ?

A melhor maneira é usares estruturas de dados.

Como estás a pensar guardar a informação?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah, esqueci de dizer , não posso usar estruturas nem ficheiros !

Tem de ser um programa muito básico, não pode ser nada de complicado.

Se servir de ajuda , o mail do professor :

Alguns esclarecimentos sobre o trabalho 3:

- O trabalho é para ser implementado com vectores (arrays), um vector para cada informação

- O código do componente deve ser único e é através dele que devem aceder a toda a informação do componente

- Localizado o código do componente no vector, essa posição do indice deve ser usada nos outros vectores para dar a restante informação. Ver exercício das aulas práticas

- Não devem usar estruturas porque ainda não foi dado

- Não devem usar ficheiros porque ainda não foi dado

- Quando é apagada a informação de um componente dado por um código, toda a informação nos outros vectores relativa a esse componente deve ser apagada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nesse caso, podes tentar manter um array para cada "campo" ordenado pelo código e encontrar os dados através de pesquisa binária.

Para apagar: A quantidade a 0 não chega?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta colocar os dados da seguinte forma:

array[nº de registos][nº de informações]->cod

                                                      ->nome

                                                      ->...

Acho que desta forma dá, basta no produto teres o seu código.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nesse caso, podes tentar manter um array para cada "campo" ordenado pelo código e encontrar os dados através de pesquisa binária.

Para apagar: A quantidade a 0 não chega?

Não, é o que me está a lixar ! É que nem demos isso, temos de apagar mesmo a informação !

Experimenta colocar os dados da seguinte forma:

array[nº de registos][nº de informações]->cod

                                                      ->nome

                                                      ->...

Acho que desta forma dá, basta no produto teres o seu código.

É capaz de dar mas, como é que depois, através do código inserido pelo utilizador conseguiria aceder ao resto da informação ? Além disso, repara, o prof quer um array para cada informação .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É capaz de dar mas, como é que depois, através do código inserido pelo utilizador conseguiria aceder ao resto da informação ? Além disso, repara, o prof quer um array para cada informação .

Então fazes um array para cada informação do produto e usas a posição como código do produto. No produto tens a etiqueta com o código que vais inserir no programa e ele vais buscar a informação a essa posição -1.

Exemplo: No produto que tem o código 1 ao inserires no programa ele vai á posição 0 de cada array retirar a informação.

EDIT: Para apagares o produto colocas um - na parte da informação em cada array.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então fazes um array para cada informação do produto e usas a posição como código do produto. No produto tens a etiqueta com o código que vais inserir no programa e ele vais buscar a informação a essa posição -1.

Exemplo: No produto que tem o código 1 ao inserires no programa ele vai á posição 0 de cada array retirar a informação.

EDIT: Para apagares o produto colocas um - na parte da informação em cada array.

Obrigado pela ajuda, é aí que estou a ter dificuldades, o raciocinio já tinha mais ao menos chegado ai. Na prática não estou muito consciente de como fazer isso ! SE não for pedir muito, não podes dar algum exemplo ?

Obrigado !

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nome[0][0]="fio condutor"

nome[1][0]="..."

-

quantidade[0]="30"

quantidade[1]="..."

-

Exemplo:

void main()
{
int codartigo;

char nome[2][30];
int quantidade[2];

scanf("%d", &codartigo);

printf("nome: %s\nquantidade: %d", nome[codartigo-1], quantidade[codartigo-1]);

return;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nome[0][0]="fio condutor"

nome[1][0]="..."

-

quantidade[0]="30"

quantidade[1]="..."

-

Exemplo:

void main()
{
int codartigo;

char nome[2][30];
int quantidade[2];

scanf("%d", &codartigo);

printf("nome: %s\nquantidade: %d", nome[codartigo-1], quantidade[codartigo-1]);

return;
}

Estive a tentar essa opção mas só depois é que reparei numa coisa, o prof quer um array para cada informação, assim, estava a tomar o codartigo como sendo um inteiro ! Será que uma solução com strcmp não ajudará a descobrir o indice ?

/* Considere um sistema simplificado de gestão de componentes numa loja de material de electrónica. Pretende- 
se guardar informação sobre cada um dos componentes armazenados, código (char de 15), nome do 
componente (string de 25), tipo (char 10) e a quantidade (inteiro). O programa deve permitir as seguintes 
operações: inserir um novo componente, apagar um componente, vender um componente, consultar a 
informação sobre um componente e listar todos os componentes armazenados em stock. */

#include <stdio.h>
#include <strings.h>
#include<stdlib.h>

const int nome = 25;
const int codigo = 15;
const int tipo = 10;
const int max = 12;
#define separador "   "

int main()
{

int Quantidade_componente [100];
int Quantidade_componente_vender = 0;
int vender = 0;
int opcao_menu = 0;
int i,j = 0;
char Nome_componente[max][nome];
char Codigo_componente[max][codigo];
char Tipo_componente[max][tipo];
int contador = 0;
int continuar = 1;
char aux[100];
char aux1[100];
int aux2=0;

//Declaração variáveis .

do
{
	printf("                   \n\n\n\n\n\n  Bem Vindos à nossa loja de material de electrónica \n           ");
	printf("\n===============================================================");
	printf("\n||\t\t\t\tEscolha umas das seguintes opções\t\t\t\t\t||");
	printf("\n|| \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t||");
	printf("\n||\t(1)  Adicionar um componente à base de dados da loja.\t\t||");
	printf("\n||\t(2)  Apagar um componente à base de dados da loja.\t\t\t||");
	printf("\n||\t(3)  Vender um determinado componente existente na loja.\t||");
	printf("\n||\t(4)  Consultar informação sobre um componente.\t\t\t\t||");
	printf("\n||\t(5)  Listar componentes armazenados em stock.\t\t\t\t||");
	printf("\n||\t(6)  Fechar o programa. \t\t\t\t\t\t\t\t\t\t||"); 
	printf("\n|| \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t||"); 
	printf("\n===============================================================");

	printf("\n\nQual a opção pretendida ?\t\t");
	scanf("%i", &opcao_menu);



	switch (opcao_menu) 
		{
			case 1:

			{
				do{						

						printf("\n\n\n\t\tIntroduza se faz favor , os dados pedidos para o componente nº %d !", contador +1);

						printf("\n\n\t\tQual o nome do componente : \t\t ");
						scanf("%s",&Nome_componente[contador]);

						printf("\t\tQual o código do componente : \t\t ");
						scanf("%s",&Codigo_componente[contador]);

						printf("\t\tQual o tipo do componente nº : \t\t ");
						scanf("%s",&Tipo_componente[contador]);

						printf("\t\tQual a quantidade que prentende adicionar do componente nº : \t\t ");
						scanf("%d",&Quantidade_componente[contador]);

						printf("\nComponente adicionado com sucesso !");

						printf("\n\nIntroduza 1 para inserir  mais componentes e 0 para parar : \t\t");
						scanf("%d", &continuar);



				}while(continuar==1 && contador < max);

						printf("\n\n\t\tForam inseridos %d componentes diferentes", contador);

						break;
			}



			case 3:
			{
				printf("\n\n\t\tQual o nome do componente : \t\t ");
				scanf("%s",&Nome_componente[contador]);

				printf("\t\tQual o código do componente : \t\t ");
				scanf("%s",&Codigo_componente[contador]);

				printf("\t\tQual o tipo do componente nº : \t\t ");
				scanf("%s",&Tipo_componente[contador]);

				printf("\t\tQual a quantidade que prentende vender do componente nº : \t\t ");
				scanf("%d",&Quantidade_componente[contador]);

				Quantidade_componente_vender =Quantidade_componente[contador];

				// só funcional para um //

				for (i = 0; i < contador; i = i + 1)
				{

					vender = Quantidade_componente[i] - Quantidade_componente_vender;
					printf("Vender : %i", vender);

				}

			}
			case 6:
				break;

			default:
				printf("Opção inválida !");
				break;

		}
}while(opcao_menu != 6);

return 0;
}

Neste momento , tenho isto, no vender estou a ter um problema, ele apaga o número de unidades que eu disser a todos eles . Além disso, estou a pedir todas as informações ao utilizador quando só devia pedir o código .

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a tentar essa opção mas só depois é que reparei numa coisa, o prof quer um array para cada informação, assim, estava a tomar o codartigo como sendo um inteiro ! Será que uma solução com strcmp não ajudará a descobrir o indice ?

Para a questão do código do artigo usa a variável do tipo char, só assim consegues usar o strcmp.

Neste momento , tenho isto, no vender estou a ter um problema, ele apaga o número de unidades que eu disser a todos eles . Além disso, estou a pedir todas as informações ao utilizador quando só devia pedir o código .

Deves de pedir ao utilizador os dados do produto apenas quando o inseres na base de dados, na opção vendas pedes o código e a quantidade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora