Ir para conteúdo
Fórum Script Brasil

Dan Oliveira

Membros
  • Total de itens

    95
  • Registro em

  • Última visita

Tudo que Dan Oliveira postou

  1. Dan Oliveira

    API Facebook

    acho que a API do facebook é só para plataformas móveis e internet. Não tem api para desktop.
  2. Não estou atacando ninguém, mas tenha cuidado pois as regras do fórum existem e podem apagar o tópico caso administradores vejam. Eu apoio pessoas como o Pedro, que ajuda bastante os outros, só penso que postem pelo menos um pedaço do seu código, nem que seja um esboço, pois é bom praticar a própria lógica de programação.
  3. Pesquise na internet sobre métodos de ordenação, algoritmos de ordenação como o buble sort, quick sort... Poste o código e todos terão prazer em ajudar.
  4. use gets() (da biblioteca stlio.h) para obter strings do usuário. Use funções que manipulam caracteres da biblioteca ctype.h, EX.: isalpha(); //verifica se o caractere é alfabético e retorna algo para dizer se é ou não islower(); //verifica se é minusculo faça um loop até o final da string e comece a testar com as funções ctype cada caracteres para saber mais sobre o retorno das funções ou como utiliza-las leia alguma referencia de C na net, crie e poste seu código e estaremos prontos a ajudá-lo.
  5. isso é em C++, não é C. O pedro sempre tem uma boa lógica de programação em C++. Mas Pedro não vai ficar fazendo o exercício para os outros? Deixe pelo menos eles postarem o código tá?
  6. Em c não temos strings como tipos de dados, então para lermos uma sequencia de caracteres temos que colocar no final o caractere terminador '\ 0'. Por isso temos que declarar seu tamanho com um caractere a mais. Ex: char nome[7] = "Daniel"; // é o mesmo que {'D', 'a', 'n', 'i', 'e, 'l', '\ 0'}; todas as funções que trabalham com string trabalham até encontrar esse caractere. então a string n acima ficaria assim {'L', 'u', 'c', 'a', 's', ';', '\ 0', 'C', 'a', 'r', 'n', 'e', 'i', 'r', 'o', '\ 0'}; a função printf() só vai ler até o primeiro caractere terminador da string ou seja Lucas; '\ 0'. Ops encontrou o caractere a string acaba aqui! aqui vai o código certo #include <stdio.h> int main() { char i[7]="Lucas;"; char t[10]= "Carneiro"; char n[15]; //Menos dois caracteres '\ 0' int k; int p; for (p = 0; i[p] != '\ 0'; p++)//enquanto não for o final de i n[p] = i[p];//atribui do indice 0 em diante // p = 6 for(k = 0; t[k] != '\ 0'; k++, p++)//enquanto não for o final de t n[p] = t[k];//atribui do indice 6 em diante // p = 15 n[p] = '\ 0'; printf ("O valor junto %s\n",n); } Obs: o caractere '\ 0' se escreve junto, mas tive problemas com o html ao enviar esse post e aí separei para você vê-lo
  7. Se você pegar uma string com scanf ele lê uma string se você apertar space ou enter ele termina a leitura e deixa no buffer o resto da string, ou seja na próxima vez que você lê algo ele não vai esperar o usuario digitar e vai colocar o que der do buffer até quando esvazia-lo. Quando você lê um int e pressiona enter ele vai pro buffer e então o proximo scanf vai passar direto então coloco um espaço antes para ele ignorar algo que se pareça com isso(como um enter). gets() é uma função que pega strings e espaços até que um enter seja pressionado; por exemplo, digamos que o o usuario digitou Daniel Oliveira: scanf("%s", nome); //Vai ler Daniel colocar na variavel nome e o resto vai pro buffer gets(nome); //Vai ler Daniel Oliveira até encontar um enter e deixar o buffer limpo Para os arquivos recomendo o livro de Luiz damas linguagem C. Modo texto "r" : permite leitura. não permite gravação. se o arquivo existir lê a partir do inicio. se não existir retorna NULL "w" : não permite leitura. permite gravação. se o arquivo existir ele é recriado. se não existir ele é criado. grava a partir do inicio "a" : não permite leitura. permite gravação. se o arquivo existir grava a partir do final(acrescenta). se não ele cria. "r+" : permite gravação. permite leitura. se o arquivo existir permite alteração. se o arquivo não existir cria. le e grava a partir do inicio "w+" : permite gravação. permite leitura. se o arquivo existir recria. se o arquivo não existir cria. grava e le a partir do inicio. "a+" : permite gravação. permite leitura. se o arquivo existir grava e lê a partir do final. se não existir ele cria para abrir em modo binário só acrescenta o b na frente. Terá a mesma opção que no modo texto. "rb", "wb", "ab", "r+b", "w+b", "a+b". quando você trabalha com arquivos não podemos gravar direto no arquivo existe um camada de abstração no processo que chamamos de streams. Quando você abre um arquivo uma stream a ele é conectada. A stream pode ser modificada durante o programa, mas o arquivo só vai sofrer alteração se chamarmos explicitamente fclose(ponteiro_para_o_arquivo) ou quando o programa termina. O que eu falo é mais ou menos assim, crie um texto no bloco de notas a abra ele novamente em outro bloco de notas. Escreva algo nele, salve. Agora vai no primeiro bloco de notas e salve também.O texto escrito vai ser apagado e ficará vazio. Isso acontece quando você abre um arquivo duas vezes ao mesmo tempo. Não é proibido, mas eu não recomendo. sobre seu código agora, lembra do que eu disse sobre o scanf ele deixou aquele enter no buffer. Os programadores não recomendam, mas faça isso antes do gets(). fflush(stdin); //esvazia o buffer do teclado
  8. #include <stdio.h> #include <stdlib.h> //exit() struct ag{ char nome[100]; char ende[100]; char email[100]; int tel; int cel; int comer; int id; }; typedef struct ag Agenda; //para ficar melhor a compreensão Agenda agenda; FILE *arq; int op; void menu(){ printf("Bem vindo a agenda eletronica! Aperte:\n 1 - Inserir um nome \n 2 - Listagem de todos os nomes \n 3 - Consulta de dados (Por nome) \n 4 - Remocao de um nome \n 5 - Quantidade de nomes inicializados com cada letra do alfabeto \n 0 - Para fechar o programa\nOpcao: "); scanf("%d",&op); while(op < 0 && op > 5){//bem melhor do que aquela lógica printf("Erro! Opcao invalida,entre com um valor valido por favor:\n"); scanf("%d",&op); } } void dados(){ int op1,op2; printf("Entre com o nome:\n"); gets(agenda.nome);//Use isso senão vai ocorrer seus erros descritos no tópico printf("Por favor entre com o telefone:\n"); scanf(" %d", &agenda.tel); printf("Gostaria inserir mais dados? (0 - 1)\n"); scanf(" %d",&op1);//Um espaço antes auxilia o scanf a não pegar lixo em buffers if(op1){ printf("Gostaria de entrar com o Telefone Celular? (0 - 1)\n"); scanf(" %d",&op2); if(op2){ printf("Tel. Celular: "); scanf(" %d",&agenda.cel); } printf("Gostaria de entrar com o Telefone Comercial? (0 - 1)\n"); scanf(" %d",&op2); if(op2){ printf("Tel. Comercial: "); scanf(" %d",&agenda.comer); } printf("Gostaria de entrar com o Endereco? (0 - 1)\n"); scanf(" %d",&op2); if(op2){ printf("Endereco: "); gets(agenda.ende); } printf("Gostaria de entrar com o e-mail? (0 - 1)\n"); scanf(" %d",&op2); if(op2){ printf("E-mail: "); gets(agenda.email); } } } void escrevearquivo(){ arq = fopen("agenda.bin","ab");//já inicia no final do arquivo if(arq == NULL){//teste nem sempre você tera permissão para abrir um qruivo printf("Erro ao abrir arquivo!\n"); exit(1); //termina seu programa } if(fwrite(&agenda, sizeof(Agenda), 1, arq) != 1){//teste para ver se escreveu os dados no arquivo printf("Erro ao escrever no arquivo!\n"); exit(2); } fclose(arq); } void imprimiarquivo(){ arq = fopen("agenda.bin","rb"); if(arq == NULL){ printf("Erro ao abrir arquivo!\n"); exit(1); } //enquanto fo lido certo ou não seja o final do arquivo while(fread(&agenda, sizeof(agenda), 1, arq) == 1 && !feof(arq)){ printf("Nome: %s \nTelefone: %d \nCelular: %d \nComercial: %d \nEndereco:%s \nEmail:%s \n",agenda.nome, agenda.tel, agenda.cel, agenda.comer, agenda.ende, agenda.email); fread(&agenda, sizeof(agenda), 1, arq); } fclose(arq); } Agora seu main() abre e não fecha "arquivos.bin" ai você quer abrir o mesmo arquivo em outra função? Isso vai causar perda de dados. se fosse você pensava um pouco na função menu(), transforme em main() e implemente mais alguma coisa para seu algoritmo funcionar. Ou use o retorna da função menu como int.
  9. modode leiutura e escrita binária é assim "r+b"
  10. se você passa um ponteiro de uma struct para função seus membros vão ser acessado dessa maneira. R->nome; R-> peso; R->altura; com -> e não um ponto que usamos em uma variavel comum
  11. Dan Oliveira

    Ajuda com laço for

    Se você pode usar a biblioteca math.h use pow. se não escreva uma função parecida com essa Depois use um for para ir iterando e a cada iteração use a variavel i com espoente
  12. Dan Oliveira

    Ajuda com laço for

    É por padrão do C declarar todas as variáveis no inicio do bloco de instruções. Se você compilar isso em um compilador de linguagem C ocorreria um erro dizendo que não se pode declarar variável dentro de um loop. Para contornar esse erro tem que chamar o compilador(no caso do gcc) a flag -std=c99.
  13. declara dentro de main()
  14. Dan Oliveira

    Ajuda com laço for

    ele postou em C++, em C seria: int i; for (i = 1; i < 10; i++) { if(i == 9) printf("%d", i); printf("%d,", i); }
  15. Esse código aí é em C++, não confunda as duas linguagens
  16. Se você postar o seu código ficaremos disposto a te ajudar.
  17. errou na chamada da função Q_VEZES #include <string.h> //headers padrão do C declaram assim #include <stdio.h> const int TAM=60; void LEITURA(char F[TAM]){ printf("Entre com a frase:\n"); gets(F); }//Fim da função LEITURA int Q_VEZES_A(char F[TAM]){ int Q=0,i; for(i=0;i<strlen(F);i++){ if(F[i]=='a'){ Q=Q+1; }//Fim do If }//Fim do For return Q; }//Fim da função Q_VEZES_A int main(){ int quant; char FRASE[TAM]; LEITURA (FRASE); quant = Q_VEZES_A(FRASE); //errou na hora de chamar a função printf("Quantidade de letras a: %d.\n",quant); }//Fim da main
  18. O modo binário fica mais fácil de comparar ler gravar sem perda nenhuma de bytes é só colocar um b na frente do modo de abertura do arquivo. aí usa duas funções que facilitam muito. por exemplo char senha[10]; char senha2[10]; FILE *arq; arq = fopen("arquivo.dat", "wb"); //abertura em binário ou seja não cria um texto e sim uma sequencia que reprezenta os dados brutos fwrite(senha, sizeof(char) * 10, 1, arq);//grava a senha no arquivo arq = fopen("arquivo.dat", "rb"); //abertura em binário para fread(senha2, sizeof(char) * 10, 1, arq); //lê os dados e grava na variável mas porque desse jeito? porque a abertura em modo binário escreve a própria variável no arquivo sem acrescentar ou tirar. é bem mais fácil trabalhar com binário que é o que o computador mais entende fread e fwrite pesquise sobre elas: poderia explicar como utiliza elas mas para fins didáticos tente aprender com você mesmo.
  19. Que biblioteca contém essa função? Você tem instalada em seu computador?
  20. Dá uma estudadinha sobre função que leem e gravam em arquivos você encontrará o que você precisa. biblioteca <stdio.h>, Veja a referencia
  21. Pedro! Mas o correto não seria o programa colocar a frase na tela e esperar pressionar uma tecla? O comando system(pause) faz isto ou não é necessario? Grato. César Quando você fez esse programa ele foi feito para operar em ambiente de terminal(windows prompt de comando se você estiver no prompt na mesma pasta do se programa, e digitar o mesmo nome do programa ele executará e mostrará na tela sem sair so prompt Ao contrário do devc++ que volta para o programa, mas o computador é rápido demais e então não se vê nada. faça um teste: cole seu arquivo na área de trabalho( o executavel resultado da compilação do dev abra o prompt de comando: e digite: cd ./Desktop //seu diretório vai mudar para a área de trabalho nome_do_programa //Seu programa vai rodar e mostrar o programa sem fechar a tela O code::blocks da uma pausa no final do programa e ele é bem mais atual, se você puder mude para o code ele é bem mais estável e atualizado
  22. vamos usar sua lógica depois de uma entrada de um usuário; 2365 x = 2; y = 3; z = 6; w = 5; xy teria o valor de 23; então faça estas atribuições e crie algumas variáveis xy = x * 10 + y; wz = w * 10 + z; ww = w * 10 + w; seu programa ficará... #include <stdio.h> int main() { int n, x, y, z, w, wz, xy, ww; scanf("%d", &n); x=n/1000; y=n%1000/100; z=n%100/10; w=n%10; //atribucoes especiais xy = x * 10 + y; wz = w * 10 + z; ww = w * 10 + w; printf("o valor de xy :%d%d\n",x,y); printf("o valor de xz :%d%d\n",x,z); printf("o valor de wz + xy: %d + %d = %d\n",wz,xy, wz+xy); printf("o valor de xy * ww + z: %d * %d + %d = %d\n", xy, ww, z, xy*ww+z); return 0; }
  23. se você opta por não usar string int num; // numeros de 4 algarismos, de usar uma validação para que le tenha 4 algarismos int x, y, z, w; scanf("%d", num); x = num/1000; y = (num - x) / 100; z = (num - (x+y))/10; w =(num - (x+y+z); testa aí. agora assim para calcular aquela parte vai requer alguns cálculos.
×
×
  • Criar Novo...