Ir ao conteúdo
  • Cadastre-se
MatheusPJ

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

Recommended Posts

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");

}

Compartilhar este post


Link para o post
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" );
    
}

 

Compartilhar este post


Link para o post
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 :)

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×