Informática, perguntado por desiderio1010, 3 meses atrás

Em linguagem de programação podemos contar com funções prontas que podem ajudar o analista de funções triviais simples, mas muito úteis se utilizadas de modo correto.
Considere o código em linguagem C abaixo:

#include
#include
int main(){
char Str[1000];
int i;
printf("Digite uma palavra: ");
scanf("%s", Str);
int tamanho=strlen(Str);
for (i = 0; Str[i] != '0'; ++i){
printf("o tamanho é %d", i);
return 0;
}
}

A partir de sua análise assinale a resposta correta:

Alternativas
Alternativa 1:
Ao executar o código o laço for entre em loop infinito.

Alternativa 2:
Quando o usuário digita uma palavra o código soma a quantidade de caracteres e retorna zero.

Alternativa 3:
O resultado do tamanho da palavra sempre será zero, por que o código esta com erro lógico no loop

Alternativa 4:
Nesse programa o usuário digita uma palavra e então o comprimento de Str é calculado usando loop e strlen().

Alternativa 5:
Esse algoritmo ao final armazena a quantidade de palavras digitadas pelo usuário e mostra a quantidade exata.

Soluções para a tarefa

Respondido por btotta
11

Resposta:

Alternativa 3:

O resultado do tamanho da palavra sempre será zero, por que o código esta com erro lógico no loop

Explicação:

for (i = 0; Str[i] != '0'; ++i)

{

printf("o tamanho é %d", i);

return 0;

}

O loop for deste exercicio contem um erro lógico, onde ele define:

Str[i] != '0'

Nesse caso, quando o texto digitado for 0 o programa encerra diretamente, e caso seja digitado qualquer outra informação, a função print vai emprimir no terminal o valor de I, que foi definido como 0 "for (i = 0; ".


FoxinWar: A resposta correta não seria a 2?
Alternativa 2:
Quando o usuário digita uma palavra o código soma a quantidade de caracteres e retorna zero.
E é exatamente o que acontece. Antes do for, o código soma a quantidade de caracteres. Ao entrar no for, ele sempre vai retornar 0
btotta: Porém o código nunca soma a quantidade de letras .. a quantidade de caracteres é obtido através da função "strlen(Str)" que é parte da biblioteca , e esse valor também nunca é passado para a impressão..

Para ser uma soma, o loop for precisaria de uma variável auxiliar e interagir pela lista de caracteres Str, somando +1 a cada novo ..

Indo além, se você compilar esse código e inserir uma palavra, o terminal sempre vai imprimir "Digite uma palavra: banana o tamanho é 0"
btotta: Também não pode ser a alternativa 4 porquê o loop "é calculado usando loop e strlen()." não serve de nada para o calculo :/
SteveMaster: A resposta é 3 for (i = 0; Str[i] != '0'; ++i){
SteveMaster: Str[i] está valendo zero, logo zero não é != de zero, então o programa n retorna nada
Respondido por gabriel11silva
1

A resposta correta é a alternativa 1, ao executar o código, o laço for será um loop infinito.

Vamos analisar o código:

  • char Str[1000]; declarado um vetor do tipo string, de tamanho 1000.
  • int i; declarada uma variável inteira, chamada i
  • printf("Digite uma palavra: "); Imprime ao usuário, para que este digite uma palavra.
  • scanf("%s", Str); Lê a palavra escrita e guarda no vetor Str.
  • int tamanho=strlen(Str); Cria uma variável inteira tamanho, e guarda dentro dela o resultado de STRLEN, função que irá retornar o número de caracteres que há em Str.
  • for (i = 0; Str[i] != '0'; ++i){ O erro está no fato de que, o loop irá rodar até que Str[i] seja não igual (!=) a 0, porém, um índice não específicado dentro de um vetor pode ter qualquer valor, não necessariamente o 0, assim o loop será infinito.
  • Para corrigir o programa, o loop deveria ser executado até que i = tamanho, uma vez que a medida da palavra já havia sido solicitada.

Aprenda mais sobre variáveis do tipo String aqui: https://brainly.com.br/tarefa/26433044

Anexos:
Perguntas interessantes