Ir ao conteúdo

Posts recomendados

Postado

Boa tarde 

Eu gostaria de saber como é que faz para verificar cada algarismo de um número ou cada letra de uma palavra usando c++,

por exemplo , num programa em que o usuário digita o nome dele e em seguida é mostrado na tela quantas letras tem , a quantidade de vezes que a letra aparece no nome, etc.

 

Agradeço a colaboração.

Postado

Zero, 

 

faça uma tentativa e posta aqui para ajudar e avaliar. Isso é importante. 

 

Comece estudando as funções (praticamente universais em qualquer linguagem) como length e substring.

 

Abs.

Postado

@zero maverickBoa questão, vou tentar fazer também! Mas um questionamento: importa se é apenas uma palavra ou uma frase ou um pequeno texto?

adicionado 11 minutos depois

Nem sei se estou indo pelo caminho certo mas estou usando string. Seria melhor ir por outro caminho, tipo vetor?

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string palavra;
    cout << "Digite a palavra: ";
    cin >> palavra;
    cout << "\n\n";

    cout << "O tamanho da palavra e " << palavra.length() << " letras." << endl;
    return 0;
}

 

Postado
#include<iostream>
#include<string.h>
using namespace std;
int main(){
    
    char nome[20]="farinha";
    int tamanho;
    tamanho = strlen(nome);
    
    
    cout<<"O seu nome possui :"<<tamanho<<" letras"<<"\n\n";
    
    system("PAUSE");
    
    return 0;


    

Santos container 

Eu consegui resolver metade do problema usando o comando strlen() da biblioteca string.h  , esse programa que eu fiz conta o número de caracteres da string.(o comando strlen() serve pra isso).

o problema agora é pegar o nome de fora( vindo do usuário), não estou conseguindo fazer isso,  espero que te ajude em algo.

 

 

 

  • Curtir 1
Postado

Certo. iostream é de c++ e no C você tem de usar #include <stdio.h>. Melhor escolher se quer fazer em C ou C++. Há algumas diferenças. Você usa codeblocks ou dev?

 

Eu não sei muito bem nenhuma das duas linguagens mas faz assim se for em C (acabei de testar assim e claro que falta ainda o trecho de fazer a contagem de quantas letras de cada tipo existe na palavra ou frase O_o):

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

//using namespace std;
int main(){

    char nome[250];
    int tamanho;
    tamanho = strlen(nome);


    printf("Digite uma palavra ou frase: ");
    gets (nome);
    printf("A palavra ou frase tem %u caracteres.\n", (unsigned)strlen(nome));

    system("PAUSE");
}

Em C++ é dor de cabeça haha. Estou tentando fazer o seguinte:

 

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string palavra;
    cout << "Digite a palavra: ";
    cin >> palavra;
    cout << "\n\n";

    cout << "O tamanho da palavra e " << palavra.length() << " letras.\n\n" << endl;

    int contador(string palavra)
    {
        int count = 0;
        for(int = 0; i < palavra.size(); i++)
            if(palavra[i] == '_') count++;
        return count;
    }

}

Ainda não está pronto, tem de ser corrigido meio mundo de coisas. Depois tento fazer novamente, mas vamos esperar até que uma boa alma :D apareça e ajude!!!

Postado

Eu estou estudando c++ e uso o dev c++.

consegui resolver o problema no meu código dá uma olhada :

#include<iostream>
#include<string.h>
using namespace std;

int main(){
	
	char nome[20];
	int tamanho;
	
	cout<<"Digite seu nome :"<<"\n";
	cin>>nome;

	tamanho = strlen(nome);
	
	
	cout<<"O seu nome possui :"<<tamanho<<" letras"<<"\n\n";
	
	system("PAUSE");
	
	return 0;

era só por o nome do vetor ali no comando de entrada cin, valeu pela ajuda (você me fez entender pra que serve o comando .length() ).

Agora vou tenta fazer ele mostrar quantas vezes aparece cada palavra.

 

Postado

segue minha solução:

Spoiler

#include <iostream>
#include <string>

class MyString
{
protected:
	std::string m_string;
public:
	MyString();
	MyString(const char* str);
	MyString(std::string& str);
	const char* c_str();
	unsigned int size();
	int find(char key, bool ignoreCase = false, unsigned int pStart = 0);
	unsigned int findAll(char key, bool ignoreCase = false);
};

MyString::MyString() {}

// Constructor para const char*;
MyString::MyString(const char * str)
{
	m_string = str;
}

// Constructor para std::string;
MyString::MyString(std::string& str)
{
	m_string = str;
}

// Converte a string em const char*;
const char * MyString::c_str()
{
	return m_string.c_str();
}

// Retorna o tamanho da string;
unsigned int MyString::size()
{
	return m_string.size();
}

// Procura na string a letra informada;
// Retorna a posição a letra na string,
// retorna -1 se a busca não teve resultados;
int MyString::find(char key, bool ignoreCase, unsigned int pStart)
{
	int count = 0;
	int _key;

	for (size_t i = pStart; i < m_string.size(); i++)
	{
		if (ignoreCase)
			_key = toupper(m_string[i]);
		else
			_key = m_string[i];

		if (_key == key)
			return i;
	}

	return -1;
}

// Procura na string a letra informada;
// Retorna a quantidade de letras encontradas;
unsigned int MyString::findAll(char key, bool ignoreCase)
{
	int count = 0;
	char _key;

	for (size_t i = 0; i < m_string.size(); i++)
	{
		if (ignoreCase)
			_key = toupper(m_string[i]);
		else
			_key = m_string[i];

		if (_key == key)
			count++;
	}

	return count;
}

// Operador de fluxo de saída para a classe;
// Retorna const char*;
std::ostream& operator<< (std::ostream& OS, MyString& string)
{
	OS << string.c_str();
	return OS;
}

int main(void)
{

	// Para Letras A-Z;
	MyString myString1 = "trazei tres pratos de trigo para tres tigres tristes comerem";

	std::cout << myString1 << "\nTamanho: " << myString1.size() << std::endl;

	// Loop A-Z
	for (int i = 0; i < 26; i++)
	{
		int count = myString1.findAll(0x41 + i, true);

		// Printa apenas as letras que constam na string;
		if(count != 0)
			std::cout << (char)(0x41 + i) << ": " << count << std::endl;
	}

	std::cout << "\n";

	// Para Números 0-9;
	MyString myString2;
	unsigned int number = -1;
	myString2 = std::to_string(number);

	std::cout << myString2 << "\nTamanho: " << myString2.size() << std::endl;

	// Loop 0-9
	for (int i = 0; i < 10; i++)
	{
		int count = myString2.findAll(0x30 + i);

		if (count != 0)
			std::cout << (char)(0x30 + i) << ": " << count << std::endl;
	}
	
	return 0;
}

 

 

também da pra fazer usando std::string::find().

Postado

Acredito que o contrário seria mais simples. Começa separando o dígito menos significativo do número e segue separando cada dígito até o mais significativo.

 

E para fazer isso basta usar o resto da divisão inteira (operador %) por 10 para obter o digito menos significativo, e em seguida a divisão inteira por 10 para eliminá-lo do número (e então o segundo menos significativo vira o menos significativo no que sobrou do número).

 

Assim:

 

9675832 % 10 = 2

9675832 / 10 = 967583

 

967583 % 10 = 3

967583 / 10 = 96758

 

96758 % 10 = 8

96758 / 10 = 9675

 

9675 % 10 = 5

9675 / 10 = 967

 

967 % 10 = 7

967 / 10 = 96

 

96 % 10 = 6

96 / 10 = 9

 

9 % 10 = 9

9 / 10 = 0

 

Assim você não precisa saber quantos dígitos o número tem, apenas repete o processo até a divisão inteira por 10 do que ainda sobrou do número ficar igual a zero (0).

 

Portanto, você só precisa fazer um ciclo (for ou while) que continua calculando o resto e a divisão do número por 10, enquanto o número for diferente de 0..

 

int numero = 9675832, num, digito;
cout << "\n\n";
for (num = numero; num != 0; num = num/10) {
    digito = num % 10;
    cout << digito << "\n";
}

 

Postado
Em 1.3.2017 às 16:52, zero maverick disse:

Boa tarde 

Eu gostaria de saber como é que faz para verificar cada algarismo de um número ou cada letra de uma palavra usando c++,

por exemplo , num programa em que o usuário digita o nome dele e em seguida é mostrado na tela quantas letras tem , a quantidade de vezes que a letra aparece no nome, etc.

 

Agradeço a colaboração.

@zero maverickPartindo do princípio, deu para fazer assim:

 

Código

 

#include <iostream>
#include <string>
using namespace std;

int main()
{
    char procurar = '\0';
    /*
    '\0' is the null termination character. It marks the end of the string. Without it, the computer has no way to
    know how long that group of characters goes. When you print/copy/whatever a string, it just keeps printing/copying chars
     until it finds that null char... that's when it knows to stop.
    */
    string palavra;
    int contador = 0;

    cout << "Digite uma palavra ou frase: ";
    getline(cin, palavra);
    //cin >> palavra; => se voce usar somente esse tipo de linha apenas a primeira palavra saira
    //por isso foi usado getline
    cout << "\n\n";

    cout << "O tamanho da palavra ou frase e " << palavra.length() << " letras.\n\n" << endl;

    cout << "Qual letra deve ser procurada?\n\n" << endl;
    cin >> procurar;
    cout << "\n\n";
    for(int i = 0; i < palavra.length(); i++)
    {
        if(palavra[i] == procurar)
        {
            contador++;
        }
    }
    cout << "A letra '" << procurar << "' aparece " << contador << " vezes.\n\n";

    cout << "Cambio final. Desligo :)" << endl;

}

 

E o resultado na tela:

 

output.jpg.2ad314752a95d52203fd17ef2bca57a5.jpg

 

Até mais e vamo que vamo, vai valer a pena!!! :D

Postado

Po to com uma duvida parecida nessa questao,

 

Faça um programa que entre com 8 nomes e imprima quantas letras tem cada nome

 

Alguem pode me ajudar???

 

 

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

int main()


{
    int x;
    char nome[20];
    
    printf("Digite um nome: ");
    scanf("%s", &nome);
    
    for(x= 0;x<8;x++)
    printf("O nome %c tem %c letras\n",nome,strlen(nome));
        
    
}

Postado

Amadeu Bogea  eu fiz esse programa pra tentar te ajudar mais foi em c++ , aqui vai o código :

#include<iostream>
#include<string.h>
using namespace std;

int main(){
	
	int quantidade,x = 1;
	char nome[50],tamanho;
	
	
	cout<<"Digite a quantidade de nomes :"<<"\n";
	cin>>quantidade;
	while(x<=quantidade){
		cout<<"Digite o "<<x<<" nome :"<<endl;
		cin>>nome;
		cout<<endl;
	    strlen(nome);
		
		cout<<"O nome "<<nome<<" possui "<<strlen(nome)<<" letras"<<"\n\n";
		x++;
	    
	}
	
	system("PAUSE");
	
	return 0;
	
	
}
	

Espero que seja útil.

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