Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Vetores C++

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Vetores C++

    Oi galera, estou começando em Ciências da computação e recebi um exercicio para fazer um algoritimo que leia um texto de no maximo 100 caracteres e armazene em um vetor, apos armazenado tenho que subistituir o 'a' por 'b' o 'c' por 'd' e assim sucessivamente, e também colocar a letra 'a' no final de cada palavra; mas não to conseguindo pois o texto não é salvo no vetor apos eu dar um espaço, alguem sabe como fazer?

    Por enquanto só fiz isso

    Código:
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main (void){
        char texto [100];
    
        cout <<"Insira um texto: ";
        cin>> texto;
    
          for (int i=0; i<=99; i++){
    
            if (texto [i] == 'a'){
                texto [i] = 'b';
            }
            else if (texto [i] == 'c') {
                texto [i] = 'd';
            }
            else if (texto [i] == 'e') {
                texto [i] = 'f';
            }
            else if (texto [i] == 'g') {
                texto [i] = 'h';
            }
            else if (texto [i] == 'i') {
                texto [i] = 'j';
            }
            else if (texto [i] == 'k') {
                texto [i] = 'l';
            }
            else if (texto [i] == 'm') {
                texto [i] = 'n';
            }
            else if (texto [i] == 'o') {
                texto [i] = 'p';
            }
            else if (texto [i] == 'q') {
                texto [i] = 'r';
            }
            else if (texto [i] == 's') {
                texto [i] = 't';
            }
            else if (texto [i] == 'u') {
                texto [i] = 'v';
            }
            else if (texto [i] == 'w') {
                texto [i] = 'x';
            }
            else if (texto [i] == 'y') {
                texto [i] = 'z';
            }
        }
    
    
        cout <<texto<<endl;
    
        return 0;
    }

  • Font Size
    #2
    Não entendo muito de c++, mas para ler uma linha inteira é necessário utilizar o método getline(). O código para ler a linha toda ficaria dessa forma:

    Código:
    #include <iostream>
    #include <cstdlib>
    
    using namespace std;
    
    int main (void){
        string texto;
    
        cout <<"Insira um texto: ";
        getline(cin,texto);
        cout <<texto;
    
          for (int i=0; i<=99; i++){
    
            if (texto [i] == 'a'){
                texto [i] = 'b';
            }
            else if (texto [i] == 'c') {
                texto [i] = 'd';
            }
            else if (texto [i] == 'e') {
                texto [i] = 'f';
            }
            else if (texto [i] == 'g') {
                texto [i] = 'h';
            }
            else if (texto [i] == 'i') {
                texto [i] = 'j';
            }
            else if (texto [i] == 'k') {
                texto [i] = 'l';
            }
            else if (texto [i] == 'm') {
                texto [i] = 'n';
            }
            else if (texto [i] == 'o') {
                texto [i] = 'p';
            }
            else if (texto [i] == 'q') {
                texto [i] = 'r';
            }
            else if (texto [i] == 's') {
                texto [i] = 't';
            }
            else if (texto [i] == 'u') {
                texto [i] = 'v';
            }
            else if (texto [i] == 'w') {
                texto [i] = 'x';
            }
            else if (texto [i] == 'y') {
                texto [i] = 'z';
            }
        }
    
    
        cout <<texto<<endl;
    
        return 0;
    }

    Agora só falta você limitar a quantidade de caracteres e inserir a letra "A" no final de cada palavra. Boa Sorte.
    "Não subestime os fracos pois eles não agem com a força e sim com a mente."

    Comment


    • Font Size
      #3
      Certissimo Radicalzinho. Se voce usar só o cin >> variave, se a string tiver um espaço, ele so vai armazenar na "variavel" tudo antes do espaço, entao tem que usar o metodo getline(cin, Variavel.)

      Comment


      • Font Size
        #4
        Postado Originalmente por Perry Ver Post
        Oi galera, estou começando em Ciências da computação e recebi um exercicio para fazer um algoritimo que leia um texto de no maximo 100 caracteres e armazene em um vetor, apos armazenado tenho que subistituir o 'a' por 'b' o 'c' por 'd' e assim sucessivamente, e também colocar a letra 'a' no final de cada palavra; mas não to conseguindo pois o texto não é salvo no vetor apos eu dar um espaço, alguem sabe como fazer?

        Por enquanto só fiz isso

        Código:
        #include <iostream>
        #include <cstdlib>
        
        using namespace std;
        
        int main (void){
            char texto [100];
        
            cout <<"Insira um texto: ";
            cin>> texto;
        
              for (int i=0; i<=99; i++){
        
                if (texto [i] == 'a'){
                    texto [i] = 'b';
                }
                else if (texto [i] == 'c') {
                    texto [i] = 'd';
                }
                else if (texto [i] == 'e') {
                    texto [i] = 'f';
                }
                else if (texto [i] == 'g') {
                    texto [i] = 'h';
                }
                else if (texto [i] == 'i') {
                    texto [i] = 'j';
                }
                else if (texto [i] == 'k') {
                    texto [i] = 'l';
                }
                else if (texto [i] == 'm') {
                    texto [i] = 'n';
                }
                else if (texto [i] == 'o') {
                    texto [i] = 'p';
                }
                else if (texto [i] == 'q') {
                    texto [i] = 'r';
                }
                else if (texto [i] == 's') {
                    texto [i] = 't';
                }
                else if (texto [i] == 'u') {
                    texto [i] = 'v';
                }
                else if (texto [i] == 'w') {
                    texto [i] = 'x';
                }
                else if (texto [i] == 'y') {
                    texto [i] = 'z';
                }
            }
        
        
            cout <<texto<<endl;
        
            return 0;
        }
        Olá Perry, seja bem vindo ao forum. Então, analisando a questão eu percebi que por falta de atenção na leitura você cometeu alguns erros, bem o primeiro foi deixar de criticar o que é digitado "leia um texto de no maximo 100 caracteres e armazene em um vetor".
        Solução:
        Código:
        
            cout <<"Digite o texto: ";
        
            //Repete ate digitar um texto menor ou igual a 100
            cin >> texto;
            //texto.size() é um método da classe String(#include <string>), que retorna o tamanho da String
            while (texto.size() > 100) {
                cout <<endl<<"muito grande, digite o texto: ";
                cin >> texto;
        
            }
        O segundo erro não é tão relevante, mas em grandes programas vai reduzir o desempenho, o erro está na condição do for, que não precisa ir até 99 se o tamanho to "texto" for menor que 100.
        Solução:

        Código:
         
        
            for (int i=0; i < texto.size(); i++) 
        A solução completa ficaria assim:
        Código:
        
        #include <iostream>
        #include <string>
        
        using namespace std;
        
        int main (void){
            string texto;
        
            cout <<"Digite o texto: ";
        
            //Repete ate digitar um texto menor ou igual a 100
            cin >> texto;
        
            while (texto.size() > 100) {
                cout <<endl<<"muito grande, digite o texto: ";
                cin >> texto;
            }
        
            cout <<"Entrada: "<< texto << endl <<"Saida: ";
        
            for (int i=0; i < texto.size(); i++){
                if      (texto [i] == 'a')
                    texto [i] = 'b';
                else if (texto [i] == 'c')
                    texto [i] = 'd';
                else if (texto [i] == 'e')
                    texto [i] = 'f';
                else if (texto [i] == 'g')
                    texto [i] = 'h';
                else if (texto [i] == 'i')
                    texto [i] = 'j';
                else if (texto [i] == 'k')
                    texto [i] = 'l';
                else if (texto [i] == 'm')
                    texto [i] = 'n';
                else if (texto [i] == 'o')
                    texto [i] = 'p';
                else if (texto [i] == 'q')
                    texto [i] = 'r';
                else if (texto [i] == 's')
                    texto [i] = 't';
                else if (texto [i] == 'u')
                    texto [i] = 'v';
                else if (texto [i] == 'w')
                    texto [i] = 'x';
                else if (texto [i] == 'y')
                    texto [i] = 'z';
            }
            cout <<texto<<endl;
            return 0;
        }
        
        
        Também observei que faltaram as letras B,D,F... dentro do for, pensei que seu algoritmo teria que cifrar só as letras predefinidas, mas caso fosse pra cifrar todas as letras do alfabeto exceto o "Z"(que é a última letra, você poderia fazer assim:

        Código:
        
        #include <iostream>
        #include <string>
        
        using namespace std;
        
        int main (void){
            string texto;
        
            cout <<"Digite o texto: ";
        
            //Repete ate digitar um texto menor ou igual a 100
            cin >> texto;
        
            while (texto.size() > 100) {
                cout <<endl<<"muito grande, digite o texto: ";
                cin >> texto;
            }
        
            cout <<"Entrada: "<< texto << endl <<"Saida: ";
        
            for (int i=0; i < texto.size(); i++){
                if (texto[i] < 'a' || texto[i] > 'x')
                    break;
                else
                    texto [i] += 1;
        
            }
            cout <<texto<<endl;
            return 0;
        }
        
        Bem, espero ter te ajudado, e não relaxe em ter o algoritmo, modifique-o para cifrar de 3 em 3 letras, para retroceder as letras, enfim brinque com o código que você vai aprender muito.

        Abraços.
        __________________________________________________ ____
        Quem pensa antes tem tempo pra pensar, pois não precisa pensar durante ou depois.

        Comment


        • Font Size
          #5
          Usa a função strlen para ver o tamanho da string, atribui em código ascii incrementando cada posição do vetor e pronto.
          Yes, I am a criminal. My crime is that of curiosity. My crime is
          that of judging people by what they say and think, not what they look like.
          My crime is that of outsmarting you, something that you will never forgive me
          for.

          I am a hacker, and this is my manifesto. You may stop this individual,
          but you can't stop us all... after all, we're all alike.

          Comment


          • Font Size
            #6
            a parte de substituir a ultima letra talvez seja apenas implementar algo parecido com isso
            Código:
            if( texto[i] == '\x20') // \x20 == espaço
            	texto[i-1] = 'a'
            Não me responsabilizo por seus atos.

            Comment

            X
            Working...
            X