waza Posted May 9, 2013 at 05:46 PM Report #506485 Posted May 9, 2013 at 05:46 PM (edited) aqui fica o meu codigo de um programa que ser para registar as informaçoes de alunos, para apenas uma disciplina ! dêm opinioes de modo a melhorar o programa ! a identação nao esta muito boa, pois nao me preocupei muito com isso // // main.c // dbSIMPLES // // Created by Luis Rodrigues on 5/9/13. // Copyright © 2013 Luis Rodrigues. All rights reserved. // // Base de dados simples para alunos, apenas uma turma // #include <stdio.h> #include <stdlib.h> #include <ctype.h> //structures typedef struct { float teste1,teste2,media; }TESTES; typedef struct alunos { char nome[100]; int numero; int idade; char data_nasc[11]; char contacto[14]; char enc_ed[100]; char sexo; TESTES notas; }aluno; //protos void menu(); void inserir(); void mostrar(); void mostrar_um(); void mostrar_todos(); void alterar(); void alterar_nome(); void alterar_idade(); void alterar_data_nasc(); void alterar_sexo(); void alterar_enc_ed(); void alterar_contacto(); void alterar_teste1(); void alterar_teste2(); // var FILE * fp; int last = 0; aluno v[10000], ler, change; //rest int main(int argc, const char * argv[]) { printf("*********************************\n"); printf("** BEM VINDO AO PROGRAMA turma **\n"); printf("*********************************\n\n"); menu(); return 0; } void menu() { char op,op2; do { do { printf("\tMENU:\n"); printf("1 : inserir alunos;\n"); printf("2 : mostrar alunos;\n"); printf("3 : alterar alunos;\n"); printf("0 : sair;\n\n"); rewind(stdin); printf("A sua escolha -> "); op = getchar(); } while ((op != '1') && (op!= '2') && (op!='3') && (op!='0')); switch (op) { case '1': inserir(); break; case '2': mostrar(); break; case '3': alterar(); break; case '0': printf("\nSAIU DO PROGRAMA, ATÉ BREVE!!"); exit(1); } printf("Deseja mais alguma tarefa do menu principal? [s/N] "); rewind(stdin); op2 = getchar(); } while(toupper(op2)!= 'N') ; } void alterar() { int op; char op2,op3; do { do { printf("*********************************\n"); printf("** MENU ALTERAR **\n"); printf("*********************************\n\n"); printf("\tMENU:\n"); printf(" INFORMAÇÔES BASICAS\n"); printf("1 : Alterar o nome;\n"); printf("2 : Alterar a idade;\n"); printf("3 : Alterar a data de nascimento;\n"); printf("4 : Alterar o sexo;\n"); printf("5 : Alterar o encarregado de educação;\n"); printf("6 : Alterar o contacto;\n"); printf(" INFORMAÇÕES DA DISCIPLINA\n"); printf("7 : Alterar nota do teste 1;\n"); printf("8 : Alterar nota do teste 2;\n"); printf("0 : Sair;\n\n"); rewind(stdin); printf("A sua escolha -> "); scanf("%d", &op); printf("Escolheu a opção \"%d\"... Deseja prosseguir? [s/N]",op); rewind(stdin); op3 = getchar(); } while ((op<0) || (op>8)); switch (op) { case 1: alterar_nome(); break; case 2: alterar_idade(); break; case 3: alterar_data_nasc(); break; case 4: alterar_sexo();break; case 5: alterar_enc_ed();break; case 6: alterar_contacto();break; case 7: alterar_teste1();break; case 8: alterar_teste2();break; default: break; } if (op == 0) op2 = 'N'; else printf("Deseja mais alguma tarefa? [s/N] "); rewind(stdin); op2 = getchar(); } while (toupper(op2) == 'S'); } void alterar_teste1() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR O TESTE 1... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira a nota para substituir \"%f\" -> ", ler.notas.teste1); fscanf(stdin, "%f", &ler.notas.teste1); ler.notas.media = (ler.notas.teste1 + ler.notas.teste2) / 2; fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Nota do teste 1 e media alterado com sucesso\n\n"); fclose (fp); } } void alterar_teste2() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR O TESTE 2... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira a nota para substituir para substituir \"%f\" -> ", ler.notas.teste2); fscanf(stdin, "%f", &ler.notas.teste2); ler.notas.media = (ler.notas.teste1 + ler.notas.teste2) / 2; fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Nota Teste 2 e media alterado com sucesso\n\n"); fclose (fp); } } void alterar_contacto() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR O CONTACTO DE ALUNO... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira o contacto para substituir \"%s\" -> ", ler.contacto); fgets(ler.contacto, 100, stdin); ler.contacto[strlen(ler.contacto)-1] = '\0'; fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Contacto alterado com sucesso\n\n"); fclose (fp); } } void alterar_enc_ed() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR ENCARREGADO DE EDUCAÇÃO DE ALUNO... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira o nome do encarregado de educalão para substituir \"%s\" -> ", ler.enc_ed); fgets(ler.enc_ed, 100, stdin); ler.enc_ed[strlen(ler.enc_ed)-1] = '\0'; // remover o \n do fgets fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Nome do EE alterado com sucesso\n\n"); fclose (fp); } } void alterar_sexo() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR O SEXO DE ALUNO... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira o sexo para substituir \"%c\" -> ", ler.sexo); ler.sexo = getchar(); fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Sexo alterado com sucesso\n\n"); fclose (fp); } } void alterar_data_nasc() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR DATA DE NASCIMENTO DE ALUNO... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira a data de nascimento para substituir \"%s\" -> ", ler.data_nasc); fgets(ler.data_nasc, 100, stdin); ler.data_nasc[strlen(ler.data_nasc)-1] = '\0'; // remover o \n do fgets fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Data de nascimento alterado com sucesso\n\n"); fclose (fp); } } void alterar_nome() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR NOME DE ALUNO... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira o nome para substituir \"%s\" -> ", ler.nome); fgets(ler.nome, 100, stdin); ler.nome[strlen(ler.nome)-1] = '\0'; // remover o \n do fgets fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Nome alterado com sucesso\n\n"); fclose (fp); } } void alterar_idade() { int op; char op2; long nalunos; if ((fp = fopen("DADOS.dat", "r+b")) == NULL) printf("Erro ao abrir ficheiro\n"); else { fseek(fp, 0, SEEK_END); nalunos = ftell(fp) / sizeof(aluno); printf("ALTERAR IDADE DE ALUNO... NUMERO DE ALUNOS -> %ld \n\n", nalunos); do { printf("Insira o numero do aluno -> "); scanf("%d", &op); rewind(stdin); // MUITO IMPORTANTE !!! // VALIDAR A SELECÇÃO !!! if (op == 0 || op > nalunos) { op2 = 'N'; } else { fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); fread(&ler, sizeof(aluno), 1, fp); printf("Escolheu o aluno \"%s\"... continuar? [s/N]", ler.nome ); op2 = getchar(); } } while (toupper(op2)!='S'); rewind(stdin); printf("Insira a idade para substituir \"%d\" -> ", ler.idade); fscanf(stdin, "%d", &ler.idade); fseek(fp, sizeof(aluno) * (op - 1), SEEK_SET); if(fwrite(&ler, sizeof(aluno), 1, fp) != 1) printf("ERRO A ESCREVER\n\n"); else printf("Idade alterado com sucesso\n\n"); fclose (fp); } } void mostrar() { int op; char op2,op3; printf("*********************************\n"); printf("** MENU MOSTRAR **\n"); printf("*********************************\n\n"); do { rewind(stdin); printf("\tMENU:\n"); printf("1 : Mostrar todos os alunos da turma;\n"); printf("2 : Mostrar um aluno especifico (numero de turma);\n"); printf("0 : Sair;\n"); putchar('\n'); do { printf("A sua escolha -> "); scanf("%d", &op); printf("Escolheu a opção \"%d\"... Deseja prosseguir? [s/N]",op); rewind(stdin); op3 = getchar(); } while (toupper(op3)!= 'S'); switch (op) { case 1: mostrar_todos(); break; case 2: mostrar_um(); break; case 0: return; default: break; } if (op == 0) op2 = 'N'; else printf("Deseja mais alguma tarefa? [s/N] "); rewind(stdin); op2 = getchar(); } while (toupper(op2) == 'S'); } void mostrar_um() { char M[] = {"Masculino"}; char F[] = {"Feminino"}; int op; int succ; fp= fopen("DADOS.dat", "rb"); printf("\t*************************************\n"); printf("\t** MENU MOSTRAR DETERMINADO ALUNO **\n"); printf("\t*************************************\n\n"); fseek(fp, 0, SEEK_END); printf("Que aluno pretende consultar? 1 -> %ld : ", ftell(fp)/sizeof(aluno)); rewind(fp); rewind(stdin); scanf("%d", &op); fseek(fp, sizeof(aluno)*(op-1), SEEK_SET); succ = fread(&ler, sizeof(aluno), 1, fp); if(succ == 1) { printf(" INICIO DE LEITURA DO ALUNO NUMERO -> %d \n\n", ler.numero); printf("\tINFORMAÇÕES BASICAS\n"); printf("Numero : %d\n", ler.numero); printf("Nome : %s\n",ler.nome); printf("Idade : %d\n", ler.idade); if (toupper(ler.sexo) == 'F') printf("Sexo : %c (%s)\n", ler.sexo, F); else printf("Sexo : %c (%s)\n", ler.sexo, M); printf("Data de nascimento : %s\n", ler.data_nasc); printf("Encarregado de Educação : %s\n", ler.enc_ed); printf("Contacto : %s\n\n", ler.contacto); printf("\tINFORMAÇÕES DA DISCIPLINA\n"); printf("Nota do teste 1 : %.2f\n", ler.notas.teste1); printf("Nota do teste 2 : %.2f\n", ler.notas.teste2); printf("Medias dos testes : %.2f\n\n", ler.notas.media); printf(" FIM DE LEITURA DO ALUNO NUMERO -> %d\n\n", ler.numero); } else printf("Aluno INEXISTENTE ou ERRO A ECONTRAR\n\n"); fclose(fp); } void mostrar_todos() { char M[] = {"Masculino"}; char F[] = {"Feminino"}; fp= fopen("DADOS.dat", "rb"); printf("\t*********************************\n"); printf("\t** MENU MOSTRAR TODOS **\n"); printf("\t*********************************\n\n"); while (fread(&ler, sizeof(aluno), 1, fp) != 0) { printf(" INICIO DE LEITURA DO ALUNO NUMERO -> %d \n\n", ler.numero); printf("\tINFORMAÇÕES BASICAS\n"); printf("Numero : %d\n",ler.numero); printf("Nome : %s\n",ler.nome); printf("Idade : %d\n", ler.idade); if (toupper(ler.sexo) == 'F') printf("Sexo : %c (%s)\n", ler.sexo, F); else printf("Sexo : %c (%s)\n", ler.sexo, M); printf("Data de nascimento : %s\n", ler.data_nasc); printf("Encarregado de Educação : %s\n", ler.enc_ed); printf("Contacto : %s\n\n", ler.contacto); printf("\tINFORMAÇÕES DA DISCIPLINA\n"); printf("Nota do teste 1 : %.2f\n", ler.notas.teste1); printf("Nota do teste 2 : %.2f\n", ler.notas.teste2); printf("Medias dos testes : %.2f\n\n", ler.notas.media); printf(" FIM DE LEITURA DO ALUNO NUMERO -> %d\n\n", ler.numero); } fclose(fp); } void inserir() { int op; char op2; unsigned int len; long int quantos, i; printf("*********************************\n"); printf("** MENU INSERIR **\n"); printf("*********************************\n\n"); do { rewind(stdin); printf("Quantos alunos deseja inserir? -> "); fscanf(stdin, "%d", &op); putchar('\n'); rewind(stdin); printf("Escolheu inserir %d alunos... continuar? [s/N] ", op); op2=getchar(); } while (toupper(op2) != 'S'); rewind(stdin); fp = fopen("DADOS.dat", "a+b"); quantos = ftell(fp)/sizeof(aluno); printf(" tem %ld registos no ficheiro\n\n", quantos); quantos+=1; for (i=quantos; i<quantos+op; i++) { printf(" INFORMAÇÕES BASICAS DO ALUNO \n\n"); v[i].numero = i; rewind(stdin); printf("Insira o nome do aluno numero \"%d\" -> ", v[i].numero); fgets(v[i].nome, 100, stdin); v[i].nome[strlen(v[i].nome)-1]= '\0'; rewind(stdin); printf("Insira a idade do aluno -> \"%s\" -> ", v[i].nome); fscanf(stdin, "%d", &v[i].idade);rewind(stdin); printf("Insira a data de nascimento do aluno -> \"%s\" -> ", v[i].nome); fscanf(stdin, "%s", v[i].data_nasc); v[i].data_nasc[strlen(v[i].data_nasc)-1]= '\0'; rewind(stdin); printf("Insira o sexo do aluno -> \"%s\" -> ", v[i].nome); fscanf(stdin, "%c", &v[i].sexo);rewind(stdin); printf("Insira o contacto do aluno -> \"%s\" -> ", v[i].nome); fscanf(stdin, "%s", v[i].contacto);rewind(stdin); v[i].contacto[strlen(v[i].data_nasc)-1]= '\0'; printf("Insira o encarregado de educ do aluno -> \"%s\" -> ", v[i].nome); fgets(v[i].enc_ed, 100, stdin); v[i].enc_ed[strlen(v[i].enc_ed)-1] = '\0'; rewind(stdin); putchar('\n'); printf(" INFORMAÇÕES SOBRE OS TESTES DA DISCIPLINA !! \n"); printf("Insira a nota do teste 1 do aluno -> %s ", v[i].nome); scanf("%f", &v[i].notas.teste1); printf("Insira a nota do teste 2 do aluno -> %s ", v[i].nome); scanf("%f", &v[i].notas.teste2); putchar('\n'); printf(" INSERÇÃO CONCLUIDA !!!\n\n "); v[i].notas.media = (v[i].notas.teste1+v[i].notas.teste2) / 2; fwrite(&v[i], sizeof(aluno), 1, fp); } fclose(fp); } Edited May 9, 2013 at 05:47 PM by waza
pmg Posted May 9, 2013 at 06:15 PM Report #506493 Posted May 9, 2013 at 06:15 PM void menu(); void inserir(); void mostrar(); void mostrar_um(); void mostrar_todos(); void alterar(); void alterar_nome(); void alterar_idade(); void alterar_data_nasc(); void alterar_sexo(); void alterar_enc_ed(); void alterar_contacto(); void alterar_teste1(); void alterar_teste2(); Xiiii ... nenhuma das tuas funcoes devolve um valor? nenhuma delas recebe parametros? Isto é muito ma pratica de programacao! Ve la se consegues fazer funcoes "mais normais". // var FILE * fp; int last = 0; aluno v[10000], ler, change; Variaveis globais? Outra ma pratica de programacao. Ve la se consegues fazer o programa sem uma unica variavel global. O uso de parametros e valores de retorno de funcoes serve (entre outras coisas) para evitar usar variaveis globais. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
waza Posted May 9, 2013 at 06:38 PM Author Report #506495 Posted May 9, 2013 at 06:38 PM hum, nao sabia ... porquê que usar imensas voids e variaveis globais é uma má pratica? vou ver o que consigo melhorar nesse aspecto, obrigado 😄
Rui Carlos Posted May 9, 2013 at 06:51 PM Report #506498 Posted May 9, 2013 at 06:51 PM Tenho a ideia que o rewind(stdin); não é uma forma muito portável de limpar o buffer. Variaveis globais? Outra ma pratica de programacao. De certa forma, é a mesma má prática 😄 Quando não usas parâmetros, tens que arranjar outra forma de comunicar input e outputs. Rui Carlos Gonçalves
pmg Posted May 9, 2013 at 06:52 PM Report #506499 Posted May 9, 2013 at 06:52 PM porquê que usar variaveis globais é uma má pratica? Ve em http://c2.com/cgi/wiki?GlobalVariablesAreBad Quanto as funcoes que nao devolvem valor nem recebem parametros talvez eu estivesse a exagerar um bocadinho. Mas olhei para aquele grupo de codigo e nao gostei nada. Uma funcao, sempre que e chamada deve fazer a mesma coisa (senao deixa-se de confiar na funcao). Imagina por exemplo a funcao que calcula a raiz quadrada (sqrt). Se ela fosse void sqrt(); tinha que se usar variaveis globais para achar raizes quadradas input = 100; sqrt(); printf("resultado: %f\n", output); input = 16; sqrt(); printf("resultado: %f\n", output); Compara com printf("resultado: %f\n", sqrt(100)); printf("resultado: %f\n", sqrt(16)); What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
waza Posted May 9, 2013 at 07:14 PM Author Report #506501 Posted May 9, 2013 at 07:14 PM so utilizei assim pois acho que se tornava mais pratico 😛 o problema é que se eu nao usasse globais teria que usar pointers e eu nao domino muito bem esse aspecto (por equanto) :/
HappyHippyHippo Posted May 9, 2013 at 07:23 PM Report #506504 Posted May 9, 2013 at 07:23 PM separa o código de apresentação de dados (seja menu ou uma estrutura) e o código de manipulação de dados IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted May 9, 2013 at 09:26 PM Report #506528 Posted May 9, 2013 at 09:26 PM o problema é que se eu nao usasse globais teria que usar pointers e eu nao domino muito bem esse aspecto (por equanto) :/ Os pointers nao sao nada de meter medo 🙂 Tens que comecar a usa-los mais cedo ou mais tarde -- eu diria que quanto mais cedo melhor ja que eles fazem parte integrante da linguagem. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
pwseo Posted May 9, 2013 at 09:49 PM Report #506534 Posted May 9, 2013 at 09:49 PM eu diria que quanto mais cedo melhor ja que eles fazem parte integrante da linguagem. Quanto mais cedo, mais facilmente desmistificas o assunto e te apercebes que não são nada do que muita gente diz...
waza Posted May 9, 2013 at 10:32 PM Author Report #506549 Posted May 9, 2013 at 10:32 PM (edited) ahh, e o file, como passo um file para uma funçao? algo deste genero? funcao(fp); char *funcao(char *file); por exemplo num fwrite, com um apontador sería algo assim?! em que aluno é um typedef para a struct fwrite(*ptr, sizeof(aluno),1,fp); <- intenção de escrever toda a estrutura Edited May 9, 2013 at 10:52 PM by waza
pmg Posted May 10, 2013 at 09:29 AM Report #506606 Posted May 10, 2013 at 09:29 AM Supondo, por exemplo, que a função rewind() foi escrita em C, como achas que ela é definida? ... rewind(...) { ... } De certeza que não era void rewind(void); 🙂 What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now