Ir ao conteúdo
  • Cadastre-se

Exercicio em c


Posts recomendados

Alguém pode me auxiliar em um exercício de C?

 

Faça um programa que contenha um menu com as seguintes opcões:

(a) Ler uma string S1 (tamanho maximo 20 caracteres);

(b) Imprimir o tamanho da string S1;

(c) Comparar a string S1 com uma nova string S2 fornecida pelo usuario e imprimir o  resultado da comparacão; 

(d) Concatenar a string S1 com uma nova string S2 e imprimir na tela o resultado da concatenacão;

(e) Imprimir a string S1 de forma reversa;

(f) Contar quantas vezes um dado caractere aparece na string S1. Esse caractere desse ser informado pelo usuario; ´

(g) Substituir a primeira ocorrencia do caractere C1 da string S1 pelo caractere C2. Os caracteres C1 e C2 serao lidos pelo usuário; 

(h) Verificar se uma string S2 e substring de S1. A string S2 deve ser informada pelo ´ usuario; ´

(i) Retornar uma substring da string S1. Para isso o usuario deve informar a partir de ´ qual posicão deve ser criada a substring e qual  e o tamanho da substring.

 

O meu problema é na letra F, meu codigo executa,porém depois que o usuario digita o carácter, o programa fecha. Eis o código:

 

OBS: op1 = Letra a, op2 = Letra B e assim por diante.

 

char s1[20], s2[20];

 

int op1(){
   printf("Opção 1: \n");
   printf("Entre com a str1:");
   setbuf(stdin, NULL);
   scanf("%s",s1);

}

 

int op2(){
   printf("\nOpção 2: ");
   int tamanho=0;
   tamanho = strlen(s1);
   printf("\nO tamanho da str1 é: %d",tamanho);
}

 

int op3(){
   printf("\n\nOpção 3: \n");
   setbuf(stdin, NULL);
   printf("Entre com a str2: ");
   scanf("%s",s2);

   if (strcmp(s1,s2) == 0) printf("Strings iguais!"); else printf("Strings diferentes!");

}

 

int op4(){
   printf("\n\nOpção 4: \n");
   strcat(s1,s2);
   printf("A concatenação das duas string fica: %s",s1);
}

 

int op5(){
   printf("\n\nOpção 5: \n");
   int i;
   printf("A string reversa é: ");
   for(i=20;i>-1;i--){
   printf("%c",s1);
}


}

int op6(){
   char carac[0];
   int i,vezes_carac=0;

   printf("\n\nOpção 6: \n");
   printf("Informar caracter a ser procurado na string: ");
   scanf("%s",carac[0]);
   for(i=0;i<20;i++){
   if (strcmp(s1,carac[0]) == 0) vezes_carac++;
   }

   printf("O caracter %s foi encontrado %i vezes",carac[0],vezes_carac);

}


int main(){

    op1();
    op2();
    op3();
    op4();
    op5();
    op6();


    return 0;
}

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Confuso!, não é apenas para fazer um menu? caso contrario, comentando:

Ainda bem que não sou seu professor jovem, por que isso aqui é falta de estudo das funções básicas e seus argumentos, mas acontece, segue o erro:
   for(i=0;i<20;i++){
   if (strcmp(s1,carac[0]) == 0) vezes_carac++;
   }

Você esta usando um comparad.... pera ae que?? carac[0] ???

Vamos começar do inicio da função:

char carac[0]; ???

mds... pera ae se não vamos ter um infarto, continuando:
scanf("%s",carac[0]); WTF???

nossa chama o samu, porque.... x|

 

Ok, brincadeiras a parte, 

1 Erro - você esta declarando um array de character nulo, sem character, ou seja bug na matrix.

          - o certo seria: char carac;     ou    char carac[1]; 

2 Erro - você esta utilizando o scanf de maneira errada, pois seu char já foi declarado com erro: char charac[0];

         - o certo seria: scanf("%c",&carac[0]);  ou scanf("%s",carac); só se você usou um vetor de caracteres, senão:

         - o certo seria: scanf("%c",&carac);
3 Erro - dentro do loop voce está utilizando a função strcmp de maneira incorreta, pois essa função so server para verificar se strings são iguais ou diferentes, para verificar caracteres voce deve utilizar do seguinte modo:

   for(i=0;i<20;i++){
   if (s1[i] == charac[0])  
         vezes_carac++;
   }

  você só usa o charac[0] se você utilizou um vetor de caracteres, caso declarou apenas 'char charac;', use assim:
 

   for(i=0;i<20;i++){
   if (s1[i] == charac)  
         vezes_carac++;
   }

 

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