
Rafael Barros
Membros-
Total de itens
52 -
Registro em
-
Última visita
Tudo que Rafael Barros postou
-
Por Favor Me Ajudem A Arrumar, Iniciante Na Area
pergunta respondeu ao polly krika de Rafael Barros em C, C++
OLHE O que A FUNCAO stdin (); faz, num to com tempo de explicar, mas resolvi seu problema, seu codigo ta pegando!!!!! #include <stdio.h> #include <stdlib.h> #include <string.h> struct funcionario { char nome[40]; int codigo; double salario; int e; }; void gravar(); void ler(); void alterar(); void exclui_logic(); void exclui_fisic(); int main() { struct funcionario f; FILE *fptr; //cria um ponteiro que aponta para um arquivo, o ponteiro e o ftpr char aux[40], op; // variavel char resp; //variavel while (resp!=3) // continuidade de programa { printf("\n1 - Cadastrar"); //menu printf("\n2 - Consultar"); printf("\n3 - Sair"); printf("\n4 - Alterar"); printf("\n5 - Exclusao Logica"); printf("\n6 - Exclusao Fisica"); printf("\n\nOpcao: "); fflush (stdin); // semrpe use essa funcaod antes de ler algo resp=getchar(); switch (resp) { case '1': gravar(); break; case '2': ler(); break; case '3': printf("\nsaindo"); break; case '4': alterar(); break; case '5': exclui_logic(); break; case '6': exclui_fisic(); } system("cls"); //só funciona no windows } } //--------------------------------------------------------------------------- void gravar() //funcao gravar { struct funcionario f; //variavel local FILE *fptr; char aux[40], op; int resp; if ((fptr = fopen("funcionario.txt", "rb+")) == NULL) // funcao que abre um arquivo, se o ponteiro for igual arquivo ele abre um arquivo if ((fptr = fopen("funcionario.txt" , "wb")) == NULL) // senao ele cria um arquivo vazio { printf("\n Erro: "); getchar(); exit(1); } do{ printf("\n Nome: "); fflush (stdin); // semrpe use essa funcaod antes de ler algo scanf("%s",f.nome); /*Esse "%s" não existia.....*/ printf("\n Codigo: "); fflush (stdin); // semrpe use essa funcaod antes de ler algo gets(aux); f.codigo = atoi(aux); fflush (stdin); // semrpe use essa funcaod antes de ler algo printf("\n Salario: "); fflush (stdin); // semrpe use essa funcaod antes de ler algo gets(aux); f.salario = atof(aux); f.e = 0; fseek(fptr, 0, 2); //fseek, posiciona o ponterio no local marcado fwrite(&f, sizeof(f), 1, fptr); //fwrite, escreve printf("\n Cadastrar outro funcionario? (s/n)\n"); fflush (stdin); // semrpe use essa funcaod antes de ler algo op = getchar(); }while((op == 's') || (op == 'S')); fclose(fptr); //fechar arquivo } //------------------------------------------------------------------------------------------------ void ler() //ler { struct funcionario f; FILE *fptr; char aux[40], op; int resp; if ((fptr = fopen("funcionario.txt" , "rb")) == NULL) { printf("\n Erro: "); getchar(); exit(1); } fseek(fptr, 0, 0); while(fread(&f, sizeof (f), 1, fptr)) { if (f.e == 0) { printf("\n Nome: %s", f.nome); printf("\n Codigo: %d", f.codigo); printf("\n Salario: %.2lf\n", f.salario); } } fclose(fptr); fflush (stdin); // semrpe use essa funcaod antes de ler algo getchar(); } //-------------------------------------------------------------------------------------------- void alterar() //alterar { FILE *fptr; struct funcionario f; char aux[40], nomeaux[40]; if ((fptr=fopen("funcionario.txt","rb+"))==NULL) { printf("\n ERRO!"); exit(1); } printf("\n Entre com o nome do Funcionario: "); fflush (stdin); // semrpe use essa funcaod antes de ler algo gets (nomeaux); fseek(fptr,0,0); while (fread(&f, sizeof(f),1,fptr)) { if(strcmp(f.nome, nomeaux)==0) if(f.e==0) { fseek(fptr, ftell(fptr) - sizeof (f), 0); printf("\n Novo Salario"); fflush (stdin); // semrpe use essa funcaod antes de ler algo gets(aux); f.salario = atof(aux); fwrite(&f, sizeof (f), 1, fptr); fseek(fptr, 0, 2); } } fclose(fptr); fflush (stdin); // semrpe use essa funcaod antes de ler algo getchar(); } //------------------------------------------------------------------------------------------- void exclui_logic() //exclusao logica { FILE *fptr; struct funcionario f; char aux[40], nomeaux[40]; if ((fptr=fopen("funcionario.txt","rb+"))==NULL) { printf("\n ERRO!"); getchar(); exit(1); } printf("\n Entre com o nome do Funcionario: "); fflush(stdin); gets (nomeaux); fseek(fptr,0,0); while (fread(&f, sizeof (f), 1, fptr)) { if(strcmp(f.nome, nomeaux)==0) if(f.e==0) { fseek(fptr, ftell(fptr) - sizeof (f), 0); f.e=1; fwrite(&f, sizeof (f), 1, fptr); fseek(fptr, 0, 2); } } fclose(fptr); getchar(); } //----------------------------------------------------------------------------------------- void exclui_fisic() //exclusao fisica { FILE *fptr, *fptrnovo, *fptrback; struct funcionario f; if ((fptr=fopen("funcionario.txt","rb"))==NULL) { printf("\n ERRO!"); exit(1); } if ((fptrnovo=fopen("funcionario.txt","wb"))==NULL) { printf("\n ERRO!"); exit(1); } if ((fptrback=fopen("funcionario.txt","rb+"))==NULL) { if((fptrback=fopen("funcionario.txt","wb"))==NULL) { printf("\n ERRO!"); exit(1); } } while (fread(&f,sizeof(f),1,fptr)) { if(f.e==0) { fwrite(&f,sizeof(f),1,fptrnovo); } else { fwrite(&f,sizeof(f),1,fptrback); } } fclose(fptr); /*fclose(fptrback); fclose(fptrnovo); remove("funcionario.txt"); remove("i"); remove("c:/hidalgo/bdhidalgo.bi"); getchar( );*/ } -
foi mal pessoal, não pude olhar o forum hj, só parei agora pra olhar.... espero que tenham conseguido rodar o programa!!1
-
IMAGINO que O QUE você QUER SEJA ISSO: #include <stdio.h> #include <stdlib.h> void classi_crime (int cont) { switch (cont) { case 2:printf ("SUSPEITA");break; case 3:printf ("CUMPLICE");break; case 4:printf ("CUMPLICE");break; case 5:printf ("ASSASSINO(A)");break; default:printf ("INOCENTE"); } } int main () { int cont, i=0; char resposta [5]; cont=0; printf (" PERGUNTAS SOBRE O CRIME "); printf ("\n\n"); printf ("(a) Telefonou para a vitima (S/N)?"); scanf ("%c",&resposta[0]); printf ("(b) Esteve no local do crime (S/N)?"); scanf ("%c \n",&resposta [1]); printf ("(c) Mora perto da vitima (S/N)?"); scanf ("%c \n",&resposta [2]); printf ("(d) Devia para a vitima (S/N)?"); scanf ("%c \n",&resposta [3]); printf ("(e)já trabalhou com a vitima (S/N)?"); scanf ("%c \n",&resposta [4]); for (i=0;i<5;i++) { if(resposta[i]=='S' || resposta[i]=='s') cont=cont+1; } printf ("\n\nRESULTADO FINAL\n\n"); classi_crime(cont); printf ("\n\n"); system ("pause"); return (0); } compare com o seu e você verá, seu codigo possui VARIOSSSSSSS ERROSSS... espero ter ajudado.
-
já sei por que é: no lugar do (float)(idadetotal/cont) coloque: (float)(idadetotal)/(float)(cont) ok???
-
já sei por que é: no lugar do (float)(idadetotal/cont) coloque: (float)(idadetotal)/(float)(cont) ok???
-
deve substituir: printf ("\n N de candidato(s) cadastrado(s): %d \n Media de Idade %.1f\n\n",cont, (float)(idadetotal/cont)); por printf ("\n N de candidato(s) cadastrado(s): %d \n Media de Idade %.2f\n\n",cont, (float)(idadetotal/cont)); aquele numero que fica no meio do % e f é o numero da precisão!!!
-
Estou Com Dificuldade De Implementar Em C++ Esse Programa Em Pascal
pergunta respondeu ao protonto de Rafael Barros em C, C++
amigo, acho meio dificil alguém fazer isso pora você.. se você fizesse e só tirasse as duvidas seria mais fácil, nós poderiamos ajudar melhor.. abraços. -
ASSIM: #include <stdio.h> #include <string.h> int main() { char str[80]; gets(str); int i; printf ("\n\n"); for (i=strlen(str);i>0;i--) { int j; for (j=0;j<i;j++) { printf ("%c", str[j]); } printf ("\n"); } getch(); return 0; } espero ter ajudado, abraços.
-
amigo, se isso ajudar, tá aqui um programa que aloca uma matriz dinamica que eu já tinha feito... este programa é pra saber se a matriz é identidade ou não, mas usa alocação dinamica... #include <stdio.h> int main() { int **matriz,n,i,j,flag=0; int cont; printf("A MATRIZ é IDENTIDADE ? \n\n\n"); printf("Ordem da matriz quadrada: "); scanf("%d",&n); //ALOCANDO: matriz=(int**)malloc(n*sizeof(int)); for(cont=0; cont<n; cont++) matriz[cont]=(int*)malloc(n*sizeof(int)); // FIM DA ALOCAÇÃO for(i=0; i<n; i++) // lendo os dados for(j=0; j<n;j++) { printf("\nMATRIZ[%d][%d]= ",i,j); scanf("%d",&matriz[i][j]); } for(i=0; i<n; i++) { for(j=0; j<n;j++) { if((i==j)&&(matriz[i][j]!=1)) flag=1; if((i!=j)&&(matriz[i][j]!=0)) flag=1; } } for(i=0; i<n;i++) free(matriz[i]); if(flag==1) printf("\n\nA MATRIZ não é IDENTIDADE!!!"); else printf("\n\nA MATRIZ é IDENTIDADE!!!"); getch(); return 0; } TAMBÉM USO O DEV-C++, mas no WINDOWS. espero ter ajudado.
-
para matriz simetrica tem o algoritmo muito bom pra resolver, é o metodo de Cholesk. se quiser eu tenho ele feito em C, me da teu email e eu mando pra você. falow
-
caro amigo, é possivel sim, é só fazer uma função para isso. mas a estruturação do seu codigo não está muito boa, pois era melhor você ter criado uma estrutura que fosse adequada para o seu problema. ex.: struct item { char tipo[80]; int quantidade; }; mas como você fez desse jeito, a função para fazer seria: void oito() { if (qt1== 0) printf ("NOME DO ITEM 1"); else if (qt2==0 ) printf ("nome do item 2"); else if (qt3 == 0) printf ("nome do item 3"); // e assim por diante } isso tudo seria preciso porque você num estruturou como eu falei acima!!! a função para sair de um programa existe e o nome dela é bem sugestivo: exit ( 1 ); espero ter ajudado.
-
usa ponteiros com alocação dinamica!!!! exemplo: char *vetor; int tam = 15; vetor = (char*) malloc (tam*sizeof ( char ) ); para usar isso basta manipular como vetor mesmo: for ( i = 0; i<tam;i++ ) printf ( " o elemento do vetor: %c ", vetor ); ou ainda,para este exemplo: printf ("o vetor é : %s ", vetor); espero ter ajudado.
-
caro amigo, se forem poucas ruas você pode construir uma matriz de adjacencia para este grafo. onde os indices serão as ruas ou seja rua 0, rua 1, rua 2, etc. e os pessos cada elemento da matriz, ai você define do jeito que você quiser usando o comando struct. tipow: struct celula { int distanciaCruzamento; int tempoEmSegundos; char turistico[80]; .... }; espero ter ajudado.
-
não sei o que esse erro significa, mas tenta substituir todos os pronteiros de char por um array de char e vê se pega ok???
-
rapaz é só o arquivo como tipo a+ e então escrever no arquivo... já pra remover o jeito que eu sei fazer é você copiar o conteudo do arquivo em um array de string ,ou seja, char[][] e então remover do array a linha que você quer. Depois disso grava o conteudo do array de Strings no arquivo de novo no modo W. entendeu????
-
caro amigo, você já tentou substitui o parametro do construtor por uma variavel em vez de constante??? outro erro que pode está dando é porque o strlen recebe como parametro uma string e não um pontei, ou seja, ele recebe um array de char e não um ponteiro pra char. da mesma forma o strcpy recebe dois arrays e não ponteiros, em alguns compiladores isso que você fez funciona mas em outro n. tipow o strcpy também pega a segunda string (segundo parametro) e coloca na primeira(primeiro parametro), pelo que eu vi o que você quer é o contrario, você tem que mudar a ordem dos parametros. mas enfim, tente fazer isso pra ver se pega: #include <stdio.h> #include <stdlib.h> #include <string.h> class File{ private: FILE *file; int can; char *nomef; public: File(char *nome) { int x; x = strlen(nome); nomef = (char *)malloc(x * sizeof(char)); strcpy(nomef,nome); } }; int main(){ File file("tst.txt"); } se pegar me fala ok??? espero ter ajudado. abraços
-
arvore B* é que tipo, arvore binaria, arvore binaria de busca??? o que caracteriza arvore B*???
-
Teoria Dos Grafos (caminho De Floyd)
pergunta respondeu ao Rodrigo Barbosa de Rafael Barros em C, C++
pra você implementar uma aplicacao de grafo sem saber C é meio complicado, eu aconselho primeiro você dar uma olhada em algum tutoria falando principalmente de manipulação de matrizes, operaçoes com matrizes e tal, porque esse problema é pura aplicacao de matrizes... abraços -
Num tinha o que fazer e fiz um programa pra gerar uma matriz simetrica: #include <stdio.h> int main () { srand (time(NULL)); int ordem=0; printf ("\nDigite a ordem da matriz simetrica:"); while (ordem<=0) { fflush(stdin); scanf ("%i", &ordem); if (ordem<=0) { printf ("/n\t ERRO!! ORDEM DEVE SER MAIOR QUE ZERO!!"); printf ("\nDigite a ordem da matriz simetrica:"); } } int mat[ordem][ordem],i,j; for (i=0; i<ordem;i++) { for (j=i;j<ordem;j++) { if (i!=j) { mat[i][j] = rand()%101; mat[j][i] = mat[i][j]; } else mat[i][j] = rand()%101; } } printf ("\n\n MATRIZ SIMETRICA GERADA:\n\n"); for (i=0;i<ordem;i++) { for (j=0;j<ordem;j++) printf ("\t%i", mat[i][j]); printf ("\n\n"); } getch(); return 0; }
-
bem, se for em C que você quer fazer isso eu vo sugerir duas maneiras: uma é em algum momento você ler um char e verificar se é igual a 'que', mas imagino que o que você quer é que o programa não espero o usuario digitar uma tecla então sugiro que você use a biblioteca <allegro.h> a primeira opcao: char tecla = 'a'; while (i<20) { ... tecla = getch(); if (tecla=='que' ) break; // sai do while, você pode usar também a função exit(1); que sai do programa! } a segunda opcao: #include <allegro.h> // você TEM que BAIXAR A BIBLIOTECA ... char tecla = 'a'; while ( (i<20) || (!key[KEY_Q]) ) // sai do while se no inicio do laço o usuario precionar 'que' { ... } espero ter ajudado, abraços
-
bem, acho que então você vai usar struct como se fosse classes... a sua dificuldade é em usar struct, mas é como se uma struct fosse uma classe, então a forma de usar é muito parecida. defina uma struct material onde dentro você coloca os "ATRIBUTOS" dela. se não souber a sintaxe dê uma pesquisada por ai. no geral a sintaxe é a seguinte: struct material { int codigo; int tipo; char descr[100]; int quant; float preço; }; typedef struct material *Material; // isso é uma "apelido"!!! se a sua dificuldade é em como manipular essa struct pega um bom tutorial por ai e da uma estudada ok? abraços
-
verifique se o programa foi compilado corretamente!!!! se foi, posta o codigo aqui pra a gente ver se não está pegando realmente em outros compiladores. abraços
-
se você colocasse o codigo ajudaria a te responder!!!
-
EM C++ OU C, porque struct em C++ é estranho, se for C++ é melhor usar CLASSES
-
como assim resolver??? isso seria um sistema linear?? explique melhor para poder ajudar ok??? abraços