Ir ao conteúdo

Posts recomendados

Postado

Boas galera.

 

Estou em formação de iniciação a C++ de 50h, e completei 35h até agora, meu professor passou 50 exercícios para fim de semana, e estou com problema em 2 deles.

 

Este nem entendi O resultado da divisão inteira de um número inteiro por outro número inteiro pode sempre ser obtido utilizando-se apenas o operador de subtração. Assim, se quisermos calcular (7/2),
basta subtrair o dividendo (2) ao divisor (7), sucessivamente, até que o resultado seja menor do que o dividendo. O número de subtrações realizadas corresponde ao quociente inteiro, conforme o exemplo seguinte:
7 - 2 = 5
5 - 2 = 3
3 - 2 = 1
Descreva um programa para o cálculo da divisão de um inteiro pelo outro. Note que se o dividendo for zero, esta é uma operação matematicamente indefinida.

 

 

E o segundo exercicio é o seguinte  escrever de 0 a 99 por extenso o numero, alguém me dá uma ajuda?

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <iostream>
#include <locale>
using namespace std;

int main() 
{
  setlocale(LC_ALL, "Portuguese");
  system ("color 1B");
  int n,a,b,c;
   cout << "Insira um número de 0 a 99 e o retorno seja o número por extenso\n";
   cout << "Insira o número : ";
   cin >> n;
   {
   
  switch (a)
  {
        case 0 : cout << "zero"; break;      
          case 1 : cout <<"um"; break;
        case 2 : cout <<"dois"; break;
        case 3 : cout <<"tres"; break;
        case 4 : cout <<"quatro"; break;
        case 5 : cout <<"cinco"; break;
        case 6 : cout <<"seis"; break;
        case 7 : cout <<"sete"; break;
        case 8 : cout <<"oito"; break;
        case 9 : cout <<"nove"; break;
    
    }
    switch (b)
    {
        case 0 : cout <<"dez"; break;
        case 1 : cout <<"onze"; break;
        case 2 : cout <<"doze"; break;
        case 3 : cout <<"treze"; break;
        case 4 : cout <<"catorze"; break;
        case 5 : cout <<"quinze"; break;
        case 6 : cout <<"dezesseis"; break;
        case 7 : cout <<"dezassete"; break;
        case 8 : cout <<"dezoito"; break;
        case 9 : cout <<"dezanove"; break;
    }
    
    switch (c)
    {
        
        case 2 : cout <<"vinte"; break;
        case 3 : cout <<"trinta"; break;
        case 4 : cout <<"quarenta"; break;
        case 5 : cout <<"cinquenta"; break;
        case 6 : cout <<"sessenta"; break;
        case 7 : cout <<"setenta"; break;
        case 8 : cout <<"oitenta"; break;
        case 9 : cout <<"noventa"; break;
   }
}
   
   {
   
   if (n >=20 && n<100)
   cout << c << a;
}
{

   if ( n>10 && n<20)
   cout <<b;
}
{

   if (n<=10)
   cout <<a << c;
}
   return 0;
}

 

  • Obrigado 1
Postado

@BrunoPro10 Olá!

 

Mais que parte você não aceita?

8 horas atrás, BrunoPro10 disse:

Este nem entendi O resultado da divisão inteira de um número inteiro por outro número inteiro pode sempre ser obtido utilizando-se apenas o operador de subtração. Assim, se quisermos calcular (7/2),
basta subtrair o dividendo (2) ao divisor (7), sucessivamente, até que o resultado seja menor do que o dividendo. O número de subtrações realizadas corresponde ao quociente inteiro, conforme o exemplo seguinte:
7 - 2 = 5
5 - 2 = 3
3 - 2 = 1

 

Veja melhor, pois é uma estrutura de repetição, onde o multiplicador que é o quociente da divisão é um contador de repetições da estrutura e o valor procurado, cuja a condição de existência é que o subtraendo continue menor ou igual ao minuendo isso para cada iteração, logicamente que o minuendo é atualizado com resto (diferença) da última operação. Observe que no exemplo  o minuendo (7) na primeira linha foi trocado por 5 na segundo que é o resto da primeira. O loop acaba quando minuendo é menor resultado, ou seja, também podemos dizer que o subtraendo (2) é maior que o minuendo (1). 

  • Curtir 3
Postado

@BrunoPro10      você não disse se já estudou vetores ,   mas se você puder usa-los seria bem mais fácil , então um exemplo com vetores seria assim  :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <iostream>
#include <locale>
#include <vector>
#include <cstring>
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{black,blue,green,cyan,red,magenta,brown,lightgray,darkgray,   /* nome das cores */
lightblue,lightgreen,lightcyan,lightred,lightmagenta,yellow,white} colors;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = lightgray;

void textcolor_2 (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
using namespace std;
int main(){
    setlocale(LC_ALL, "Portuguese");
    system ("color 1B");
    int n,j,a,b;
    char m_vet[21][9]={"Zero","Um","Dois","Tres","Quatro",   "Cinco",
                       "Seis","Sete","Oito","Nove","Dez",     "Onze",
                       "Doze","Treze","Quatorze","Quinze","Dezeseis",
                       "Dezesete","Dezoito","Dezenove"      ,"vinte"
                    };
    char m_vet2[10][10]={"N","N","Vinte","Trinta","Quarenta","Cinquenta",
                         "Sessenta","Setenta","Oitenta"     ,  "Noventa"
                    };
    string op;
    vector<string>meu_vetor,meu_vetor2;
    for(j=0;j<21;j++){
        meu_vetor.push_back (m_vet[j]);
        meu_vetor2.push_back(m_vet2[j]);
    }
    do{
        textcolor_2(11,1);
        cout<<"Insira um número de 0 a 99 e o retorno seja o número por extenso\n";
        do{
            textcolor_2(12,14);
            cout<<"Insira o número : ";
            textcolor_2(11,1);
            cout<<"  ";
            cin>>n;
        }while(n<0 || n>99);
        cout<<"\n"<<n<<" Por Extenso => ";
        if(n<21)
            cout<<meu_vetor[n]<<endl;
        else{
            a=n/10;
            b=n%10;
            cout<<meu_vetor2[a]<<" e "<<meu_vetor[b]<<endl;
        }
        cout<<"\nOutro Numero S/N ";
        op = (char)getch();
        cout<<"\n"<<endl;
    }while(op != "N" && op != "n" );
    textcolor_2(15,1);
    cout<<"\n\n"<<endl;
    return 0;
}

 

  • Curtir 3
Postado

@devair1010  Obrigado pela explicação.

Sim já dei vectores mas mesmo iniciação nada assim aprofundado...

Alterei a parte das cores do seu programa pois isso não aprendemos...

E o " push_back" também não foi falado em aulas, mas isso não posso alterar pois não?

 

A orientação do formador foi fazer por Switch a alguns colegas, mas não estou a conseguir por esse metodo...

 

E este exercicio  " O resultado da divisão inteira de um número inteiro por outro número inteiro pode sempre ser obtido utilizando-se apenas o operador de subtração. Assim, se quisermos calcular (7/2),
basta subtrair o dividendo (2) ao divisor (7), sucessivamente, até que o resultado seja menor do que o dividendo. O número de subtrações realizadas corresponde ao quociente inteiro, conforme o exemplo seguinte:
7 - 2 = 5
5 - 2 = 3
3 - 2 = 1
Descreva um programa para o cálculo da divisão de um inteiro pelo outro. Note que se o dividendo for zero, esta é uma operação matematicamente indefinida"

 

Aqui acho que é mais uma questão de português de não estar a entender o que realmente é pedido, vou tentar fazer este em aula com ele...

 

Obrigado pela grande ajuda abraço

  • Curtir 1
Postado

@BrunoPro10       pode sim ,  você pode descartar o meu_vetormeu_vetor2 , e usar o m_vet e m_vet2 , no lugar deles ,  coloquei eles para que fosse usado mais comandos da linguagem c++ , pois você postou no tópico de linguagem c++ , enquanto que o modo de funcionamento do m_vet é da linguagem c , então pode modificar essa parte :

cout<<"\n"<<n<<" Por Extenso => ";
if(n<21)
    cout<<m_vet[n]<<endl;
else{
    a=n/10;
    b=n%10;
    cout<<m_vet2[a]<<" e "<<m_vet[b]<<endl;
}

e sim pode fazer com switch também , apenas que aí seria muitas linhas de código à mais .

  • Curtir 1
  • Membro VIP
Postado
1 hora atrás, BrunoPro10 disse:

E este exercicio  " O resultado da divisão inteira de um número inteiro por outro número inteiro pode sempre ser obtido utilizando-se apenas o operador de subtração. Assim, se quisermos calcular (7/2),
basta subtrair o dividendo (2) ao divisor (7), sucessivamente, até que o resultado seja menor do que o dividendo. O número de subtrações realizadas corresponde ao quociente inteiro, conforme o exemplo seguinte:
7 - 2 = 5
5 - 2 = 3
3 - 2 = 1
Descreva um programa para o cálculo da divisão de um inteiro pelo outro. Note que se o dividendo for zero, esta é uma operação matematicamente indefinida"

 

Aqui acho que é mais uma questão de português de não estar a entender o que realmente é pedido, vou tentar fazer este em aula com ele...

 

 

O quê está se pedindo é isso:

 

1 hora atrás, BrunoPro10 disse:

Descreva um programa para o cálculo da divisão de um inteiro pelo outro.


Aqui tem 2 pontos centrais:

  1. Entender o problema;
  2. Criar um algoritmo que automatize a resolução desse problema (em outras palavras: criar um programa que atenda aos requisitos do enunciado)

A etapa atual é entender o problema. Vamos lá:
 

Então... o enunciado se refere a desenvolver um programa em C++ em que retorne a parte inteira da divisão de um inteiro por outro... no caso utilizando o método anteriormente explicado (que chamaremos de "divisão por subtrações sucessivas").

 

Primeiro entenda como é feito o cálculo. Pense como sendo um problema do mundo real.. tipo.. você efetuar essa conta na mão. Ex.:

 

- Calcule e retorne a parte inteira da divisão de 46 por 7 utilizando o método de "divisão por subtração sucessiva".

Resposta:

46 - 7 = 39   (1)

39 - 7 = 32   (2)

32 - 7 = 25   (3)

25 - 7 = 18   (4)

18 - 7 = 11   (5)

11 - 7 = 4    (6)

4... (é menor que 7, logo não dá para subtrair mais)

 

Parte inteira é 6, pois foram efetuado 6 operações
 

Ou seja: a parte inteira da divisão de 46 por 7 é 6. (o resto é o que sobra, no caso 4). Em outras palavras: 46/7 é igual a 6 (com resto 4). obs.: no contexto não importa o resto, só estou demonstrando que seria ele..

 

Você precisa desenvolver um código que realize essas operações. Se o usuário inserir 46 e 7 como entrada, o programa deve retornar 6 como resposta (mas sendo que internamente será utilizando o tal método da subtração).

 

obs.: é possível também exibir linha a linha essa subtração na tela, mas não precisa (pelo menos por enquanto). Apenas se preocupe em receber o "numerador" e o "denominador" e retorne a "parte inteira da divisão". Você precisa fazer isso.

 

"Ah, mas como faço isso em C++?". Isso é você que precisa, inicialmente, fazer. Caso tenha ainda dúvidas sobre "o que quer se fazer", é só perguntar (não tente fazer antes, primeiro entenda o problema). A parte que vem depois, "como se fazer", ainda é só com você... tente adiantar algo, aí vai tirando dúvidas sobre qual partes que está com dificuldades, entende?

 

No aguardo.

  • Curtir 2
Postado

@devair1010 Obrigado entao vou deixar essa parte estar como colocou ao inicio. 

Sim estou em C++

 

Muito obrigado

adicionado 2 minutos depois

@Simon Viegas muito obrigado

A parte de interpretação agora sim está entendida... mas agora como passar isso tudo para C++ é que não está nada fácil.. terei mesmo que amanha pedir uma explicaçao ao formador pois nem começar consigo....

  • Curtir 1
Postado

Poderia ter chegado lá também por meio deles.

Em 28/07/2019 às 09:21, BrunoPro10 disse:

A orientação do formador foi fazer por Switch a alguns colegas, mas não estou a conseguir por esse metodo...

 

#include "stdall.h" /* Adicionei todas as bibliotecas conhecidas de uma vez */

void unidade(int u)
{
    switch (u) {
            case 1: printf(" um");     break;
            case 2: printf(" dois");   break;
            case 3: printf(" tres");   break;
            case 4: printf(" quatro"); break;
            case 5: printf(" cinco"); break;
            case 6: printf(" seis");  break;
            case 7: printf(" sete");  break;
            case 8: printf(" oito");  break;
            case 9: printf(" nove");  break;
    }
}


void inregulares(int u)
{
    switch (u) {
            case 1: printf(" onze");  break;
            case 2: printf(" doze");  break;
            case 3: printf(" treze"); break;
            case 4: printf(" quatorze"); break;
            case 5: printf(" quinze");   break;
            case 6: printf(" dezeseis"); break;
            case 7: printf(" dezessete");  break;
            case 8: printf(" dezoito");    break;
            case 9: printf(" dezenove");   break;
    }
}


void dezena(int u)
{
    switch (u) {
            case 1: printf(" dez");      break;
            case 2: printf(" vinte");    break;
            case 3: printf(" trinta");   break;
            case 4: printf(" quarenta"); break;
            case 5: printf(" cinquenta"); break;
            case 6: printf(" sessenta");   break;
            case 7: printf(" setenta");  break;
            case 8: printf(" oitenta");   break;
            case 9: printf(" noventa");   break;
    }
}


int main(void)
{
    int numeral= 0;

    printf("Informe, por favor, um numero [0,...,99] para obter seu numeral extenso? "); // printf: Saída
    scanf(" %d",&numeral); // scanf: Entrada

    int n_unidades= numeral%10;
    int n_decimal=  numeral/10;

    printf("Por extenso:");

    if ((1 == n_decimal)&&(0 < n_unidades)) inregulares(n_unidades);
    else {
                dezena(n_decimal);
                unidade(n_unidades);
    }
    printf("\n\n"); // printf: saída
    return 0;
}

 

  • Curtir 1
Postado

@MB_ Muito obrigado vou levar as 2 vertentes.

 

Sobre o da divisão, só logo tenho aula, mas fiz desta forma

 

Que acham responde ao problema esta solução de forma correcta?

 

#include <iostream>
#include <locale>
using namespace std;

int main() 
{

	setlocale(LC_ALL, "Portuguese");
  system ("color 1B");

int dvd, dvs, res, quo;
cout << "cálculo da divisão de um inteiro pelo outro\n";
cout << "Entre com o dividendo: ";
cin >> dvd;

cout << "Entre com o divisor: ";
cin >> dvs;

for (quo=0;dvd >= dvs;quo=quo+1)
{
	res = dvd - dvs;
	dvd = res;
}

cout <<"O resultado da divisao e: " << quo << endl;
cout <<"O resto e: " << res << endl;

system ("pause");
}

 

  • Curtir 1
Postado

Agora estou com este problema...

 

Menu

[1] Cifrar numero

[2]Decifrar numero

[999] Sair do Programa

Supostamente é para usar vectores. E por exemplo a ideia é digitar o numero por exemplo 1765 e fazer  [1] o cfirar pode ser 7651 e este valor seja guardado para ser decifrado por [2] eu estsava a fazer desta forma mas dizem que está mal...

 

já me disseram que tem que ser com while.. mas fiz assim.. mas não dá nada nem grava...

#include <iostream>
#include <locale>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
using namespace std;

int main() 
{
	setlocale(LC_ALL, "Portuguese");
  system ("color 1B");
  int n, i, num[4], cifra[4], decifra[4], op;
  srand(time(NULL));
    
 cout << "--------------Menu----------------\n\n";
  cout << "*************ESCOLHA UMA OPÇÃO**************\n";
  cout << "[1] CIFRAR NÚMERO\n";
  cout << "[2] DECIFRAR NÚMERO\n";
  cout << "[999] SAIR DO PROGRAMA\n";
  cout << "Opção? » "; 
  cin >> op;
  
   switch(op)
  {
  
  	case 1: 
		for ( int i =0; i <4; i++){
			cout <<"Insira o  digitos : ";
			cin >> num[i];
		}
		for (int i=0; i=4;i++){
			cifra[i]= rand () %9;
		}
			
		cout << "Cifra é  " << cifra[0] << cifra[1] << cifra[2] << cifra [3] << "\n";
	break;
		
	case 2: 
	 for( int i=0; i<4;i++){
	 	cout << "Insira o digito";
	 	cin>> num[i];
	 	
	 }
	for (int i=0 ; i<4; i++){
		decifra[i]= rand () %9;
		
		cout << " Decifra é " << decifra[3] <<decifra [2] << decifra[1] <<decifra[0]<< "\n";
	}
	break;
	case 999:
		
		return 0;
	break;
}
}

 

  • Curtir 1
Postado

Entendo. Acredito que precise armazenar também quais eram as posições originais. Recomendo uma matriz N, tal que N é largura de dígitos.  

 

A lógica é; Guardar a posição que ocupava o dígito antes da cifra.

 

Assim para cifrar e decifrar se utiliza de uma matriz codificadora.

 

Certo.

  • Curtir 1
Postado
#include <iostream>
#include <locale>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
using namespace std;

int main() 
{
	setlocale(LC_ALL, "Portuguese");
  system ("color 1B");
  int n, i, num[4], cifra[4], decifra[4], op;
  srand(time(NULL));
    
 cout << "--------------Menu----------------\n\n";
  cout << "*************ESCOLHA UMA OPÇÃO**************\n";
  cout << "[1] CIFRAR NÚMERO\n";
  cout << "[2] DECIFRAR NÚMERO\n";
  cout << "[999] SAIR DO PROGRAMA\n";
  cout << "Opção? » "; 
  cin >> op;
  
   switch(op)
  {
  
  	case 1: 
		for ( int i =0; i <4; i++){
			cout <<"Insira o  digitos : ";
			cin >> num[i];
		}
		for (int i=0; i<4;i++){
			cifra[(i+2) % 4]= num[i];
		}
			
		cout << "Cifra é  " << cifra[0] << cifra[1] << cifra[2] << cifra [3] << "\n";
	break;
		
	case 2: 
	 for( int i=0; i<4;i++){
	 	cout << "Insira o digito";
	 	cin>> num[i];
	 	
	 }
	for (int i=0 ; i<4; i++){
		decifra[i]= num[(i+2) % 4];
	}		
		cout << " Decifra é " << decifra[0] <<decifra [1] << decifra[2] <<decifra[3]<< "\n";

	break;
	case 999:
		
		return 0;
	break;
}
}

Com muita ajuda cheguei aqui...

O problema é que eu queria que quando chegar ao fim do Decifre  ele pudesse guardar esses 4 digitos e eu pudesse seleccionar Decifrar ou sair do programa  caso eu seleccionar Decifar ele pegava automaticamente nos 4 digitos do Cifrar e fazia o decifrar.

O mesmo aplicar no menu 2 ao colocar os 4 digitos de decifrar ele tivesse opção para escolher 1 ou sair, e pegasse nos 4 digitos saídos dos decifrar e fazer cifrar...

adicionado 29 minutos depois

Pensei desta forma não sei se é disparate... Mas está a dar erro no swtich op diz variavel 



#include <iostream>
#include <locale>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
using namespace std;

int main() 
{
	setlocale(LC_ALL, "Portuguese");
  system ("color 1B");
  int n, i, num[4], cifra[4], decifra[4], op;
  srand(time(NULL));
    
 cout << "--------------Menu----------------\n\n";
  cout << "*************ESCOLHA UMA OPÇÃO**************\n";
  cout << "[1] CIFRAR NÚMERO\n";
  cout << "[2] DECIFRAR NÚMERO\n";
  cout << "[999] SAIR DO PROGRAMA\n";
  cout << "Opção? » "; 
  cin >> op;
  
   switch(op)
  {
  
  	case 1: 
		for ( int i =0; i <4; i++){
			cout <<"Insira o  digitos : ";
			cin >> num[i];
		}
		for (int i=0; i<4;i++){
			cifra[(i+2) % 4]= num[i];
		}
			
		cout << "Cifra é  " << cifra[0] << cifra[1] << cifra[2] << cifra [3] << "\n";

	cout << "[2] DECIFRAR NÚMERO\n";
  cout << "[999] SAIR DO PROGRAMA\n";
  cout << "Opção? » "; 
  cin >> op;
		Switch (op)
		{ 
		case 2: 
		cifra[0]=decifra[0]= num[(i+2) % 4];
		cifra[1]=decifra[1]=decifra[i]= num[(i+2) % 4];
		cifra[2]=decifra[2]=decifra[i]= num[(i+2) % 4];
		cifra[3]=decifra [3=]decifra[i]= num[(i+2) % 4];
			cout << " Decifra é " << decifra[0] <<decifra [1] << decifra[2] <<decifra[3]<< "\n";
			break;
			case 999:
		
		return 0;
	break;
		}
	case 2: 
	 for( int i=0; i<4;i++){
	 	cout << "Insira o digito";
	 	cin>> num[i];
	 	
	 }
	for (int i=0 ; i<4; i++){
		decifra[i]= num[(i+2) % 4];
	}		
		cout << " Decifra é " << decifra[0] <<decifra [1] << decifra[2] <<decifra[3]<< "\n";

	break;
	case 999:
		
		return 0;
	break;
}
}

 

  • Curtir 1
Postado

Então o que, segundo você, acontece quando logo após iniciar o programa o usuário selecionar 2?

 

Essa parte (i+2) % 4, achei interessante, porém concorda que é melhor fixa esses valores. Os invés de 3 operações que dão para toda ocasião o mesmo resultado? Tirando o contador i, os resultados são fixos, ou melhor, já se sabe quem são eles para i de 0 até 3: { 2,3,0,1 }

 

Ilustração

/* Adicionar as bibliotecas conhecidas de uma vez */
#include "stdall.h"

void * show(int val[4])
{
    for (int n= 0; n < 4; ++n) printf("%d ",val[n]);
    printf("\n");

    return val;
}


void * code(int val[4])
{
    int a=  val[0];
    int b=  val[1];
    int c=  val[2];
    int d=  val[3];

            val[2]= a;
            val[3]= b;
            val[0]= c;
            val[1]= d;

    return val;
}


int main(void)
{
    int numero[4]= {1,2,3,4};

    printf("Original......: "); show(numero);
    printf("\n");

    printf("codificado....: "); show(code(numero));
    printf("de-codificado.: "); show(code(numero));
    printf("\n");

    return 0;
}

 

Certo.

 

 

 

  • Curtir 2
Postado

@MB_ Não percebi e talvez eu não esteja a explicar direito. 

Coloquei o seu programa no DEV ++ e ele deu-me alguns erros.

 

A ideia é fazer um programa com menu de 3 funções, se o menu fizer 1 ou seja Cifrar vamos supor que inserimos os digitos 3345 e a Cifra dele é vamos supor que seja 5578, e imprime a Cifrá é 5578 e o professor quer que sem sair deste menu possamos seleccionar "Decifra" e este decifre sem ser inserido o 5578(ou seja seja o programa a buscar esta informação e re torne a decifa ou seja 3345...

 

Bem como se no menu fizermos 2 inserimos o valor e ele dá o decifra e sem digitar valores da decifra ele dê a Cifra...

 

Fiz  desta forma mas não faz como pretendo ou seja que desse a escolhe fazer o 2...

#include <iostream>
#include <locale>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
using namespace std;

int main() 
{
	setlocale(LC_ALL, "Portuguese");
  system ("color 1B");
  int n, i, num[4], cifra[4], decifra[4], op,o,p;
  srand(time(NULL));
while (1)    
{
 cout << "--------------Menu----------------\n\n";
  cout << "*************ESCOLHA UMA OPÇÃO**************\n";
  cout << "[1] CIFRAR NÚMERO\n";
  cout << "[2] DECIFRAR NÚMERO\n";
  cout << "[999] SAIR DO PROGRAMA\n";
  cout << "Opção? » "; 
  cin >> op;
  
   switch(op)
  {
  
  	case 1: 
		for ( int i =0; i <4; i++){
			cout <<"Insira o  digitos : ";
			cin >> num[i];
		}
		for (int i=0; i<4;i++){
			cifra[(i+2) % 4]= num[i];
		}
			
		cout << "Cifra é  " << cifra[0] << cifra[1] << cifra[2] << cifra [3] << "\n";
		
		switch(op){
		
	case 2:
		for (int i=0 ; i<4; i++){
		  decifra[i]= cifra[(i+2) % 4];
	    }		
		cout << " Decifra é " << decifra[0] <<decifra [1] << decifra[2] <<decifra[3]<< "\n";
		break;
		case 999:
			return 0;
			break;
		}
	break;
		
	case 2: 
	 for( int i=0; i<4;i++){
	 	cout << "Insira o digito";
	 	cin>> num[i];
	 	
	 }
	for (int i=0 ; i<4; i++){
		decifra[i]= num[(i+2) % 4];
	}		
		cout << " Decifra é " << decifra[0] <<decifra [1] << decifra[2] <<decifra[3]<< "\n";
		switch (op){
		case 1:
		for (int i=0 ; i<4; i++){
		  cifra[i]= decifra[(i+2) % 4];
	    }		
		cout << " Cifra é " << cifra[0] <<cifra [1] << cifra[2] <<cifra[3]<< "\n";
		case 999:
			return 0;
			break;
		}

	break;
	case 999:
		
		return 0;
	break;
}
}
}

 

adicionado 54 minutos depois

Está pronto acabei agora como pretendia

 

Obrigado pela ajuda de todos 

#include <iostream>
#include <locale>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
using namespace std;

int main() 
{
	setlocale(LC_ALL, "Portuguese");
  system ("color 1B");
  int n, i, num[4], cifra[4], decifra[4], op,o,p;
  srand(time(NULL));
while (1)    
{
 cout << "--------------Menu----------------\n\n";
  cout << "*************ESCOLHA UMA OPÇÃO**************\n";
  cout << "[1] CIFRAR NÚMERO\n";
  cout << "[2] DECIFRAR NÚMERO\n";
  cout << "[999] SAIR DO PROGRAMA\n";
  cout << "Opção? » "; 
  cin >> op;
  
   switch(op)
  {
  
  	case 1: 
		for ( int i =0; i <4; i++){
			cout <<"Insira 4  digitos a vez : ";
			cin >> num[i];
		}
		for (int i=0; i<4;i++){
			cifra[(i+2) % 4]= num[i];
		}
			
		cout << "Cifra é  " << cifra[0] << cifra[1] << cifra[2] << cifra [3] << "\n";
		for (int i=0 ; i<4; i++){
		  decifra[i]= cifra[(i+2) % 4];
	    }	
		cout << "Pretende fazer a DECIFRA do código insira [2], pretende SAIR digite [999] :";
		cin >> op;
		switch(op){
		
	case 2:
			
		cout << " Decifra é " << decifra[0] <<decifra [1] << decifra[2] <<decifra[3]<< "\n";
		break;
		case 999:
			return 0;
			break;
		}
	break;
		
	case 2: 
	 for( int i=0; i<4;i++){
	 	cout << "Insira 4 digitos a vez : ";
	 	cin>> num[i];
	 	
	 }
	for (int i=0 ; i<4; i++){
		decifra[i]= num[(i+2) % 4];
	}		
		cout << " Decifra é " << decifra[0] <<decifra [1] << decifra[2] <<decifra[3]<< "\n";
		
		cout << "Pretende fazer a CIFRA do código insira [1], pretende SAIR insira [999] :";
		cin >> op;
		switch (op){
		case 1:
		for (int i=0 ; i<4; i++){
		  cifra[i]= decifra[(i+2) % 4];
	    }		
		cout << " Cifra é " << cifra[0] <<cifra [1] << cifra[2] <<cifra[3]<< "\n";
		case 999:
			return 0;
			break;
		}

	break;
	case 999:
		
		return 0;
	break;
}
}
}

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!