Ir ao conteúdo
  • Cadastre-se

Código não ler as letras em suas posições impares ? em c usando string


MatheusPJ

Posts recomendados

Bom dia galera,

 

 

Estou tentando resolver um código que meu professor passou em um trabalho que no caso é para imprimir somente as letras que estão em suas posições impares, fiz um código, mais o mesmo esta fazendo o contrario do que quero, no caso imprimindo as pares, mais até o momento não identifiquei o que preciso mudar para resolver isso . Vale lembrar que estou usando string's em C .

 

Segue abaixo o código que fiz .

 

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main()

{
  
  int cont=1, tam, i;     //declaração das variaveis
  char nome[30];

  printf("Digite um nome: ");    // Pedido de entrada de dados, para iniciar o codigo.
  gets(nome);   //lê uma string do teclado
  tam = strlen(nome);   // retorna o comprimento da string fornecida

  printf("\nLetras com suas posições:\n");   //verificacao de indice
  for(i=0; i<tam; i++)
  {
      
    printf("[%d] = % c\n", i, nome);        
  }
  // Aqui nomeia as restrições de saida, e caso o digitado acima esteja okay, 
  //ele ira imprimir os impares
  printf("\nAs letras nas posições impares sao: \n"); 
  while(cont<=tam-1)
  {
    printf("[%d] = %c\n", cont, nome[cont]);
    cont=cont+2;
  }
  printf("\n\n");
  system("pause");

}

Link para o comentário
Compartilhar em outros sites

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main() {

    int cont = 1, tam, i;
    char nome[30];
    
    printf ( "Digite um nome: " );
    gets ( nome );
    tam = strlen ( nome );
    
    printf ( "\nLetras com suas posições:\n" );
    
    for ( i = 0; i < tam; i++ ) {
        printf ( "[%d] = %c\n", i, nome[i] ); //<-o erro ta aqui... troque nome por nome[i]
    }
    
    printf ( "\nAs letras nas posições impares sao: \n" );
    
    while ( cont < tam ) {
        printf ( "[%d] = %c\n", cont, nome[cont] );
        cont = cont + 2;
    }
    
    printf ( "\n\n" );
    system ( "pause" );
    
}

 

Link para o comentário
Compartilhar em outros sites

10 minutos atrás, CiroboyBR disse:

@MatheusPJ Se o objetivo do programa é imprimir as posições ímpares da string, seu programa está correto. Faça o teste digitando "0123456789".

 

 

 Não porque tipo, quero imprimir os IMPARES ai quando coloco nomes ou letras esta imprimindo os numeros pares como por exemplo os que ficam na 2 e 4 posição entende ? coloquei um print pra tu entender um pouco melhor do que estou falando .

asd.jpg

8 minutos atrás, vangodp disse:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int main() {

    int cont = 1, tam, i;
    char nome[30];
    
    printf ( "Digite um nome: " );
    gets ( nome );
    tam = strlen ( nome );
    
    printf ( "\nLetras com suas posições:\n" );
    
    for ( i = 0; i < tam; i++ ) {
        printf ( "[%d] = %c\n", i, nome[i] ); //<-o erro ta aqui... troque nome por nome[i]
    }
    
    printf ( "\nAs letras nas posições impares sao: \n" );
    
    while ( cont < tam ) {
        printf ( "[%d] = %c\n", cont, nome[cont] );
        cont = cont + 2;
    }
    
    printf ( "\n\n" );
    system ( "pause" );
    
}

 

Tipo mesmo mudando vai continuar no mesmo jeito, porque apenas coloquei a variável " i " separa mais continua com o mesmo resultado, quero que imprima as letras na posição impares como por exemplo na Posição 1,3,5 etc. . . e no caso esta imprimindo as da posição 2,4,6 não sei porque =/

Gente descobri o ERRO !!!! é porque quando denominei  que minha variável começa com o valor de 0 e depois disso usei uma estrutura de incremento, ela vem ja somando 1 e no caso levando o programa  a ler o primeiro como 2 e o segundo como 3 e por ae vai, coloquei um espaço antes de começar a digitar e deu certo, obrigado ai pelo cover :)

Link para o comentário
Compartilhar em outros sites

@MatheusPJ Não confunda a posição da String com a posição da palavra.

Na string do C, a posição inicial é o 0, um char nome[3] tem três posições, char[0], char[1], char[2], logo a primeira posição é uma posição PAR, porque é 0. A segunda posição é IMPAR porque é 1.

 

Já na palavra, uma palavra se conta as posições iniciando no número 1, a palavra "abcde", o a = 1, b =2 ...

Eu vivo dizendo isso, entender o que uma questão quer é 50% da resolução do problema, os outros 50% é pensar em como resolver e programar...

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...