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

Decrypter

Procurar indice !

Recommended Posts

Decrypter

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

Share this post


Link to post
Share on other sites
n3lThon

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?


dreams.each do |dream|

   dream.make_it_happen

end

Share this post


Link to post
Share on other sites
Decrypter

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.

Share this post


Link to post
Share on other sites
n3lThon

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.


dreams.each do |dream|

   dream.make_it_happen

end

Share this post


Link to post
Share on other sites
Decrypter

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 .

Share this post


Link to post
Share on other sites
n3lThon

É 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.


dreams.each do |dream|

   dream.make_it_happen

end

Share this post


Link to post
Share on other sites
Decrypter

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 !

Share this post


Link to post
Share on other sites
n3lThon

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;
}


dreams.each do |dream|

   dream.make_it_happen

end

Share this post


Link to post
Share on other sites
Decrypter

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 .

Share this post


Link to post
Share on other sites
n3lThon

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.


dreams.each do |dream|

   dream.make_it_happen

end

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.