Ir ao conteúdo
  • Cadastre-se

1freakday

Membro Pleno
  • Posts

    655
  • Cadastrado em

  • Última visita

posts postados por 1freakday

  1. Para imprimir toda matriz, você faz como o @Rui Neto falou, caso contrário seu código precisa de umas melhoradas:

    #include<stdio.h>
    
    int main ()
    {
     //  m[linhas][colunas]
     int m[5][5],i,j;
     
     // mudar valores da matriz
     for(i=0;i<=4;i++){
      for(j=0;j<=4;j++){
       if(i == j) {
        m[i][j] = 1;
       }
       else {
        m[i][j] = 0;
       }
      }
     }
     
     //imprimir matriz
     for(i=0;i<=4;i++){
      for(j=0;j<=4;j++){
        printf("|%d|", m[i][j]);
      }
      printf("\n");
     }
    }

     

    • Curtir 1
  2. @Eric MGS Vamos supor que você escreva na entrada:

     

    João recebeu 1 salário de 4.300,35 em 3.0 dias.

     

    Essa entrada é 'armazenada' em uma string.

    Porém você quer separar todos elementos, identificar seu tipo e então verificar com sizeof.

     

    Portanto é preciso separar, mas antes temos que identificar cada coisa, exemlpo:

     

    Joao         - string 

    recebeu    - string 

    1                - int

    salário      - string

    de              - string

    4.300,35   - float

    em             - string

    3.0             - int / float

    dias           - string

     

    Para identificar é preciso criar um algorítimo ou usar strtok, para separar, assim depois de separar cada palavra, é preciso verificar se tal char é um numero, e encontrar seu fim. Ao encontrar o fim do número é preciso manter ele em um buffer e usar atoi, atol, etc.Exemplo:

     

     

    mensagem[100] = "João recebeu 1 salário de 4.300,35 em 3.0 dias"

     

    mensagem[0][ ]  == isalpha ?

    true

     -> nova string Palavra -> encontrar final

     

    false

     -> verificar se é numero -> encontrar final

     

    é só você encontrar uma forma de separar os elementos e identificar o tipo

     

     

     

     

     

     

  3. @Eric MGS Em uma string só há char's(caracteres) relacionado a um decimal da tabela ascii, portanto sizeof(char) tem a mesma quantidade de bytes que sizeof(int)

     

    Para ter os bytes de cada tipo, da string, você precisa separar esses valores, seja com scanf, etc, armazenar em uma variável temporária e depois usar sizeof

  4. Se quiser usar um vetor de struct, use:
        struct data m [T];
        struct data a [T];

     

    Acesse: 

         gado.m[0].mes  |  gado.m[1].mes | ... | gado.m[49].mes

         gado.a[0].ano    |  gado.a[1].ano    | ... | gado.a[49].ano

     

    Caso contrário e quiser usar apenas uma struct, use:


        struct data m;
        struct data a;

     

    Acesse: 

         gado.m.mes  

         gado.a.ano    

    • Curtir 1
  5. Boa noite, vou fazer uma introdução básica sobre como fazer um programa simples em Go, tendo como finalidade, imprimir Hello World.

     

    Pré-requisitos

     

     

    A linguagem GO

     

    Provavelmente muitos já ouviram falar dessa linguagem, mas poucos pesquisaram, enfim, vou dar uma breve introdução,

    assim poderemos compreender melhor tal linguagem.

    A linguagem Open-Source foi criada pela Google, para competir com as atuais linguagens, e pode atuar  diversas aplicações.

    Go atualmente é a 9º linguagem mais usada no GitHub. Fonte: octoverse.github.com

     

    Já com 8 anos e fazendo muito sucesso, foi anunciado planos para Go 2, segue: https://blog.golang.org/toward-go2

     

    Programa Hello World

     

    Inicialmente precisamos entender como funciona o Workspace:

    • Um Workspace contém várias versões de controle, seja com Git, Svn, etc
    • Cada repositório contém um ou vários package(pacote)
    • Cada package consiste em um ou vários arquivos no diretório determinado. ( Todos arquivos .go  em uma pasta são 'automaticamente' compilados)

     

    Finalmente vamos ao programa:

    //Identificamos como 'main' o package
    //responsável pela func main()
    package main
    
    //Importamos o package fmt para funções
    //como Printf
    import (
    	"fmt"
    )
    
    //Função principal, que imprime
    //"Hello World!" e não há retorno
    func main(){
    	fmt.Printf("Hello World!")
    }

    Para usarmos retornos e outras funções, temos que determinar qual tipo de retorno será, por exemplo:

    package main
    
    import (
    	"fmt"
    )
    
    //veja que primeiro determinanos os argumentos da seguinte forma:
    // nome da variavel: mensagem -
    // e tipo: string
    //Também determinamos nosso retorno como (int)
    func func1(mensagem string) int {
    	if len(mensagem) > 0 {
    		fmt.Println(mensagem)
    		return 1
    	}
    	return 0
    }
    
    func main() {
    	var i int
    	var msg string
    
    	fmt.Println("Digite uma mensagem: ")
    	fmt.Scanf("%s", &msg)
    	
        //chamada e retorno
    	i = func1(msg)
        //se nao usassemos var i int, usariamos:
        //i := func1(msg)
        //sendo i auto int
          
    	if i == 1 {
    		fmt.Printf("Mensagem preenchida")
    	} else {
    		fmt.Printf("Mensagem vazia")
    	}
    }

     

     

    Ao aprofundarmos mais nas variadas packages, podemos até criar um pequeno servidor 'http', onde podemos acessar normalmente as páginas html, imagens, css e js:

    // https server 0.0.1
    // author: TYSQR89 - 2017
    // basta colocar as páginas .html, etc,  na mesma pasta
    // do programa.exe
    // e no navegador digite: localhost:8080/index.html 
    package main
    
    // pacotes
    import (
    	"bytes"
    	"fmt"
    	"image"
    	"image/jpeg"
    	"image/png"
    	"io/ioutil"
    	"log"
    	"net/http"
    	"os"
    	"strconv"
    	"strings"
    )
    
    type Pagina struct {
    	titulo string //arquivo da página localhost/titulo
    	body   []byte //body será o conteudo do arquivo
    }
    
    //Carregar o arquivo da página
    func carrPagina(arquivo string) (*Pagina, error) {
    	//lê conteúdo do arquivo
    	body, err := ioutil.ReadFile(arquivo)
    
    	//falha ao abrir arquivo
    	if err != nil {
    		fmt.Println("Falha ao abrir [", arquivo, "] !")
    		return nil, err
    	}
    
    	//retorna página aberta - Pa
    	return &Pagina{titulo: arquivo, body: body}, nil
    }
    
    //Carrega e envia imagem para o client
    func enviarImagem(w http.ResponseWriter, fname string, ftype string) {
    
    	fimg, _ := os.Open(fname)
    	defer fimg.Close()
    	img, _, _ := image.Decode(fimg)
    
    	buffer := new(bytes.Buffer)
    
    	//tipo .jpg
    	if ftype == ".jpg" {
    		//codifica para jpg - armazena em buffer
    		if err := jpeg.Encode(buffer, img, nil); err != nil {
    			log.Println("Falha ao codificar.")
    			return
    		}
    	}
    	//tipo .png
    	if ftype == ".png" {
    		//codifica para png - armazena em buffer
    		if err := png.Encode(buffer, img); err != nil {
    			log.Println("Falha ao codificar.")
    			return
    		}
    	}
    
    	//determina tamanho da imagem
    	w.Header().Set("Content-Length", strconv.Itoa(len(buffer.Bytes())))
    
    	//envia imagem para o cliente
    	if _, err := w.Write(buffer.Bytes()); err != nil {
    		log.Println("unable to write image.")
    	}
    }
    
    //Lida com os clientes
    func handler(w http.ResponseWriter, r *http.Request) {
    
    	var p2 *Pagina
    	var err error
    	var contentType string
    
    	//carrega página padrão
    	if len(r.URL.Path[1:]) <= 0 || string(r.URL.Path[1:]) == "index" {
    		p2, err = carrPagina(string("index.html"))
    
    	} else {
    		//carrega página solicitada
    		p2, err = carrPagina(r.URL.Path[1:])
    	}
    
    	//determina tipo de conteúdo
    	if strings.HasSuffix(p2.titulo, ".css") {
    		contentType = "text/css"
    	} else if strings.HasSuffix(p2.titulo, ".png") {
    		contentType = "image/png"
    		w.Header().Set("Content-Type", contentType)
    		enviarImagem(w, p2.titulo, ".png")
    		return
    
    	} else if strings.HasSuffix(p2.titulo, ".html") {
    		contentType = "text/html"
    
    	} else if strings.HasSuffix(p2.titulo, ".jpg") {
    		contentType = "image/jpeg"
    		w.Header().Set("Content-Type", contentType)
    		enviarImagem(w, p2.titulo, ".jpg")
    
    		return
    	} else if strings.HasSuffix(p2.titulo, ".js") {
    		contentType = "text/javascript"
    	} else {
    		contentType = "text/plain"
    	}
    
    	if err != nil {
    		fmt.Println("Falha ao abrir [", p2.titulo, "] !")
    
    	} else {
    		w.Header().Set("Content-Type", contentType)
    		fmt.Println("Pagina enviada [", p2.titulo, "] !")
    
    		// envia dados para o cliente
    		fmt.Fprintf(w, string(p2.body))
    	}
    
    }
    
    func main() {
    
    	http.HandleFunc("/", handler)       //lida com path /
    	http.HandleFunc("/css", handler)    //lida com path /css
    	http.HandleFunc("/js", handler)     //lida com path /js
    	http.HandleFunc("/images", handler) //lida com path /images
    	http.ListenAndServe(":8080", nil)   //inicia em localhost:8080
    
    }

     

    Qualquer dúvida pode perguntar.

     

    "Aprendemos todos dias e não há motivo para descreditar o erro, poís cada erro é uma nova oportunidade para o sucesso." 

     

     

     

     

     

    • Curtir 1
    • Obrigado 1
  6. @andrelopes0 Qual o problema com a saída? Se você verificar, ele busca o valor correto depois imprime V, ai quando ele retorna recursivamente, ele acaba imprimindo I. Tente assim:

     

    int consulta(ArvBin r, int num){
      if (r!=NULL){
    
        if(r->info == num){
            printf("V\n");
            return 0;
          }else{
            if(r->info < num)
            	num = consulta(r->dir, num);
            else
            	num = consulta(r->esq, num);
            if(num != 0){
            	printf("I\n");	
          	}
        }
      }
    }

     

  7. @andrelopes0 quando você declarar uma variável/objeto 'iniciada', significa que ela nunca será NULL por definitivo, portanto em consulta você precisa usar ponteiro:

    
    void consulta(ArvBin *raiz, int num){
    ...
    }

    Caso você não use como ponteiro, você simplesmente vai copiar os elementos de 'raiz' para o argumento raiz de consulta. Sem ponteiro você também precisa usar .(ponto) em vez de ->

  8. @JnnDoug Você pode implementar procedimentos de segurança, ou seja, toda vez que o programa rodar é verificado se os arquivos, estão intactos e não foram modificados, use hash's para determinar isso.

    Assim se o main.exe for: 0avasdas213

    E na verificação for:          0avas123dsad

    Você mostra uma mensagem de erro e fecha o jogo.

     

    Dê uma pesquisada.

    Também é importante manter as strings criptografadas, assim não tem como ver por um editor binário.

    • Curtir 1
  9. @Danilo Henriq Warnings não impedem o compilador, apenas error's. Quando você diz 'chamar as funções abaixo', seria abaixo de main? 

    Não é regra, mas seria 'bom' usar acima de main apenas: includes/defines, variáveis globais, protótipos de funções, inline e objetos.

    E abaixo de main ou em headers você usa pode colocar a referencia dos protótipos das funções.

     

    Exemplo:

    #include <stdio.h>
      
    #define MSG1 1001
    #define MSG2 1002
    #define MSG3 1003
    
    int msg = MSG1;
    
    void setMessage(int);
    void showMessage();
    
    int main(){
    	showMessage(msg);
      
        setMessage(MSG2);
    	showMessage();
      
        setMessage(MSG3);
    	showMessage();
      
    	return 0; 
    }
    
    
    void setMessage(int m){
      msg = m;
    }
    
    void showMessage(){
      switch(msg){
        case MSG1: printf("Message 1\n"); break;
        case MSG2: printf("Message 2\n"); break;
        case MSG3: printf("Message 3\n"); break;
          
        default:
        printf("Message desconhecida\n"); 
        break;
      }
    }

     

    • Curtir 2
  10. @Ne3xT Boa tarde, você já tem uma ideia de como fazer, recebe as horas e depois verifica com if as condições, portanto é necessário separar condição de situação.Ou seja, primeiro é preciso verificar:

    se ela recebeu as horas/minutos corretos

    depois você verifica se a segunda hora é superior a primeira, pois não tem como acordar antes de dormir :P

     

    Para contar os minutos que ela dormiu basta calcular a diferença de horas e minutos. 

    Já que 1 hora = 60 minutos = 3600 segundos

    Por exemplo:

    se ela dormiu as 18:30 e acordou as 19:45,

     

     H2 - H1 = 1 hora          = 60 minutos

     M2 - M1 = 15 minutos   

     

    60+15 = 75 minutos de descano

    • Curtir 1
  11. Inicializar variáveis também é importante.

    #include <iostream>
    #include <time.h>
    
    using namespace std;
    
    class Datas
    {
    	private:
    		int dia, mes, ano;
    	public:
          Datas(int, int, int); //Construtor com argumentos
          Datas();                          //Construtor padrão, sem argumento
      
          void SomaDatas(int d, int m, int a) {
              cout << (d + dia) << endl;
              cout << (m + mes) << endl;
              cout << (a + ano) << endl;
          }
          void SubtraiDatas(int d, int m, int a){
              cout << (d - dia) << endl;
              cout << (m - mes) << endl;
              cout << (a - ano) << endl;
          }
          void AlterarData(int d, int m, int a){
              dia = d;
              mes = m;
              ano = a;
          }
    };
    
    
    
    int main()
    {
    	Datas f2(4, 12, 2018);
    	f2.SomaDatas(3, 0, 0); // 7-12-2018 
    	f2.SubtraiDatas(3, 0, 0); // 1-12-2018 
      
    	return 0;
    }
    
    
    
    //Construtor com data atual
    Datas::Datas()
    {
    	struct tm *local;
    	time_t t;
    	time(&t);
    	local = localtime(&t);
    
    	int ano = 1900 + local->tm_year;
    	int dia = local->tm_mday;
    	int mes = local->tm_mon + 1;
    }
    
    //Construtor com data personalizada - verificar se dia 
    //vai de 1 a 31, mes de 1 a 12...
    Datas::Datas(int dia, int mes, int ano)
    {
    	this->dia = dia;
    	this->mes = mes;
    	this->ano = ano;
    }

     

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!