-
Posts
11 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por eduheavy
-
-
O programa deverá solicitar a entrada de uma string (máximo de 30 caracteres) com caracteres decimais, a string pode possuir caracteres utilizados para formatação do valor como: .(ponto), -(traço), virgula e outros;
FEITO
solicitação da entrada de strings será finalizada apenas quando o usuário digitar “FIM” em qualquer padrão. Mensagem: "Digite 'FIM' para encerrar o programa.”;
ACHO QUE ESTÁ CORRETO
Caso o usuário digite uma string onde não seja possível calcular o dígito verificador, emitir a mensagem: "Atenção!!! Valor informado inválido."
O cálculo do dígito verificador de ser realizado por uma função com nome “calcula_dv”
FEITO
A string informada pelo usuário deve ser passada para a função calcula_dv() através de chamada por valor;
FEITO PARCIALMENTE
A função calcula_dv() deve retornar um valor inteiro, ou seja, se o cálculo for bem sucedido retornar DV, caso contrário retornar valor -1;
Se cálculo do DV for bem sucedido enviar mensagem para o usuário: DV calculado com sucesso: + string digitada + “-“ + DV calculado.
TRAVEI NESSA PARTE
Regras para cálculo do dígito verificador módulo 11.
Para obter o DV da string digitada pelo usuário, multiplica-se cada caracter da string sem o DV pelos multiplicadores 9,8,7,6,5,4,3,2 nesta ordem (repetir está sequência quantas vezes for necessário), soma-se as unidades das dezenas.
/******************************************************** Programa: Objetivo: Autor: Luiz Eduardo E. de souza Data: **********************************************************/ #include <stdio.h> #include <locale.h> #include <string.h> #include <stdlib.h> void calcula_dv (void); int main() { char texto[30], aux_conv[2] = {'\0','\0'}; int i, peso = 2, valor; setlocale(LC_ALL, "Portuguese"); printf("Desenvolvido por: \n"); printf("Luiz"); printf("\n\n\nEntre com uma string com valores decimais (máximo 30 caracteres):\n"); printf( "Digite FIM para encerrar o programa:\n" ); fgets(texto, 30, stdin); texto[strlen(texto)-1]='\0'; strupr(texto); //coloca todo texto em maiúscula if(texto == "fim") { return 0; } valor = atoi(texto); // converte em int calcula_dv(); printf("DV calculado com sucesso: " "%c", texto, "-" ,"%d" valor); } void calcula_dv (void) { for(i=strlen(texto)-1; i >=0; i--) { aux_conv[0] = texto[i]; soma = atoi(aux_conv) * peso; } }
-
@arfneto estou totalmente travado
#include<stdio.h> #include<locale.h> //#define TOTREG 3 #define TOTREG 3 //typedef struct typedef struct { char num[31]; } Pessoa; Pessoa pes[TOTREG]; //char num [30]; //}entrada_dados; //entrada_dados dados [TOTREG]; //************************************************FUNÇÃO CALCULA_DV******************************************************************// void caucula_dv(){ } //***********************************************************************************************************************************/ main() { setlocale(LC_ALL, "Portuguese"); char idx; char FIM; printf("Desenvolvido por:\n\nIsrael Carlos\nLuiz Eduardo\nGuilherme Garbin\n\n"); printf( "Digite FIM para encerrar o programa:\n" ); for(idx=0;idx<31;idx++) { printf("Entre com uma string com valores decimais (máximo 30 caracteres):\n"); scanf ("%c", &idx); if(idx < 0 ) { printf("\nAtenção!!! Valor informado inválido.\n\n"); } if (idx == FIM) { } } } //FIM DO PROGRAMA
-
19 horas atrás, arfneto disse:
Por favor, não faça isso. Você anexou um link para um arquivo externo. Eis o que eu DEVO fazer então:
- vou abrir um arquivo compactado de destino desconhecido
- depois vou ter que arrumar algo para abrir uma biblioteca do tipo rar, que não é portável. zip seria mais como no Windows, rpm no Linux.
- Aí vou extrair os arquivos para uma pasta do MEU computador para poder ler
- E esse é um forum público. Cada um que achar que pode ajudar e cada um com um problema semelhante vai ter que fazer a mesma coisa se quiser entender
Outra opção:
- você posta o conteúdo bem aqui na tela
Qual opção eu prefiro
a segunda. Não me leve a mal.Mil desculpas, entendo seu ponto nessa questão, é que como eu vi que o fórum permite o compartilhamento .zip ou .rar achei que não teria este problema, mas entendi sim o que quis dizer.
-
3 horas atrás, arfneto disse:
Não escreva seus programas assim. Vai levar uma eternidade para fazer. Outra para testar. E com duas eternidades já gastas pode ficar tudo difícil e faltar tempo.
Pode fazer o contrário e começar então por um programa simples que chama a tal função. É trivial. O que importa é prosseguir logo. Testar logo.
Copiando um trecho do enunciado e acrescentando uns números
para formatacao do valor como: .(ponto), -(traco), virgula 1234 e 5678 outros;"
levou 10s. É claro que a string tem traços e ponto e vírgula já que eu copiei do enunciado e claro que tem uns números porque dá pra ver daqui. E eles estão até separadinhos para ter mais graça...
E escrever um programa assim:
#include <stdio.h> int DV( const char*); int main(void) { const char string[] = { "\ para formatacao do valor como: .(ponto), -(traco), virgula 1234 e 5678 outros;" }; printf( "Exemplo de entrada: \"%s\"\n", string); int valor = DV(string); printf( "DV() retornou %d\n", valor ); return 0; } int DV(const char* linha) { return -1; } // fim do grande programa
quanto tempo leva?
E rodar o tal programa?
ch$ gcc x.c ch$ ./a.out Exemplo de entrada: "para formatacao do valor como: .(ponto), -(traco), virgula 1234 e 5678 outros;" DV() retornou -1 ch$
E não é que funcionou?
E agora? Sabe que a string deve virar "12345678" que são os números que tem lá, certo?
E os multiplicadores não são
E então não deve dar pra multiplicar os caras e somar?
12345678 98765432 9 + 16 + 21 + 24 + 25 24 + 21 + 16 = 156 ? 156 * 10 = 1560, 1560 = 141 * 11 + 9 então DV() deve retornar 9 12345678-9 seria o oficial então ...
Você cortou a definição mas uma maneira popular é somar essas parcelas, multiplicar por 10 e usar o módulo 11 como DV. Tem métodos que somam os dígitos das parcelas --- 24 somaria 6 por exemplo --- e não o total, mas não faz diferença: faça o que tem que fazer apenas.
Entende o que quero dizer? O que importa é testar logo. chegar a algo. Não "travar" se ainda sabe fazer algo.
Anexei o exemplo de como ele deve ficar para ficar mais claro.
-
16 minutos atrás, arfneto disse:
Então não sabe nem declarar uma função
cujo nome está aí acima. recebe um valor e retorna um valor inteiro que ;e o DV ou -1?
Tem um livro? Uma apostila? Já escreveu algum programa?
Essa parte também não saberia escrever? um loop lendo e mostrando uma string e que para quando a string for "fim"?
E se conseguir isso não conseguiria fazer um loop, do índice 0 até o fim da string, ignorando os caracteres que não sejam numero e mostrando na tela?
E se conseguir isso não pode declarar um contador e ir multiplicando os dígitos conforme aparecem na string pelos pesos
e somando até chegar ao valor do DV?
Consegue calcular o DV de seu RG usando essa técnica? De um CPF? do número 1234?
O problema é a parte do Dv vou escrever as demais partes e retorno aqui onde travou.
-
3 minutos atrás, arfneto disse:
parece que você "travou" bem no começo
Não tentou sequer declarar a função como pedida ou ler e mostrar uma string? Teve dificuldade ao escrever isso?Sim, estou iniciando e não sei pra onde seguir agora.
-
Pessoal estou travado no desenvolvimento de um programa podem me ajudar?
Consegui fazer apenas o esqueleto dele.
//Exercício: calcula_digito_verifcador //Autor:Luiz Eduardo Eleuterio de Souza. //Professor: Eduardo #include<stdio.h> #include<locale.h> #define TOTREG 3 typedef struct { float num [30]; char fim [3]; }entrada_dados; entrada_dados dados [TOTREG]; int main() { setlocale(LC_ALL, "Portuguese"); int idx; printf("Desenvolvido por:\n\n Luiz Eduardo Eleuterio de Souza\n"); for (idx =0; idx <TOTREG; idx ++) { printf("Digite FIM para encerrar o programa:\n"); //fgets(dados[idx].fim,3,stdin); //fflush(stdin); printf("Entre com uma string com valores decimais (máximo 30 caracteres):"); scanf("%f",&dados[idx].num); fflush(stdin); } } //FIM DO PROGRAMA
A primeira informação a ser disponibilizada deve ser o nome completo de todos os alunos que integram o grupo;
O programa deverá solicitar a entrada de uma string (máximo de 30 caracteres) com caracteres decimais, a string pode possuir caracteres utilizados para formatação do valor como: .(ponto), -(traço), virgula e outros;
A solicitação da entrada de strings será finalizada apenas quando o usuário digitar “FIM” em qualquer padrão. Mensagem: "Digite 'FIM' para encerrar o programa.”;
Caso o usuário digite uma string onde não seja possível calcular o dígito verificador, emitir a mensagem: "Atenção!!! Valor informado inválido."
Caracteres não decimais (utilizados na formatação) devem ser ignorados no cálculo do dígito verificador;
O cálculo do dígito verificador de ser realizado por uma função com nome “calcula_dv”;
A string informada pelo usuário deve ser passada para a função calcula_dv() através de chamada por valor;
A função calcula_dv() deve retornar um valor inteiro, ou seja, se o cálculo for bem sucedido retornar DV, caso contrário retornar valor -1;
Se cálculo do DV for bem sucedido enviar mensagem para o usuário: DV calculado com sucesso: + string digitada + “-“ + DV calculado.
Regras para cálculo do dígito verificador módulo 11.
Para obter o DV da string digitada pelo usuário, multiplica-se cada caracter da string sem o DV pelos multiplicadores 9,8,7,6,5,4,3,2 nesta ordem (repetir está sequência quantas vezes for necessário), soma-se as unidades das dezenas.
-
Galera seguinte, estou escrevendo um artigo sobre segurança do PFSense, preciso simular ataques DDOS nas maquinas virtuais que configurei e gerar relatórios para demonstrar a eficiência e falhas que podem existir, não entendo praticamente nada de Linux e os programas que encontrei para fazer os testes são todos para linux, alguem tem alguma ideia de como posso fazer esses testes?
-
1 hora atrás, devair1010 disse:
@eduheavy você precisa colocar uma variável para somar o total de números entrados , para no final dividir e ter a média
int num_total = 0;
e depois do scanf
num_total += numero;
e ali depois do while
num_total = / (qtd1+qtd2+qtd3+1td4);
e no seu código , esse qtd2 não recebeu nenhum valor .
/******************************************************** Programa: Objetivo: Autor: Luiz Eduardo E. de souza Data: **********************************************************/ #include <stdio.h> int main() { int numero, qtde1=0, qtde2=0,qtde3=0,qtde4=0,qtde=0, num_total=0, media; printf("=============================\n"); printf("Selicione as opcao abaixo \n"); printf("=============================\n"); printf("1-) Digite um numero inteiro \n"); printf("2-) Digite 0 para sair \n"); printf("=============================\n"); scanf("%d", &numero); num_total += numero; while (numero!=0) { if ((numero>0) && (numero<10)) { qtde1=qtde1+1; } if ((numero>10) && (numero<99)) { qtde2=qtde2+1; } if ((numero>100) && (numero<999)) { qtde3=qtde3+1; } if ((numero>1000) && (numero<10000)) { qtde4=qtde4+1; } if (numero>10000) { qtde=qtde+1; } if (numero<0) { printf("Atencao!!! voce digitou um valor invalido."); } scanf("%d", &numero); } media = (qtde1+qtde2+qtde3+qtde4+qtde) / num_total; printf("Media = %d\n",media); printf("============================================================\n"); printf("Foram digitados %d valores no intervalo de 1 a 9", qtde1); printf("\n==========================================================\n"); printf("Foram digitados %d valores no intervalo de 10 a 99", qtde2); printf("\n==========================================================\n"); printf("Foram digitados %d valores no intervalo de 100 a 999", qtde3); printf("\n==========================================================\n"); printf("Foram digitados %d valores no intervalo de 1000 a 10000", qtde4); printf("\n===========================================================\n"); printf("Foram digitados %d valores no intervalo de numero > 10000", qtde); printf("\n===========================================================\n"); return 0; }
Fiz as alterações aqui aparece o resultado mas não tenho certeza de que a logica esta correta.
-
Galera podem me dar uma ajuda?
Tenho um trabalho da Faculdade para fazer consegui desenvolver o codigo todo porém a media solicitada pelo professor não consigo desenvolver, apenas a media simples, segue abaixo a descrição do trabalho e meu codigo desenvolvido.
O programa desenvolvido deve conter as seguintes funcionalidades:
A primeira informação a disponibilizada é nome completo de todos os alunos que entegram o grupo;
O programa deverá solicitar a entrada de números inteiros positivos e diferentes de 0(zero);
A solicitação da entrada de números inteiros será finalizada apenas quando o usuário digitar o número 0(zero);
Caso o usuário digite um número negativo o programa deve enviar a seguinte mensagem: "Atenção!!! Você digitou um valor inválido."
Quando o usuário entrar com o valor 0(zero), o programa deverá apresentar o seguinte resultado:
Você digitou N números, sendo que: (N indica a quantidade total de números digitados)
Você digitou N números entre 1 e 9. (N indica a quantidade total de números digitados entre 1 e 9)
Você digitou N números entre 10 e 99. (N indica a quantidade total de números digitados entre 10 e 99)
Você digitou N números entre 100 e 999. (N indica a quantidade total de números digitados entre 100 e 999)
Você digitou N números entre 1.000 e 10.000. (N indica a quantidade total de números digitados entre 1.000 e 10.000)
Você digitou N números com outros valores. (N indica a quantidade total de números digitados acima de 10.000)
O cálculo da media dos número digitados é => MEDIA". (MEDIA corresponde a soma de todos os valores digitados dividido pela quantidade total de números digitados, e deverá ter no máximo 2 casas decimais)
Se o usuário não digitou nenhum número, o programa deverá enviar a seguinte mensagem: "Atenção !!!! Você não digitou nenhum número.
/******************************************************** Programa: Objetivo: Autor: Luiz Eduardo E. de souza Data: **********************************************************/ #include <stdio.h> int main() { int numero, qtd1=0, qtd2=0, qtd3=0, qtd4=0, qtd=0, media; printf("=============================\n"); printf("Selicione as opcao abaixo \n"); printf("=============================\n"); printf("1-) Digite um numero inteiro \n"); printf("2-) Digite 0 para sair \n"); printf("=============================\n"); scanf("%d", &numero); while (numero!=0) { if ((numero>0) && (numero<10)) { qtd1=qtd1+1; } if ((numero>10) && (numero<99)) { qtd3=qtd3+1; } if ((numero>1000) && (numero<10000)) { qtd4=qtd4+1; } if (numero>10000) { qtd=qtd+1; } if (numero<0) { printf("Atencao!!! voce digitou um valor invalido."); } scanf("%d", &numero); } media = (qtd1+qtd2+qtd3+qtd4+qtd) / 2; printf("Media = %d\n",media); printf("============================================================\n"); printf("Foram digitados %d valores no intervalo de 1 a 9", qtd1); printf("\n==========================================================\n"); printf("Foram digitados %d valores no intervalo de 10 a 99", qtd2); printf("\n==========================================================\n"); printf("Foram digitados %d valores no intervalo de 100 a 999", qtd3); printf("\n==========================================================\n"); printf("Foram digitados %d valores no intervalo de 1000 a 10000", qtd4); printf("\n===========================================================\n"); printf("Foram digitados %d valores no intervalo de numero > 10000", qtd); printf("\n===========================================================\n"); 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
Calculo com chamada com programa em C
em C/C#/C++
Postado
Consegui resolver depois de muita luta, mas ainda não consegui fazer a chamada da função isso que não entendo.
A função ai está dentro do "main", pela descrição do problema ela deve ficar fora