Ir ao conteúdo
  • Cadastre-se

Isis Binder

Membro Pleno
  • Posts

    102
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de Isis Binder em Ajuda com função/procedimento em C foi marcado como solução   
    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);}
  2. O post de Isis Binder em getline nao funciona c++ foi marcado como solução   
    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;}
  3. O post de Isis Binder em Duvida em c++ foi marcado como solução   
    Se o usuário digitar 1 e não houver nada dentro do bloco, o programa vai ser terminado normalmente.
  4. O post de Isis Binder em Erro no codigo. foi marcado como solução   
    Isso seria "facilmente resolvido" declarando-se o array com static dentro da função, mas arrays de tamanho variável são obrigados a ter duração automática. Ou seja, nada de static.
     
    Mas vamos à saída do compilador:
     
     
    Coisas que você não está fazendo no código e deveria:
    1- Verificar o retorno de calloc. Caso a função retorne NULL você terá um SIGSEGV.
    2- Dar free nos ponteiros que alocou (o programa tem vazamento de memória).
    #include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h> int * elimina(int * vetor, int tamanho, int * novo_tamanho) { int * non_dup = malloc(1 * sizeof(int)); // haverá pelo menos 1 número a ser inserido nesse array. if (!non_dup) { printf("[ERRO] @%d: %s\n", __LINE__-3, strerror(errno)); free(vetor); return EXIT_FAILURE; } int i; int j, tamanho_non_dup = 1; int * tmp_non_dup = NULL; non_dup[0] = vetor[0]; for (i = 1; i < tamanho; i++) { // Verifica se o array de não duplicatas contém o elemento visitado no array original. for(j=0; j < tamanho_non_dup && vetor[i] != non_dup[j]; j++); if (j >= tamanho_non_dup) { // Nunca atribua diretamente à variável que deve ser realocada, pois é possível gerar NULL // como retorno e os dados seriam perdidos na atribuição. tmp_non_dup = realloc(non_dup, (tamanho_non_dup+1) * sizeof(int)); if (!tmp_non_dup) { printf("[ERRO] @%d: %s\n", __LINE__-3, strerror(errno)); } else { non_dup = tmp_non_dup; non_dup[tamanho_non_dup] = vetor[i]; tamanho_non_dup++; } } } (*novo_tamanho) = tamanho_non_dup; return non_dup;} int main(void) { int tamanho; int * vetor; printf("Digite o tamanho do vetor: "); scanf("%d%*c", &tamanho); if (tamanho < 1) { puts("O tamanho não pode ser menor que 1."); return EXIT_FAILURE; } vetor = calloc (tamanho, sizeof (int)); if (!vetor) { printf("[ERRO] @%d: %s\n", __LINE__-3, strerror(errno)); return EXIT_FAILURE; } int i; for (i=0; i<tamanho; i++) { printf("Vetor[%d]: ", i); scanf("%d%*c", &vetor[i]); } int * resultado; int tamanho_non_dup; resultado = elimina(vetor, tamanho, &tamanho_non_dup); for (i=0; i<tamanho_non_dup; i++) printf ("%d ", resultado[i]); free(resultado); free(vetor); return 0;}
  5. O post de Isis Binder em Separa o código em diferentes arquivos foi marcado como solução   
    arvore.h: 
    struct NoArvore{ int elem; struct NoArvore *esq,*dir;};struct Arvore { int niveis; struct NoArvore * raiz;};void inserir(struct NoArvore * a_inserir, struct Arvore * arvore);void remover(struct NoArvore * a_remover, struct Arvore * arvore);void pesquisar(int elemento, struct Arvore * arvore);void percurso_em_nivel(struct Arvore * arvore); Lista.h:
    #ifndef _ARVORE_#define _ARVORE_#include "arvore.h"#endifstruct NoLista { struct NoArvore * p; // Aqui será armazenado o endereço do elemento. struct NoLista * proximo;};void lista_inserir(struct NoLista * a_inserir, struct NoLista * pai);void lista_remover(struct NoLista * a_remover);void lista_exibir(struct NoLista * origem); No main você pode usar o mesmo truque das macros p/ evitar inclusão duplicada.
    Note que você poderia meio que se livrar de incluir a lógica do armazenamento na lista na função percurso_em_nivel se passar um ponteiro p/ função (só dê uma olhada nos efeitos de se passar NULL pra esse tipo de coisa, porque não lembro se existe algum problema):
    void percurso_em_nivel(struct Arvore * arvore, void (*store_traversal_function) (void *, void *)) { // Lógica do percurso na árvore // A cada nó visitado é possível executar a função store_traversall_function com // store_traversal_function(no_visitado, lista) // No seu caso, seria a função de inserção na lista. if (store_traversal_function) { struct NoLista * n = malloc(sizeof(struct NoLista)); // Verificação do retorno AQUI store_traversal_function(n, lista); }} No main a chamada seria   percurso_em_nivel(arvore, lista_inserir);
     
    http://www.geeksforgeeks.org/level-order-tree-traversal/

    Edit: falei lista, mas é fila.
  6. O post de Isis Binder em Formatar Saída da Matriz foi marcado como solução   
    Operador ternário
  7. O post de Isis Binder em Ajuda em codigo foi marcado como solução   
    - nome deveria ser char[] e não apenas 1 caractere.
    - Ou você usa o tipo definido por typedef ou não usa typedef e declara struct ficha.
    - Existem chaves sobrando.
    - A formatação dos pontos flutuantes está errada. Não se usa vírgula; é um ponto decimal.
    - Você não inicializa a variável salref antes de usar.
    - A inicialização da struct está errada (usando o -pedantic e -std=c99 aparece como sendo função aninhada). Ao trocar por ficha r = {0, "", 0, 0}, funciona.
  8. O post de Isis Binder em Erros com matriz de string! foi marcado como solução   
    Isso quer dizer que você está usando um tipo de dados para o qual não tem método/função que utilize ele como argumento. Ou seja, nenhuma assinatura de template ou protótipo aceita aquele tipo.
  9. O post de Isis Binder em Manipulação de strings em C++ foi marcado como solução   
    Ao informar 1 ou 0 (primeira pergunta) o \n fica na entrada padrão e é consumido na leitura seguinte.

     
    #include <iostream>#include <algorithm>using namespace std;int main(void) { string texto; char letra; int opcao = 1; int contagem = 0; while(opcao) { if(opcao == 1){ cout << "Digite o texto no qual a pesquisa devera ser feita: " << endl; getline(cin, texto); cout << "Qual letra voce deseja contar? "; cin >> letra; contagem = count(texto.begin(), texto.end(), letra); if (!contagem) { cout << "Não foi encontrada nenhuma ocorrência.\n"; } else { cout << "Ocorrências: " << contagem << endl; } } cout << "Deseja continuar? (1/0): "; cin >> opcao; cin.ignore(1, '\n'); // Necessário p/ ignorar o \n preso na entrada. } 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!