Ir ao conteúdo
  • Cadastre-se

C Alguem sabe fazer essa atividade com linguagem C sobre o covid19.


Naruto101

Posts recomendados

 Atividade sobre o covid19 nela tem que ter uma matriz com o nome dos países e o numero de infectados.

 

-Numero total de contágios por pais Brasil: 7845, Estados Unidos: 242960, Argentina: 949--

-Dia com maior numero de contágios por pais Brasil: 10 (1222) Estados Unidos: 10 (33725) Argentina: 5 (146)

-Dia com maior numero de contágios 10: 35045

-Maior sequencia crescente de contagios por pais Brasil: 3 Estados Unidos: 7 Argentina: 3-

-Tem que chamar no modulo covid19.c com a implementação das funções definida no arquivo covid19.h e o makefile

 

-Para resolver isso tem que usa essas funções a baixo:

#ifndef _COVID19_H #define _COVID19_H

#define TAM_MAX_NOME 50

*/Esse #define TAM_MAX_NOME 50 tem que lê os nomes dos países.  Função onde o número de países e o segundo é o vetor de   de strings (matriz de caracteres) onde os nomes dos   países devem ser armazenados. */

*/ void le_paises(int, char [][TAM_MAX_NOME + 1]);

*/ void le_contagios(int, int, int [][*]);

*/ int total_contagios_pais(int, int [][*], int);

. */ void dia_maior_contagio_pais(int, int [][*], int, int *, int *);

*/ void dia_maior_contagio(int, int, int [][*], int *, int *);

. */ int maior_sequencia_crescente(int, int [][*], int);

#endif

Link para o comentário
Compartilhar em outros sites

Oi eai :D Preciso de auxilio... obrigado por comenta.  Estou a uma semana quase tentando fazer isso.  

O usuario tem que digita e passar o numero de países  que ele ira digita em seguida os nomes dos paises que ja resolvi essa parte abaixo.

Não to conseguindo printar na tela a matriz abaixo não sei porque, acho q seria o primerio passo começar...

To tentando chamar a função... no proprio arquivo .c primeiro para depois por em um .h 

Eu estou tentando printar os paises de inicio e elaborar a matriz ainda...  se souber me ajuda ...

 

Ficou assim ate agora: 

 

#include<stdio.h>
#include<stdlib.h>
//#ifndef _COVID19_H #define _COVID19_H 
#define TAM_MAX_NOME 50


void le_paises(int num_paises, int matriz, char read_p[][TAM_MAX_NOME + 1]);

int main(void)
{
    int num_paises;
    int i, j;
    char matriz[49][49];
    
    printf("Digite o numero de paises:\n");
    scanf("%d", &num_paises);
    
    printf("Digite os pais:\n");
    for(i=0; i<num_paises; i++){
        for(j>i; j<num_paises; j++){
            scanf("%s ", &matriz[j]);
        }
        
    }
}

//abaixo não consego chamar não sei o porque a função:


/*le_paises(num_paises, matriz, read_p);
    
    return 0;
}
void le_paises(int num_paises, int matriz, char read_p[][TAM_MAX_NOME + 1])
{
    
    char read_p[TAM_MAX_NOME][TAM_MAX_NOME];
    int m, n;
    
    
    printf("Os paises:\n\n");    
    printf("%d", num_paises);
    for(m=0; m<num_paises; m++){
        for(m>n; n<matriz; n++){
            printf("%s",  read_p[m][n]);
        }
    }
    
}
*/
 

adicionado 52 minutos depois

Sou estudante estou aprendendo ainda.   O problema acho que é em utilizar os define com os void

Preciso que alguém me em dique o caminho para eu aprender é o que eu mais quero assim consegui termina essa atividade. 

 

A  saída tem que sair como na foto abaixo que estou mandando: 

saida tem que sair assim.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

5khbG4uYrPwR0cWh0QVG80JUnwVtKzXdjDmoIvtF

Eita lê lê... 

 

A função le_paises existe para preencher com dados (nomes) a tabela (matriz) de países, tão somente, notei a intenção.

#include<stdio.h>
#include<stdlib.h>
//#ifndef _COVID19_H #define _COVID19_H
// ☒ Está comentado e senâo errada.
  
#define TAM_MAX_NOME 50
// ☒ Lugar errado, seu lugar é em _COVID19_H



void le_paises(int num_paises, int matriz, char read_p[][TAM_MAX_NOME + 1]);
// ☒ Lugar errado, seu lugar é em _COVID19_H

int main(void)
{
  int num_paises;
  int i, j;
  char matriz[49][49];
  // ☐ Preconceito total com quem declara todas variáveis no topo,
  // normalmente tem aqui coisas que só vem nas profundezas do código,
  // Sugestão é declarar as variáveis bem próximo de seu bloco de uso.

  // int num_paises = 0;
  printf("Digite o numero de paises:\n");
  scanf("%d", &num_paises);

  // int i, j;
  printf("Digite os pais:\n");
  for(i=0; i<num_paises; i++){
    for(j>i; j<num_paises; j++){
      scanf("%s ", &matriz[j]);
      // ☒ Esse sinal (&) é indiferente nesse caso, por quê? Porque
      // a referência da referência é ela mesma, para evitar a redundância,
      // ☐ sugestão é referenciar a desreferência, fica assim &matriz[j][0] 
    } 

  }
  // ☒ O return da função main? sumiu ...
}

//abaixo não consego chamar não sei o porque a função:
// PORQUE ESTA NO BLOCO DE COMENTÁRIO


/*le_paises(num_paises, matriz, read_p);

    return 0;
}
void le_paises(int num_paises, int matriz, char read_p[][TAM_MAX_NOME + 1])
{

    char read_p[TAM_MAX_NOME][TAM_MAX_NOME];
    int m, n;


    printf("Os paises:\n\n");    
    printf("%d", num_paises);
    for(m=0; m<num_paises; m++){
        for(m>n; n<matriz; n++){
            printf("%s",  read_p[m][n]);
        }
    }

}
*/

 

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Ola Mauro Britivaldo obrigado por ta me ajudando também 

Eu tava tentando resolver esses dias... não consegui printar na tela... não mostrou erro no codigo, segue como fiz abaixo:

//No arquivo covid19.c abaixo:

#include <stdio.h>
#include <stdlib.h>
#include "covid19.h"

int main()
{
    int le_paises(int num_paises, char read_p);
    int num_paises;
    
    printf("Digite o numero de paises:\n");
    scanf("%d", &num_paises);

    char read_p[1][2];
    char i, j;

    
    for(i=0; i<2; i++){
        printf("Digite os pais:\n");
        scanf("%s", read_p[j]);
    }
    for(j=i; j<2; j++){
            printf("%s\n\n", read_p[j]);
    }
    
    printf("%d \n\n", num_paises);
    return 0;
}

//No arquivo covid19.h abaixo:

#ifndef _COVID19_H_INCLUDED
#define _COVID19_H_INCLUDED
#define TAM_MAX_NOME 50

 

int le_matriz(int num_paises, char read_p[][TAM_MAX_NOME]);


#endif

Link para o comentário
Compartilhar em outros sites

Não tem uma versão do programa de agora?

 

A escola não forneceu um arquivo de dados para testes?

 

O grande problema que eu vejo em seu primeiro programa é muito comum em programas de iniciantes: a ideia de que tem que ler essas coisas no teclado.

 

Não tem. E é uma me$%a tentar fazer isso. Desista logo.

 

Faça as contas: mesmo que tenha um único país e um ciclo de 5 dias apenas vai ter que digitar 4 linhas e um monte de coisas/ PARA CADA TESTE.

 

Esqueça isso. É muito mais simples ler de um arquivo que você pode editar em editor de texto que alguém já escreveu. Word? Excel, Bloco de Notas? Write? Sublime Text? Vi? O próprio editor de seu IDE --- sim, IDE é masculino --- por exemplo...

 

Se preocupe em ler e armazenar os dados antes de tudo. Pense em seu programa em torno dos dados. antes de escrever o programa. Depois leia um conjunto de dados e mostre na tela tudo que leu para ficar seguro. 

 

E implemente as funções uma a uma. Li o material e não é nada complicado. Apenas medidas, umas poucas contas.

 

Veja essa por exemplo:

 

image.png.51af6b862ff27de17d86b7a127a9eb20.png

 

É a mesma coisa que aquele exercício besta de ler um vetor e mostrar o menor e o maior valor e a média que vemos aqui toda hora. Ou aquele dos homens mais altos e a porcentagem de mulheres e tal. Apenas varrer os dados e extrair alguma medida.

 

Poste o covid19.h e eu tento ver algo mais objetivo para ajudar você. Ou ele só tem essas 3 funções e uma constante mesmo? E o enunciado mais arrumadinho?

 

Uma boa opção para testar é criar um gerador de dados de teste. Sempre dá certo. Saberia escrever um?

Link para o comentário
Compartilhar em outros sites

 

Recortei os dados e usei OCR para converter para texto e coloquei em uma planilha. Talvez ajude:

 

planilha.thumb.png.74c6bac881ab5e167728b5d74b28f328.png


Aí tem as somas e os máximos e os valores para conferir

 

Eis o arquivo para não ter que digitar :) 

3
Brasil
Estados Unidos
Argentina
10
482 502 487 352 323 1138 1119 1074 1146 1222 
17050 19046 20093 19118 20463 25305 26756 28879 32525 33725
87 101 55 75 146 88 79 132 88 98

Como gerei a planilha a partir do desenho e os totais na planilha estão batendo com os do enunciado pode usar sem dúvida.

 

Agora em relação às funções tem algo errado e acho mais simples mudar um pouco os parâmetros ou o valor de retorno para ficar mais fácil. Ou para corrigir mesmo :( porque eu acho que não está bom do jeito que foi declarado. Vou explicar

 

Os problemas das funções do enunciado

  • le_paises() --- depois de ler o total de países vai ler um país por linha a partir do mesmo arquivo então precisa passar o identificador do arquivo como argumento. Outro problema é o retorno. Então é muito mais simples declarar
        char**  le_paises(FILE*, int);

    E assim você passa o arquivo para função continuar lendo, e o número de países a ler, claro. E a rotina faz o simples: cri a tabela de países e devolve prontinha. E declarar como char** é uma boa ajuda porque aí você pode usar 
     

        Pais[0] = "Brasil"
        Pais[1] = "Estados Unidos"
        Pais[2] = "Argentina"
          ...

    que é o simples para acessar os nomes dos países um a um num printf() por exemplo. E para criar não podia ser mais simples --- se o arquivo fosse entrada e N o número de países

    	char** Pais = le_paises(entrada, N); // o obvio

     

  • le_contagios() --- mesmo caso: vai rodar pra ler a tal tabela de 30 valores depois de se ter lido o 3 e o 10 para dar os 30: 3 países e 10 leituras. Então o arquivo já está aberto. É preciso passar a identificação do arquivo como parâmetro para a leitura continuar de onde parou. E é mais esperto retornar o endereço da tabela de dados já preechida pela função, como no caso anterior:
    int*    le_contagios(FILE*, int, int);

    E assim pode escrever direto

    	int* Tabela = le_contagios(entrada,D,N);

    para ler os dados de contagio do arquivo entrada, para D dias e N países. Mais uma vez o simples: a tabela volta preenchida e não se fala mais nisso. 
     

  • maior_contagio_pais() --- essa não retorna nada mas precisa imprimir dois valores. E o nome do país.Só que o nome do pais está em outra tabela. Não seria o fim do mundo imprimir o país e chamar a função para imprimir o resto da linha, mas o simples é passar o nome do pais como parâmetro assim ela pode imprimir a linha toda como em:
    Brasil: 10 (1222)
    

Algo assim serviria:

void    maior_contagio_pais(
	int nDias,	int nPais,	int* dados,	char* Pais)
...

Claro que o mais simples seria uma estrutura que representasse a planilha toda, com países e leituras, talvez algo assim:

struct leitura
{
	char* pais;
	int*  dias;
};
typedef struct leitura Leitura;

struct leituras
{
	int nPaises;
	int nDias;
	Leitura* info;
};
typedef struct leituras Leituras;

E aí seria tudo mais fácil. Poderia declarar

	Leituras teste;
	teste.nDias = 10;
	teste.nPaises = 3;
	teste.info = (Leitura*)malloc(
		teste.nDias * teste.nPaises * sizeof(Leitura)
		);

E cada leitura teria o pais e os totais de contágio por dia.

 

Mas seria outro programa e não dá pra usar as funções assim sem "recriar" o enunciado

 

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...
Em 27/05/2020 às 13:50, arfneto disse:

Uma boa opção para testar é criar um gerador de dados de teste. Sempre dá certo. Saberia escrever um?

 

Não respondeu. Entendeu o que seria?

 

Em 27/05/2020 às 23:23, arfneto disse:

Como gerei a planilha a partir do desenho e os totais na planilha estão batendo com os do enunciado pode usar sem dúvida

 

Entendeu isso?

 

Declarou as funções como descrito no tópico #10 e mesmo assim não funcionou?

 

O que deu errado?

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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