Ir ao conteúdo
  • Cadastre-se

1freakday

Membro Pleno
  • Posts

    671
  • Cadastrado em

  • Última visita

Tópicos solucionados

  1. O post de 1freakday em Lista duplamente encadeada - c foi marcado como solução   
    Você precisa retornar a lista:
    l = lst2_libera(l);
  2. O post de 1freakday em Código com função de cadastro em C roda e após a 1ª entrada de dados da erro. foi marcado como solução   
    Você esqueceu de usar & para int em scanf:
     
    errado
    scanf("%d", cad_client[cont].emp_pes);
     
    certo
    scanf("%d", &cad_client[cont].emp_pes);
  3. O post de 1freakday em Função: Receber valor por parâmetro e Retornar valor de S foi marcado como solução   
    @Dafne Guimarães Como o programa usa divisores, é necessário que seja usado tudo como float na area de cálculo, segue:
    #include <stdio.h> #include <stdlib.h> /*Escreva uma função que recebe por parâmetro um valor inteiro e positivo N e retorna o valor de S. S = 1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/N.*/ int ler_numero(); float calcula_numero(int n); int main() { int n; float s; n = ler_numero(); s = calcula_numero(n); printf("O valor de S eh: %.2f\n", s); return 0; } int ler_numero(){ int n; printf("Digite um numero inteiro e positivo:\n"); scanf("%d", &n); return n; } float calcula_numero(int n){ float s = 0; float i; for (i=1; i<=n; i++){ s+=(1/i); } return s; }  
    adicionado 1 minuto depois @TYSQUARE89 Eu removi seu while, mas pode colocar, use:
     
    do...while(n <= 0);
  4. O post de 1freakday em Funções : Ler um numero positivo e inteiro e saber se é primo ou não. foi marcado como solução   
    @Dafne Guimarães Apenas use:
    int aux = 0;
     
    na função imprime_numPrimo.
    adicionado 2 minutos depois Na função main, você não precisa declarar a variável num e nem precisa chamar a função para imprimir o num, pois já é feito em ler_numero(); 
  5. O post de 1freakday em Exercicio para imprimir o contrário de um número lido foi marcado como solução   
    @Lucas Da Silva Rezende
    Na forma como você está fazendo, você apenas descobre os zeros e divide, não está invertendo.
     
    Você pode usar o mesmo que notação ou pares.  Usando % você pode sempre obter o resto, ou seja, o ultimo numero.Por exemplo:
     
    Vamos supor que você receba os dígitos 213 na variável num. Usando %, podemos pegar 3, 1 e 2 na sequência, assim:
     
    1 - Usamos % em 213 por 10, ficando:       21,3
    //213 = 21,3 = 3 resto = (num % 10);  
     
    2 - Assim recebemos 3, e acrescentamos a uma variável de retorno ( que será o nosso resultado final ).
    //puxa a variavel para o final resultado *= 10; //se o resto for maior que zero, ascrescenta a variavel //se for zero, continua igual resultado = (resto > 0 ? (x+y):x); 3 - Agora num precisa ser dividido por 10, para eliminar o ultimo valor e, para ser verificado pelo while.
    num /= 10;  
    4 - Sobra 21, e dividindo por 10, fica:  2,1
    Apenas repita o 2 e o 3 caso no while.
     
     
     
     
    .....
    Segue o código:
    int intlen(int num){ int x = 0, y = 0; //se num for 0, não tem mais o que fazer... while(num > 0){ y = num % 10; num /= 10; //multiplica por 10, para adicionar 0 x = (y > 0 ? ((x*10)+y):(x*10)); } return x; }  
     
  6. O post de 1freakday em Listar em UI foi marcado como solução   
    Pois é, eu não tinha compreendido muito bem, pensei que queria uma forma de memorizar os arquivos e depois abrir a partir de um padrão, mas se quiser abrir os arquivos sem saber nome nem nada, ainda existe uma forma:
    Exemplo meu:
    //Open source ;) #include <stdio.h> #include <stdlib.h> #include <dirent.h> #include <string.h> void abrir(const char *pasta, const char *arquivo){ if(arquivo != NULL){ //monta caminho char arq[100]; sprintf(arq, "%s/%s",pasta,arquivo); //abrir FILE *f = fopen(arq, "r"); //se arquivo existe if(f != NULL){ char le[100]; printf("\n\n"); while(!feof(f)){ if(fgets(le,100,f)) printf("%s\n",le); } fclose(f); } } } void listar(const char *PASTA){ DIR *dir; struct dirent *lsdir; dir = opendir(PASTA); while ( ( lsdir = readdir(dir) ) != NULL ) { //verifica extensao .txt if(lsdir->d_name[strlen(lsdir->d_name)-3] == 't' && lsdir->d_name[strlen(lsdir->d_name)-2] == 'x' && lsdir->d_name[strlen(lsdir->d_name)-1] == 't'){ //abre o arquivo abrir(PASTA,lsdir->d_name); } } closedir(dir); } //Supondo que a pasta ja exista main() { char pasta[100]; printf("Digite o nome da pasta: "); scanf("%s",pasta); listar(pasta); return 0; } é só digitar o nome da pasta que a função listar, por razões obvias, lista os arquivos nessa pasta e depois encontra os que são .txt, e enfim envia para função abrir.
     
    P.S: se uma pasta se chamar blabla.txt ela sera aberta e vai dar um erro, então tente mantar apenas arquivos com o nome e extensão .txt
  7. O post de 1freakday em Programa deu erro - linguagem c foi marcado como solução   
    //Troque os 2 for(i>1000;i<=2000;i++) //Por for(i=1000;i<=2000;i++) Como você esta usando uma variável temporária resto, quando você mudar de numero no loop, você substituirá o valor armazenado anteriormente, então em vez de usar dois loop, use um, para mostrar se é resto ou não.
  8. O post de 1freakday em Manipular arquivos em c foi marcado como solução   
    Hello friend.
    //P.S: Comentar o código vai facilitar sua vida #include<stdio.h> #include<stdlib.h> #include<string.h> int Le_texto(char *v) { FILE *fp; if ((fp=fopen("texto.txt","r"))==NULL) { printf("Não foi possivel abrir arquivo!"); exit(1); } //Corrigindo sua linha fgets while(fgets(v,500, fp)!= NULL){ printf("%s", v); } fclose(fp); return 0; } //void Corrigir (char v) void Corrigir() { char s1[] = "Mas, Bentinho"; char s2[] = ","; char s3[] = " que e protonotario apostolico"; char s4[] = "?"; // char v[]; DECLARAÇÃO INCORRETA, E ESTA EM DESACORDO COM O PARAMETRO DA CHAMADA DA FUNÇÃO char v[500]; strcat(s1, s2); strcpy(v, s1); puts(v); strcat(s3, s4); strcpy(v, s3); puts(v); } void Grava_texto(char *v) { FILE *fp2; if ((fp2=fopen("textocerto.txt","w"))==NULL) { printf("Não foi possivel abrir arquivo!"); exit(1); } //As duas linhas a seguir serve apenas apra ler o conteudo do arquivo //fgets(v,500, fp2); //printf("%s", v); fprintf(fp2,"%s",v); fclose(fp2); //return 0; usando void como tipo de função } int main() { char vetor[500];//Memoria ja alocada Le_texto(vetor);//Envia vetor alocado acima return 0; }  
  9. O post de 1freakday em Verificar se existe duplicação de valor na lista - c foi marcado como solução   
    Como você está usando C, não há o tipo bool por padrão, porém você pode criar com int, ou criar um tipo enum bool com os valores true e false.
    No segundo, se você está passando um vetor Node criado com índice [] e não ponteiro *, você tem que passar o endereço para o ponteiro do parâmetro (na chamada do função).
    Exemplo:
    int main(){
          struct Node no[1];
          CPF_lookup(&no[0]);
    }
  10. O post de 1freakday em Mingw e msys foi marcado como solução   
    Se quiser usar os comandos gcc,g++,etc..., pelo cmd, você precisa adicionar a pasta dos binários do mingw no PATH, em configurações avançadas do windows / variáveis de ambiente.
  11. O post de 1freakday em Implementar uma função de pesquisar em agenda (struct) foi marcado como solução   
    #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct{ char nome[15]; char email[25]; char endrua[100]; int endnumero; char endcompl[10]; char endbairro[10]; int endcep; int tel; int datadia; int datames; int dataano; char obs[15]; } Agenda; void pesquisarnome(Agenda *, int); int main(){ int tam = 2; Agenda pessoas[tam]; int op; int i; printf("Cadastrar:\n\nEx de cadastro: Nome(Joao), email, endereço rua, numero, bairro, cep, complemento, telefone, dia do aniversario, mes do aniversario, ano do aniversario, observação"); for(i=0;i<2;i++){ scanf("%s %s %s %d %s %d %s %d %d %d %d %s", pessoas[i].nome, pessoas[i].email, pessoas[i].endrua, &pessoas[i].endnumero, pessoas[i].endbairro, &pessoas[i].endcep, pessoas[i].endcompl, &pessoas[i].tel, &pessoas[i].datadia, &pessoas[i].datames, &pessoas[i].dataano, pessoas[i].obs); } for(i=0;i<2;i++){ printf("\n\nCADASTRO(%d):\n\nNOME: %s\nEMAIL: %s\nRUA: %s\nNUMERO: %d\nBAIRRO: %s\nCEP: %d\nCOMPL.: %s\nTEL: %d\nDATA DIA: %d\nDATA MES: %d\nDATA ANO: %d\nOBSERVACAO: %s\n\n\n", i+1, pessoas[i].nome, pessoas[i].email, pessoas[i].endrua, pessoas[i].endnumero, pessoas[i].endbairro, pessoas[i].endcep, pessoas[i].endcompl, pessoas[i].tel, pessoas[i].datadia, pessoas[i].datames, pessoas[i].dataano, pessoas[i].obs); } while(1){ printf("$$$$$$$$$$$$$$$$$$$$$$$ A G E N D A $$$$$$$$$$$$$$$$$$$$$$$$$\n\n\n\n"); printf("MENU: Escolha uma opcao:\n\nPesquisar Nome (1) \n\nPesquisar Mes de Aniversario(2)\n\nNomes e Tels (3)\n\n"); scanf("%d", &op); switch(op){ case 1: pesquisarnome(pessoas, tam); break; default: break; } } return 0; } void pesquisarnome(Agenda *pessoas, int tam){ int i; char x[50]; printf("\nNome: "); scanf("%s",x);//<-- char ja envia o endereco, nao precisa de & for(i=0;i<tam;i++){ if(strcmp(x, pessoas[i].nome)==0){ //<-- observe o uso de [i] e . printf("%s", pessoas[i].nome); } } return; }  
  12. O post de 1freakday em String -> compila, mas quando preencho, dá erro. foi marcado como solução   
    scanf("%d",&consumo[i]);  
  13. O post de 1freakday em Programa com problema foi marcado como solução   
    #include <stdio.h> #include <stdlib.h> main () { char nome[25]; int qual,d,r,m,t,V,P,C,vaga; printf("\nPROGRAMA DE CONTROLE DE ACESSO - NEW WEB \n"); printf("\n[1] VISITANTE \n[2] FUNCIONARIO \n[3] CLIENTE \n[4] ESTACIONAMENTO\n"); scanf("%d",&qual); if (qual==1) { printf("\n NOME COMPLETO:"); scanf ("%s",nome); printf("\n RG:"); scanf ("%d",&r); printf("\n DEPARTAMENTO:"); scanf ("%d",&d); printf("\n ACESSO LIBERADO!!!\n"); } else if (qual==2) { printf("\n NOME COMPLETO:"); scanf ("%s",nome); printf("\n MATRICULA:"); scanf ("%d",&m); printf("\n DEPARTAMENTO:"); scanf ("%d",&d); printf("\n ACESSO LIBERADO!!!\n"); } else if (qual==3) { printf("\n NOME COMPLETO:"); scanf ("%s",nome); printf("\n RG:"); scanf ("%d",&r); printf("\n TELEFONE:"); scanf ("%d",&t); printf("\n ACESSO LIBERADO!!!\n"); } else if (qual==4) { printf("\n NOME COMPLETO:"); scanf ("%s",nome); printf("\n MATRICULA:"); scanf ("%d",&m); printf("\n DEPARTAMENTO:"); scanf ("%d",&d); printf("\n TELEFONE:"); scanf ("%d",&t); printf("\n VEICULO:"); scanf ("%d",&V); printf("\n PLACA:"); scanf ("%d",&P); printf("\n COR:"); scanf ("%d",&C); printf("\n VAGA:"); scanf ("%d",&vaga); printf("\n ACESSO LIBERADO!!!\n"); } else { printf ("\n INFORMACAO INCORRETA - ACESSO NAO PERMITIDO \n"); } system ("pause"); }  
  14. O post de 1freakday em Porque minha função esta retornando errado? (vetor ordem crescente) foi marcado como solução   
    #include <stdio.h> #include<stdlib.h> #include<time.h> void crescente(int vet[]); int main (){ int vet[50]; int i, vet1[20]; srand(time(NULL)); for(i=0;i<50;i++){ vet[i]=rand()%50; } crescente(vet); return 0; } void crescente(int vet[]){ int i, aux, j; for(i=0;i<50;i++){ for(j=i+1; j<50 ; j++){ if(vet[i] > vet[j]){ aux = vet[i]; vet[i] = vet[j]; vet[j] = aux; } } } //Vai retornar apenas uma vez, ele nao vai ir e voltar, //por que ele nao controla a funcao main depois que retorna //return vet[i]; for(i=0; i<50; i++){ printf(" %d ", vet[i]); } printf("\n", vet[i]); }  
  15. O post de 1freakday em Problema com função em c foi marcado como solução   
    char continuar(char escolha){     if(escolha == 'S') return 1;     else if(escolha == 'N') return 0;     else printf("Caractere invalido"); }  
    Nessa função(acima) você esta utilizando char como tipo de função, o que requer um tipo de retorno char e nao int = 1 ou 0,
    mas isso não equivale totalmente a um erro pois char também é um int, só que na conversão, ele troca o valor int pelo ascii char e no caso você esta retornando 1 e 0 que equivalem a só e STX, porém o erro que você enviou quer dizer que você não determinou o retorno no fim da função char continuar(char), ai no caso você utiliza o programa assim:
     
     
    #include <stdio.h> char continuar(char escolha){ if(escolha == 'S') return 'S'; else if(escolha == 'N') return 'N'; else printf("Caractere invalido"); //I de invalido return 'I'; } int cubo(int n){ int a=0; a = n*n*n; return a; } int main(){ int n=0, a=0; char escolha=0; do{ printf("Digite um numero\n"); scanf("%d", &n); a = cubo(n); printf("O numero elevado ao cubo é %d\n", a); getchar(); printf("Deseja continuar? S para sim e N para nao\n"); scanf("%c", &escolha); }while(continuar(escolha) == 'S'); return 0; }  

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