Strings e Moda

Um programinha em c que fiz para estudar a manipulação de string e moda

 

 

// Eduardo Bertin
// http:\\www.eduardobertin.com.br
// Contador de Strings: Iniciando com o basico.
// 1- fase: Fazer User interface. (pronto)
// 2- fase: implementar contagem de letras. (pronto)
// 3- fase: implementar contagem de palavras. (pronto)
// 4- fase: implementar moda exibindo qual do char mais exibido. (pronto)
// 5- fase: implementar moda com estastistica em ordem alfabeticas utilizando um array dentro de struct. (pronto)
// 6- fase: implementar moda com estastistica em ordem de vezes.(implementando)
// 7- fase: Criar painel com informações de menor e maior numero de vezes por letra e palvras.(implementando)
//----------------------------------------------------------------------------------------------------------------
// Versão Beta
// Estudos sobre Strings e Moda
//----------------------------------------------------------------------------------------------------------------
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
#include "stdio.h"


// Definindo funções

void interf();
void contadorLetra();
void contadorPalavra();
void modaLetras();
void modaStat();


// Variaveis globais
char texto[200];


// Moda entre letras com estatistica
// Irá exibir quais letras foram usadas no texto e quantas vezes ela
// foi repetida. eu usei 256 para poder conver int em char e char em int
// ou seja na posição que eu guardar as vezes essa posicao convertida em
// em char será a própria letra, evitando o uso de 2 array.
void modaStat(){

	struct letras{
		int vezes[256];   // 256 posições
	} letr;

	int modaCont = 0, modaRef= 0;
	char rtn;
	
	system("cls");
	fflush(stdin);

	for(int i = 0;i<256;i++)
	{
		letr.vezes[i] = 0;  // zerando todas posições
	}

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);


	for (int i=0;i<strlen(texto);i++)
	{
		
		for(int j=0;j<strlen(texto); j++)
		{

				if(texto[i] == texto[j]){
					modaCont++;
		     }
		}
		
		letr.vezes[(int)texto[i]] = modaCont;   // Ficará letr.vezes[numerodaletraemascii] = modaCont
		modaCont = 0;
		
	}
	printf("\n");
	printf("-----------------------------------------------------\n");

	for (int i = 0;i<256; i++){
		
		if(letr.vezes[i] != 0){
		printf("Letra \"%c\" , %d vezes.\n", (char)i, letr.vezes[i]);  // Ficará Letra convertida pelo char i e a posicao de i.
		}
	}
	printf("-----------------------------------------------------\n");
	printf("\n(Deseja denovo ? s/n)");
	gets(&rtn);
	
	switch (rtn){

	case 's':
		modaStat();
	case 'S':
		modaStat();
	default:
	    interf();
		
	}
}


// Moda entre as letras
// Moda e qual letra mais se repetiu no texto
// São dois for com um contador, lembrando que essa função ainda
// não funciona empate, provavelmente ficará o ultimo como maior
void modaLetras()
{
	int modaCont = 0, modaRef= 0;
	char modaLetra[20] = "";
	char rtn;
	
	system("cls");
	fflush(stdin);

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);


	for (int i=0;i<strlen(texto);i++)             // Para pegar todas as strings
	{
		
		for(int j=0;j<strlen(texto); j++)         // Para comparar todas as strings
		{
			if(texto[i] == texto[j]){             // Se ambos for igual guarda o numero
					modaCont++;
		     }
		}
		
		if(modaCont > modaRef){
		modaRef = modaCont;	                      // Se for a maior guarda ou vai para outra
		modaLetra[0] = texto[i];

		}
		modaCont = 0;
		
	}
	printf("\n");
	printf("-----------------------------------------------------\n");
	printf("Repetiu %d vezes a letra \"%c\".(Deseja denovo ? s/n)", modaRef, modaLetra[0]);
	gets(&rtn);
	
	switch (rtn){

	case 's':
		modaLetras();
	case 'S':
		modaLetras();
	default:
	    interf();
		
	}

}

// Contador de palavras
// Essa função procura todos os espaços se supõe quantas palavras são.
// No final incremento a contaPalavra para ficar o mais realistico.
void contadorPalavra(){

	int contaPalavra = 0;
	char rtn;
	system("cls");
	fflush(stdin);

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);
	
	for (int i=0;i<strlen(texto);i++)
	{
		if(texto[i] == ' '){      // a cada espaço, incrementa a variável
			contaPalavra++;		 
		}

	}
	
	contaPalavra++; // faz mais um incremento para a palavra do final.
	
	printf("\n");
	printf("-----------------------------------------------------\n");
	printf("Seu texto possui %d palavras. (Deseja denovo ? s/n)", contaPalavra);
	gets(&rtn);
	
	switch (rtn){  // switch para voltar
	case 's':
		contadorPalavra();
	case 'S':
		contadorPalavra();
	default:
	    interf();
		
	}
}

// Contador de Letra 
// Função que le todos os caracteres digitados, retira os espaços
// e conta quantas letras tem
void contadorLetra(){

	int contaLetra = 0;
	char rtn;
	system("cls");
	fflush(stdin);

	printf("-----------------------------------------------------\n");
	printf("Digite o texto de no maximo 200 letras:\n(Enter para terminar)\n");
	gets(&texto[0]);
	
	for (int i=0;i<strlen(texto);i++)
	{
		if(texto[i] != ' '){   // Para não contar os espaços
			contaLetra++;
		}
	}
	
	printf("\n");
	printf("-----------------------------------------------------\n");
	printf("Seu texto possui %d letras. (Deseja denovo ? s/n)", contaLetra);
	gets(&rtn);
	
	switch (rtn){  // switch para voltar

	case 's':
		contadorLetra();
	case 'S':
		contadorLetra();
	default:
	    interf();
		
	}

}

// interf - User interface do programa
void interf()
{
		int opc = 0;
		system("cls");
		fflush(stdin);

		// Interface
		printf("-----------------------------------------------------\n");
		printf("-                                                   -\n");
		printf("-                                                   -\n");
		printf("-  1- Contador de Letra                             -\n");
		printf("-  2- Contador de Palavras                          -\n");
		printf("-  3- Moda Entre as Letras                          -\n");
		printf("-  4- Moda com estatistica                          -\n");
		printf("-                                                   -\n");
		printf("-                                                   -\n");
		printf("------------------------------------by edubertin-----\n");
		printf("Selecione a opcao desejada:");
		scanf("%d", &opc);

		// Switch para chamar as funções
		switch(opc){

		case 1:
			contadorLetra();
			break;
		case 2:
			contadorPalavra();
			break;
		case 3:
			modaLetras();
			break;
		case 4:
			modaStat();
		default:
			interf();
		}
}

// Main - inicialização do programa
int main()
{
		system("cls");
		fflush(stdin);
		interf();  // chama interface
		return 0;
}

// Eduardo Bertin - www.eduardobertin.com.br

Deixe um comentário