-
Posts
6.526 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que arfneto postou
-
Postei algo assim hoje por coincidência nesse mesmo forum Sugiro ler esse tópico Mas veja esse trecho de declaração E esse trecho de uso Como sempre sugiro aqui, recomendo não escrever um menu antes. Não perder tempo com essas coisas que não levam a nada. Concentre-se NOS DADOS e na representação dos livros, as estruturas, vetores, sei lá. Veja acima como é trivial usar Control-C e control-V e declarar uma meia dúzia de livros e testar todas as funções do programa. Só ao final escreva um menu. Faça com que a última função do menu seja ler a opção do usuário e retorne a tal opção no return da função menu(). Se possível leia o menu do disco. É trivial e aí você não perde tempo: Usa o editor de texto, o próprio IDE e edita o menu lá. Nunca vai dar erro. Ao ler valores mostre em seguida para ficar seguro do que está havendo. Depois você comenta ou apaga os comandos. Ler e gravar arquivos de texto --- streams --- é trivial em C
-
if (pi == NULL || *pi == NULL) A segunda condição não faz sentido. (*pi) é uma struct. Você tem uma função push() perdida no código. E faltam uns struct em declarações de pilha. Ao invés de declarar struct Pilha { int topo; int capa; float* pElem; }; Se acostume a declarar typedef struct // (a) { int topo; int capa; float* pElem; } Pilha; // ou mesmo struct _pilha // (b) { int topo; int capa; float* pElem; }; typedef struct _pilha Pilha; Assim não precisa ficar repetindo struct em todo lugar. E se não precisa repetir não vai esquecer typedef cria um alias, um sinônimo. O exemplo (b) é mais seguro porque pode ainda usar referências a _pilha dentro da struct porque o nome já é conhecido, Se não precisa, o caso (a) é mais legível. Em pilhas os métodos push() pop() e top() são consagrados. Podia manter
-
Que tal declarar duas variáveis: int primo_anterior = 0; int primo_atual = 0; E um único loop identificando números primos até o primo_atual ser maior que o valor de entrada? Se ele não for você copia o valor para primo_anterior e continua. Se for maior você tem 3 números na sequência: primo_anterior, valor digitado e o primo_atual. Basta ver a diferença entre eles e o que estiver mais próximo do valor digitado é sua resposta. Cuidado com as comparações porque o número digitado pode ser primo...
-
Veja essa rotina por exemplo: int ajuste() { int disciplina[6] = { 1, 1, 1, 2, 2, 3 }; static int primeiro = 0; printf("Fila: "); for (int i = 0; i < 6; i += 1) { printf("%d ", disciplina[(primeiro+i)%6]); }; // for() printf("\n"); primeiro = (primeiro + 1) % 6; return 0; } Se você chamar 20 vezes: Fila: 1 1 1 2 2 3 Fila: 1 1 2 2 3 1 Fila: 1 2 2 3 1 1 Fila: 2 2 3 1 1 1 Fila: 2 3 1 1 1 2 Fila: 3 1 1 1 2 2 Fila: 1 1 1 2 2 3 Fila: 1 1 2 2 3 1 Fila: 1 2 2 3 1 1 Fila: 2 2 3 1 1 1 Fila: 2 3 1 1 1 2 Fila: 3 1 1 1 2 2 Fila: 1 1 1 2 2 3 Fila: 1 1 2 2 3 1 Fila: 1 2 2 3 1 1 Fila: 2 2 3 1 1 1 Fila: 2 3 1 1 1 2 Fila: 3 1 1 1 2 2 Fila: 1 1 1 2 2 3 Fila: 1 1 2 2 3 1 Esse é o serviço do "fiscal da fila" e a cada vez é chamado o cenário muda. Na 5 vez tem que atender P2, se não tiver passa para o P3, por exemplo. Como ajuste() tem sua própria memória, que seria a prancheta do estagiário, a cada vez que entra alguém a coisa se arruma sem ter que mexer na fila. Note que essa não é a estrutura de dados Priority Queue. Se seu enunciado não exige isso, tudo certo. Seu programa não está bom, nem a estrutura dos dados. Entenda as razões que mostrei.
-
Mais umas coisas: Você não implementou o que seria uma porque normal, apenas usou uma lista ligada. E está ok. A implementação é algo que deve mesmo sumir dentro do programa. No entanto: Não use variáveis globais. É uma dor de cabeça garantida. Não por acaso todos autores condenam, empresas proíbem, professores proíbem, e eu reclamo Fuja disso. Passe parâmetros. E em C endereços. Não coloque dados de sua estrutura nas chamadas a insere() ou qualquer outra. É problema. Use se possível uma caixa preta, um ponteiro para Dados ou void mesmo. Na semana que vem sua lista será de livros, depois de músicas, depois de produtos. Sua rotina remove()está muito complicada e frágil, com vários loops no meio de cadeias de if() . Acho que foi complicando à medida em que foi tentando implementar a lógica de atendimento Estive pensando rapidamente no seu problema no almoço aqui. Eis o que acho que custaria menos esforço para concluir seu programa: Acho que as rotinas estão ok. Parecem mais ou menos com o código padrão de listas. Os parâmetros não estão bons, como falei. Mas pode funcionar assim como escreveu. Ao entrarem elementos na fila, apenas coloque no fim da fila. Mas ao final da inserção rode uma função ajuste() que coloca os caras do início da fila em conformidade com a disciplina. E na hora de atender atende sempre o primeiro da fila, de modo que as funções insere() e remove() ficam triviais como as de toda lista ligada. E a função de ajuste? Não é complexo, e você vai ter que implementar essa lógica de qualquer maneira. Escreva uma função helper para trocar um cara de posição na fila. Não é difícil e se trabalha apenas com ponteiros pode trocar só o endereço dos dados. A lógica é que na fila os caras estão por ordem de chegada, mas no topo da fila se possível tem 3 caras P1, 2 P2 e um P3. Pode usar um vetor int disciplina[6] = { 1, 1, 1, 2, 2, 3 }; // controle Para ajudar a ajustar. Só isso. Então sua fila tem uma área gerenciada onde tem no máximo seis elementos. E o resto, se tiver. E serão atendidos por ordem de chegada, dentro da disciplina. É como se no mundo real tivesse um estagiário organizando a fila. Pense nisso.
-
Você escreveu mais e menos do que foi pedido... E está errado. typedef struct biblioteca{ char titulo[100]; char autor[100]; float registro; float preco; }l; Está ok, até na ordem do enunciado. MAS... porque um número de registro float? Acha que alguém vai digitar o livro com o código -123.23 ou algo assim? Não vai. Não vai sequer operar com esses números. Somar registro não leva a nada, seria como somar CPF. Veja o exemplo da realidade: todo livro publicado já tem um número, como você pode suspeitar, e se chama ISBN. (Claro que ia ter 3 ou 4 letras e uma abreviação de uma expressão em inglês ) E esse número é uma sequência de 10 ou 13 posições. Veja direto da Amazon: todos os livros publicados do mundo tem isso Em resumo: use um char[] também e na soma retorne o menor, tanto faz. Sem inventar nada. Pegue um livro ou abra um anúncio e simplesmente faça igual Porque a estrutura não se chama simplesmente Livro? E aqui você escreveu duas funções e não fez o previsto. Note que o registro de um livro não é exatamente um número e sim 5 grupos de números e o último é um dígito verificador. Não se soma essas coisas. De todo modo se declarar como int apenas some. l livros_somar(l livroA, l livroB){ float livroC; livroA.registro+= livroB.registro; livroA.preco+= livroB.preco; return livroA; } Imagino que era para ser essa a função-resposta. Que pretendia fazer com o livroC que está aí parado? Podia fazer o simples e tratar os campos um a um. E receber o endereço de cada estrutura já que não vai mexer nelas e elas são relativamente grandes. Em geral não se passa structs com centenas de bytes assim... l livros_menor(l livro1, l livro2){ if(strlen(livro1.titulo) > strlen(livro2.titulo)){ strcpy(livro1.titulo, livro2.titulo);// menor qtd de carateres } if(strlen(livro1.autor) > strlen(livro2.autor)){ strcpy(livro1.autor, livro2.autor);// menor qtd de carateres } return livro1; } E aqui foi onde você não entendeu o espírito da coisa: O que você quer na verdade é declarar um novo livro e mostrar o resultado. E nem precisava de um vetor de livros na verdade. Apenas 3 livros. l livro_resultado = somar_livros( livro1, livro2 ); l livro_resultado = somar_livros( livros[0], livros[1]); Veja como pode ser mais simples: Exemplo typedef struct { char titulo[100]; char autor[100]; char registro[20]; float preco; } Livro; typedef struct { char nome[100]; int N; // o total de livros Livro* Acervo; // O vetor de livros } Biblioteca; A biblioteca tem um acervo de N livros e eles estão DENTRO da estrutura, por exemplo. E Livro somar(Livro*, Livro*); int mostra(Livro*); O programa só trata Livro então somar e mostra faz o esperado. Não precisa ficar repetindo livros... E seu programa podia ser assim simples e mais fácil de ler int main(int argc, char** argv) { Biblioteca B1 = { "Ciencias II", 0 }; Livro L1 = { "sendmail", "Bryan Costales", "1-56592-839-3", 59.95 }; Livro L2 = { "Data Structures and Algorithms ", "Alfred V. Aho", "0-20100-023-7", 74.99 }; Livro L3 = somar(&L1, &L2); mostra(&L1); mostra(&L2); printf("\"Somando\" os registros:\n"); mostra(&L3); return 0; } É só um exemplo cm dados copiados direto da Amazon e do seu enunciado. Mas acho que dá pra entender: Você cria os 2 livros e mostra. Soma e mostra. Só isso. E tem a estrutura. E pode até declarar várias bibliotecas e montar os acervos
-
Sim, porque na prática abandonou a função que tinha escrito inicialmente double fibonacci (int n) { int a=1,b=1,x,i; if(n==1) x=a; if(n==2) x=b; for(i=3;i<=n;i++){ x=a+b; a=b; b=x; } return x; E a que estava escrevendo int primo (int a) { int i,k=0; for(i=1;i<=a;i++) { if(a%i==0) k++; } if(k==2) return 1; else return 0; } E bastaria juntar as duas em um loop para resolver seu problema, do modo como foi descrito aqui. Exemplo didático de primo() A função abaixo mostra uma possível maneira -- passo a passo --- de como retornar 1 se o argumento recebido é primo int retorna_um_se_primo(unsigned int n) { if (n < 2) return 0; if (n == 2) return(1); if (n % 2 == 0) return(0); unsigned int maior = (unsigned int)sqrt((double)n); unsigned int fator = 3; while (fator <= maior) { if (n % fator == 0) return 0; fator += 2; } // end while return 1; } // end retorna_um_se_primo()
-
Vou ver se encontro algo. Deu uma lida no código e parece muito complicado, talvez sem necessidade Uma coisa que posso dizer: provavelmente os contadores de prioridade deveriam estar dentro da estrutura main() deve ser a primeira função de todo programa. Use protótipos no início. E se não tem um critério lógico importante, use a ordem alfabética. conio.h é uma herança dos anos 80. Não deveria ser usada pra nada. E não há razão mesmo. getche() não deveria mais ser usada desde os '80. Seu compilador não reclamou de nada? Se op é a opção do menu porque não retornar isso de menu()? Evite void a qualquer custo. Em geral se pode ou deve retornar algo de toda função. Inclusive main() um switch '1' é tão bom quanto um switch 1: para que perder tempo com op = getche() - '0'; se não faz diferença? Procure usar o menu direto de um arquivo. É muito mais simples e flexível. E leia a opção no final do menu e retorne o valor. É mais esperto Está programando uma Fila de prioridade? A própria Priority Queue?
-
Você não entendeu. Não tem nenhum erro no que eu escrevi Tentou ler o programa? Esse aí acima é o código para primo() e retorna 1 para QUALQUER NÚMERO. Está claro aí. Um em C é verdadeiro, como eu também expliquei. Então para essa função qualquer número é primo. Estou te mostrando como rapidamente resolver seu problema e juntar os 3 elementos que precisa juntar. N elementos, sequência de Fibonacci e a identificação de um primo. Se quer uma função primo() também, pronta, eu postei aqui mesmo, meses atrás, um programa completo que calcula primos através do método tradicional e também usando o crivo de eratóstenes que a gente vê no ensino fundamental. E o programa ainda comparava as duas listas. Pode pesquisar aqui mesmo no contéudo do forum e ter o programa completo. Quanto ao seu programa: Não consegui entender o que está tentando fazer. Porque abandonou a função Fibonacci que havia escrito? E a função primo()? Assim está longe de funcionar.
-
-
Você já escreveu uma função double fibonacci (int n); e talvez tenha entendido que essa é uma sequência de inteiros positivos então não faz sentido retornar double. Nunca vai aparecer algo tipo 3,4555 certo? E está testando uma função int primo(int n); que imagino deva retornar 0 quando 'n' não é primo. E o que precisa é dos N primeiros primos na sequência de Fibonacci. Isso seria um simples loop. Então pense no programa abaixo main(int argc, char* argv) { int N = 12; // esse é o valor que iria ler int fa = 1; int fb = 1; int F = 0; // o proximo Fibonacci for (int i = 0; i < N; i += 1) { F = fa + fb; fa = fb; fb = F; printf("%9d ", F); if (i % 5 == 0) printf("\n"); if (F > 900* 1000 *1000 ) break; // poe um limite qualquer }; // for() return 0; }; // main() Ele mostra 2 3 5 8 13 21 34 55 89 144 233 377 Sim, os primeiros 12 números na sequência. Agora se a sua função primo(n) funciona você pode apenas mudar umas linhas e escrever #include <stdio.h> int primo(int); main(int argc, char* argv) { int N = 12; // esse é o valor que iria ler int fa = 1; int fb = 1; int F = 0; // o proximo Fibonacci for (int i = 0; i < N;) { F = fa + fb; fa = fb; fb = F; if (primo(F)) { // apenas se F e primo printf("%9d ", F); // imprime i = i + 1; // avanca no loop }; // if() if (i % 5 == 0) printf("\n"); // pula linha na tela if (F > 900* 1000 *1000 ) break; // poe um limite qualquer }; // for() return 0; }; // main() int primo(int a) { return 1; }; E já vai funcionar. Talvez você tenha complicado um pouco as coisas. Porque funciona? Você precisa dos N primeiros PRIMOS da sequência de Fibonacci, então num loop até achar N números você só incrementa a variável do loop for se o número da sequência de Fibonacci que vem sendo produzido no loop for primo.
-
Acho que escreveu errado... Não faz sentido como escreveu Provavelmente o índice vai de 0,25 a 0,50 Antes de escrever um programa use uma tabela E fica claro o que tem que fazer. Pode usar a própria tabela e não precisa de nenhum processamento. Veja esse exemplo void funcao(float medida) { char atividade[3][20] = { "normal", "normal", "normal" }; const char* para = "paralisada"; if (medida >= 0.3) { // acerta as notificacoes strcpy(&atividade[0][0], para); if (medida >= 0.4) { strcpy(&atividade[1][0], para); if (medida >= 0.5) strcpy(&atividade[2][0], para); }; // if() }; // if() // mostra o relatorio printf("\n\n==>\nConsiderando a ultima medida = %4.2f\n\n", medida); for (int g = 0; g < 3; g = g + 1) printf("Grupo %d: Atividade %s\n", g, atividade[g]); return; }; // funcao() Recebe a leitura do índice e envia as notificações... Com a tabela já preenchida só precisa retificar as mensagens conforme o índice sobe. strcpy() é a função que copia uma string em outra. Ou pode usar um loop mesmo e copiar letra a letra. E declare void funcao(float medida); E é só isso. E seu programa? Apagou a declaração de main()? Sua função está errada. Não entendeu que a medida é um valor limite? Não pode usar '=' e sim ">=", maior ou igual ao limite... adicionado 5 minutos depois esqueci do programa de teste main() { funcao(0.29f); funcao(0.31f); funcao(0.39f); funcao(0.41f); funcao(0.49f); funcao(0.51f); return 0; }; // main() Lembre-se: todo o processamento ocorre na função. ==> Considerando a ultima medida = 0.29 Grupo 0: Atividade normal Grupo 1: Atividade normal Grupo 2: Atividade normal ==> Considerando a ultima medida = 0.31 Grupo 0: Atividade paralisada Grupo 1: Atividade normal Grupo 2: Atividade normal ==> Considerando a ultima medida = 0.39 Grupo 0: Atividade paralisada Grupo 1: Atividade normal Grupo 2: Atividade normal ==> Considerando a ultima medida = 0.41 Grupo 0: Atividade paralisada Grupo 1: Atividade paralisada Grupo 2: Atividade normal ==> Considerando a ultima medida = 0.49 Grupo 0: Atividade paralisada Grupo 1: Atividade paralisada Grupo 2: Atividade normal ==> Considerando a ultima medida = 0.51 Grupo 0: Atividade paralisada Grupo 1: Atividade paralisada Grupo 2: Atividade paralisada
-
Foi declarada como tal... char[] é um vetor de char então char msg[] msg é o endereço do primeiro elemento. Um ponteiro para char. Em geral na prática se declara char* msg. A notação usando [ ] não é muito usada mas parece ser frequente nos cursos para iniciantes
-
Poste seu programa ao final!
-
Você leu o que eu escrevi? Porque insiste ainda em atof() se seus dados são int? voce declarou o protótipo dentro da função... está errado E deve seguir os parenteses na chamada ERRADA a atof().... Que pretende com aquelas aspas? Qual o propósito de mudar algo tão estabelecido quanto argc para argument count e argv para argument values? Só vai atrapalhar outros que possam ler seu programa. Qual o benefício? ac é mais legível que argc?
-
Use o tal botão "code" e formate o programa melhor. Fica difícil ler assim e copiar às vezes traz caracteres estranhos... Eu sempre escrevo a mesma coisa quando vejo isso. E sempre vejo isso : Primeiro escreva a função que lista o cadastro, depois o cadastro, depois a compra, depois a venda... Porque tem DEZ códigos para fruta? int cod[10] é isso... Notou que não tem o campo nome? E depois tenta ler o nome? Frutas_vetor[10] não é redundante? É claro que é um vetor. É o centro do programa. Não seria mais significativo algo assim: Afinal cada registro é uma fruta. O vetor é de frutas, cada fruta tem um código e um nome. Tem um custo e um estoque em kg. Fica mais fácil. typedef Fruta cria um alias, um sinônimo, e fica mais legível, além de a partir daí não ter que ficar repetindo struct em todo lugar. Usar a primeira letra maiúscula para de algo definido assim é um costume em java por exemplo, mas se usa uma convenção assim em C fica mais fácil entender quando vê um tipo definido pelo programa, como é o caso de Fruta Quanto mais perto sua abstração (representação) fica da realidade mais fácil é escrever o programa e entender a solução.
-
Postar um link para um arquivo no formato rar, que não tem suporte nativo como zip em muitos sistemas, faz com que seja preciso instalar um programa, fazer um download, sair do contexto do forum para abrir um arquivo, extrair o conteúdo e quem sabe abrir em um compilador, para tentar ajudar em sua dúvida. Não pode simplesmente postar o programa, podendo assim atingir mais gente e ajudar mais gente que venha a ler o tópico?
-
porque insiste em float/double para números inteiros? atof() converte para float. Tanto Fibonacci quanto primo() esperam inteiros. Se dois fatores geram o produto N então enquanto um aumenta o outro diminui. No maior caso um é igual ao outro, como 9 = 3x3. Mas 10 pode ser 2x5 ou 5x2. Enquanto um aumenta o outro diminui. Isto quer dizer que não precisa testar além da raiz quadrado do número. Pense nisso. O que falta em seu programa é explicar ao compilador o que é primo()... Você chama primo() na linha 17 mas só define na 22. No início de main() você deve antecipar isso, declarando int primo(int); Isso se chama protótipo e é o suficiente para o compilador saber o que fazer com a linha 17...
-
Se fala dos necessários para definir os valores, eis um caso em C++ Exemplo: string comando; char unidade = 0; double numero = 0; Em comando você tem o que foi digitado, a linha toda que você leu por exemplo via cin >> comando; E você quer avaliar o char unidade como sendo KFC --- o frango! Kentucky Fried Chicken! ok foi pobre --- 'K', 'F'ou 'C' e o numero como sendo o número digitado, que pode ter sinal e ponto decimal. E se o cara só digitar o número você quer assumir o padrão como C já que é o normal no BR. O simples. Declare por exemplo: string unidades = "cCfFkK"; Para ajudar. Essas são as unidades e você já pode usar o índice no vetor e não precisa de conversões chatas. Veja o código. Esse trecho de código tem as chamadas que procura, e no final vai ter unidade e numero separadinhos para colocar em sua fórmula, e int pos = comando.find_first_of(unidades, 0); if (pos >= 0) { string letra = comando.substr(pos, 1); int pl = unidades.find_first_of(letra); if (pl > 3) unidade = 'K'; else if (pl > 1) unidade = 'F'; else unidade = 'C'; // tem a letra: agora o numero if (pos == 0) numero = atof( (comando.substr(1, string::npos)).c_str()); else numero = atof( (comando.substr(0, pos)).c_str() ); } else { unidade = 'C'; numero = atof(comando.c_str()); }; // if Esse trecho funciona para a letra antes do valor, a letra depois do valor, com espaço ou sem espaço entre a letra e o valor. E ainda assume C se o cara digitar só o valor. Ou seja, o esperado. Exemplos Se quer tratar a linha de comando, que é bem melhor, e depois de ter escrito esse pedaço, mais 3 linhas if (argc > 1) { // vieram letra e numero separados? comando.assign(argv[1]); if (argc > 2) comando.append(argv[2]); } else Porque funciona? Se tem mais de um argumento o cara digitou 123.3 C ou F123.4 ou -123K por exemplo Se digitou a letra separada tem 3 argumentos. Se digitou grudado antes ou depois tem só dois. Claro, o primeiro argumento sempre é o nome do programa, desde os '70. E comando era a variável que a gente tinha declarado antes. assign() copia uma string tipo C para uma string --- char* para string append() acrescenta uma string tipo C a uma string E então vai juntar em comando seja lá o que veio. E como antes já funcionava basta não ler comando de novo... Assim sendo se o programa for CVT.EXE pode usar E é muito melhor de usar porque já responde na hora e aceita o valor antes ou depois ou grudado ou não. E se não digitar nada ele entra no loop normal, naquele else... Foi o que eu quiz dizer inicialmente. Espero que ajude
-
Faz sentido... Viu o protótipo de fgetc()? int fgetc(FILE*); Pois é. E sabe o que é 0, certo? NULL Então você chamou fgetc(NULL) e fgetc() vai tentar ler um char de onde? De lugar algum. O parâmetro deve ser um ponteiro para um stream, um arquivo aberto. Use fgetc(stdin) e terá sucesso...
-
Você escreveu double fibonacci (int n) { int a=1,b=1,x,i; if(n==1) x=a; if(n==2) x=b; for(i=3;i<=n;i++) { x=a+b; a=b; b=x; } return x; } Mas não faz muito sentido: essa é uma sequência de números inteiros positivos. Porque não escrever int fibonacci (int N); Que retorna um int ao invés de double?. E se escreveu essa porque não escreve essa: int primo(int N); Que retorna digamos 1 se o N é primo? E aí usa as duas juntas? Pensando um pouco mais, entenda que a cada vez que vai chamar a função ela faz todas as contas desde o início, Não é muito esperto, já que vai repetir TODAS as contas, e o final é conhecido, certo? Afinal é uma sequência e vai retornar a soma dos dois últimos... Essa é a única memória da sequência de Fibonacci. Sabe o que isso quer dizer? Que a sequência de Fibonacci tem memória curta: 2 números Eis o início 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 A sua função a cada vez vai somar todo mundo a toa. E ai? Entenda que se você tem uma função que retorna o próximo Fibonacci e uma função que mostra se um número é primo e precisa dos N primeiros primos da sequência de Fibonacci basta um loop de 1 a N onde você pega o próximo na sequência de Fibonacci e se ele for primo você mostra e incrementa esse número de primos até N...
-
Acho que seria mais comum usar um programa assim. Le e converte e mostra. Perguntar um outro valor é meio chato de usar, certo? E na linha de comando é o mais comum desde que ela existe. Em C++ é mais fácil, eu acho. @devair1010 @Hugo Picello Cuidado com essa expressão: 5/9 dá zero e vai anular o produto...
-
isso já estava claro. Entendeu o que eu disse sobre já ser praticamente um programa em C e não ter nenhuma dificuldade em especial? Não usa nenhum recurso complicado de portar para C. Você conhece C++? C? Está portando de uma linguagem que conhece ou PARA uma linguagem que conhece melhor?
-
em que compilador isso não funciona? E que tem a ver com esse enum? adicionado 9 minutos depois Recomendo fazer o que se espera de um programa assim: ler os parâmetros e aceitar casos como 135F 12.5 C 340K F 345 C34.3 345 K C23.3 e tratar de acordo. Em resumo, a unidade original pode ser um sufixo ou prefixo e estar ou não colada à temperatura. Pode ser K C ou F e talvez em minúscula. Não é nada demais. São só 3 casos. Aceite eventuais parâmetros na linha de comando. Assim fica mais ágil e útil. Se o seu programa se chama cvt por exemplo, aceite cvt 22.3C por exemplo. É o que se espera de um programa desses. Imagine se um comando CD por exemplo ficasse perguntando "Para qual diretório deseja ir?" ... Seria igualmente chato. Tem que esperar alguém te ensinar mas sabe que tais comandos existem? E não pode abrir o livro e ver como é? Ou é proibido de usar algo até o mestre liberar? Afinal vai escrever isso em C ou C++?
-
Esse é já basicamente um programa em C. Não usa templates, herança, classes, polimorfismo, functors, nada. Nada de STL, apenas uso de streams via cout e cin que pode trocar por fprintf() ou printf(), e scanf() ou gets() ou fgets() e uma folclórica inacreditável chamada à sobrevivente getch() dos anos 80, direto da biblioteca conio que deveria ser esquecida Qual a sua dificuldade em particular nesse programa?
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