Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

exercicio da faculdade em C

fala gente, estou com o seguinte problema na faculdade, preciso fazer este exercicio mas empaquei, nao sei mais oque tenho que fazer :/ , alguem pode me ajudar?

enunciado: Escreva uma função que recebe uma string de caracteres e uma letra e devolve um vetor de inteiros contendo as posições (índices no vetor da string) onde a letra foi encontrada) e um inteiro contendo o tamanho do vetor criado (total de letras iguais encontradas). Utilize o retorno de um vetor para retornar os índices e um ponteiro para guardar o tamanho do vetor.

oque eu fiz até agora:

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

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

char vetor(char *string, char *letra) {
    int *posicao,i, tamanho;

    tamanho = strlen(string);
    posicao = &string[0];

    for(i=1; i < tamanho;i++){
        if(*string == letra) {
            *posicao = i;
        }
    posicao++;
    string++;    
    }    
}


int main() {
    char string[100], letra;
    int posicao[100];

    printf("Digite uma frase: ");
    gets(string);

    printf("\nDigite uma letra: ");
    scanf("%c",&letra);

    vetor(string,letra);

}
3 respostas
solução!

Olá Luiz, eu resolvi esse problema sem usar strlen() e nem gets(). Segue meu código abaixo :

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

void vetor(char* string, int* posicoes, int* numDeLetras, char letra) {

    for(int i = 0; i < 100; i++) {
        if(string[i] == letra) {
            posicoes[*numDeLetras] = i;
            (*numDeLetras)++;
        }

        if(string[i] == '\n') {
            break;
        }
    }
}

int main() {

    char frase[100], letra;
    int posicoes[100], qnt = 0;

    printf("Digite uma frase: ");
    for(int i = 0; i < 100; i++) {
        scanf("%c", &frase[i]);

        if(frase[i] == '\n') {
            break;
        }
    }

    printf("Digite uma letra: ");
    scanf("%c", &letra);

    vetor(frase, posicoes, &qnt, letra);

    printf("Total de letras encontradas na frase: %d\n", qnt);
    printf("Posicao de cada letra na frase: ");
    for(int i = 0 ; i < qnt; i++) {
        printf("%d ", posicoes[i]);
    }
    printf("\n");
}

Eu criei uma variável chamada qnt para contar quantas vezes a letra desejada aparece na frase, e passei-a como referência para a nosso função "vetor". Lá eu apenas fiz o que você já fazia, porém com algumas alterações. Primeiro, a nossa variável "qnt" também serve para dizer qual o tamanho nosso vetor "posicoes" (mesmo que já tenha sido definida anteriormente). E, acrescentei mais um if para saber quando a frase termina, pois não faria sentindo continuar a procurar pela letra depois do final da frase. Voltando a função main, eu usei a nossa variável qnt no for para imprimir somente as posições em que a letra aparece na nossa frase.

Espero que tenha ficado claro, qualquer dúvida, por favor, pergunte =) .

cara muito obrigado pela solução! resolveu o problema :)

me desculpa ter demorado pra responder, mas é pq estou em semana de prova na faculdade, muita correria

De boa, fico feliz em ajudar =)