|
![]() |
||
Iniciando em C++
|
||
. Nós temos 754.116 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Ubbergeek
|
Pessoal aproveitando que o Leandrosri tá precisando fazer a tarefa da escola e veio "pedir ajuda" aqui (aqui ó http://www.hardware.com.br/comunidade/programa-abreviatura/322802/), resolvi usar os exercicios dele para me inciar em C++.
Possuo um conhecimento superficial de C, só o suficiente para me virar com a lógica de programas desse tipo, depis vou me aprimorando. Aqui estão os exercicios do Leandrosri, feitos em uma mistura de C e C++. Se alguém puder me ajudar a transformar em 100% C++ eu agradeço. 1.Faça um programa que dado um nome completo, informe a abreviatura deste nome. Não se devem abreviar as preposições como: do, de, etc. A abreviatura deve vir separada por pontos. Ex: Paulo Jose de Alma Prado. Abreviatura: P.J.A.P. Ps.: Não fiz o primeiro de preguiça mesmo, e pressa para iniciar o tópico aqui... 2.Faça um programa que dado 2 palavras, determine: a.Se as palavras são iguais; b.Caso as palavras sejam diferentes, qual delas tem maior comprimento . Código:
(cuidado com a leitura!). Depois conte o número de espaços em branco na frase, outra para contar o número de vogais, e outra para contar o número de consoantes. Código:
Depois mostre cada um dos vetores. Código:
do usuário e mostre o conteúdo desta string de forma invertida. Código:
6.Faça um programa que receba uma string do usuário (máx. 20 caracteres) e um caracter qualquer. O programa deve remover todas as ocorrências do caracter da string e mostrar o resultado. Código:
aleatória e ordene essa lista em ordem alfabética. Código:
imprima a frase sem os espaços em branco. Imprimir também a quantidade de espaços em branco. Código:
9.Escreva um programa que leia do teclado uma senha alfanumérica, utilize a função strcmp() para compará-la com uma senha definida internamente no programa e retorne ao usuário a validade ou não da senha fornecida por ele, em função do resultado da comparação. Código:
10.Escreva um programa que leia uma palavra e verifique se ela é um palíndromo. Palíndromo é a palavra cuja leitura é a mesma , quer se faça da direita para a esquerda, quer da esquerda para a direita. Exemplo : Ovo, anilina, "O TEU DRAMA". Inverso: "AMAR DUETO". Código:
__________________
Casa:MS Windows Seven (empolgando) Trampo: MS Windows Seven (desapontando) Quer um Fórum exclusivamente sobre Open Source? Aqui: www.linuxbsd.com.br/forum |
|
|
|
|
|
#2 (permalink) |
|
Veterano
Registrado em: Jun 2006
Mensagens: 1.179
Reputação: 13
![]() |
jcferranti...
Vou passar esse exemplo para vc poder analizar como vc pode fazer uma estrutura ficar otimizada, usar menos memória e mebos processamento. Código:
|
|
|
|
|
|
#3 (permalink) |
|
Ubbergeek
|
Legal! Realmente não tinha pensado nisso, se não é vogal é consoante, então não preciso de um for para contar as consoantes....
con relação a passar isso para mais C++ possível. Nesse exemplo usamos o caso clássico do C em que uma string na verdade é um array de char. Em C++ seria possivel fazer esse mesmo exemplo usando a clase string? Ficaria melhor, pior ou dá na mesma?
__________________
Casa:MS Windows Seven (empolgando) Trampo: MS Windows Seven (desapontando) Quer um Fórum exclusivamente sobre Open Source? Aqui: www.linuxbsd.com.br/forum |
|
|
|
|
|
#4 (permalink) |
|
Novo Membro
Registrado em: Dec 2005
Mensagens: 129
Reputação: 13
![]() |
Não kerendo ser chato mas se o usuario digitar numeros o programa do FabianoTraple ira falar que os numeros são consoantes....
Ex: Eu mora na rua Guia do hardware numero 888 |
|
|
|
|
|
#5 (permalink) |
|
Veterano
Registrado em: Jun 2006
Mensagens: 1.179
Reputação: 13
![]() |
RportM...
Boa ! só que esse exemplo é apenas educacional... jcferranti ... Tem como usar a classe string sim, porém acho muito mais fácil o usuário entender o conceito de string usando char[] no início, assim que eu tiver um tempinho eu mando ele feito com a classe string. INFO - Programas utilizando a classe string geram um código de executável maior e ocupam um espaço maior de memória, essa diferença em determinados programas não tem importância, porém, um código que exige o uso restrito da memória como o kernel do linux faz uma grande diferença. :mrgreen: |
|
|
|
|
|
#6 (permalink) |
|
Newbie
Registrado em: Sep 2006
Mensagens: 16
Reputação: 0
![]() |
Não li com a devida atenção cada um dos programas, mas vi algumas coisas que merecem alguns comentários para otimizar o desempenho dos programas...
- Evite ao máximo a utilização de variáveis globais. Não sei se em C++ continua assim, mas em ANSI C uma variável global NUNCA é armazenada em registradores, enquanto que as variáveis locais mais utilizadas sim, melhorando o tempo de acesso a essas variáveis. Portanto evite declarar contadores como variáveis globais. - Evite utilizar funções em comparações de laço, como o "Letra < strlen(frase)", a menos que o parâmetro da função seja alterado durante o laço. Com isso vc evita que a cada comparação do laço essa função seja executada, gerando processamento desnecessário visto que a saída será a mesma. Utilize uma variável para armazenar o valor de retorno da função e utilize-a para as comparações: Código:
|
|
|
|
|
|
#7 (permalink) | ||
|
Ubbergeek
|
Citação:
Citação:
Zet0 Obrigado pelas dicas. Geralmente eu procuro sim otimizar meus programas, mas como esses foram passados por outro usuário ao forum, eu apenas me preocupei em fazer com que eles funcionassem para poder criar esse tópico e discutir justamente questões como essa.
__________________
Casa:MS Windows Seven (empolgando) Trampo: MS Windows Seven (desapontando) Quer um Fórum exclusivamente sobre Open Source? Aqui: www.linuxbsd.com.br/forum |
||
|
|
|
|
|
#8 (permalink) |
|
Veterano
Registrado em: Jun 2006
Mensagens: 1.179
Reputação: 13
![]() |
jcferranti...
O uso do string ou do char[], depende da aplicação do programa... Vc sabia que o windows XP é todo desenvolvido utilizando C++, por isso ele necessita de tanto processamento, memória e contém muito mais bugs e é muito mais instável que o windows 98 que é escrito e C por exemplo ! A plataforma NT é toda baseada na estrutura do C++. O kernel do linux é todo escrito em C, veja a diferença de estabiblidade e velocidade ! :mrgreen: |
|
|
|
|
|
#9 (permalink) | ||
|
Ubbergeek
|
Citação:
Citação:
Isso eu já sabia, mas é uma comparação que pode levar e interpretações errôneas. P.Ex.: O Gnome e a biblioteca GTK, pelo que sei, são contruídos em C, enquanto o KDE e a QT são construídos em C++. O compilador gc é famoso pela sua portabilidade e de gerar código em C, extremamente enxuto. Já G++ é um bom compilador, mas o desenpenho dos programs em C++ deixa a desejar em comparação com os de C. No entanto, em suas atuais encarnações, tanto o Gnome quanto o KDE são sistemas pesados para máquinas menos potentes, porém ambos com excepcional estabilidade. Isso leva a crer que se houvesse um compilador C++, mais eficiente para o KDE/QT, seu desempenho seria muito melhor. Sabe, não é demérito da linguagem os bugs ou defeitos de cada programa, mas sim unicamente de seu programador, que escolheu a linguagem, o compilador e a fez o programa.
__________________
Casa:MS Windows Seven (empolgando) Trampo: MS Windows Seven (desapontando) Quer um Fórum exclusivamente sobre Open Source? Aqui: www.linuxbsd.com.br/forum |
||
|
|
|
|
|
#10 (permalink) |
|
Veterano
Registrado em: Jun 2006
Mensagens: 1.179
Reputação: 13
![]() |
jcferranti...
Concordo plenamente... C++ não possui bugs e nem erro, sim os programas feito nele, pq ? Veja que a forma com que é feita a estruturação do orientado a objetos leva os programadores a gerar vários erros de estruturação e sequência. Não vi até hoje nada que não possa ser feito em C++ que não possa ser feito em C, foi ai que dicidi fazer todos os sistemas de minha empresa em C, acho que foi a melhor decisão que tomei até hj relacionado a estruturação ! O código fonte está qse pronto e tem a metade do tamanho, e depois de testado e corrigido os bugs, a estabilidade fica 100% ! Note tb que toda estruturação das janelas do windows XP ou NT são baseadas nas estruturas do C++, um dos erro mais típicos que eu tinha quando fazia programas para ele era o erro de sequência de execução... Nos windows XP as rotinas são executadas em intervalos tipo TIMER, muitos funções podem demorar mais para executar do que o o intervalo de tempo que vc colocou, fazendo com que outras rotinas que eram para ser executadas antes passem na frente, veja exemplo hipotético; timer1 = 2; // 2 segundos timer2 = 1; // 1 segundo case timer1: { executarotina1(); } case timer2: { executarotina2(); } Se a função "executarotina1();" demorar mais que 3 segundos para executar, será chamado um novo processo mesmo que o anterior não seja terminado, se isso acontecer e vc tiver criado classes que troquem dados entre ela ira ocorrer vários erros de precedência ! E depois de alguns laços de execução a rotina do segundo timer passará a executar antes da primeira em as duas executarão em intervalo totalmente diferente ! Nesse caso fica extremamente difícil vc estruturar programas de grande porte sem gerar centenas de bugs e ainde ter que despender um enorme tempo no concerto deles... Agora imagine tudo isso sendo executado em máquinas diferentes com velocidades diferentes... Dai vem a explicação pq muitos programas rodam perfeitos no micro do desenvolvedor e quando vão para o cliente geram centenas de erros ! Comprar máquinas mais e mais potentes é a solução, ou fazer em C ? Vcs decidem ! E com relação a ter um compilador C++ mais eficiente vai ser difícil, a estruturação dos objetos é que gera esse enorme consumo de processamento e memória ! |
|
|
|
![]() |
| Opções do Tópico | |
|
|