Dúvida de um iniciante em C [RESOLVIDO]

25 respostas
B

Ola boa noite, estou em dúvida desse exercício:

#include <stdio.h>

int main()
{
   int index = 0, contador;
   char letras[5] = "Joao";

   for (contador = 0; contador < 1000; contador++)
   {
      printf("\n%c",letras[index]);
      (index == 3) ? index = 0: ++index;
   }
}

O nome Joao é escrito na tela verticalmente até a variável contador determinar o término
do programa. Enquanto isto a variável index assume os valores 0, 1, 2, 3, , 0, 1, … progressivamente.

Altere o último exemplo para que ele escreva cada letra 5 vezes seguidas. Para isto, use
um ’if’ para testar se o contador é divisível por cinco (utilize o operador %) e só então realizar
a atualização em index.

Já tentei executar ele de varias formas mais não consigo que ele imprima 5 vezes cada letra, não estou entendendo a logica. Alguém que possa sanar a minha duvida e me explicar?

25 Respostas

S

Se entendi certo, você quer imprimir 5 vezes cada letra seguidamente, de forma que formem
5 colunas com o nome Joao. Então três dicas:

  1. O for deveria percorrer a quantidade suficiente para imprimir apenas o nome cinco vezes, então reduza para 5 * 4 = 20.
  2. Na própria questão diz que você deverá realizar o teste do contador se é módulo 5, então use contador % 5 == 0. Além disso, ao invés de iniciar contador em 0, porque não em 1? Assim ficaria o intervalo 1 <= contador <= 20.
  3. Cada vez que index é atualizado, na dica 2, então imprima o ‘\n’.

A resposta deveria ser:

J J J J J o o o o o a a a a a o o o o o

F

Executa o código abaixo, é isso que queria? se tiver alguam dúvida só postar que explico o código, abraços…

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

int main()
{

   char letras[5] = "Joao";

   for (int i = 0;  i <=20; i++){
           if(i % 5 == 0){
                cout << endl;
                for(int i=0; i <= 5; i++){
                        for(int i=0; i<=5; i++){
                             cout <<  letras[0];
                        }
                        for(int i=0; i<=5; i++){
                             
                             cout <<  letras[1];
                        }
                        for(int i=0; i<=5; i++){
                            
                             cout <<  letras[2];
                        }
                        for(int i=0; i<=5; i++){
                             
                             cout <<  letras[3];
                        }
                        for(int i=0; i<=5; i++){
                            
                             cout <<  letras[4];
                        }
                 cout << endl;

                }
                
                cout << endl;
                cout << "------------------------";
                cout << endl;
          }        

   }


}
B

Muito obrigado, a segunda opção que você me passou me deu luz pra fazer o resto kkkkk
Resposta:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int index = 3, contador;
    char letras[5] = "Joao";

    for (contador = 0; contador <= 99; contador++)
    {
        if(contador%5 == 0)
        {
            (index == 3) ? index = 0: ++index;
            printf("\n");
        }
        printf("%c", letras[index]);
    }

    return 0;
}
B

De algum modo seu código esta dando um erro !

F

O código compila bruno e foi testado,

verifique se esta importando as bibliotecas

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

abraços

B

Esta dando erro da linha da biblioteca: 13|fatal error: iostream: No such file or directory|

F

Bruno qual programa você esta usando para compilar?

atente para # não esqueça disso…antes de aplicar um include

quando for postar código seleciona ele e marca como texto pre formatado…

B

Code Blocks, sim ele ta com # normal. Ele acusa esse erro. Que estranho ! :confused:

F

testa usando esse compilador online, vou testar aqui um momento…

http://cpp.sh/

B

Ok faz um teste :wink:.

F

Bruno aqui funcionou, você provavelmente não deve ter a biblioteca em seu pacote, mesmo importando-a.

saida do código executado:

JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo


JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo


JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo


JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo


JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo
JJJJJJooooooaaaaaaoooooo


F

tira um print de todo o código nesse site para eu olhar melhor, deixa tudo a vista…

B

Então já me esclarece kkk, como que importo ele, só um adendo meus projetos estou criando e C e não C++.

F

Bruno onde tem endl equivale a \n, e onde tem cout equivale a seu printf.

F

posta um print de todo o código e do resultado no site que te falei…

B

http://cpp.sh/4hbgu

F

vou olhar aqui, um minuto…

F

Porque colocou isso:

cout &lt;
            &lt;
            endl;
            cout &lt;
            &lt; "------------------------";
            cout &lt;
            &lt;
            endl;

?

B

hum

B

Ue copiei do teu código kkkkk

F

quando você copiou veio caracteres especiais que não são interpretados e não fazem nenhum sentido pro compilador de C, por isso ele estava acusando erro, e falando que não entende o que tinha ali,

substitua esse techo por :slight_smile:

cout << endl;
            cout << "------------------------";
            cout << endl;
F

veja funcionando em: http://cpp.sh/9cez

B

Sim agora esta funcionando arrumei aqui pelo compilador que você me passou mais no meu compilador code blocks ele não compila, continua dando o erro. Deve ser como você falou falta a biblioteca… :sob:

Mais blz seu código também funciona, só que não entendi muito bem ele, é C++? Algum comando o outro que não entedi o por que do comando, mais tudo certo. Obrigado !

O que fiz faz a mesma coisa só que em menos linha:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int index = 3, contador;
    char letras[5] = "Joao";

    for (contador = 0; contador <= 99; contador++)
    {
        if(contador%5 == 0)
        {
            (index == 3) ? index = 0: ++index;
            printf("\n");
        }
        printf("%c", letras[index]);
    }

    return 0;
}
F

legal bruno deu tudo certo agora ne, problema resolvido?

B

Sim sim, tudo ok !

Criado 8 de maio de 2016
Ultima resposta 8 de mai. de 2016
Respostas 25
Participantes 3