Ir para conteúdo

POWERED BY:

Arquivado

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

Ianaconi

Agenda em C

Recommended Posts

Olá Pessoal!Gostaria de fazer uma agente de contatos em C.Estou com algumas duvidas para fazer a tela inicial do programa.Gostaria que tivesse algumas opções como:1 - Incluir Contato2 - Pesquisar por Nome3 - Listar todos os Contatos4 - Listar todos os Contatos começando com _5 - Listar Aniversariantes do Mês6 - SairA minha dúvida seria pra deixar esse menu um pouco mais amigável e com uma estética melhor. O que vcs recomendam?Vlw!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode criar este menu em um quadro..

os caracteres 179 a 218 da tabala ASCII saum especialmente criados para isto..

 

por exemplo.. o codigo a seguir cria uma janelinha simples..

 

for(i = 0; i<5;i++){  if(i=0)   printf("%c%c%c%c%c%c%c%c",213,196,196,196,196,196,196,191);  if(i>0 && i<5)   printf("%c	   %c",179,179);  if(i=5)   printf("%c%c%c%c%c%c%c%c",192,196,196,196,196,196,196,217);}

procuro no Google Imagens uma tabela..

mas algumas naum listam estes caracteres.. procure akelas que listem

 

flw..

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, conheço o código ASCII. Vou fazer uns testes e ver o que da pra fazer. Depois eu coloco aqui o código fonte do programa.A agenda em si está praticamente pronta.Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu código:

 

 

#include <stdio.h>#include <conio.h>#include <string.h>#include <iostream.h>//Agenda de Contatosint i=0, j;//Estrutura da Data de Nascimentostruct data{  int dia;  int mes;  int ano;};//Estrutura do Cadastrostruct dados{  char nome[30];  char endereco[50];  int telefone[10];  char email[35];  struct data nasc;}a[50];//Função para adicionar um contatovoid inserir(){  char repeat;  system("cls");  printf("\t\t   ||	 1: Inserir					||\n");  printf("\t\t   ||								   ||\n");  do  {	for(i=0; i<=1; i++)	{	  printf("Nome: \n");	  scanf("%s",&a[i].nome);	  printf("Endereço: \n");	  scanf("%s",&a[i].endereco);	  printf("Telefone: \n");	  scanf("%i",&a[i].telefone);	  printf("E-mail: \n");	  scanf("%s",a[i].email);	  printf("Data de Nascimento (Ex:06/06/2006): \n");	  scanf("%i",&a[i].nasc.ano);	  printf("Cadastro concluido com sucesso!");	  printf("Deseja continuar? (S ou N) \n");	  scanf("%c",&repeat);	}  }while(repeat=='s' || repeat=='S'); goto MENU;}//Função para pesquisar um contatovoid pesquisar(){  char x[50], repeat;  system("cls");  printf("\t\t   ||	 2: Pesquisar				  ||\n");  printf("\t\t   ||								   ||\n");  printf("Nome: \n");  scanf("%s",x);  for(j=0;j<i;j++)  {	if(strcmp(x,a[j].nome)==0)	{	  printf("%s",a[j].nome);	  printf("%s",a[j].endereco);	  printf("%i",&a[j].telefone);	  printf("%s",a[j].email);	  printf("%i/%i/%i ",&a[j].nasc.dia,&a[j].nasc.mes,&a[j].nasc.ano);	  printf("Pesquisa Concluida"); getch();	}  }  printf("Deseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if(repeat=='S' || repeat=='s')	goto MENU;}//Função para listar os aniversariantes do mêsvoid aniversariantes(){  system("cls");  printf("\t\t   ||	 3: Aniversariantes do Mes	 ||\n");  printf("\t\t   ||								   ||\n");  char repeat;  int mesatual;  printf("Mes Atual: ");  scanf("%i", &mesatual);	for(i=0; i<=50; i++)	  {		if(a[i].nasc.mes == mesatual)		  printf("Aniversariantes do Mes:\n %s \n", a[i].nome);	  }  printf("Deseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if(repeat=='S' || repeat=='s')	goto MENU;}//Função para visualizar todos os contatosvoid todos(){  char repeat;  system("cls");  printf("\t\t   ||	 4: Visualizar Lista		   ||\n");  printf("\t\t   ||								   ||\n");  for(j=0;j<i;j++)  {	printf("\n%s",a[j].nome);	printf("\n%s",a[j].endereco);	printf("\n%i",a[j].telefone);	printf("\n%s",a[j].email);	printf("\n%i/%i/%i ",a[j].nasc.dia,a[j].nasc.mes,a[j].nasc.ano);  }  printf("Deseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if(repeat=='S' || repeat=='s')	goto MENU;}//Função Principalint main(){  int s;  do  {	system("cls");	printf("\t\t   ||	 Selecione uma opcao:		  ||\n");	printf("\t\t   ||								   ||\n");	printf("\t\t   ||	 1: Inserir					||\n");	printf("\t\t   ||	 2: Pesquisar				  ||\n");	printf("\t\t   ||	 3: Aniversariantes do Mes	 ||\n");	printf("\t\t   ||	 4: Visualizar Lista		   ||\n");	printf("\t\t   ||	 5: Sair					   ||\n");	printf("\t\t   ||								   ||\n");	printf("\nOpcao: ");	scanf("%i", &s);	switch(s)	{	  case 1:		inserir();		break;	  case 2:		pesquisar();		break;	  case 3:		aniversariantes();		break;	  case 4:		todos();		break;	}  }while(s!="5");  getch();  return 0;}

O que vcs acham?

 

Vlw!

 

Estou com 2 erros:

 

Line 50 - label 'MENU' used but not defined

Line 131 - ANSI C++ forbids comparison between pointer and integer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ianaconi.

 

o 1º erro esta se referindo a um chamada inexistente..

com a função goto você pede ao compilador executar uma estrutura de codigos depois de uma label definida..

mas a label que você chama no seu programa você não criou..

 

seria mais eficiente você colocar todo a estrutura do MENU que você criou em uma void, dae em vez de chamar o goto MENU, você chama a void menu()..

bem mais simples naum?!!

 

o 2º erro se refere a estrutura bem no final de seu programa:

while(s!="5");
você declarou a variavel s como sendo de tipo inteiro, entao a comparação eh ineficiente.. pra resolver eh soh tirar as aspas do "5" ..

while(s!=5);
---------------

dica:

prefira utilizar a função gets() para ler uma string.. pois a função scanf() da um erro na hora de ler o caractere de espaço..

tipo, qdo você pede pra cadastrar o nome, se o usuario entrar com espaços no nome, o scanf automaticamente transfere a palavra apos o espaço para o lixo de memoria...

em vez de:

scanf("%s",&a[i].nome);
substitua por
gets(a[i].nome);
mas tua agendinha esta dumal!!!

parabens! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado ricci ottadnot pelas dicas.

 

Ainda estou com alguns problemas:

 

 

Opção Inserir:

 

Aparece:

 

Nome:

Endereço:

 

E não tenho como digitar o nome. Pula direto pro Endereço.

 

Mesma coisa com o E-mail. Pula direto pra Data de Nascimento.

 

Dai fala Cadastro Concluido com Sucesso e vai direto pra outra. Não da a opção de Continuar (S ou N).

 

 

Olha como ta o código agora:

 

#include <stdio.h>#include <conio.h>#include <string.h>#include <iostream.h>#include <stdlib.h>#include <conio.c>//Agenda de Contatosint i=0, j;//Estrutura da Data de Nascimentostruct data{  int dia;  int mes;  int ano;};//Estrutura do Cadastrostruct dados{  char nome[30];  char endereco[50];  int telefone[10];  char email[35];  struct data nasc;}a[50];//Função para adicionar um contatovoid inserir(){  char repeat;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||						 ||\n");  textcolor(WHITE);  printf("\t\t   ||	   1%c Inserir		||\n",26);  textcolor(YELLOW);  printf("\t\t   ||						 ||\n");  textcolor(WHITE);  do  {	for(i=0; i<=50; i++)	{	  printf("\nNome: ");	  gets(a[i].nome);	  printf("\nEndere%co: ",231);	  gets(a[i].endereco);	  printf("\nTelefone: ");	  scanf("&i",&a[i].telefone);	  printf("\nE-mail: ");	  gets(a[i].email);	  printf("\nData de Nascimento (Ex:06/06/2006): ");	  scanf("%i",&a[i].nasc.ano);	  printf("\nCadastro conclu%cdo com sucesso!\n",237);	  printf("\nDeseja continuar? (S ou N) \n");	  scanf("%c",&repeat);	}  }while(repeat=='s' || repeat=='S');}//Função para pesquisar um contatovoid pesquisar(){  char x[50], repeat;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||						   ||\n");  textcolor(WHITE);  printf("\t\t   ||	   2%c Pesquisar		||\n",26);  textcolor(YELLOW);  printf("\t\t   ||						   ||\n");  textcolor(WHITE);  printf("\nNome: ");  scanf("%s",x);  for(j=0;j<i;j++)  {	if(strcmp(x,a[j].nome)==0)	{	  printf("%s",a[j].nome);	  printf("%s",a[j].endereco);	  printf("%i",&a[j].telefone);	  printf("%s",a[j].email);	  printf("%i/%i/%i ",&a[j].nasc.dia,&a[j].nasc.mes,&a[j].nasc.ano);	  printf("Pesquisa Conclu%cda", 237); getch();	}  }  printf("\nDeseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if (repeat=='s' || repeat=='S')	void menu();}//Função para listar os aniversariantes do mêsvoid aniversariantes(){  system("cls");  textcolor(YELLOW);  printf("\t\t   ||										 ||\n");  textcolor(WHITE);  printf("\t\t   ||	   3%c Aniversariantes do M%cs		 ||\n", 26,234);  textcolor(YELLOW);  printf("\t\t   ||										 ||\n");  textcolor(WHITE);  char repeat;  int mesatual;  printf("\nMes Atual: ");  scanf("%i", &mesatual);	for(i=0; i<=50; i++)	  {		if(a[i].nasc.mes == mesatual)		  printf("\nAniversariantes do M%cs:\n %s \n", a[i].nome, 234);	  }  printf("\nDeseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if (repeat=='s' || repeat=='S')	void menu();}//Função para visualizar todos os contatosvoid todos(){  char repeat;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||								  ||\n");  textcolor(WHITE);  printf("\t\t   ||	   4%c Visualizar Lista		||\n",26);  textcolor(YELLOW);  printf("\t\t   ||								  ||\n");  textcolor(WHITE);  for(j=0;j<i;j++)  {	printf("\n%s",a[j].nome);	printf("\n%s",a[j].endereco);	printf("\n%i",a[j].telefone);	printf("\n%s",a[j].email);	printf("\n%i/%i/%i ",a[j].nasc.dia,a[j].nasc.mes,a[j].nasc.ano);  }  printf("\nDeseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if (repeat=='s' || repeat=='S')	void menu();}//Função Menuvoid menu(){  int s;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||	 Selecione uma op%c%co:		  ||\n",231,227);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t   ||	 1%c Inserir					||\n",26);  printf("\t\t   ||	 2%c Pesquisar				  ||\n",26);  printf("\t\t   ||	 3%c Aniversariantes do M%cs	 ||\n",26,234);  printf("\t\t   ||	 4%c Visualizar Lista		   ||\n",26);  printf("\t\t   ||	 5%c Sair					   ||\n",26);  textcolor(YELLOW);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t		  Op%c%co: ",231,227);  scanf("%i", &s);  switch(s)  {	case 1:	  inserir();	  break;	case 2:	  pesquisar();	  break;	case 3:	  aniversariantes();	  break;	case 4:	  todos();	  break;	case 5:	  exit;	}  getch();}//Função Principalint main(){  int s;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||	 Selecione uma op%c%co:		  ||\n",231,227);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t   ||	 1%c Inserir					||\n",26);  printf("\t\t   ||	 2%c Pesquisar				  ||\n",26);  printf("\t\t   ||	 3%c Aniversariantes do M%cs	 ||\n",26,234);  printf("\t\t   ||	 4%c Visualizar Lista		   ||\n",26);  printf("\t\t   ||	 5%c Sair					   ||\n",26);  textcolor(YELLOW);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t		  Op%c%co: ",231,227);  scanf("%i", &s);  switch(s)  {	case 1:	  inserir();	  break;	case 2:	  pesquisar();	  break;	case 3:	  aniversariantes();	  break;	case 4:	  todos();	  break;	case 5:	  exit;	}  getch();  return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom meu velho.. vamos la..

 

fikei grilado com o erro q tava dando.. infelizmente o C tem esse problema idiota com strings.. mas p tudo tem uma solução, naum eh?!! :)

 

primeira coisa que fiz no seu codigo:

DIZIMEI o scanf ...

acho q ele q eh o culpado do erro..

a unica solução q encontrei foi colocar ates de cada gets() um getchar()..

repare no trecho do seu codigo depois das modificações:

printf("\nNome: ");	  getchar();	  gets(a[i].nome);	  printf("\nEndere%co: ",231);	  getchar();	  gets(a[i].endereco);	  printf("\nTelefone: ");	  getchar();	  gets(a[i].telefone);	  printf("\nE-mail: ");	  getchar();	  gets(a[i].email);	  printf("\nData de Nascimento (Ex:06/06/2006): ");	  getchar();	  scanf("%i",&a[i].nasc.ano);	  printf("\nCadastro conclu%cdo com sucesso!\n",237);	  printf("\nDeseja continuar? (S ou N) \n");	  getchar();	  scanf("%c",&repeat);
acredite ou nao.. no meu compilador rodou beleza..

eu tb fikei surpreso!!

 

deixei os scanf de onde nao estava dando problema.. tipo qdo ler o ano nascimento..

 

tem uma coisa no seu codigo tb q tava contribuindo p ele ignorar o questionamento se deseja continuar a incluir dados..

do  {	for(i=0; i<=50; i++)	/** desnecessario este for */	{	  printf("\nNome: ");	  gets(a[i].nome);	  printf("\nEndere%co: ",231);	  gets(a[i].endereco);	  printf("\nTelefone: ");	  scanf("&i",&a[i].telefone);	  printf("\nE-mail: ");	  gets(a[i].email);	  printf("\nData de Nascimento (Ex:06/06/2006): ");	  scanf("%i",&a[i].nasc.ano);	  printf("\nCadastro conclu%cdo com sucesso!\n",237);	  printf("\nDeseja continuar? (S ou N) \n");	  scanf("%c",&repeat);	}  }while(repeat=='s' || repeat=='S');}
Repare que dentro do laço do você colocou um for para ir ate 50.. ou seja.. naum importa o que o usuario entrasse na variavel repeat ele sempre ia voltar a pedir os dados novamente..

 

eh soh tirar o for..

do  {	  printf("\nNome: ");	  getchar();	  gets(a[i].nome);	  printf("\nEndere%co: ",231);	  getchar();	  gets(a[i].endereco);	  printf("\nTelefone: ");	  getchar();	  gets(a[i].telefone);	  printf("\nE-mail: ");	  getchar();	  gets(a[i].email);	  printf("\nData de Nascimento (Ex:06/06/2006): ");	  getchar();	  scanf("%i",&a[i].nasc.ano);	  printf("\nCadastro conclu%cdo com sucesso!\n",237);	  printf("\nDeseja continuar? (S ou N) \n");	  getchar();	  scanf("%c",&repeat);	  i++;  }while(repeat=='s' || repeat=='S');
veja q a variavel i esta sendo incrementada no final..

cara..

mas naum testei ainda o programa..

e pelo que vi tb, o teu menu principal deve estar dentro de um laço, se naum ele soh vai executar uma unica vez..

do{...}while(s!=5);
se der mais algum erro, posta ai aonde esta o erro..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado novamente.

 

Não tinha percebido que o FOR ali estava sobrando.

 

Tive que tirar o gets ali do campo telefone, porque tava dando erro de compilação (int argument...)

 

E-mail (ainda está pulando)

 

Depois que eu digito o último campo (Data de Nascimento, o programa fecha automaticamente).

 

 

#include <stdio.h>#include <conio.h>#include <string.h>#include <iostream.h>#include <stdlib.h>#include <conio.c>//Agenda de Contatosint i=0, j;//Estrutura da Data de Nascimentostruct data{  int dia;  int mes;  int ano;};//Estrutura do Cadastrostruct dados{  char nome[30];  char endereco[50];  int telefone[10];  char email[35];  struct data nasc;}a[50];//Função para adicionar um contatovoid inserir(){  char repeat;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||						 ||\n");  textcolor(WHITE);  printf("\t\t   ||	   1%c Inserir		||\n",26);  textcolor(YELLOW);  printf("\t\t   ||						 ||\n");  textcolor(WHITE);  do  {	  printf("\nNome: ");	  getchar();	  gets(a[i].nome);	  printf("\nEndere%co: ",231);	  getchar();	  gets(a[i].endereco);	  printf("\nTelefone: ");	  getchar();	  scanf("&i",a[i].telefone);	  printf("\nE-mail: ");	  getchar();	  gets(a[i].email);	  printf("\nData de Nascimento (Ex:06/06/2006): ");	  getchar();	  scanf("%i",&a[i].nasc.ano);	  printf("\nCadastro conclu%cdo com sucesso!\n",237);	  printf("\nDeseja continuar? (S ou N) \n");	  getchar();	  getchar("%c",&repeat);  }while(repeat=='s' || repeat=='S');}//Função para pesquisar um contatovoid pesquisar(){  char x[50], repeat;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||						   ||\n");  textcolor(WHITE);  printf("\t\t   ||	   2%c Pesquisar		||\n",26);  textcolor(YELLOW);  printf("\t\t   ||						   ||\n");  textcolor(WHITE);  printf("\nNome: ");  scanf("%s",x);  for(j=0;j<i;j++)  {	if(strcmp(x,a[j].nome)==0)	{	  printf("%s",a[j].nome);	  printf("%s",a[j].endereco);	  printf("%i",&a[j].telefone);	  printf("%s",a[j].email);	  printf("%i/%i/%i ",&a[j].nasc.dia,&a[j].nasc.mes,&a[j].nasc.ano);	  printf("Pesquisa Conclu%cda", 237); getch();	}  }  printf("\nDeseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if (repeat=='s' || repeat=='S')	void menu();}//Função para listar os aniversariantes do mêsvoid aniversariantes(){  system("cls");  textcolor(YELLOW);  printf("\t\t   ||										 ||\n");  textcolor(WHITE);  printf("\t\t   ||	   3%c Aniversariantes do M%cs		 ||\n", 26,234);  textcolor(YELLOW);  printf("\t\t   ||										 ||\n");  textcolor(WHITE);  char repeat;  int mesatual;  printf("\nMes Atual: ");  scanf("%i", &mesatual);	for(i=0; i<=50; i++)	  {		if(a[i].nasc.mes == mesatual)		  printf("\nAniversariantes do M%cs:\n %s \n", a[i].nome, 234);	  }  printf("\nDeseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if (repeat=='s' || repeat=='S')	void menu();}//Função para visualizar todos os contatosvoid todos(){  char repeat;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||								  ||\n");  textcolor(WHITE);  printf("\t\t   ||	   4%c Visualizar Lista		||\n",26);  textcolor(YELLOW);  printf("\t\t   ||								  ||\n");  textcolor(WHITE);  for(j=0;j<i;j++)  {	printf("\n%s",a[j].nome);	printf("\n%s",a[j].endereco);	printf("\n%i",a[j].telefone);	printf("\n%s",a[j].email);	printf("\n%i/%i/%i ",a[j].nasc.dia,a[j].nasc.mes,a[j].nasc.ano);  }  printf("\nDeseja continuar? (S ou N) \n");  scanf("%c",&repeat);  if (repeat=='s' || repeat=='S')	void menu();}//Função Menuvoid menu(){  int s;  do{  system("cls");  textcolor(YELLOW);  printf("\t\t   ||	 Selecione uma op%c%co:		  ||\n",231,227);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t   ||	 1%c Inserir					||\n",26);  printf("\t\t   ||	 2%c Pesquisar				  ||\n",26);  printf("\t\t   ||	 3%c Aniversariantes do M%cs	 ||\n",26,234);  printf("\t\t   ||	 4%c Visualizar Lista		   ||\n",26);  printf("\t\t   ||	 5%c Sair					   ||\n",26);  textcolor(YELLOW);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t		  Op%c%co: ",231,227);  scanf("%i", &s);  switch(s)  {	case 1:	  inserir();	  break;	case 2:	  pesquisar();	  break;	case 3:	  aniversariantes();	  break;	case 4:	  todos();	  break;	case 5:	  exit;	}  getch();  }while(s!=5);}//Função Principalint main(){  int s;  system("cls");  textcolor(YELLOW);  printf("\t\t   ||	 Selecione uma op%c%co:		  ||\n",231,227);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t   ||	 1%c Inserir					||\n",26);  printf("\t\t   ||	 2%c Pesquisar				  ||\n",26);  printf("\t\t   ||	 3%c Aniversariantes do M%cs	 ||\n",26,234);  printf("\t\t   ||	 4%c Visualizar Lista		   ||\n",26);  printf("\t\t   ||	 5%c Sair					   ||\n",26);  textcolor(YELLOW);  printf("\t\t   ||								   ||\n");  textcolor(WHITE);  printf("\t\t		  Op%c%co: ",231,227);  scanf("%i", &s);  switch(s)  {	case 1:	  inserir();	  break;	case 2:	  pesquisar();	  break;	case 3:	  aniversariantes();	  break;	case 4:	  todos();	  break;	case 5:	  exit;	}  getch();  return 0;}

Consegui arrumar o esquema ali do número de telefone estar mudando.

 

Simplesmente troquei o tipo dele na estrutura. Em vez de int, coloquei char.

 

Mas ainda ta fechando o programa, depois de terminar de adicionar.

 

Vlw!

 

EDIT:

 

A pesquisa tbm não está funcionando. Coloco pra pesquisar mas o programa fecha.

 

Mesma coisa com a Lista de Aniversariantes, e a Lista Total. Acho que porque não está dando pra cadastrar os contatos.

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema dele "pular" a leitura de algumas variaveis estah no buffer do tecladoqndo você le uma variavel, as vezes, pode ficar lixo no buffer ("memoria") do tecladoai, qndo o pograma chega na linha de leitura ele joga na variavel akele lixo q estava acumulado e passa p/ proxima linha do fonte.para resolver isso inclua a biblioteca <unistd.h> de acordo com a diretiva #includee use a funcao __fpurge(stdin) para limpar o buffereh recomendavel fzr isso sempre apos uma leitura(PS: Isso funciona em gcc no S.O. Master=Linux!!!)

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.