
Dan Oliveira
Membros-
Total de itens
95 -
Registro em
-
Última visita
Tudo que Dan Oliveira postou
-
acho que a API do facebook é só para plataformas móveis e internet. Não tem api para desktop.
-
Sem problemas.
-
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.
-
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.
-
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.
-
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á?
-
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
-
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
-
#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.
-
modode leiutura e escrita binária é assim "r+b"
-
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
-
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
-
É 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.
-
declara dentro de main()
-
ele postou em C++, em C seria: int i; for (i = 1; i < 10; i++) { if(i == 9) printf("%d", i); printf("%d,", i); }
-
Esse código aí é em C++, não confunda as duas linguagens
-
Se você postar o seu código ficaremos disposto a te ajudar.
-
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
-
Função para cadastrar e fazer login de usuários
pergunta respondeu ao Dark Lotus de Dan Oliveira em C, C++
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. -
Que biblioteca contém essa função? Você tem instalada em seu computador?
-
Função para cadastrar e fazer login de usuários
pergunta respondeu ao Dark Lotus de Dan Oliveira em C, C++
Dá uma estudadinha sobre função que leem e gravam em arquivos você encontrará o que você precisa. biblioteca <stdio.h>, Veja a referencia -
Não confunda goto com gotoxy();
-
Auxilio Iniciante Primeiro Programa
pergunta respondeu ao Cesar_rs de Dan Oliveira em Tutoriais & Dicas - C, C++
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 -
Concatenação de numeros em C
pergunta respondeu ao Carlos Henrique Biazoto de Dan Oliveira em C, C++
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; } -
Concatenação de numeros em C
pergunta respondeu ao Carlos Henrique Biazoto de Dan Oliveira em C, C++
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.