Ir ao conteúdo
  • Cadastre-se

1freakday

Membros Plenos
  • Total de itens

    261
  • Registro em

  • Última visita

  • Qualificações

    0%

Reputação

128

4 Seguidores

Informações gerais

  • Cidade e Estado
    Atenas
  • Sexo
    Masculino

Outros

  • Biografia
    "Aquele que se identifica com alguém, jamais será alguém"
  1. Tem como postar parte do código? Pois o printf pode ser usado de várias formas, como: printf("ABCabc",...);
  2. Poste o que você já fez, para poder lhe ajudar...
  3. Bom dia, as bibliotecas usadas: winsock.h e iostream(ou stdio.h), no seu caso. 'Parsing' é um algorítimo para separar determinado conteúdo de um conteúdo mais amplo, a partir da análise sintática. Ele tem a finalidade de tornar possível a separação de dados de um determinado local sendo arquivo, site, etc., e assim é possível armazenar em uma estrutura de dados. Segundo Exemplo: Temos um programa que adicionada sites ao banco de dados, a partir de um arquivo de texto, com os seguintes dados: 1 [BeginSite] 2 AddSite:'www.google.com' 3 AddSite:'www.etc.com' 4 AddSite:'www.blabla.com' 5 [EndSite] Veja, temos um arquivo de dados com 5 linhas, mas esses dados ainda estão irregulares, pois eles não vão se auto adicionar no banco de dados. Precisamos utilizar um parser para determinar o que adicionar no banco de dados. Portanto, na linha 1 estamos informando que iremos começar a adicionar os dados de sites, e na linha 5 finalizamos a adição de dados, e o parser pode voltar a descansar na matrix. Nessas 2 linhas(1 e 5), o parser vai buscar pelo caractere [ , e verificando com um vetor cheio de códigos pré-definidos, e assim é possível identificar que tipo de argumento é esse. Exemplo em C: const char *codigos[] = {"[BeginSite]", "[EndSite]", "AddSite"}; //...segmentos //na linha 1 if(strcmp(linha, codigo[0]) == 0){ //BeginSite encontrado - começar a adicionar sites } //na linha 5 else if(strcmp(linha, codigo[1]) == 0){ //EndSite encontrado - finalizar adição de sites } Na linha 2,3,4 temos uma variável chamada AddSite, ela sera responsável para 'dizer' ao parser quando vamos adicionar um site no banco de dados. Após AddSite temos dois símbolos importantes para a logica, que é ':'(dois pontos), que separa a variável AddSite, do resto da linha. E temos ' (apostrofo), é usado para destacar o valor da variável AddSite, no caso destaca o dado em si, o site a ser adicionado, o único que precisamos. Resumindo, nosso parser tem que passar nas seguintes etapas: 1 - Identificar onde começa as variáveis AddSite ( começa a partir de BeginSite) 2 - Procurar uma variável AddSite 3 - Procurar o site da variável AddSite, na linha selecionada (www.google.com) Depois, os dados recebidos são enviados para uma struct, ou em qualquer banco da dados. P.S: Lembrando que BeginSite, AddSite, etc, são informações fictícias, elas não são especiais, são apenas texto em um arquivo. Podendo ser substituídas por qualquer palavra. Eu não vou ficar enchendo de texto, por que a prática vale 1000 linhas, enfim, o parser se resume a apenas obter algum dado de um texto.
  4. Boa noite, como disse agora a pouco em outro tópico, é necessário que você poste algo seu, um código para podermos lhe ajudar, sem isso, ainda mais que é um TCC, fica complicado para nos ajudar a te ajudar() Acredito que você precisa planejar, e não apenas supor utilizar determinada linguagem, escolher a linguagem é fundamental para continuar o planejamento, se não você ira ficar estagnado. Portanto, se for utilizar C, você pode utilizar um sistema simples no console (não há GUI em C), para cadastrar as informações no 'sistema', no cadastro ha várias opções para adicionar os dados do malote, com struct é possível salvar os dados, até mesmo em uma arquivo bin, para mais tarde recuperar tais informações. No quesito de selecionar dois conteúdos para inserir como parte do conteúdo do malote, você pode previamente, mostrar uma lista já criada e padronizada, para selecionar vários items dessa lista. Antes de qualquer coisa, desculpe se não postei nenhum código como exemplo, pois não sei qual seu objetivo, muito menos tenho autorização para tal. Enfim, usando uma estrutura de dados, como struct, é possível salvar os dados, e então você cria as funções essenciais para cadastrar/remover/mostrar os conteúdos do malote, não há muito segredo na hora de fazer, o problema é o planejar.
  5. Boa noite, então, primeiro você precisa mostrar algum código, antes de lhe ajudarmos, se não estamos limitados a apenas um texto chato e que não ajuda tanto quanto um código exemplar. Também precisamos saber o que você já sabe, pois podemos lhe fornecer um conteúdo que possa ser fácil para completar a atividade e principalmente ser compreendido. Minha sugestão é utilizar uma matriz para armazenar as informações dos barcos, como: int mapaTotal_Jogador[3][3]={{1,1,1}, {0,2,2}, {3,0,0}}; //0 = Local vazio //1 = Navios porta avioes //2 = Navio medio - 2 casas //3 = Navio pequeno - uma casa //Nas coordenadas (y,x) ou mapaTotal_Jogador[y][x] : //(0,0) + (0,1) + (0,2) esta o porta avioes(1) //Em (1,1) + (1,2) esta o medio(2) //Em (2,0) esta o pequeno(3) Se o usuário escolher a coordenada certa, ele pode acertar um navio, caso contrario é feito outras tentativas. Na logica do acertar o navio, eu recomendo alterar o valor no mapaTotal_Jogador, para um valor especifico, como 4, onde você, identifica se foi afundado ou não, na hora de mostrar o mapa na tela.
  6. Boa noite, sim é possível, e também será complicado. Dessa vez não vou apresentar códigos. Digo a você, como também disse a outro usuário, o qual queria um código para obter endereço de um CEP, seu código seria semelhante ao dele. A unica diferença está no parser, pois a maior parte do conteúdo de uma pagina de site é escrita em HTML, e seria aonde você tem que buscar a área do texto, tal área deve ser determinada antes de se obter a pagina pelo socket. Assim você pode cortar o texto para salvar em um arquivo .txt, o único problema, é que um site como o bbc, estão sempre mudando, então você sempre precisa alterar o parser, para não ficar dando problema. Exemplo de um site: <html> ... header <body> <h1> Noticia ABC </h1> ... area com o conteúdo da noticia </body> <html> Na parte verde, é o local onde sera feito a separação da noticia selecionada, do restante do site, com um parse simples, como um for, você pode obter o titulo Noticia ABC e depois você pode obter o resto da noticia, geralmente localizada em <p> ou <div>(Use um navegador para verificar o código de fonte do site) Enfim, você utilizara apenas um socket para a comunicação com o site, stdio(ou iostream para c++) para funções padrões, e talvez malloc se necessário. Nada mais que isso. Segue o tópico do outro usuário citado acima:
  7. Muito bom @isrnick , uma ideia, é que nas questões é preciso mostrar os valores positivos, você poderia colocar um printf nesse segmento: if (numero > 0){ contador = contador + 1; soma = soma + numero; printf("Numero Positivo: %d\n", numero); //aqui } @Rafael Nicolai Você está usando contador=+1; e contador=-1; de forma errada, o operador deve vir antes do simbolo =, se não você esta adicionando o valor 1 ao contador ou o valor -1; Use: contador+=1;//Soma o valor do contador com 1 contador-=1;//Subtraí o valor do contador com 1 Mas você esta no caminho certo! Como o @isrnick disse, você não precisa usar vetor, e sim juntar todas etapas em 1, e usar apenas uma variavel(float no caso).
  8. Sim, você esta certo, mas algumas pessoas devem compreender uma função, antes de aperfeiçoa-la, se ninguém recomendasse fflush, ninguém saberia de sua existência, e não haveria tantas resoluções, é claro que não é tão recomendado para programadores avançados, já que só trocar de scanf("%d", &num); para scanf(" %d", &num); ja resolve o problema.
  9. Muito bom, acredito que tudo foi resolvido, até tentei dar uma editada no código, mas acho que já tá otimizado o suficiente, segue minha edição, créditos APENAS de @Gustavo Andretto: #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #define REGISTRO_TAM 30 typedef struct registro { char nome[30]; float nota[2]; float media; } registro_t; void mostrar_menu(void); void inserir(registro_t*); void mostrar(registro_t*, int); int main(void) { registro_t vetor[REGISTRO_TAM]; memset(&vetor[0], NULL, sizeof(vetor)); int num = 1; while(num) { mostrar_menu(); //int num; recriado a cada 'volta' scanf("%d", &num); switch (num) { case 1: inserir(&vetor[0]); break; case 2: mostrar(&vetor[0],2); break; case 3: mostrar(&vetor[0],3); break; case 0: break; default: printf("TENTE NOVAMENTE"); } } return 0; } void mostrar_menu(void) { fflush(stdin); printf("\nCADASTRO DE ALUNOS\n"); printf(" 1 - Para adicionar alunos\n"); printf(" 2 - Para mostar nomes e medias\n"); printf(" 3 - medias maiores que 7\n"); printf(" 0 - Sair\n"); } void inserir(registro_t *vetor) { for (int i = 0; i < REGISTRO_TAM; i++) { if (strlen(vetor[i].nome) == 0) { printf("Entre com o nome do aluno e suas notas\n"); scanf(" %s %f %f", vetor[i].nome, &vetor[i].nota[0], &vetor[i].nota[1]); vetor[i].media = (vetor[i].nota[0] + vetor[i].nota[1]) / 2; break; } } } /* reutilizar função flag 2 = mostrar nomes e medias flag 3 = mostrar medias maiores que 7 */ void mostrar(registro_t *vetor, int flag) { printf("\n-------------\n");//para separar os resultados for (int i = 0; i < REGISTRO_TAM; i++) { if (strlen(vetor[i].nome) != 0) { if(flag == 2){ printf("\n Nome do aluno(%i): %s",i, vetor[i].nome); printf("\n media do aluno: %.2f\n\n", vetor[i].media); } else if(flag == 3 && vetor[i].media > 7){ printf("Media do Aluno(%i): %f\n",i, vetor[i].media); } } else break; } printf("-------------\n"); }
  10. Boa tarde, segue uma série de instruções para montar seu código. Uma dica antes: é sempre bom separar as etapas que estão na questão, facilita a montagem da logica do código. Segue: 1 - Entrada de 6 valores Nessa etapa você já deve ter um vetor de [6] (0...5) para armazenar os valores. Use um loop for para facilitar a estrutura do código, e otimizar. Caso não puder, tente organizar a entrada. Depois de declarar o vetor, você mostra uma mensagem pedindo o numero e usa o scanf(const char *,...) para armazenar no vetor. Se não puder usar for: scanf... vetor[0] = numero; scanf... vetor[1] = numero; ... 2 - Imprimir valores positivos Nessa etapa você precisa usar uma série de if (melhor usar for e if), para verificar se o índice x do vetor(vetor[x]) possui um valor positivo, sendo que o só o if verifica isso, e no caso de ser negativo, você usa o printf para mostrar o numero. if(vetor[0] > 0){ //positivo - mostrar numero } if(vetor[1] > 0){ //positivo - mostrar numero } //e assim vai... 2 - Imprimir média de valores positivos Nessa etapa você precisa usar uma série de if (melhor usar for e if), para verificar se o índice x do vetor(vetor[x]) possui um valor positivo, você usa uma variável para somar todos valores positivos, e no final você cria a média, subtraindo pelo numerador 6. Ex: //Media de 2 numeros positivos int mediaFinal = 0, vetor[2]; if(vetor[0] > 0){ mediaFinal+=vetor[0]; } if(vetor[1] > 0){ mediaFinal+=vetor[1]; } mediaFinal=mediaFinal/2; P.S: Como você não mandou nenhum código, nem nada, não posso lhe fornecer nenhum código, portanto, posso lhe oferecer um começo.
  11. Segue o código, acredito que no seu há algum erro: #include <stdio.h> #include <math.h> typedef struct{ int x; int y; }TPoint; int distancia(TPoint A, TPoint B) { return(sqrt((B.x-A.x) + (B.y-A.y)));//Esse calculo nao esta correto } int main(void) { int d; d = distancia((TPoint){0,0}, (TPoint){100,100}); //<--- magica feita por isrnick printf("A distancia é %d",d); }
  12. //Como seu typedef da struct é TPoint, você precisa declarar um objeto a partir desse type. //Como: //TPxy = struct type //TPoint = struct object typedef struct TPxy{ int x; int y; }TPoint;
  13. @Relry PeSan Essa função não é instável? Testei aqui a um tempo e não funcionou...

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

×