Ir ao conteúdo
  • Cadastre-se

1freakday

Membro Pleno
  • Posts

    671
  • Cadastrado em

  • Última visita

Tudo que 1freakday postou

  1. @Gabriel Salem Como você está declarando oi e e aí como ponteiro, você precisa alocar uma struct com malloc. Se não quiser alocar, use: Tipo1 oi e Tipo2 iaí, e acesse usando oi.nome e iaí.moca P.S: strcpy não é seguro para projetos, use strncpy.
  2. 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"); } }
  3. @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][ i ] == 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
  4. Dê uma estudada melhor sobre os tipos de funções e formas de retorno, segue: tipo Pilha_x(){ return ret_tipo; } bool Pilha_x(){ return true; } int Pilha_x(){ return 0; } char Pilha_x(){ return 65;//A } scanf ("%c %f", &b1.nome, &b1.peso );
  5. Não, se você fizer isso você vai obter o tamanho de bytes de char.
  6. @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
  7. 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
  8. 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 Pacotes de desenvolvimento GO - https://golang.org/dl/ IDE para GO - recomendo LiteIDE - https://github.com/visualfc/liteide 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."
  9. @andrelopes0 De acordo com seu código, se você digitar as linhas: 287 715 112 530 249 406 234 287 Então a ordem de procura, será assim: 1. 287 == num > V 2. 112 != num > I 3. 530 != num > I 4. 249 != num > I 5. 406 != num > I 6. 234 != num > I 7. 287 != num > I
  10. @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"); } } } }
  11. @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 ->
  12. @PBlackOuT O erro consiste em você declarar uma função dentro do case '5' ... Você precisa declarar acima de main e depois usar apenas a chamada dessa função.
  13. @Buzina Lopes lixo no buffer, use fflush(stdin), antes da mensagem de cpf inválido.
  14. @lenayoung Veja que aqui não deveria ter retorno, ou não deveria ser void: void letermo() { int struct Termo t; scanf("%1.f x %d", &t.coef, &t.expo); return t; <---- }
  15. Qual o output do compilador? Não seria melhor usar float main() ? ou int main()...
  16. 1freakday

    C Problema em C de Sudoku

    Qual problema? Alguma dúvida? Poste o código...
  17. @Jemima Fonseca Passos No ultimo fscanf você esqueceu de fechar parentese: && fscanf(arquivo,"%s",&op2 != EOF)) sendo: && fscanf(arquivo,"%s",&op2) != EOF))
  18. @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.
  19. @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; } }
  20. @ineedahelp Retorne a lista alterada na função: LISTA *inserirFinal(...){ ... return lista; }
  21. @Ronnny Não fazemos exercícios, poste seu código e assim iremos ajudar de acordo com as REGRAS do fórum.
  22. @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 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
  23. 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; }
  24. 1 - Retorne a lista ao inserir no fim e no inicio: Lista2* inserir(Lista *inicio){ //... return inicio; } Segue: Lista2*lst2_insereini(Lista2* inicio, char valor[]){ Lista2* novo = malloc(sizeof(Lista2)); /* aloca memória para o novo nó */ if(novo == NULL) /* se não houver memória disponível */ return inicio; /* sai da função */ if(inicio == NULL){ /* se a lista estivava vazia */ strcpy(novo->cidades, valor); /* insere o valor no novo nó */ novo->prox = novo->ant = NULL; /* não há próximo nó nem nó anterior, pois só há um nó */ inicio = novo; /* o novo nó é o primeiro da lista */ } else{ /* se já havia nó na lista */ strcpy(novo->cidades,valor); /* insere o valor no novo nó */ novo->ant = NULL; /* não há nó anterior */ novo->prox = inicio; /* o novo nó aponta para o que está no início */ inicio->ant = novo; /* o nó atual do início aponta para o novo nó */ inicio = novo; /* o novo nó passa a ser o primeiro da lista */ } return inicio; } Lista2*lst2_inserefim(Lista2* inicio, char valor[]){ Lista2* novo, *atual; novo = malloc(sizeof(Lista2)); if(novo == NULL) return inicio; if(inicio == NULL){ strcpy(novo->cidades,valor); novo->prox = novo->ant = NULL; inicio = novo; return inicio; } else{ atual = inicio; /* atual aponta para o início */ while(atual->prox != NULL) /* enquanto o nó atual não for o último */ atual = atual->prox; /* vai para o nó seguinte */ strcpy(novo->cidades,valor); novo->ant = atual; /*o nó anterior ao novo é o nó atual */ novo->prox = NULL; /* não há próximo nó, pois o novo será o último */ atual->prox = novo; /* o nó atual aponta para o novo nó e não é mais o último */ } return atual; }
  25. @santos07 Dentro do segundo for você conta os elementos da linha, e antes de imprimir '\n' você imprime a soma: |%d", soma ...

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