-
Posts
6.526 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que arfneto postou
-
C desenvolvimento de código (atividade de algoritmos e lógica de programação)
arfneto respondeu ao tópico de Danilo Anderson em C/C#/C++
É um jogo de forca afinal Como você sai do while? Duas opções: ou você acertou a palavra ou se enforcou. Isso já está sendo controlado no código. E como seriam duas condições em C? ( A || B ) ou mesmo (!A && !B) dependendo de seu gosto. As variáveis já estão lá. Como define /* ----- Aqui falta a parte responsavel pela verificação de vitoria ou derrota -------------------- */ o que por aqui dentro? É a mesma coisa e essa é a óbvia primeira melhoria do programa, já que ele testa duas vezes exatamente a mesma coisa. Bem ingênuo o programa... -
C Segue o código base para a questão 1 com lacunas indicando trechos de código fal
arfneto respondeu ao tópico de Tiago Mendes Fernandes em C/C#/C++
Você não pode mudar o programa e criar novas variáveis. apenas preencha onde estão os __ com algo que resolva o problema, usando o que já está lá adicionado 7 minutos depois isso está sendo discutido também aqui É um jogo de forca afinal Como você sai do while? Duas opções: ou você acertou a palavra ou se enforcou. Isso já está sendo controlado no código. E como seriam duas condições em C? ( A || B ) ou mesmo (!A && !B) dependendo de seu gosto. As variáveis já estão lá. Como define /* ----- Aqui falta a parte responsavel pela verificação de vitoria ou derrota -------------------- */ o que por aqui dentro? É a mesma coisa e essa é a óbvia primeira melhoria do programa, já que ele testa duas vezes exatamente a mesma coisa. Bem ingênuo o programa... -
C++ ao converter setbit em long- ERRO: a expressão deve possuir tipo de classe
arfneto respondeu ao tópico de kleberaugus em C/C#/C++
Talvez você não tenha lido direito a documentação... O que está tentando fazer? Eu nunca tinha visto um bitset<9> Onde arrumou esse número? Nada eficiente... Em geral você tenta 8,16,32,64 ou um número enorme mesmo, tipo 1000 deles, em situações em que a lógica justifica um painel enorme de bits on/off. Como declarou binário? o que é? Vou te mostrar um programa que define um bitset de 9 bits e tenta acessar 10 bits pra você ver a mecânica disso. E também dos bits sem e com sinal para 1 2 e 4 bytes. long e int são a mesma coisa em windows 32 bits. Saida E o programa #include <bitset> #include <iomanip> #include <iostream> #include <string> using namespace std; int main(int argc, char** argv) { unsigned int int4bytes = 0x80'00'00'00; cout << "uint4 " << int4bytes << endl; unsigned int int2bytes = 0x80'00; cout << "uint2 " << int2bytes << endl; unsigned char int1byte = 0x80; cout << "uint1 " << (int)int1byte << endl; // agora com sinal int sint4bytes = int4bytes; short sint2bytes = int2bytes; int8_t sint1byte = int1byte; // 4 cout << "int4 " << sint4bytes << endl; cout << "int4 hex 0x" << std::hex << sint4bytes << endl; // 2 cout << "int2 " << std::dec << sint2bytes << endl; cout << "int2 hex 0x" << std::hex << sint2bytes << std::dec << endl; // 1 printf("int1 %d\n", sint1byte); cout << "\nTamanho em bytes" << endl; cout << "char " << sizeof(char) << endl; cout << "short " << sizeof(short) << endl; cout << "int " << sizeof(int) << endl; cout << "long " << sizeof(long) << endl; cout << "long long " << sizeof(long long) << endl; cout << "\n\nb i t s e t" << endl;; std::bitset<9> nove_bits(std::string("000000000")); cout << "nove_bits tem " << nove_bits.count() << " bits '1'" << endl; for (int i = 0; i < 10; i += 1) { try { cout << "\nTentando ligar bit " << i << endl; nove_bits.set(i); cout << "nove_bits tem " << nove_bits.count() << " bits '1'" << endl; cout << "bits em string " << nove_bits.to_string() << endl; cout << "bits em long long " << nove_bits.to_ullong() << endl; } catch (std::out_of_range& e) { cout << "Deu erro '" << e.what() << "' no bit " << i << endl; }; }; }; // fim -
C++ Como é representado o número -128 em binário, quando leio o byte do PC vem ele
arfneto respondeu ao tópico de kleberaugus em C/C#/C++
Muito bem. Bom que funcionou. Sugiro que escreva um programa para extrair os bits e depois colocar de volta num char usando aqueles operadores. Em relação a um compactador provavelmente a maior chance de sucesso está na análise de frequência de símbolos, letras ou palavras todas. E se forem números pode usar BCD como era em COBOL e roda em java, para compactar os números. Tem uns algoritmos baseados em RLE que você pode usar --- run length encoded --- tipo o zip ou rar que tem bons índices também de compressão. -
C C muda e fica melhor como python ou é estática?
arfneto respondeu ao tópico de Dragon_Extreme em C/C#/C++
Você está vendo isso de um lado corporativo, parece. Nada tem a ver com proteger de clientes e usuários. É um efeito colateral. Encapsulamento, como é garantido por C++ e outras linguagens, não existe em C. Nada tem a ver com headers. O compilador garante o encapsulamento na classe, no código. Protege você e seu código de você mesmo. Esse é o valor. A STL --- standard template library --- mostra uma outra coisa: um volume absolutamente enorme de código de qualidade pronto para usar, totalmente baseado em templates. Que acha de poder declarar filas, arvores, hash, mapas, pilhas, vetores de classes escritas por você mesmo com funções, lógica, construtores e destrutores tudo indo dentro de graça? Veja a qualidade e a diversidade dos algoritmos em <algorithm> na STL. Tudo baseado em templates, e pense em como usar isso em C. Como replicar isso em C? Com void*? Você continua estabelecendo sua opinião como fato, sem qualquer exemplo ou referência. Não acho que deva escrever isso em um forum para iniciantes. Use exemplos, autores, trechos de códigos, exemplos como eu dei. Sério? De fato? Tem um argumento? Um exemplo de uma solução pré-pronta de baixo desempenho? -
C++ Como é representado o número -128 em binário, quando leio o byte do PC vem ele
arfneto respondeu ao tópico de kleberaugus em C/C#/C++
Use o que eu te escrevi e faça um programa de teste. Os operadores são só esses e a lógica você já sabe. Vai pesquisar como uma coisa assim? E já tem a resposta. Use os operadores de bit para separar os bits e coloque na string sem calcular nada. Eles são zero ou 1, ou 48 ou 49 como queira representar. Que seria um problema para converter? C converte qualquer coisa. O IDE que usa não mostra os protótipos? Algo assim: istream::read() espera char* -
C++ Como é representado o número -128 em binário, quando leio o byte do PC vem ele
arfneto respondeu ao tópico de kleberaugus em C/C#/C++
E qual livro você leu que faz você achar que sabe como funciona tudo internamente? É caro? Queria ler esse! Talvez você não saiba julgar que "sabe como tudo funciona internamente". Veja que postou um tópico num forum sobre representação interna de inteiros. Você entendeu o que expliquei sobre os operadores e como seriam uma alternativa para escreveu seu programa? -
C++ Como é representado o número -128 em binário, quando leio o byte do PC vem ele
arfneto respondeu ao tópico de kleberaugus em C/C#/C++
Não seja maldoso com os livros... Em geral eles são amigos. De que livro está falando? Em relação ao seu código Talvez tenha tido mais trabalho do que o necessário. Você entendeu o que eu disse sobre usar unsigned char para o buffer? Usando sinal você só criou um problema. O (-0) é de fato uma aberração. Talvez não devesse ser válido e a linguagem ter ficado com -127 a +127 e dois 0. Mas o que você pode fazer é tratar os bits ao invés de fazer as contas. Usando lógica e não aritmética. Usando constantes como 0x80, 0x40, 0x20 e 0xF e tal. E usando operadores lógicos como & | ^ e ~ e os shift como <<4 e >>4 ou >>1. Assim você pode copiar só um bit para sua string sem fazer contas nem para gravar nem para restaurar o número. E é muito rápido. Muito mais rápido que aritmética... Faça um programa de teste ou pergunte se ficou em dúvida -
C++ Como é representado o número -128 em binário, quando leio o byte do PC vem ele
arfneto respondeu ao tópico de kleberaugus em C/C#/C++
Houve uma época em que sequer tinha minúsculas, depois foi até 127 depois nos 80 passou a 255 com o extended ascii sugiro usar unsigned char e usar de de 0 a FF mesmo Com sinal qualquer número a partir de 0x7F será negativo, certo? e o primeiro deles seria esse aí, 0x80. seria um char* imagino Acho que deve usar mesmo unsigned e esquecer isso. Mas de todo modo considere que de 0 a 255 são 256 valores, de 1 a 127, de -1 a -127, o 0 e um outro que seria o -0 ou o -128, com o valor 0x80. Poste aqui a conversão que está fazendo... -
C desenvolvimento de código (atividade de algoritmos e lógica de programação)
arfneto respondeu ao tópico de Danilo Anderson em C/C#/C++
sério que não vai postar o programa e preciso sair do forum e baixar algo pra depois voltar aqui? que condição usou para sair do loop? foi seu programa que interrompeu o processo. Como eu disse antes, e acho que você sabe, há duas condições: ou você acertou ou você se enforcou, que no caso quer dizer que errou mais de 6 vezes. E que condição você usou? while (letra == resposta); pois é... letra é um char, resposta é char[20] e estava errado em dois lugares do programa e você corrigiu. E aí escreveu errado de novo... Não entendo. Se corrigiu os dois erros como escreveu esse? resposta é um vetor de 20 char. De nada adianta comparar com letra que é um char. E essa parte abaixo? /* ------------------- Aqui falta a parte responável pela verificação de vitoria ou derrota ----------------------*/ /* -------------------------------------- Final da Verificação ----------------------------------------------------------------*/ Não acha que devia escrever algo aí? Essa tal "parte que falta"? -
Fica difícil entender sua dificuldade sem qualquer detalhe. Para começar o algoritmo seria o caso de perguntar se você o entendeu, antes de tudo, e não seria uma questão de C ou C++. Você entende a ideia do método de Monte Carlo? É como resolver o problema sem resolver o problema. Um ponto dentro do quadrado, um ponto qualquer, ele pode ou não estar também dentro do círculo, já que o círculo inteiro está dentro do quadrado, certo? E se conhece a área do círculo E se conhece a área do quadrado Dá pra imaginar que a área do círculo é menor que a área do quadrado, já que o círculo está dentro do quadrado Dividindo a área do círculo pela área do quadrado dá Pi/4 E qual a probabilidade de um ponto qualquer então estar dentro do círculo? Se eu pegar 1000 pontos aleatoriamente, algo em torno de 1000*Pi/4 ou (250Pi) deles vão estar dentro do círculo, certo? 250Pi dá perto de 780 pontos . E assim você tem uma aproximação do valor de Pi, tanto mais certinha quanto maior for o valor de M certo? Já que os M pontos são aleatórios e há claro infinitos pontos. E se o seu gerador de números aleatórios gerar números assim aleatórios mesmo Espero que tenha ajudado a entender o algoritmo de Monte Carlo: você sabe que os pontos estão lá, sabe que são infinitos, sabe que se pegar um milhão deles vai ter 250.000*Pi deles em média dentro do círculo. Só que os computadores são ridiculamente rápidos em calcular essas coisas então eu posso simular 5 milhões deles e contar quantos estão dentro e quantos estão fora do círculo, vendo as coordenadas deles, e lógico que o valor vai estar perto de Pi. E se eu usar 50 milhões? Acho que deu pra entender E o algoritmo npoints = 10000 circle_count = 0 do j = 1,npoints generate 2 random numbers between 0 and 1 xcoordinate = random1 ycoordinate = random2 if (xcoordinate, ycoordinate) inside circle then circle_count = circle_count + 1 end do PI = 4.0*circle_count/npoints. Isso parece um Mix de FORTRAN e Pascal. Velhos Tempos circle_count é o número de caras de está dentro do círculo. Tudo o que você precisa fazer é simular os pontos e tabelar num total de UM critério: dentro ou fora do círculo. E ao final você aplica a sofisticada fórmula Pi = ( 4 * circle_count ) / Tamanho da Amostra...
-
C desenvolvimento de código (atividade de algoritmos e lógica de programação)
arfneto respondeu ao tópico de Danilo Anderson em C/C#/C++
você precisa postar o código que está usando, certo? Ou não vou poder ajudar muito. Mas como já até roda o programa vejo que fez progressos -
C C muda e fica melhor como python ou é estática?
arfneto respondeu ao tópico de Dragon_Extreme em C/C#/C++
São linguagens muito diferentes. Meu palpite é aprender C++ primeiro. É muito mais simples e os conceitos são similares no início, só que C++ é muito mais poderosa e expressiva e mais interessante desde o início. Só que no início noções como ponteiros, variáveis, loops, alocação, funções e estrutura são muito similares e assim poderá programar em C com mais facilidade depois. Por outro coisas como as que listei antes de C++ não tem nenhum equivalente em C. Não sei dizer quanto tempo levei pra aprender uma ou a outra. nem vou dizer que sei uma ou a outra, mas uso as duas desde os '90 então nem sei me lembraria Não sei de muitos livros pra recomendar. O livro de C claro é o de Kernighan e Ritchie, o tal "livro branco": "A linguagem de programação C". A bíblia do C. E o de C++ se eu só pudesse ver um seria claro o "The C++ Programming Language". E tem esse Princípios e Práticas de Programação com C++. E esse é muito bom mesmo A Tour of C++ E se quiser opiniões de outros caras tente qualquer coisa de Scott Meyers, Herb Sutter ou Andrei Alexandrescu, acho que são os melhores do mundo C++, exceto pelo Prof. Stroustrup que escreveu todos os outros que listei, e a linguagem em si. Os livros da série Heads First são meio bobinhos com desenhos e quizz e tal mas são legais também. Fuja de qualquer livro que misture C e C++. Livros de estruturas de dados usando C ou C++ são muito legais também, eu acho, porque discutem a linguagem em torno de assuntos legais e já em torno de algo aplicável. Recomendo muito ter um livro. E sites como cPlusPlus.com e TutorialsPoint.com são bem legais como referência. Queria ter tido isso no passado. Ou a internet pelo menos E GeeksForGeeks tem exemplos de tudo. Muito legal. Forums como esse aqui podem ser um bom recurso também. Sempre tem gente disposta a ajudar -
C desenvolvimento de código (atividade de algoritmos e lógica de programação)
arfneto respondeu ao tópico de Danilo Anderson em C/C#/C++
Você está de fato lendo o programa? É um jogo de forca com um limite de 6 erros printf("Utilize apenas letras minúsculas.\n"); printf("Limite de 6 erros. Palavra de até 20 letras\n\n"); Como você sai de um jogo desses? Forca? Ou você acerta a palavra ou você se enforca. Cero? Forca. Então deve sair do loop quando acertar a palavra ou estourar os erros... Como tem uma parte DENTRO do loop que verifica se o cara acertou ou perdeu \* ------------------ - Aqui falta a parte responável pela verificação de vitoria ou derrota---------------------- */ isso quer dizer que o programa é mesmo ruim e você não vai ter dificuldades no item 2. Se eu tenho um limite de erros e um contador de acertos não pode ser difícil ver se o usuário ganhou ou perdeu... O programa não funciona. Depois de corrigir as lacunas é preciso corrigir o programa para que ele ao menos rode antes de ser "melhorado". char resposta[20]; for (i = 1; i <= 20; i++) { resposta = ' '; } Faltou o índice de resposta, certo? if (resposta == letra) E aqui também... -
C desenvolvimento de código (atividade de algoritmos e lógica de programação)
arfneto respondeu ao tópico de Danilo Anderson em C/C#/C++
@devair1010 o objetivo do exercício é preencher as lacunas, como aqueles exercícios de idiomas. Virou moda depois de uma série de livros chamados "Heads-up ...." Você tem que deixar claro pelo que está trocando os //____ em cada um dos casos. Não pode mudar o código, como a condição do while() porque faz parte da pergunta... E a segunda parte, depois que o programa rodar, é dizer onde melhorar o código e porque... Sem escrever outro código. E aí poderia sugerir suas idéias -
pode postar o programa como está agora? adicionado 4 minutos depois Series,Value,Time 0,37.9,2018-11-18T08:41:03-02:00 1,37.9,2018-11-18T08:41:13-02:00 2,37.9,2018-11-18T08:41:23-02:00 3,37.9,2018-11-18T08:41:33-02:00 4,37.9,2018-11-18T08:41:43-02:00 5,37.9,2018-11-18T08:41:53-02:00 6,37.9,2018-11-18T08:42:03-02:00 Podia ter postado umas linhas ao menos do csv, certo? adicionado 31 minutos depois talvez não tenha entendido o propósito de um header. É onde deve declarar as estruturas e protótipos. Se tem um header porque declarou duas vezes o typedef de dado_t? /* Criação de tipo abstrato dado_t */ typedef struct dados dado_t; Sugiro evitar comentários assim. typedef cria um tipo. Sempre. E no fundo todo tipo de dado é abstrato em um programa de computador. E evite usar acentos nos comentários ou mesmo no programa a menos que seja esse o objetivo. Nem todo computador mostra isso direito. E não acrescenta nada. Não declare variáveis nos protótipo. De nada serve e se errar algo na hora de digitar só vai perder tempo. struct dados { int amostra; /*!< Identificador numérido da amostra */ float temperatura; /*!< Valor do dado: temperatura */ char tempo[15]; /*!< Time stamp */ }; typedef struct dados dado_t; imagino que use essa convenção de sufixo _t para os tipos definidos no programa. Boa ideia. Outros usam a primeira letra em maiúscula como é comum em java, ou prefixos como t_ Mas os comentários não acrescentam muito: o nome já está bem: temperatura para temperatura. tempo para tempo. Talvez pudesse ter colocado a unidade de temperatura e o formato do timestamp no comentário se queria acrescentar algo... Ao invés de struct dados { int amostra; /*!< Identificador numérido da amostra */ float temperatura; /*!< Valor do dado: temperatura */ char tempo[15]; /*!< Time stamp */ }; typedef struct dados dado_t; Procure declarar typedef struct { int amostra; /*!< Identificador numérido da amostra */ float temperatura; /*!< Valor do dado: temperatura */ char tempo[15]; /*!< Time stamp */ } dado_t; se não usa struct dados em outro lugar... Esse é o propósito de typedef afinal... E em main você declarou dado_t** dados = ler_dados_csv("camera_temp.csv", &n_linhas); usando o mesmo nome. Só dá confusão. E for (int k = 0; k < 1; k++) { printf("%d, %f, %s", dados->amostra, dados->temperatura, dados->tempo); } Se declarou dados como dado_t** então não pode escrever isso... Pense bem: se dados é dado_t** então: *dados é dado_t* **dados é então dado_t poderia escrever (*dados)->amostra mas não dados->amostra porque dados não aponta para uma struct e sim para um ponteiro... Está certo de que precisa declarar assim? Achei seu programa um pouco complicado para ler um arquivo csv que é apenas uma tabela MxN de M registros com N campos definidos por N-1 delimitadores... adicionado 58 minutos depois Acho que agora entendeu, se leu o que escrevi acima. Provavelmente o que queria escrever lá era o simples for (int k = 0; k < 1; k++) { printf("%d, %f, %s", dados[k]->amostra, dados[k]->temperatura, dados[k]->tempo); } Desde que faça dados apontar de fato para um vetor de ponteiros para dada_t, certo? Replicando a mesma conveniência que o sistema faz com argc e argv, montando um vetor de ponteiros para strings com todos os argumentos arrumadinhos. Nice! Mas não: precisou de um argumento a mais, claro. Onde iria arrumar o espaço amostral? o argc, o total de amostras? Talvez fosse melhor usar algo assim struct dados { int amostra; /*!< Identificador numérido da amostra */ float temperatura; /*!< Valor do dado: temperatura */ char tempo[15]; /*!< Time stamp */ }; typedef struct dados dado_t; typedef struct { int N; dado_t** dados; } CSV; Mais simples... Na leitura pode declarar CSV* ler_dados_csv(char*); // ou mesmo int carga(CSV* tabela, const char* arquivo); // para carregar a tabela a partir do arquivo Exemplo CSV* tabela = ler_dados("camera_temp.csv"); // ou int n = carga(tabela,"arquivo.txt"); Simplesmente imitando o sistema operacional...
-
C desenvolvimento de código (atividade de algoritmos e lógica de programação)
arfneto respondeu ao tópico de Danilo Anderson em C/C#/C++
Vocês estão tentando ao menos fazer algo? As duas primeiras "lacunas" por exemplo devem estar presentes nos programas anteriores que fizeram em C, certo? ou não usaram NUNCA esse lance de definição de idioma? aquilo de setlocale e tal? Ou não deu pra ver? E o while com um loop interno que conta acertos? Num jogo de forca? qual será o teste para sair do loop? (a) Acertar as letras todas? (b) Adivinhar a precisão do tempo para a próxima terça? (c) estourar o limite de erros? E a parte responsável por verificação de vitória num jogo de forca? Como saber se ganhei num jogo de forca tentando acertar uma palavra que tem max letras? e com um limite de erros? -
Você apenas repetiu o que tinha dito. Espero que tenha entendido a partir do que eu te expliquei o que falta em seu programa para "resolver" e entenda que em muitos casos sequer tem solução. Apenas entenda que precisa saber a codepage de saída da console, a codepage da console, o locale, e também a fonte em uso na console do computador em que seu programa está rodando, e não supor que todo computador é igual ao seu computador ou mesmo que seu computador não muda nunca.
-
C C muda e fica melhor como python ou é estática?
arfneto respondeu ao tópico de Dragon_Extreme em C/C#/C++
Talvez não devesse resumir tanto assim uma realidade tão complexa. Citando o criador de C++, a linguagem oferece uma coisa que em C não existe: "abstrações a custo zero". Muitas vezes apenas para criar um modelo da solução em C leva uma eternidade e em C++ minutos. Tem uma infinidade de recursos em C++ que economizam um tempo enorme e estão lá há desde os anos 80, estáveis. Classes, polimorfismo, herança. Encapsulamento dá uma segurança que inexiste em C. E a performance em C++ é praticamente a mesma que em C. E muitos dos recursos das estão presentes e similares em mais de 30 anos de C++ Há muito essas atividades vem sendo migradas para C++. Muito do Windows e Office está hoje em C++ segundo a própria Microsoft, por exemplo Está falando do standard? tem algum trecho de exemplo em que seja C++ pior? Que documentação seria essa? Esse documento sobre C em relação a esse documento sobre C++? O que é pior? Ou fala de algum livro ou autor? Tem algum exemplo de algo que obedece a outras regras desde o C++ de 98? As mudanças na linguagem em geral não invalidam "regras de antes". Não me lembro de um único caso desde os anos 80 que tenha tido que mudar um programa por causa de mudança de regras. Em C ou C++. Em geral se muda quando aparece algo claramente melhor e se pode mudar o código ou está escrevendo algo novo. Coisas como declarar variáveis no for em C, as enormes facilidades de inicialização introduzidas em C, o range for de C++, os smart pointers de C++, os novos algoritmos na STL, as facilidades com templates, &&, move semantics, traling return types, lambdas, functors, auto, facilidades de inicialização... São muitas cosias em '11, '14, '17 e a gora em '20. Você tem algum exemplo disso? Não dá pra discutir uma sensação. Mas provavelmente não se deva associar nunca aprender a produzir menos. Sugiro postar exemplos ou argumentos objetivos que justifiquem afirmações como ou ou ao postar em um forum público como esse. Outras como essa estão perfeitas, classificadas como opinião pessoal em um forum púbico. Também acho C sensacional -
C desenvolvimento de código (atividade de algoritmos e lógica de programação)
arfneto respondeu ao tópico de Danilo Anderson em C/C#/C++
Não conseguiu preencher nenhuma das lacunas? E não achou nada para melhorar no programa? Um forum é um lugar normal pra discutir melhorias -
o que não deu certo? Rodou o programa? Leu algo da documentação? Entendeu o que eu expliquei sobre isso ser mesmo um inferno? Entendeu que precisa talvez mudar as codepages? rodou o programa no Terminal do windows? ou rodou apenas dentro do IDE? O programa que te mandei tem até um exemplo de saída. porque não diz o que aconteceu quando testou o programa, posta a imagem da saída do programa aqui, coisas assim? pode economizar seu tempo e ajudar outros...
-
Eu acho que isso não vai acrescentar muito em seu aprendizado, em C ou C++. Acentuação em programas de console é um inferno. Se quiser ler ou gravar arquivos com acentos outro inferno. Se quiser ou precisar receber arquivos com caracteres acentuados é o d1@b0 também. Sugiro muito fugir disso a menos que seja bem pago ou que receba uma boa nota. De todo modo, rode esse programa em sua máquina e talvez ajude a entender algumas coisas. É um programa em C mas não faz diferença no Visual Studio #define _CRT_SECURE_NO_WARNINGS //#include <iostream> #include <stdlib.h> #include <stdio.h> #include <locale.h> #include <windows.h> void testa(); int main() { char nome[40]; const char* locale = setlocale(LC_ALL, "portuguese-brazilian");// uma das tentativas char xlocale[40]; char* local_original = xlocale; local_original = setlocale(LC_ALL, NULL); printf("\tLocale original: '%s'\n", local_original); printf("\tANSI Console CodePage: '%d'\n", GetACP()); printf("\tConsole CP: '%d'\n", GetConsoleCP()); int pagina_ocp = GetConsoleOutputCP(); printf("\tConsole Output CP: '%d'\n", pagina_ocp); SetConsoleOutputCP(437); SetConsoleCP(437); printf("\tConsole CodePage '%d' Output CodePage: '%d'\n", GetConsoleCP(), GetConsoleOutputCP()); testa(); SetConsoleCP(850); SetConsoleOutputCP(850); setlocale(LC_ALL, "Portuguese"); printf("\tConsole CodePage '%d' Output CodePage: '%d'\n", GetConsoleCP(), GetConsoleOutputCP()); testa(); SetConsoleOutputCP(pagina_ocp); }; void testa() { // esse e um trecho de um programa de um aluno // esta aqui so para testar os acentos printf("\n***** teste operações *****\n");; printf("=-= =-= =-= OPERAÇÕES =-= =-= =-= \n"); printf("[ 1 ] - Adição \n"); printf("[ 2 ] - Multiplicação \n"); printf("[ 3 ] - Subtração \n"); printf("[ 4 ] - Divisão \n"); printf("\n***** áéíóúãõñ fim do teste *****\n\n\n");; }; // testa() E veja a documentação dessas coisas em https://docs.microsoft.com/en-us/windows/console/console-functions. É bastante completa eu acho. Entenda que só o locale não é suficiente para garantir que isso vai funcionar. Há a página de saída da console, que pode não ter as letras que quer, há a fonte atual em uso na console, que pode não ter alguma letra, há a fonte de saída da console, um inferno. Se você está rodando seus programas no "novo" terminal do Windows 10 em geral é mais tranquilo. Mas no prompt é diferente, no IDE é diferente... Em C e C++ em Windows no Windows 10 é muito melhor porque tem o Terminal do Windows, e tem Unicode, com mais de um milhão de símbolos disponíveis e tal. Mas para usar isso precisa usar as funções W, como wprintf() por exemplo, e mesmo as funções da API do Windows tem em geral uma versão W. No fundo o Windows usa isso há décadas.
-
Isso nada tem a ver com Visual Studio ou com o Windows 10. Você está programando em C ou C++? O único elemento de C++ que encontrei em seu programa é o #include para <iostream> e o tema no tópico marcado como C++ Onde você precisa de acentuação? Na tela apenas?
-
C++ Registros - Ponto dentro dos retângulos
arfneto respondeu ao tópico de vitor.assuncao em C/C#/C++
Faça um desenho num papel e vai ver que é simples: basta comparar as coordenadas do ponto com as do retângulo -
Sim. o primeiro parâmetro é o endereço, o segundo a quantia de bytes: ostream& write (const char* s, streamsize n);
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