Ir ao conteúdo
  • Cadastre-se

C# Questão: função que recebe um parâmetro string e retorne outro, compactado


Posts recomendados

image.png.9e4bba0c375120d869c89b3d974317c6.png

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Questao02salu
{
    class Program
    {
        static void Main(string[] args)
        {
            contaLetra("Paralelepipedo");

        }

        public static string contaLetra(string palavra)
        {

     

            for (int i = 0; i < palavra.Length; i++)
            {
                
                Console.Write(palavra[i]);
                               
            }

            return " ";
        }
    }
}

 

Link para o comentário
Compartilhar em outros sites

@CrazyGladiator  No For da função use uma variável inteira para contar a quantidade de letras seguidas iguais.

 

Fazendo a comparação você pode ir concatenando a letra e o contador para formar a palavra compactada,

 

if(letra == palavra.Substring(i, 1)){
    conta++;
}else{
    if(conta==0) novaPalavra = novaPalavra + letra;
    if(conta>0){
        conta++;
        novaPalavra = novaPalavra + letra + conta;
    }
    conta = 0;
}
letra = palavra.Substring(i, 1);

 

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, Midori disse:

@CrazyGladiator  No For da função use uma variável inteira para contar a quantidade de letras iguais seguidas.

 

Fazendo a comparação você pode ir concatenando a letra e o contador para formar a palavra compactada,

 


if(letra == palavra.Substring(i, 1)){
    conta++;
}else{
    if(conta==0) novaPalavra = novaPalavra + letra;
    if(conta>0){
        conta++;
        novaPalavra = novaPalavra + letra + conta;
    }
    conta = 0;
}
letra = palavra.Substring(i, 1);

 

obrigado, mas eu não entendi, a variavel letra já seria uma com a extensão inteira?

adicionado 6 minutos depois
5 minutos atrás, CrazyGladiator disse:

obrigado, mas eu não entendi, a variavel letra já seria uma com a extensão inteira?

tipo, eu não entendi como encaixar as variáveis novas, como letra, novaPalavra e etc...

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Midori disse:

Apenas declare essas variáveis na função.

 

novaPalavra será o retorno da função (return novaPalavra).

 

 

image.png.d1330f6511d9e173ba6e6eb40d29dee4.png

  public static string contaLetra(string palavra)
        {


         string letra;
         string novaPalavra;
         int conta = 0;

            for (int i = 0; i < palavra.Length; i++)
            {



                if (letra == palavra.Substring(i, 1))
                {
                    conta++;
                }
                else
                {
                    if (conta == 0) novaPalavra = novaPalavra + letra;
                    if (conta > 0)
                    {
                        conta++;
                        novaPalavra = novaPalavra + letra + conta;
                    }
                    conta = 0;
                }
                letra = palavra.Substring(i, 1);

            }

            return novaPalavra;
        }

 

Link para o comentário
Compartilhar em outros sites

9 minutos atrás, Midori disse:

Antes de retornar o valor você vai ter que fazer mais uma verificação na variável conta para pegar a última letra

image.thumb.png.9ce1498a79b2b8d114588c64f88b4274.pngimage.png.6f897311cc24760252ec26f5601fb740.png

adicionado 0 minutos depois
agora, CrazyGladiator disse:

image.thumb.png.9ce1498a79b2b8d114588c64f88b4274.pngimage.png.6f897311cc24760252ec26f5601fb740.png

da isso quando eu tento executar, e sem atribuir a "letra" e "novapalavra" a alguma coisa, elas dão erro

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, Midori disse:

Inicie fazendo estas atribuições,


string novaPlalavra = "";
string letra = "";
int conta = 0;

 

class Program
    {
       

        static void Main(string[] args)
        {
            contaLetra("Paralelepipedo");

        }

        public static string contaLetra(string palavra)
        {


            string novaPalavra = "";
            string letra = "";
            int conta = 0;

            for (int i = 0; i < palavra.Length; i++)
            {



                if (letra == palavra.Substring(i, 1))
                {
                    conta++;
                }
                else
                {
                    if (conta == 0) novaPalavra = novaPalavra + letra;
                    if (conta > 0)
                    {
                        conta++;
                        novaPalavra = novaPalavra + letra + conta;
                    }
                    conta = 0;
                }
                letra = palavra.Substring(i, 1);

                conta = conta;

            }


            return novaPalavra;
        }
    }

Continua na tela quando roda o programa nada, ai ta o codigo se quiser testar, eu não fiz nenhuma alteração fora o que você me passou

Link para o comentário
Compartilhar em outros sites

agora, Midori disse:

 

Com essas alterações eu consegui rodar sem erro...

 

Posta o seu código completo.

 

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
       

        static void Main(string[] args)
        {
            Console.WriteLine();
            contaLetra("Paralelepipedo");

        }

        public static string contaLetra(string palavra)
        {


            string novaPalavra = "";
            string letra = "";
            int conta = 0;

            for (int i = 0; i < palavra.Length; i++)
            {



                if (letra == palavra.Substring(i, 1))
                {
                    conta++;
                }
                else
                {
                    if (conta == 0) novaPalavra = novaPalavra + letra;
                    if (conta > 0)
                    {
                        conta++;
                        novaPalavra = novaPalavra + letra + conta;
                    }
                    conta = 0;
                }
                letra = palavra.Substring(i, 1);

                

            }


            return novaPalavra;
        }
    }
}

Desculpa estar dando trabalho, agradeço um bilhão% desde já.

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, Midori disse:

@CrazyGladiator Coloque este bloco antes do retrun da função (fora do loop) para pegar a última letra,

 


if(conta==0) novaPlalavra = novaPlalavra + letra;
if(conta>0){
    conta++;
    novaPlalavra = novaPlalavra + letra + conta;
}

 

Funciono!!! Eu estava aqui martelando e entendi o que teria que ter feito eu, peço um muito obrigado, sei que foi difícil ajudar minha situação. Mais uma vez muito obrigado.

Link para o comentário
Compartilhar em outros sites

agora, itz disse:

@CrazyGladiator voce poderia compartilhar o codigo ai?

aqui

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            int cont = 0;
            int[] num = new int[10];

            while (num[cont] >= 1)
            {

                num[cont] = int.Parse(Console.ReadLine());
                cont = cont + 1;
                if (num[cont] == 0)
                {
                    break;
                }
            }


        }


    }
}

Desculpa a bagunça nele é porque eu fiz coisas nele testando ai voltei para quando você me ajudo na hora.

adicionado 1 minuto depois
1 minuto atrás, CrazyGladiator disse:

aqui


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            int cont = 0;
            int[] num = new int[10];

            while (num[cont] >= 1)
            {

                num[cont] = int.Parse(Console.ReadLine());
                cont = cont + 1;
                if (num[cont] == 0)
                {
                    break;
                }
            }


        }


    }
}

Desculpa a bagunça nele é porque eu fiz coisas nele testando ai voltei para quando você me ajudo na hora.

opa

pera mandei o errado

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Questao02
{
    class Program
    {


        static void Main(string[] args)
        {
            Console.WriteLine(contaLetra("kkkkllnnn"));
        }

        public static string contaLetra(string palavra)
        {


            string novaPalavra = "";
            string letra = "";
            int conta = 0;

            for (int i = 0; i < palavra.Length; i++)
            {



                if (letra == palavra.Substring(i, 1))
                {
                    conta++;
                }
                else
                {
                    if (conta == 0) novaPalavra = novaPalavra + letra;
                    if (conta > 0)
                    {
                        conta++;
                        novaPalavra = novaPalavra + letra + conta;
                    }
                    conta = 0;
                }
                letra = palavra.Substring(i, 1);



            }

            if (conta == 0) novaPalavra = novaPalavra + letra;
            if (conta > 0)
            {
                conta++;
                novaPalavra = novaPalavra + letra + conta;
            }


            return novaPalavra;
        }
    }
}

aqui

Link para o comentário
Compartilhar em outros sites

agora, itz disse:

@CrazyGladiator nao to conseguindo rodar esse codigo, parece de outra questao kkkkkk

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Questao02
{
    class Program
    {


        static void Main(string[] args)
        {
            Console.WriteLine(contaLetra("kkkkllnnn"));
        }

        public static string contaLetra(string palavra)
        {


            string novaPalavra = "";
            string letra = "";
            int conta = 0;

            for (int i = 0; i < palavra.Length; i++)
            {



                if (letra == palavra.Substring(i, 1))
                {
                    conta++;
                }
                else
                {
                    if (conta == 0) novaPalavra = novaPalavra + letra;
                    if (conta > 0)
                    {
                        conta++;
                        novaPalavra = novaPalavra + letra + conta;
                    }
                    conta = 0;
                }
                letra = palavra.Substring(i, 1);



            }

            if (conta == 0) novaPalavra = novaPalavra + letra;
            if (conta > 0)
            {
                conta++;
                novaPalavra = novaPalavra + letra + conta;
            }


            return novaPalavra;
        }
    }
}

aqui

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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