Ola galera, estou aprendendo sobre strings e preciso fazer um algoritmo que receba um nome por exemplo e um caractere, e verifique quantos deste caractere existe no nome fornecido, porem ele me retorna um valor incorreto, se alguém puder me dar umas dicas, agradeço! main(){ char nome[50], c[1]; int i, q; printf("Informe um nome: "); gets(nome); fflush(stdin); printf("\nInforme uma letra: "); gets(c); for(i=0;i<strlen(nome);i++){ if(nome[i]==c[1]){ q+=1; } } printf("A letra %c se repete: %i", c, q); }
Quando trabalhando com strings em C, lembre-se de que um array começa com o índice 0 e no caso c[1] não está pegando o caracter em si. 1 - Declaração de variáveis: char nome[50], c; 2 - printf("\nInforme uma letra: "); 3 - if(nome[i] == c){ Algumas dicas importantes: 2 curtidas
Valeu cara, não sabia disso, quando fiz a comparação minha intenção de por c[1] era de informar o tamanho, n tinha me tocado que ele iria comparar o indice 1, e não sabia que apenas com uma letra não precisava declarar o tamanho e que pra receber precisava ser o getchar(). 1 curtida
#include <stdio.h> main(){ char nome[50], c; printf(“Informe um nome: “); gets(nome); fflush(stdin); printf(”\nInforme uma letra: “); scanf(”%c”,&c); for(i=0;i<strlen(nome);i++){ if(nome[i]==c){ q+=1; } } printf(“A letra %c se repete: %i”, c, q); } Primeiramente, boa noite a todos. O problema é o seguinte: Eu tenho um vetor char chamado alfa, e o outro vetor, chamado mensagem. O vetor alfa contém as 26 letras do alfabeto, e o vetor mensagem, contém algo digitado pelo usuário, com um máximo de até 1000 caractéres. Eu preciso fazer com que, cada caractére da variável mensagem, seja comparada à cada caractére da variável alfa, e que, quando for verdadeiro (ou seja, quando forem iguais ambos os caractéres), a posição desse caractére (já que é um vetor) na variável alfa, seja jogado em outro vetor, por exemplo, um vetor do tipo char, chamado novamensagem. Por exemplo. Tendo uma mensagem "abcde", e meu alfa sendo "abcdefghijklmnopqrstuvwxyz". Ao comparar mensagem[0] com alfa[0], ambos serão "a", então, como "a" ocupa a 1ª posição no vetor, a 1ª posição do vetor novamensagem[0], deverá ter o valor 1, em seguida, ele irá comparar, mensagem[0] com alfa[1],alfa[2], e assim por diante, mas como não serão mais iguais, não retornará mais nenhum valor. E assim por diante, até alfa[4], que será a letra "e", que nesse caso, terá que retornar o valor 5, que é a posição da letra"e" no vetor alfa.. Agradeço desde já por qualquer ajuda. Segue abaixo meu código. Só preciso implementar esta função. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> int main (void) { /*declaração de variáveis do tipo char*/ char alfa[27]; char mensagem[1000]; int novamensagem[1000]; int cont = 0; int j = 0; /*atribuição de ponteiro do tipo file, para o arquivo crip.txt, no modo escrita "write"*/ FILE *file; file = fopen("C:/Users/Denis/Desktop/Crip.txt", "w"); printf("Digite sua mensagem:\n"); /*lê mensagem digitada por usuario, e atribui à variável mensagem*/ scanf("%[A-Z a-z0-9]", &mensagem); /*Conta o número de caractéres do vetor mensagem*/ while (mensagem[cont] != NULL) { cont++; } /*atribuição de ponteiro do tipo file, para o arquivo alfa.txt, no modo leitura "read"*/ FILE *abcd; abcd = fopen("C:/Users/Denis/Desktop/alfa.txt", "r"); /*lê conteúdo do arquivo alfa, até o caractere ser nulo, e joga na variável alfa*/ while (fgets(alfa, 27, abcd) != NULL) for (int abc = 0; abc < 27; abc++) { for (int i = 0; i <= cont; i++) { if (mensagem[i].Equals(alfa[abc])) { novamensagem[j] = abc; j++; } else { j = j; } } } fprintf(file, "%d", novamensagem); fclose(file); fclose(abcd); printf("Sua mensagem foi salva com sucesso."); getch(); return 0; }
Recebemos quase dois arquivos idênticos. Mas alguns caracteres estão corrompidos. Precisamos encontrar o número da linha e sua posição onde as letras corrompidas existem, bem como o número total de letras corrompidas (erro). Exemplos: Input : file1.txt contains it is fun file2.txt contains it is run Output : Line Number : 2 Error Position : 1 Total Errors : 1Pré-requisito: getc() em C Passos: 1.> Abra dois arquivos usando o indicador de arquivo no modo somente leitura. 2.> Buscar dados do arquivo em duas variáveis char, um por um, até o final do arquivo. 3.> Se a variável encontrar uma nova linha, aumente o número da linha e redefina a posição para zero. 4.> Se as variáveis não forem iguais, aumente o número do erro e imprima a linha do erro, bem como o índice do erro. Your browser isn’t supported anymore. Update it to get the best YouTube experience and our latest features. Learn more
Comparar o tamanho de strings é uma função comum na programação da linguagem C, pois ela permite verificar qual delas contém mais caracteres. Tal recurso é muito útil para ordenar dados. Comparar strings requer uma função especial; não use != ou ==.
|