Ir para conteúdo
Matheus Marqui

Como posso utilizar comando do sistema (system("...")) com variáveis?

Recommended Posts

Opa, gostaria de saber como eu poderia utilizar comandos do sistema com variáveis e se isso é possível...

Ex:

string menuConfig()
{
    system("cls");
    string nl;
    cout << "Configurações e Informações - Versão 1.0.0\n";
    cout << "Cores do programa (system(color nl)) sendo 'n' número e 'l' letra: ";
    cin >> nl;
    system("color "<< nl); //Gostaria de saber como eu poderia fazer isso funcionar, ou algo semelhante...

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Vou passar um exemplo d um pequeno exemplo do uso de variável no comando system() q inclusive aborda a questão das cores da letra e do fundo q até mesmo você pode usar em seus projetos.

 

#include <stdio.h>
#include <conio.h>
#include <windows.h>

int tecla()
{
    int varTecla;
    while (1)
    {
        varTecla = getch();
        return varTecla;
    }
}

void cor()
{
	char cor[10] = "Color 0f";
	int c, corL = 0, corF = 0, lugar = 0;

	system("cls");

	system(cor);

	printf("\n\t   Use as setas Direcionais   \n"
		"\t      para mudar de cor       \n"
		"\t  Para voltar ao menu tecle   \n"
		"\t            ENTER             \n"
		"\t                              \n"
		"\t          [ LETRA ]           \n"
		"\t            FUNDO             \n");

	while (1)
	{
		if (_kbhit())
		{
			system("cls");
			c = tecla();

			// 80 para cima
			// 72 para baixo
			// 75 direita
			// 77 esquerda
			// 13 enter

			if (c == 80)
			{
				lugar++;
				if (lugar > 1)
				{
					lugar = 0;
				}
			}
			else if (c == 72)
			{
				lugar--;
				if (lugar < 0)
				{
					lugar = 1;
				}
			}


			else if (c == 13)  // enter
			{
				// comando que preferir, como chamado a uma função, por ex
				exit(0);
			}

			else if (c == 75) // direita
			{
				if (lugar == 0)
				{
					corL++;
					if (corL > 5)
					{
						corL = 0;
					}
				}
				else if (lugar == 1)
				{
					corF++;
					if (corF > 5)
					{
						corF = 0;
					}
				}

			}
			else if (c == 77) // esquerda
			{
				if (lugar == 0)
				{
					corL--;
					if (corL < 0)
					{
						corL = 5;
					}
				}
				else if (lugar == 1)
				{
					corF--;
					if (corF < 0)
					{
						corF = 5;
					}
				}
			}

			if (lugar == 0)
			{
				printf("\n\t   Use as setas Direcionais   \n"
					"\t      para mudar de cor       \n"
					"\t  Para voltar ao menu tecle   \n"
					"\t            ENTER             \n"
					"\t                              \n"
					"\t          [ LETRA ]           \n"
					"\t            FUNDO             \n");
			}
			else if (lugar == 1)
			{
				printf("\n\t   Use as setas Direcionais   \n"
					"\t      para mudar de cor       \n"
					"\t  Para voltar ao menu tecle   \n"
					"\t            ENTER             \n"
					"\t                              \n"
					"\t            LETRA             \n"
					"\t          [ FUNDO ]           \n");
			}


			switch (corL)
			{
			case 0:
				cor[7] = '3';
				break;
			case 1:
				cor[7] = '4';
				break;
			case 2:
				cor[7] = '5';
				break;
			case 3:
				cor[7] = '6';
				break;
			case 4:
				cor[7] = '7';
				break;
			case 5:
				cor[7] = '8';
				break;
			}


			switch (corF)
			{
			case 0:
				cor[6] = '3';
				break;
			case 1:
				cor[6] = '4';
				break;
			case 2:
				cor[6] = '5';
				break;
			case 3:
				cor[6] = '6';
				break;
			case 4:
				cor[6] = '7';
				break;
            case 5:
                cor[6] = '8';
			}
		}

		system(cor);
	}
}


int main()
{
    char *texto = "title Exemplo de Codigo";

    system(texto);

    cor();

    return 0;
}




No método main tbém faço uso d uma variável como parâmetro do comando system(), mas no método cor() isso é melhor trabalhado.

Em virtude do código ser muito extenso, dei uma reduzida na qtde de cores, mas creio q a ideia principal vai conseguir entender.

Só q teria q dar uma revisada na parte do lugar no método cor(), pois como reduzi a qtde de cores pode ser q algo eu tenha esquecido d mudar 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por sheepziiin
      Boa tarde colegas !
      Estou quebrando a cabeça com um job para tratamento de logradouros. Segue o raciocínio:  
      Tenho uma lista com todos os endereços do estado de São Paulo, onde os mesmos são extraídos da seguinte forma:
       
      Exemplo:
      AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A AL-ANAPURUS/EDI:BOULEVARD/BLC:A-777-AP - Apartamento: 131 AL-ARAPANES/EDI:CDOE,6-5ºANDAR-309-AP - Apartamento: 42 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 102 AL-ARAPANES/EDI:COND.ED.MOEMA DUPLEX LIFE-1142-AP - Apartamento: 42 AL-ARAPANES/EDI:PARC BRUMENADI-982-AP - Apartamento: 191 AL-BARROS/EDI:PERVAL-186-AP - Apartamento: 1601 AL-BARROS/EDI:PERVAL-186-BL - Blocos: B AP - Apartamento: 1302 AL-CAETANO,S/CDM:ED. GIARDINO_CDOE_1_ANDAR_11 A 13-165-AP - Apartamento: 63 AL-CAETANO,S/EDI:ESPLENDOR-1234-AP - Apartamento: 71 AL-CAETANO,S/EDI:MAGENTA I_CDOE_1_ANDAR_7 A 10-2575-AP - Apartamento: 94 AL-CALCUTA-195-AP - Apartamento: 02 AL-CAMPESTRE-728-CS - Casa: 1 AL-CASA BRANCA/CDM:BRISTOL-851-CJ - Conjunto: 11 AN - Andar: 01 AL-CASA BRANCA/CDM:SAINT SIMON-667-AP - Apartamento: 11
      Notem que os casos "não tem um padrão" (até tem por tipo de residencia). Utilizei inúmeras postagens aqui do fórum e consegui solucionar os casos para residencias (padrão TIPO_LOG;LOG;COMPL;NUM), no entanto as formulas e soluções aqui indicadas por vocês "param" na primeira sequencia numérica, entretanto para a maioria dos casos, o texto continua com letras, números e caracteres.
       
      Segue o padrão final que preciso chegar.
      Exemplo: AL-AFONSO SCHMIDT/CDM:ED. SOPHIS SANTANA_COM PRUMADA/BLC:A-555-AP - Apartamento: 61 A
      Resultado Tratado: AFONSO SCHMIDT 555
       
      Desde de já muito obrigado pelos retornos que certamente virão.
    • Por Kairion
      Estou à procura de algum sistema, de preferência opensource, que possa ser rodado em minha hospedagem e, além de registrar um documento/arquivo (atribuindo-lhe um código de autenticação), permita a assinatura digital (com certificado digital) do mesmo.
       
      O objetivo é que se produza efeito semelhante aos arquivos retirados dos processos dos sites dos Tribunais de Justiça, por exemplo, onde incluí-se na borda do documento a mensagem "Este documento foi assinado digitalmente por FULANO DE TAL. Para verificar a autenticidade deste documento acesse http://www.site.com.br/autenticacao e digite o código ABC-DEF-GHI-JKL".
       
      Reproduzindo o comportamento acima, busca-se imprimir o documento assinado digitalmente com a "permanência" de sua fé pública, pois ainda que ao ser impresso o mesmo a perca (resposta 5 das questões jurídicas do ITI, link: https://www.iti.gov.br/perguntas-frequentes/41-perguntas-frequentes/567-questoes-juridicas#r5), há uma ressalva:
       
      Ou seja, o que procuro é aproveitar a citada ressalva, que nada mais seria que uma alternativa livre/opensource ao Portal de Assinaturas da Certisign (http://www.portaldeassinaturas.com.br), por exemplo (bem como os seus concorrentes).
       
      Saberiam informar algum sistema que faça o exposto acima (ou se aproxime disso)?
       
      Obrigado.
    • Por Caioba
      Salve! Estou com problemas ao solucionar uma questão que me foi proposta na linguagem C. Já desenvolvi todo o código, mas os casos de teste não batem.
       
      Questão: 
      A agência cearense para investigações criminais denominada OBI (Operação de Baita Investigação) notou que, a exemplo do que ocorreu na Petrobrás, muito dinheiro foi desviado dos cofres públicos do estado para pagamento de propina a políticos nos últimos anos, especialmente pelo partido QU (Quadrilha Unida).
      A investigação está em andamento e a agência recrutou você para converter alguns valores que ficaram com caracteres estranhos após terem sidos descriptografados dos arquivos originais. Sua tarefa neste caso é relativamente simples: basta retirar todos os caracteres estranhos (não numéricos) de cada um dos dois valores disponíveis. Apenas tome o cuidado de separar os primeiros 11 dígitos do primeiro valor. Eles correspondem ao CPF do corrupto :)
      Entrada: A entrada é composta por duas linhas, cada uma delas contendo entre 1 e 60 caracteres ('0'-'9' e outros caracteres não numéricos ou, pelo menos, 1 caracter '0'-'9') e no máximo um ponto ".". Desconsiderando os caracteres não numéricos, o número final não deve ter mais de 17 caracteres (incluindo o ponto decimal).
      Exemplo de entrada:
      7a5a6adfg4a4adsfgsd9fg6aa904aa91#$%1
      42**&7746.67abc$
      Saída: Imprima o CPF do corrupto e o valor que foram desviados dos cofres públicos.
      Exemplo de saída
      cpf 75644969049
      propina 11427746.67
       
      Meu código abaixo:
      #include<stdio.h> #include<string.h> int main(){ char caract[60]; char caract2[60]; char cpf[10]; char propina[15]; int i=0, j=0; scanf("%s", caract); for(i = 0; caract[i] != '\0'; i++){ if(caract[i] >= 48 && caract[i] <= 57){ if(j<11){ cpf[j] = caract[i]; } j++; } } cpf[11] = '\0'; cpf[12] = '\0'; scanf("%s", caract2); for(i = 0; caract2[i] != '\0'; i++){ if((caract2[i] >= 48 && caract2[i] <= 57) || caract2[i] == 46){ propina[j] = caract2[i]; j++; } } cpf[10] = '\0'; printf("cpf %s", cpf); printf("propina %s", propina); }  
    • Por LucasOficial
      Me foi passado um trabalho de faculdade que consiste em:
      imagine um vetor inicialmente vazio com capacidade CAP.
      cria um programa que através de um menu permita o usuário
      inserir um novo numero
      remover um valor
      remover o elemento de uma determinada posição
      alteração de um valor por outro
      buscar determinado valor e dizer sua posição (caso exista)
      exibição de todos os elementos do vetor
       
      quero algumas ideias de como começar, quais funções, variáveis usar. sou bastante leigo nesse assunto.
    • Por Marcelo Lopes Vidal
      #include<stdio.h> #include<string.h> #include<stdlib.h> struct aluno { char nome[20]; char endereco[50]; char data_de_nascimento[10]; char telefone[15]; float nota1; float nota2; }; struct aluno recadastramento(struct aluno valuno[10]); void media_das_notas(struct aluno valuno[10]); void aprovado_ou_reprovado(struct aluno valuno[10]); void mostrar_informacoes(struct aluno valuno[10]); int main(void) { struct aluno valuno[10]; int op; float media; int i; int j; printf("Digite as informacoes dos alunos"); for(i=1;i<11;i++) { printf("Digite O Nome Do Aluno[%d]\n\n",i); printf("Nome: "); fflush(stdin); gets(valuno[i].nome); printf("\nDigite O Endereco Do Aluno[%d]\n\n",i); printf("Endereco: "); fflush(stdin); gets(valuno[i].endereco); printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i); printf("Data De Nascimento: "); fflush(stdin); gets(valuno[i].data_de_nascimento); for(j=0;j <15; j++) { if(valuno[i].data_de_nascimento[2] != '/' && valuno[i].data_de_nascimento[5] != '/') { printf("ERRO! Digite novamente"); printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i); gets(valuno[i].data_de_nascimento); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite O Telefone Do Aluno [%d] No Formato <(DDD)00000-0000>\n\n",i); printf("Telefone Do Aluno: "); fflush(stdin); gets(valuno[i].telefone); for(j=0;j <15; j++) { if(valuno[i].telefone[0] != '(' && valuno[i].telefone[4] != ')' && valuno[i].telefone[10] != '-') { printf("ERRO! Digite novamente"); printf("Digite O Telefone Do Aluno [%d]: ",i); gets(valuno[i].telefone); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite A Primeira Nota Do Aluno [%d]\n\n",i); printf("Nota 1: "); scanf("%f",&valuno[i].nota1); printf("\nDigite A Segunda Nota Do Aluno [%d]\n\n",i); printf("Nota 2: "); scanf("%f",&valuno[i].nota2); } do { printf("\nMENU\n"); printf("- 1)Editar informações dos alunos \n 2)Mostrar as medias dos alunos \n 3)Dizer se os alunos foram aprovados medias >= 6 ou reprovados (medias <6)\n 4)Listar todas as informações dos alunos"); printf("\n\nOpcao::: "); scanf("%d",&op); switch(op) { case 1: recadastramento(valuno); break; case 2: media_das_notas(valuno); break; case 3: aprovado_ou_reprovado(valuno); break; case 4: mostrar_informacoes(valuno); break; default: printf("\nOpcao INVALIDA\n"); break; } }while(op > 0 && op < 5); } struct aluno recadastramento(struct aluno valuno[10]) //recadastramento de informações//Funções { int i; for(i=1;i<11;i++) { printf("\nDigite O Nome Do Aluno [%d]\n\n",i); printf("Nome: "); fflush(stdin); gets(valuno[i].nome); printf("\nDigite O Endereco Do Aluno [%d]\n\n",i); printf("Endereco: "); fflush(stdin); gets(valuno[i].endereco); printf("\nDigite A Data De Nascimento Do Aluno [%d] No Formato <00/00/0000>\n\n",i); printf("Data De Nascimento: "); fflush(stdin); gets(valuno[i].data_de_nascimento); int j; for(j=0;j < 11; j++) { if(valuno[i].data_de_nascimento[2] != '/' && valuno[i].data_de_nascimento[5] != '/')//validção de data no formato correto { printf("ERRO! Digite novamente"); printf("\nDigite A Data De Nascimento Do Aluno [%d]No Formato <00/00/0000>\n\n",i); gets(valuno[i].data_de_nascimento); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite O Telefone Do Aluno [%d] No Formato <(DDD)00000-0000>\n\n",i); printf("Telefone Do Aluno: "); fflush(stdin); gets(valuno[i].telefone); for(j=0;j <15; j++)//validção de numero no formato correto { if(valuno[i].telefone[0] != '(' && valuno[i].telefone[4] != ')' && valuno[i].telefone[10] != '-') { printf("ERRO! Digite novamente"); printf("Digite O Telefone Do Aluno [i]: ",i); gets(valuno[i].telefone); break; } else { printf("FORMATO CORRETO"); break; } } printf("\nDigite A Primeira Nota Do Aluno [%d]\n\n",i); printf("Nota 1: "); scanf("%f",&valuno[i].nota1); printf("\nDigite A Segunda Nota Do Aluno [%d]\n\n",i); printf("Nota 2: "); scanf("%f",&valuno[i].nota2); } } void media_das_notas(struct aluno valuno[10])//media de notas { int i; for(i=1;i<11;i++) { float media; media = (valuno[i].nota1 + valuno[i].nota2) / 2; printf("Media: %.2f\n",media); } } void aprovado_ou_reprovado(struct aluno valuno[10])//se foi aprovado ou reprovado { int i; for(i=1;i<11;i++) { float media; media = (valuno[i].nota1 + valuno[i].nota2) / 2; if(media >= 6) { printf("\nAluno [%d] APROVADO\n",i); } else { printf("\nAluno [%d] REPROVADO\n",i); } printf("\nMedia do Aluno[%d]: %.2f\n",i,media); } } void mostrar_informacoes(struct aluno valuno[10])//mostrando informções de cadastro { int i; for(i=1;i<11;i++) { printf("-Listagem Do Aluno[%d]",i); printf("\n\nNome do Aluno[%d]: %s",i,valuno[i].nome); printf("\nEndereco do Aluno[%d]: %s",i,valuno[i].endereco); printf("\nData De Nascimento do Aluno[%d]: %s",i,valuno[i].data_de_nascimento); printf("\nTelefone do Aluno[%d]: %s",i,valuno[i].telefone); printf("\nNota 1 do Aluno[%d]: %.2f ",i,valuno[i].nota1); printf("\nNota 2 do Aluno[%d]: %.2f ",i,valuno[i].nota2); } } //Fim Do Codigo  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.