Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

AnsiC

Membros Plenos
  • Total de itens

    1.182
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

505

5 Seguidores

Sobre AnsiC

Informações gerais

  • Cidade e Estado
    Jurema/PE
  • Sexo
    Masculino

Meu Notebook

  • Marca
    DELL
  • Modelo
    INSPIRON 15R
  • Tamanho da tela
    15'
  • Processador
    Core i3
  • Chip gráfico
    3000M
  • Memória
    4 GB
  • HD
    300 Gb
  • Sistema Operacional
    Windows 10 Home
  • Browser
    Maxthon & Chrome
  • Antivírus
    Windows Defender

Meu Smartphone

  • Marca e modelo
    Motorola moto G Clássico

Outros

  • Biografia
    ...
  • Ocupação
    Funcionário no departamento Público de Informática
  • Interesses
    Programação na Linguagem C-Like
  1. Olá ! Poxa!!! Só mais uma tentativa, cuja diferença, é substituir a operação em printf por operação em vetor. Na tentativa de resolver esse problema, que não sei descrever. stringalizando_double /* Programa Principal */ #include <stdio.h> #include <string.h> /* Principal função do Programa */ int main( void ) { double cal_1; double cal_2; char cal_1_str[120]; char cal_2_str[120]; cal_1 = (1331108.20 * 10.70/100 - 22500.00) / 1331108.20; cal_2 = ( 200000.00 * 7.3/100 - 5940.00) / 200000.00; printf("%s \n","Antes de Stringalizar" ); printf( "%s %.7f \n","Valor em calculo ""1:",cal_1 ); printf( "%s %.7f \n","Valor em calculo ""2:",cal_2 ); printf( "\n\n" ); /* Stringalizando ... */ sprintf( cal_1_str,"%.7f",cal_1 ); sprintf( cal_2_str,"%.7f",cal_2 ); strchr( cal_1_str,'.' )[5] = '\0'; strchr( cal_2_str,'.' )[5] = '\0'; /* Stringalizado */ printf( "%s \n","Depois de Stringalizar" ); printf( "%s %s \n","Valor em calculo ""1:",cal_1_str ); printf( "%s %s \n","Valor em calculo ""2:",cal_2_str ); return 0x0; } Online GDB: stringalizando_double ~~/~~ Bons Códigos
  2. Manejo de caracteres na String. Basta saber o número de espaços a ser distribuído entre as palavras, [ignorando inclusive o que já tem lá].Pois, ao que parece, justificativa é aqui sinônimo de tamanho do campo. Imagine a situação: func_formatar( "Hello", "World", 20 ) Determina o número total de letras Subtrai do valor de espaços no campo Divido Dividir o resultado pelo número total caracteres nas de palavras E agora, sabe-se quantos espaços há entre palavras. @Estudante0123 Não fiz ainda. ~~~ Bons Códigos.
  3. Uma apresentação mediana é assim, eu sei porque meus professores me dizem o tempo todo: #include <math.h> #include <stdio.h> #include <string.h> struct Aluno { char nome[30]; char email[30]; float peso; float altura; float IMC; } cadaluno[20]; void func_imc( void ) { char p; float IMC; float peso; char * nome; float altura; int count, i; printf( "+--------------------------------------+\n" ); printf( "|4- LISTA DE INDICE DE MASSA CORPORAL |\n" ); printf( "+--------------------------------------+\n" ); for( i = count = 0; i < 20; i++ ){ if( cadaluno[i].nome[0] == '\0' ) continue; else count++; nome = cadaluno[i].nome; peso = cadaluno[i].peso; altura = cadaluno[i].altura; IMC = peso/(pow(altura,2)); printf( "+......................................+\n" ); printf( "| %2d:\t%-30.38s |\n|%38s|\n", i, nome,"" ); printf( "| IMC:\t%-30.2f |\n", IMC ); printf( "| Classificacao: "); if( IMC < 18.5 ) p = printf( "Baixo peso." ); else if( IMC > 18.5 && IMC < 25 )p = printf( "Peso ideal." ); else if( IMC > 25 && IMC < 30 )p = printf( "Sobrepeso." ); else if( IMC > 30 && IMC < 35 )p = printf( "Obesidade Grau 1." ); else if( IMC > 35 && IMC < 40 )p = printf( "Obesidade Grau 2." ); else if( IMC > 40 ) p = printf( "Obesidade Grau 3." ); printf( "%*s\n", 23-p, "|" ); } printf( "+--------------------------------------+\n" ); printf( "+-> Cadastros: %d \n\n", count ); return; } int main( ){ int opcao, i; /* Cadastro de Teste */ strcpy( cadaluno[19].nome, "Doidinho de Jesus e Maria" ); cadaluno[19].altura = 1.85; cadaluno[19].peso = 100.6; cadaluno[19].IMC = .0f; strcpy( cadaluno[18].nome, "Fulano de Jesus e Maria" ); cadaluno[18].altura = 1.85; cadaluno[18].peso = 80.6; cadaluno[18].IMC = .0f; /* Cadastro de Teste */ do { printf( "+-----------------------------+\n" ); printf( "|-----CADASTRO DE ALUNOS------|\n" ); printf( "+-----------------------------+\n\n" ); printf( "1- Cadastra aluno\n" ); printf( "2- Listar alunos\n" ); printf( "3- Apagar aluno\n" ); printf( "4- Listar IMC de alunos\n" ); printf( "0- Sair\n" ); printf( "\n<<< " ); scanf( "%d", &opcao ); switch( opcao ){ case 4: func_imc( ); /* Escrever Ìndice de Massa Corporal */ } }while(opcao != 0); return 0; } Boa Sorte. ~~ / ~~
  4. Olá@Gnomo Psicodélico Não, é apenas um modelo que crie para realizar o teste. #include <stdio.h> #include <stdlib.h> // EXIT_SUCCESS #include <string.h> // strchr() /* Principal função do Programa Retorna ------- */ int main( void ) { unsigned char real_str[18]; unsigned char * s; double real; /* Declaração de Variáveis */ real = (1331108.20 * 10.70/100 - 22500.00)/1331108.20; /* Não queremos apresentar esse valor redondo */ sprintf( real_str, "%f", real ); /* 1º Salvamos o resultado na :real_str: string sprintf converte o valor real para string */ s = strchr( real_str, '.' ); /* 2º Localizamos o dot (.) e armazenamos a posição no :s: pointer strchr vai retorna o ponteiro da primeira ocorrência de dot (.) só exite uma e armazenamos sua posição em s */ printf( "%.*s", (int)(s - real_str)+5, real_str ); /* Enfim, escrevemos no prompt Nota ---- A opereção: (int)(s - real_str)+5 se resume em aritmética de ponteiros onde :s: é um posição númericamente maior que :real_str: tal que a di- ferença deles é o número de casas decimais antes de dot (.) */ return EXIT_SUCCESS; /* Finaliza o programa */ } O que achou dessa solução, (Pensei nela agora e )? Foi o que eu disse: Boa Sorte ~~/~~
  5. Neste caso você está comparando o endereço da memória de :nome: com o de uma string nula. Não vai funcionar do jeito que esta pensando. Já assim: if (cadaluno[i].nome[0] == ""[0]) continue; Se nome, estiver vazio, e o vetor[cadaluno] foi inicializado, ou até mesmo se a posição atual foi excluída; deve funcionar. adicionado 2 minutos depois Pessoal aqui é fera, vamos te ajudar. Mas isso só será possível se começar a usar procedimentos (funções) adicionado 6 minutos depois Mesmo que não faça a apresentação do quadro acima, porém funções tem que fazer, vai por mim.
  6. Rapaz começa a colocar essas soluções em funções, porque se não, a main vai ficar entupida. Aquela massa de código terrível e desgostosa. Faça uma apresentação bonitinha para essa lista, tipo assim: +------------------------------------------------+ | LISTA DE INDICE DE MASSA CORPORAL - IMC | +----------------------------+--------+----------+--------+-------------------+ | | | | | | | NOME | PESO | ALTURA | IMC | CLASSIFICACAO | | | | | | | +----------------------------+--------+----------+--------+-------------------+ + Fulano de Tal da Silva | 78.500 | 1.8500 | 64.0 | Peso ideal + +----------------------------+--------+----------+--------+-------------------+
  7. #include <stdio.h> // printf #include <stdlib.h> // EXIT_SUCCESS /* Principal função do Programa Retorna ------- */ int main( void ) { double real = 0; /* Declara variável real do tipo double */ real = (1331108.20 * 10.70/100 - 22500.00)/1331108.20; /* Versão C' do cálculo */ printf( "REAL: = %.6f \n", real ); // printf( "REAL: = %.4f \n", real ); // /* O "problema" acontece apenas na apresentação dos dados, para qual exigiu-se arredondamento, floor. Recomenda-se não reduzir para menos de 6 dígitos de precisão. */ return EXIT_SUCCESS; /* Finaliza o programa */ } Boa Sorte ~~/~~
  8. C maior entre dois inteiros

    Quando omitido o tipo, o modificador adota o padrão int. Escrever desta forma é tão ingênuo que ninguém mais se arisca faze-lo ou relembrar tal conceito. Porém obrigado! Claro que funciona! Ocorreu-lhe que não?! [Pesquisou onde] pelo motivo já citado. Boa Sorte ~~ / ~~
  9. Olá! Isso depende da precisão da variável real. Seu resultado é: 0.0900967910797935 Veja que existe vários '9s' perigando o arrendondamento: 0.0900967910797935 Daí a precisão da variável ser tão importante no caso.
  10. Realize todas as mudação pospostas @Alexandre Tarouco Abaixo segue apenas os fragmentos com as observações parciais #include<stdio.h> #include<stdlib.h> /* Foram desativados por motivo deuso momentaneo */ //#include<conio.h> //#include<string.h> struct Aluno // No enunciado seu nome é próprio [Aluno] e não [aluno] { ... }; struct Aluno cadaluno[20]; int main( ) { int opcao, i; do{ ... scanf( "%d", &opcao ); // Checado switch( opcao ){ case 1: /* (1) Existem especificações no enunciado ignoradas / inexiste- tentes nessa parte, porém devem ser atendidas aqui: 1. Cadastra aluno (apenas 1, escolhendo a posição de 1 a 20). ------------------------------------------------------------ Esse trecho nos leva ao entendimento de que o usuário ainda tem de escolher ¹folha de cadastro para preenchiento. E não é exatamente o que está acontecendo. Pelo contrário não há escolha, e todos as ¹folhas de cadastro são vista no mesmo instante. ¹ Posições no Vetor :cadaluno: */ for( i = 0; i < 20; i++ ){ ... scanf ( "%f", &cadaluno[i].peso ); // Checado ... scanf ( "%f", &cadaluno[i].altura ); // Checado fflush( stdin ); } break; case 2: for( i = 0; i < 20; i++ ){ printf( "%d: %s - %s - %.2f - %.2f - %.2f", // Checado i, cadaluno[i].nome, cadaluno[i].email, cadaluno[i].peso, cadaluno[i].altura, cadaluno[i].IMC ); } break; ... } }while ( 1 ); // Checado return 0; } Qualquer coisa nos pergunte mais Boa Sorte ~~/~~
  11. C maior entre dois inteiros

    Para ser mais claro, haja vista que é um exercício dos mais introdutório, me resta fazer dois exemplos. /* Com um loop podemos percorrer todos os valores de uma matriz que representa também o número de iterações. A função em questão compara 2 valores, e reto rna aquele que é o maior. Com isso, pode-se guardar o valor campeão de cada iteração ... */ #include <stdlib.h>/* EXIT_SUCCESS */ #include <stdio.h> /* printf() */ /* Retorna o maior valor (a ou b) Por meio de operador ternário ( ? ) testa qual de dois valores é o maior retornando camada superior o campeão. RETURN: TRUE > FALSE? TRUE:FALSE Nota ---- Essa função pode ser reduzida a macro, entretanto, não significa nada em termos de desempenho na atualidade. Parâmetro --------- a: int Primeiro valor da propósição, e hipoteticamente o MAIOR valor b: int Segundo valor da propósição, e hipoteticamnte o MENOR valor Retorno ------- */ int maior(int a, int b) { return a > b? a:b; /* Se 'a' é maior que 'b'? retorne a, se não retorne b; */ } /* A principal função do Programa Nota ---- Não precisa se preocupar com o 'parâmetro' void, pois se trada de uma conversão antiga que melhor releva a inexistência de parâmetros, 'void' nesse contesto, de fato, nos diz 'nenhum' parâmetro. Retorno ------- */ int main( void ) { int v[10] = {12, 4, 5, 78, -4, 18, 542, 0, 45, -72}; /* Declara matriz do tipo inteiro com 10 itens */ /* Exemplo 1:*/ unsigned item = 0; /* Contador de iterações while */ while(item < 10){ v[0] = maior(v[0], v[item]); item++; /* Por hipoteses consideramos o primeiro valor na matriz, e no parâmetro da função; como sendo inicialmente o maior, permanecemos assim até o fim das iterações while. Nota: Se por acaso modificar o primeiro elemento da matriz é proibido / ou inconveniente, basta declarar outra variável para salvar o valor campeão. Exemplo 2: int v[10] = {12, 4, 5, 78, -4, 18, 542, 0, 45, -72}; int m = v[0]; // Por hipotese dizemos que o maior valor é o primeiro e preservamos int i; for(i = 0; i < 10; i++){ m = maior(m, v[i]); // A variável campeão 'm' participa de todas iterações */ } printf("O maior valor no vetor: %d\n", v[0]); /* Exemplo 2: printf("O maior valor no vetor: %d\n", m); */ return EXIT_SUCCESS; /* Finaliza o programa */ } Obervação: O conteúdo no interior de /* */ são comentários e outra possibilidade de resolução (existem muitas análogas) Ainda estou exercitando a didática da coisa; ainda sim estou impressionado, culpo o meu 'português ingenuo' ! Boa Sorte ~~ / ~~
  12. Bem simples, tirando o papo das estruturas o que sobre é manipulação de vetores. Qual o problema?
  13. Existem varias versões de como se fazer essa tarefa Time_execute TIME_EXECUTE
  14. C maior entre dois inteiros

    Com um loop podemos percorrer todos os valores de uma matriz que representa também o número de iterações. A função em questão compara 2 valores, e retorna aquele que é o maior. Com isso, pode-se guardar o valor campeão de cada iteração. Daí basta garantir que esse campeão seja um dos 2 termos da próxima iteração, repetindo esse procedimento até que todos os valores na matriz sejam testados. Para ser mais preciso poderia fazer pseudocódigo, porém é mais fácil escrever o programa, pois o algoritmo é iniciante e não faz sentido nenhum uma tentativa que não seja diretamente escrita em C. Contudo, espero que tenha entendido e pelo menos faça umas tentativas de resposta. Dica: Garanta que o maior valor seja sempre, sempre a primeira posição na matriz, v[ 0 ], Boa Sorte
  15. Olá @Cristina2000 O procedimento pow(...) retorna tipo real [Float ou Double] no caso, é double. Daí o ideal é que a variável que receberá o retorno seja também do tipo double com isso evita truncagem, é muita mais consistente e legal. Online GDB: math :: pow

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×