Ir ao conteúdo

Posts recomendados

Postado

Sou Novo no Fórum e preciso da seguinte ajuda, tenho um trabalho para fazer sobre manipulação de strings

Tenho uma cadeia de Strings nome[10] e preciso acessar uma sub cadeia dessa string para identificar o inicio e o tamanho dessa sub cadeia tenho duas variáveis inteiras int A2,A3, onde A2 recebe o inicio da sub cadeia e o A3 o ultimo carácter dessa sub cadeia.

ex: nome[10] = 'Alexandre'
A2 =3
A3 =6

então temos 'xand' agora o que preciso e guardar essa sub cadeia em uma variável e ler na tela pois depois num passo mais adiante preciso comparar e ver se a sub cadeia pertence a cadeia nome;

Postado

@Xandrules Você só precisa percorrer o vetor de char (chamado de string) com um FOR, você vai iniciar o contador em A2 e sair do FOR quando o contador for maior que A3.

 

Dentro do FOR, você vai copiando o vetor[contador], para sua nova string(vetor de char). Quando terminar, você adiciona um '\0', após o ultimo caractere. Pronto, sua sub-string estará pronta.

Vale a pena ver isso: http://www.ime.usp.br/~pf/estruturas-de-dados/aulas/substring-search.html

Postado

da uma olhada 

Citação

@CiroboyBR

#include <stdio.h>
#include <string.h>

#define N 10

int main ()
{
    
    char nome[20],sub[30],temp[30];
    int i,A2,A3,t;
    
    //strcpy(sub,"");
    //strcpy(temp,"");
    
    printf("DIGITE UM NOME     \n");
    printf("===>>");
    fflush(stdin);
    scanf("%s",&nome);
    printf("\n\n%s",nome);
    
    //BUSCAR UMA PARTE DO NOME SUB CADEIA
    printf("\nDIGITE O INICIO DA SUB CADEIA\n");
    scanf("%i",&A2);
    printf("\nDIGITE O FIM DA SUB CADEIA\n");
    scanf("%i",&A3);    
    
    for (i = A2; i <= A3; i++)
    {
        //printf("%c",nome);
        sub = nome;
            
    }
    for(i = A2;i <= A3;i++)
    {
        printf("%c",sub);
    }
    
    printf("\nA SUB CADEIA E %s",sub);
    
    t = strlen(sub);
    printf("\n%i",t);    
    return 0;
}

 

Postado

@Xandrules Vou te dar um empurrão, vou te passar uma correção, só falta controlar o tamanho da string SUB e finalizar ela com '\0'

 

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

#define N 10

int main ()
{

    char nome[20],sub[30],temp[30];
    int i,A2,A3,t, tamanho_string = 0;

    printf("DIGITE UM NOME     \n");
    printf("===>>");
    fflush(stdin);
    scanf("%s",&nome);
    printf("\n\n%s",nome);

    //BUSCAR UMA PARTE DO NOME SUB CADEIA
    printf("\nDIGITE O INICIO DA SUB CADEIA\n");
    scanf("%i",&A2);
    printf("\nDIGITE O FIM DA SUB CADEIA\n");
    scanf("%i",&A3);

    for (i = A2; i <= A3; i++)
    {
        sub[tamanho_string] = nome[i]; //adiciona a substring, perceba que você tem que usar uma variavel int para controlar em que posição do vetor SUB[posicao] o caractere NOME[i] vai ser inserido.
    }
  //Após preencher a o "VETOR!!! strings em C são vetores!!!" SUB[], você terá que finaliza-lo com um '\0';
    
    printf("\nA SUB CADEIA E %s",sub);

    return 0;
}

 

Postado

@CiroboyBR da uma olhada

#include <stdio.h>
 
int main() 
{
   char string[20], sub[20];
   int pos, tam, c_tam = 0;
 
   printf("Entre com a string\n");
   gets(string);
 
   printf("Entre com a posicao e o tamanho da substring\n");
   scanf("%i %i", &pos, &tam);
   
   while (c_tam < tam)
    {    
      sub[c_tam] = string[pos + c_tam -1];     
      c_tam++;      
    }
    
   sub[c_tam] = '\0';
   strupr(sub);     
   printf("A substring e \"%s\"\n", sub);
 
   return 0;
}
 

 

  • Curtir 1
Postado

@Xandrules É isso ai. Eu tinha feito usando o 0 como a posição inicial, já que a questão não explica que o 1 é a primeira posição:

#include <stdio.h>

int main() {
  char nome[20], sub[30], temp[30];
  int i, A2, A3, t, tamanho_string = 0;

  printf( "DIGITE UM NOME: " );
  fflush( stdin );
  scanf( "%s", &nome );

  printf( "\nDIGITE O INICIO DA SUB CADEIA\n" );
  scanf( "%i", &A2 );
  printf( "\nDIGITE O FIM DA SUB CADEIA\n" );
  scanf( "%i", &A3 );

  for ( i = A2; i <= A3; i++ ) {
    sub[tamanho_string] = nome[i]; //adiciona a substring
    tamanho_string++; // adiciona +1 ao tamanho da string
  }

  sub[tamanho_string] = '\0'; //finaliza a string com o EOF de strings
  printf( "\nA SUB CADEIA E %s", sub );

  return 0;
}

 

Postado

@CiroboyBR Muito obrigado pela ajuda foi muito util

agora to com outro problema tenho que digitar a sub cadeia e comparar se pertence a cadeia e retornar a posicao de inicio e o tamanho ou seja o contrario que foi feito kkkkk

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!