Usuário com melhor resposta
Olá, estou tentando fazer um programa que conte todos os caracteres de um texto que o usuário inserir, porém está dando vários erros e não consigo achar

Pergunta
-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
class Program
{
static void Main(string[] texto)
{
Console.WriteLine("Escreva um texto:");
string a = Console.ReadLine();
int soma,consoantes,total,espacos,pontos = contavogais(a);
Console.ReadLine();
}
static int contavogais(string texto)
{
int soma = 0;
int consoantes = 0;
int total = 0;
int espacos = 0;
int pontos = 0;
for (int i = 0; i < texto.Length; i++)
{
char temp = texto.ElementAt(i);
if (temp == 'a')
soma++;
else if (temp == 'e')
soma++;
else if (temp == 'i')
soma++;
else if (temp == 'o')
soma++;
else if (temp == 'u')
soma++;
else if (temp == 'ú')
soma++;
else if (temp == 'á')
soma++;
else if (temp == 'í')
soma++;
else if (temp == 'é')
soma++;
else if (temp == 'ó')
soma++;
else if (temp == 'â')
soma++;
else if (temp == 'ô')
soma++;
else if (temp == 'û')
soma++;
else if (temp == 'î')
soma++;
else if (temp == 'à')
soma++;
else if (temp == 'ã')
soma++;
else if (temp == 'õ')
soma++;
else if(temp == 'A')
soma++;
else if (temp == 'E')
soma++;
else if (temp == 'I')
soma++;
else if (temp == 'O')
soma++;
else if (temp == 'U')
soma++;
else if (temp == 'Ú')
soma++;
else if (temp == 'Á')
soma++;
else if (temp == 'Í')
soma++;
else if (temp == 'É')
soma++;
else if (temp == 'Ó')
soma++;
else if (temp == 'Â')
soma++;
else if (temp == 'Ô')
soma++;
else if (temp == 'Û')
soma++;
else if (temp == 'Î')
soma++;
else if (temp == 'À')
soma++;
else if (temp == 'Ã')
soma++;
else if (temp == 'Õ')
soma++;
else if (temp == ' ')
espacos++;
else if (temp == " ")
espacos++;
else if (temp == 'b')
consoantes++;
else if (temp == 'c')
consoantes++;
else if (temp == 'd')
consoantes++;
else if (temp == 'f')
consoantes++;
else if (temp == 'g')
consoantes++;
else if (temp == 'h')
consoantes++;
else if (temp == 'j')
consoantes++;
else if (temp == 'k')
consoantes++;
else if (temp == 'l')
consoantes++;
else if (temp == 'm')
consoantes++;
else if (temp == 'n')
consoantes++;
else if (temp == 'p')
consoantes++;
else if (temp == 'q')
consoantes++;
else if (temp == 'r')
consoantes++;
else if (temp == 's')
consoantes++;
else if (temp == 't')
consoantes++;
else if (temp == 'v')
consoantes++;
else if (temp == 'w')
consoantes++;
else if (temp == 'x')
consoantes++;
else if (temp == 'y')
consoantes++;
else if (temp == 'z')
consoantes++;
else if (temp == 'B')
consoantes++;
else if (temp == 'C')
consoantes++;
else if (temp == 'D')
consoantes++;
else if (temp == 'F')
consoantes++;
else if (temp == 'G')
consoantes++;
else if (temp == 'H')
consoantes++;
else if (temp == 'J')
consoantes++;
else if (temp == 'K')
consoantes++;
else if (temp == 'L')
consoantes++;
else if (temp == 'M')
consoantes++;
else if (temp == 'N')
consoantes++;
else if (temp == 'P')
consoantes++;
else if (temp == 'Q')
consoantes++;
else if (temp == 'R')
consoantes++;
else if (temp == 'S')
consoantes++;
else if (temp == 'T')
consoantes++;
else if (temp == 'V')
consoantes++;
else if (temp == 'W')
consoantes++;
else if (temp == 'X')
consoantes++;
else if (temp == 'Y')
consoantes++;
else if (temp == 'Z')
consoantes++;
else if (temp == '?')
pontos++;
else if (temp == '!')
pontos++;
else if (temp == '.')
pontos++;
else if (temp == ',')
pontos++;
else if (temp == '\')
pontos++;
else if (temp == '@')
pontos++;
else if (temp == '|')
pontos++;
else if (temp == '>')
pontos++;
else if (temp == '"')
pontos++;
else if (temp == ''')
pontos++;
else if (temp == '+')
pontos++;
else if (temp == '-')
pontos++;
else if (temp == '_')
pontos++;
else if (temp == '#')
pontos++;
else if (temp == '$')
pontos++;
else if (temp == '%')
pontos++;
else if (temp == '(')
pontos++;
else if (temp == ')')
pontos++;
else if (temp == '¨')
pontos++;
else if (temp == '/')
pontos++;
else if (temp == ':')
pontos++;
else if (temp == ';')
pontos++;
else if (temp == '&')
pontos++;
else if (temp == '*')
pontos++;
else if (temp == '=')
pontos++;
else if (temp == '^')
pontos++;
else if (temp == '~')
pontos++;
else if (temp == '<')
pontos++;
else if (temp == '§')
pontos++;
else if (temp == '{')
pontos++;
else if (temp == '}')
pontos++;
else if (temp == '[')
pontos++;
else if (temp == ']')
pontos++;
else if (temp == 'ª')
pontos++;
else if (temp == '°')
pontos++;
}
Console.Write("O texto tem "+ soma);
Console.Write(" Vogais.");
Console.WriteLine(" ");
Console.Write("O texto tem " + consoantes);
Console.WriteLine(" Consoantes.");
Console.Write("O texto tem " + pontos);
Console.WriteLine(" Caracteres de pontuacao.");
Console.Write("O texto tem {0}", Convert.ToInt32(soma) + Convert.ToInt32(consoantes) + Convert.ToInt32(espacos) + Convert.ToInt32(pontos) + " Caracteres totais.");
return soma;
}
}
}
Respostas
-
Olá!
Segue uma ideia de como fazer:
using System; using System.Linq; using System.Globalization; public class Program { public static void Main() { // Parâmetros para verificação string[] vogais = {"a", "e", "i", "o", "u"}; string[] consoantes = {"b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z"}; // Entrada de texto do usuário var input = Console.ReadLine(); // Verificação e informação ao usuário Console.WriteLine(string.Format("O texto '{0}' contem {1} vogais e {2} consoantes!", input, RealizaContagem(input, vogais), RealizaContagem(input, consoantes))); } public static int RealizaContagem(string alvo, string[] parametro) { var contagem = 0; for(int i = 0; i < parametro.Length; i++) { // A contagem ignora acentos e não difere letras maiúsculas de minúsculas, nesse caso contagem += alvo.Count(letra => string.Compare(letra.ToString(), parametro[i], CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) == 0); } return contagem; } }
Para a pontuação bastaria criar um conjunto com os caracteres desejados, assim como fizemos para vogais e consoantes.
Att
Confira meus cursos na Udemy em https://www.udemy.com/user/wallace-andrade/
- Marcado como Resposta Willian352 segunda-feira, 14 de setembro de 2020 21:57
Todas as Respostas
-
Voce vai precisar fazer um for loop - nao um if/else.
Segue alguns exemplos, o conceito e o mesmo:
https://www.tutorialgateway.org/python-program-to-count-total-characters-in-a-string/
https://codescracker.com/c/program/c-program-count-characters-with-without-space.htm
-
Olá!
Segue uma ideia de como fazer:
using System; using System.Linq; using System.Globalization; public class Program { public static void Main() { // Parâmetros para verificação string[] vogais = {"a", "e", "i", "o", "u"}; string[] consoantes = {"b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z"}; // Entrada de texto do usuário var input = Console.ReadLine(); // Verificação e informação ao usuário Console.WriteLine(string.Format("O texto '{0}' contem {1} vogais e {2} consoantes!", input, RealizaContagem(input, vogais), RealizaContagem(input, consoantes))); } public static int RealizaContagem(string alvo, string[] parametro) { var contagem = 0; for(int i = 0; i < parametro.Length; i++) { // A contagem ignora acentos e não difere letras maiúsculas de minúsculas, nesse caso contagem += alvo.Count(letra => string.Compare(letra.ToString(), parametro[i], CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) == 0); } return contagem; } }
Para a pontuação bastaria criar um conjunto com os caracteres desejados, assim como fizemos para vogais e consoantes.
Att
Confira meus cursos na Udemy em https://www.udemy.com/user/wallace-andrade/
- Marcado como Resposta Willian352 segunda-feira, 14 de setembro de 2020 21:57
-
-
Exato! A estrutura if-else acaba sendo rígida e difícil de analisar. O loop facilita o trabalho, uma vez que a tarefa de comparação segue uma mesma lógica :D
Ah, se respondeu a sua thread marque a resposta, OK? Assim ajudamos mais e mais a nossa comunidade!
Sucesso!
Confira meus cursos na Udemy em https://www.udemy.com/user/wallace-andrade/
-
Pronto marquei! Estou tentando fazer a soma de todos os "input" para dar os caracteres totais dessa forma:
var total = RealizaContagem(input, vogais) + RealizaContagem(input, consoantes) + RealizaContagem(input, pontos);
Tentei também, colocando "RealizaContagem(input, vogais, consoantes, pontos); porém não funcionou também, estou tentando de outras formas.
-
-
-
using System;
using System.Linq;
using System.Globalization;
public class Program
{
public static void Main()
{
// Parâmetros para verificação
string[] vogais = {"a", "e", "i", "o", "u","&"};
string[] consoantes = {"b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z"};
string[] pontos = {"!","@","#","$","%","*","(",")","-","_","=","+","§","'","[","]","{","}",",","<",">",".",";",":","/","?"," "};
// Entrada de texto do usuário
var input = Console.ReadLine();
var valor1 = RealizaContagem(input, vogais);
var valor2 = RealizaContagem(input, consoantes);
var valor3 = RealizaContagem(input, pontos);
var total = valor1 + valor2 + valor3;
// Verificação e informação ao usuário
Console.WriteLine(string.Format("O texto contem {0} vogais, {1} consoantes, {2} pontos e derivados e contem {3} caracteres totais!", RealizaContagem(input, vogais), RealizaContagem(input, consoantes), RealizaContagem(input, pontos), total));
}
public static int RealizaContagem(string alvo, string[] parametro)
{
var contagem = 0;
for(int i = 0; i < parametro.Length; i++)
{
// A contagem ignora acentos e não difere letras maiúsculas de minúsculas, nesse caso
contagem += alvo.Count(letra => string.Compare(letra.ToString(), parametro[i], CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) == 0);
}
return contagem;
}
}