Ir ao conteúdo
  • Cadastre-se

Isis Binder

Membro Pleno
  • Posts

    102
  • Cadastrado em

  • Última visita

  1. Pode começar procurando as bibliotecas de rede pra isso, que normalmente são específicas de S.O. ou extensões.
  2. Dica: "Compilador acusa erro nessa linha" sem dizer o erro não informa nada. Compiladores devolvem texto quando há erro de compilação. O problema é que o argumento da função é do tipo float, mas você passa um float * (ponteiro p/ float). Outro detalhe: as variáveis pertencem ao escopo do arquivo (vulgo "global"). Não é necessário passá-las como argumento porque elas estão disponíveis para todos os blocos dentro do arquivo. Outra coisa: a função retorna float e você imprime com %s... #include <stdio.h>#include <errno.h>#include <string.h>#include <stdlib.h> float calcular_media(float * notas, int alunos); int main (void) { int numero_alunos; printf("Informe o numero de alunos: "); scanf("%d%*c", &numero_alunos); float * notas = (float *) malloc(numero_alunos * sizeof float); if (!notas) { printf("%s\n", strerror(errno)); /* http://linux.die.net/man/3/malloc */ return errno; } for (int i = 0; i < n ; i++) { prinft("Informe a nota %d", i+1); scanf("%f%*c",&notas[i]); } float media = calcular_media(notas, numero_alunos); printf("A mèdia das notas é %.2f", media); free(notas); return 0;} float calcular_media(float * notas, int alunos) { float soma = 0.0; for (int i = 0 ; i < alunos ; i++) { soma += notas[i]; } return notas/alunos;}
  3. Pegando um papel e simulando a execução instrução por instrução.
  4. Primeiro decida-se sobre qual linguagem vai usar, porque há cabeçalhos de C misturados com C++. Namespace é coisa de C++, não de C. Isso é genérico demais. Especifique o erro. Lembre-se que se você enviar um bug report nesse estilo p/ uma empresa tipo a Microsoft, ninguém vai arrumar o problema porque ninguém vai saber qual é o erro e o que você fez. #include <stdio.h>#include <math.h>float calcular_custo_area_banho_sol(float area_banho_sol, float lado_lajota, float preco_m2_lajota);float calcular_custo_piscina(float largura_piscina, float comprimento_piscina, float profundidade_piscina, float area_unitaria_azulejo, float preco_m2_azulejo); int main(void) {float area_banho_sol;printf("Informe a área destinada ao espaço de banho de sol: ");scanf("%f", &area_banho_sol); float lado_lajota;printf("Informe a medida do lado da lajota (a ser utilizada na área de banho de sol): ");scanf("%f", &lado_lajota); float preco_m2_lajota;printf("Informe o preço por metro quadrado da lajota (a ser utilizada na área de banho de sol): ");scanf("%f", &preco_m2_lajota); float largura_piscina, comprimento_piscina, profundidade_piscina;printf("Informe, respectivamente, o comprimento, largura e profundidade da piscina: ");scanf("%f %f %f", &comprimento_piscina, &largura_piscina, &profundidade_piscina); float comprimento_azulejo, largura_azulejo;printf("Informe, respectivamente, o comprimento e a largura do azulejo (para a piscina): ");scanf("%f %f", &comprimento_azulejo, &largura_azulejo); float preco_m2_azulejo;printf("Informe o preço por metro quadrado do azulejo (para a piscina): ");scanf("%f", &preco_m2_azulejo); float custo_area_banho_sol = calcular_custo_area_banho_sol(area_banho_sol, lado_lajota, preco_m2_lajota);float custo_area_piscina = calcular_custo_piscina(largura_piscina, comprimento_piscina, profundidade_piscina, comprimento_azulejo * largura_azulejo, preco_m2_azulejo);float volume_agua = comprimento_piscina * largura_piscina * profundidade_piscina; printf("Custo da área de banho de sol: %.2f\n", custo_area_banho_sol);printf("Custo da piscina: %.2f\n", custo_area_piscina);printf("Custo total: %.2f\n", custo_area_banho_sol + custo_area_piscina);printf("Volume de água: %.2f\n", volume_agua);return 0;} float calcular_custo_area_banho_sol(float area_banho_sol, float lado_lajota, float preco_m2_lajota) {float area_unitaria_lajota = lado_lajota * lado_lajota;float qtde_lajotas = (float) ceil(area_banho_sol / area_unitaria_lajota);return qtde_lajotas * area_unitaria_lajota * preco_m2_lajota;} float calcular_custo_piscina(float largura_piscina, float comprimento_piscina, float profundidade_piscina, float area_unitaria_azulejo, float preco_m2_azulejo) {float area_comprimento_profundidade = comprimento_piscina * profundidade_piscina;float qtd_azulejos_comp_prof = (float) ceil(area_comprimento_profundidade / area_unitaria_azulejo);float custo_m2_comp_prof = preco_m2_azulejo * qtd_azulejos_comp_prof * area_unitaria_azulejo; float area_largura_profundidade = largura_piscina * profundidade_piscina;float qtd_azulejos_lar_prof = (float) ceil(area_largura_profundidade / area_unitaria_azulejo);float custo_m2_lar_prof = preco_m2_azulejo * qtd_azulejos_lar_prof * area_unitaria_azulejo; return 2 * (custo_m2_comp_prof + custo_m2_lar_prof);}
  5. Eu ficaria longe desse livro. Até onde sei, a edição que você vai encontrar em português é a 3a, de 1996, o que a transforma em algo já bem antigo. Outro motivo é que caso você realmente queira enfiar o pé na linguagem, vai ter uma noção completamente "arcaica" da capacidade da mesma. Por que? Já no começo do livro o autor declara: "C não efetua nenhuma verificação no tempo de execução, como a validação dos limites das matrizes". Hoje, levando em conta o ISO C11, pode não ser mais verdade. Da última vez que vi, essa era uma funcionalidade que constava num TR-1, uma extensão ao padrão (veja o caminho aqui: http://www.iso.org/iso/home/standards_development/deliverables-all.htm?type=tr) http://www.iso.org/iso/home/search.htm?qt=24731&published=on&active_tab=standards&sort_by=rel http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1173.pdf http://en.cppreference.com/w/c/io/fprintf Outra citação do livro: "Outro aspecto importante de C é que ele tem apenas 32 palavras-chaves" No final draft que tenho do ISO C99 são 37. Outra clássica: "C++ é um superconjunto de C". Não. É uma linguagem diferente, obrigada. Apenas recentemente os dois grupos de trabalho se uniram em conversa nos trabalhos de padronização. E continuam existindo padrões diferentes p/ as duas linguagens. É de lá o eterno "void main" sem explicação alguma (C99-5.1.2.2.1 - "The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters or with two parameters (referred to here as argc and argv...) or equivalent; or in some other implementation-defined manner"); o uso de gets (que foi removida do C11) e o conceito de passagem de argumentos por referência (http://denniskubes.com/2012/08/20/is-c-pass-by-value-or-reference/). O resto do livro é apenas referência, que você pode encontrar nas manpages do Linux por aí na internet e até mesmo no draft do próprio padrão. A parte de algoritmos realmente é a mais interessante, mas p/ um livro intitulado "C completo e Total" (pt-br), isso está meio fora do escopo. Ainda mais com tantos livros bons de algoritmos, como o do Sedgewick e do Knuth (observação: "bom" não significa que você vai entender a coisa toda sem as matérias básicas de um curso de ciência da computação) Lista de algumas coisas das quais você não terá notícias lendo esse livro (ou qualquer outro desatualizado): http://blog.smartbear.com/codereviewer/c11-a-new-c-standard-aiming-at-safer-programming/
  6. Funciona sim. É só um \n que ficou na entrada. #include <iostream>#include <locale>#include <string>#include <limits>#define MAX_PESSOAS 3using namespace std; int main (){string nomes[MAX_PESSOAS];float alturas[MAX_PESSOAS]={0.0F}, pesos[MAX_PESSOAS]={0.0F};char sexos[MAX_PESSOAS]; float total_peso = 0.0F;int qtde_homem = 0, qtde_mulheres = 0;int pos_pessoa_mais_alta = 0;int pos_pessoa_mais_baixa = 0; int i; for(i=0; i<MAX_PESSOAS; i++) {cout << "Digite o seu nome : ";getline(cin,nomes[i]); cout << "Digite sua altura : ";cin >> alturas[i]; if (alturas[i] > alturas[pos_pessoa_mais_alta])pos_pessoa_mais_alta = i; if (alturas[i] < alturas[pos_pessoa_mais_baixa])pos_pessoa_mais_baixa = i; cout << "Digite seu peso : ";cin >> pesos[i];total_peso += pesos[i]; cout << "Digite o seu seu sexo M/F : ";cin >> sexos[i];cin.ignore(numeric_limits<std::streamsize>::max(), '\n'); if (tolower(sexos[i]) == 'm') {qtde_homem++;} else qtde_mulheres++; } cout << "Quantidade de pessoas com sexo masculino : " << qtde_homem << " pessoas.\n";cout << "Percentual de pessoas com sexo masculino : " << qtde_homem*1.0/MAX_PESSOAS << endl;cout << "Quantidade de pessoas com sexo feminino : " << qtde_mulheres << " pessoas.\n";cout << "Percentual de pessoas com sexo feminino : " << qtde_mulheres*1.0/MAX_PESSOAS << endl;cout << "Media de peso dos participantes : " << total_peso/MAX_PESSOAS << " kg.\n";cout << "Pessoa mais alta : " << nomes[pos_pessoa_mais_alta] << ". Altura = " << alturas[pos_pessoa_mais_alta] << " m.\n";cout << "Pessoa mais baixa : "<< nomes[pos_pessoa_mais_baixa] << ". Altura = " << alturas[pos_pessoa_mais_baixa] << " m.\n"; return 0;}
  7. Não diga apenas que está dando erro em tempo de execução. Diga o que acontece. Aqui não aconteceu nada de diferente do esperado.
  8. Preste atenção no que escreve : é MAIN, não MAN
  9. Isis Binder

    Help -me

    O mínimo na primeira entrada é a própria entrada, porque não há com o que comparar.
  10. Primeiro decida se você vai programar em C ou C++. Depois monte o código.
  11. Material em português é tenso, mas o único que conheço (português nativo mesmo, com autor brasileiro) é esse: https://www.goodreads.com/book/show/25128837-elementos-de-programa-o-em-c Tem umas partes de arquitetura de computadores que você pode tranquilamente pular, mas ele dá uma ênfase maior no ISO C justamente por questões de portabilidade mínima do código. O curso te obriga a dar a matéria em C? Se não, por que não tenta ensinar lógica com Python? Apesar de ter alguns detalhes sórdidos (toda linguagem tem os seus), é bem mais rápido p/ galera pegar (não tem que ficar se preocupando a todo momento com declarações extern, const, variável automática, essas tralhas) , tem bem mais coisas na biblioteca padrão e as bibliotecas de terceiros são muito mais fáceis de se instalar caso você precise de algo específico p/ área.
  12. Dev C/C++ não é compílador, é IDE. Já começa por aí. A IDE só exibe os erros que o compilador consegue capturar. O conjunto de ferramentas de desenvolvimento que ela utiliza é o MingW, que é um port p/ windows do GCC + as bibliotecas específicas do windows. Até onde eu sei, é uma IDE bem antiga1. Conio.h é um cabeçalho da época do DOS. Acredito que a maioria dos compiladores online roda em Linux, ou seja, não vai ter conio.h mesmo. No teu primeiro link, é só dar uname -a na janela do terminal que você vai ver 'Linux' listado. Além de ser coisa do DOS2, é p/ terminal, então seria necessário ter uma implementação que funcionasse nos terminais disponibilizados no Linux. Se eu fosse você simplesmente parava de usar esse cabeçalho e me focava no ISO C, que já é bem complexo p/ entender, mas responde com mais detalhes várias dúvidas, principalmente quanto ao tempo de vida das variáveis e escopo. A aplicação mais comum da conio.h é dar cor aos caracteres. Isso acaba tirando o foco dos alunos da lógica p/ frufrus de terminal3. Uma outra coisa que o pessoal utiliza da conio.h é a função getch(), porque o terminal no Windows fecha e ninguém vê o resultado ou porque o programa passa direto por determinados scanf. Ao invés de usar isso, leia as entradas com fgets ou scanf("%d%*c"), coisas que funcionam em outras plataformas por estarem especificados no ISO C. Se quiser usar outro compilador localmente, dentro da IDE, no lugar do MingW: http://llvm.org/releases/download.html 1- Por que não usa o eclipse? 2- Se você está num Windows, por que não usar a WINAPI ao invés da conio.h? https://msdn.microsoft.com/en-us/library/windows/desktop/ff818516(v=vs.85).aspx 3- Se é p/ fazer programa bonitinho, com interface, no Windows, é melhor utilizar SDKs com suporte a interface gráfica.
  13. Isis Binder

    Duvida em c++

    Se o usuário digitar 1 e não houver nada dentro do bloco, o programa vai ser terminado normalmente.
  14. Isis Binder

    Help -me

    #include <iostream> using namespace std; int main(){ int n, menor, primeira_entrada=1; do { cout << "Informe um inteiro: "; cin >> n; if (n) { if (primeira_entrada) { menor = n; primeira_entrada = 0; else { if (n < menor) menor = n; } } } while (n); if (primeira_entrada) { cout << "Não foi informado nenhum número.\n"; } else cout << menor << endl; return 0; }

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