Ir ao conteúdo
  • Cadastre-se

Nandaa

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

0
  1. Nandaa

    Struct dando problemas!

    Outro problema no mesmo programa. Eu estou tentando ler as informações a partir do arquivo, mas não sei como fazer o programa ler o arquivo inteiro, do jeito que está ele só lê a primeira linha, e entra num loop infinito. #include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */FILE *arquivo;typedef struct usuario{ char nome[50]; char logradouro[50]; int numero;};void Cadastro(){ struct usuario aluno; int i,t1,t2,t3; arquivo = fopen("lista.txt","a"); printf("\n\tEntre com o nome do usuario: "); while(getchar() != '\n'); gets(aluno.nome); t1 = strlen(aluno.nome); for(i=0;i<t1;i++){ putc(aluno.nome[i],arquivo); } fprintf(arquivo,"\n\n"); printf("\n\tEntre com o endereco do usuario: "); gets(aluno.logradouro); t2 = strlen(aluno.logradouro); for(i=0;i<t2;i++){ putc(aluno.logradouro[i],arquivo); } fprintf(arquivo,"\tNumero:"); printf("\n\tEntre com o numero da residencia: "); scanf("%d",&aluno.numero); fprintf(arquivo,"%d\n\n",aluno.numero); fclose(arquivo);}//LENDO ARQUIVO (onde está minha dúvida):void MostraLista(){ struct usuario aluno; arquivo = fopen("lista.txt","r"); while(!feof(arquivo)){ fgets(aluno.nome,30,arquivo); printf("%s",aluno.nome); fgets(aluno.logradouro,50,arquivo); printf("%s",aluno.logradouro); fscanf(arquivo,"%d",&aluno.numero); printf("%d",aluno.numero); fclose(arquivo); } }int main() { int opcao; do{ printf("\n\t\t\tMENU\n"); printf("\n\t[1] - Cadastrar novo usuario"); printf("\n\t[2] - Mostrar Lista de cadastrados"); printf("\n\t[3] - Limpar lista de cadstrados"); printf("\n\t[4] - SAIR"); printf("\n\n\tDigite uma das opcoes: "); scanf("%d",&opcao); while((opcao<1)||(opcao>4)){ printf("\n\tOpcao inexistente, digite novamente: "); scanf("%d",&opcao); } switch(opcao){ case 1: Cadastro(); break; case 2: MostraLista(); break; case 3: break; case 4: printf("\n\t\tPROGRAMA ENCERRADO\n"); exit(0); break; } }while(opcao != 4); return 0;}
  2. Nandaa

    Struct dando problemas!

    Obriagda, está funcionando agora!
  3. Consegui resolver. Obrigada pela colaboração de todos mesmo assim! #include <iostream>#include <iostream>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <time.h>#include <string.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */FILE *dados; //Escrevendo a matriz e a coluna de médias no arquivo: void Arquivo(){ int i,j; int n,o; float soma[100]; float media[100]; printf("\n\tEntre com o numero de provas (Ex.: 4): "); scanf("%d",&o); printf("\n\tEntre com o numero de alunos (Ex.: 30): "); scanf("%d",&n); float m[100][50]; for(i=0;i<n;i++){ for(j=0;j<o;j++){ m[i][j] = (rand() %105 + 1)/10.5; soma[i] = soma[i] + m[i][j]; media[i] = (soma[i])/o; } } dados = fopen("dados.txt","w"); //criando arquivo if(dados != NULL) printf("\n\n\tArquivo aberto com sucesso\n\t"); else { printf("\n\tERRO ao abrir o arquivo\n\t"); system("pause"); exit(1); } for(i=0;i<n;i++) { for(j=0;j<o;j++){ fprintf(dados,"%f\t",m[i][j]); fprintf(dados,"\t"); } fprintf(dados,"%f",media[i]); fprintf(dados,"\t"); fprintf(dados,"\n"); } if (ferror(dados)){ printf("\n\tErro ao gravar no arquivo\n\t"); system("pause"); exit(2); } fclose(dados); dados = fopen("dados.txt","r"); for(i=0;i<n;i++){ printf("\n"); for(j=0;j<o;j++){ fscanf(stdout,"\t%f\t",m[i][j]); printf("%.2f\t",m[i][j]); } fscanf(stdout,"%f",media[i]); printf("\t%.2f",media[i]); } fclose(dados);}int main(){ printf("\n\t\t\tNotas das provas e media de cada aluno\n\t\n"); printf("\n\tObs.: Cada linha representa um aluno e as colunas representam as provas, sendo que a ultima representa a media de cada aluno.\n\n"); Arquivo(); return 0;}
  4. Gostaria que alguém me explicasse porque quando chamo a função dentro do MENU, não consigo mais entrar com o nome do usuário, so consigo entrar com o logradouro e o numero, por que isso acontece ?? Sendo que sem o menu funciona normalmente! #include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */FILE *arquivo;typedef struct usuario{ char nome[50]; char logradouro[50]; int numero;};void Cadastro(){ struct usuario aluno; int i,t1,t2,t3,cod; arquivo = fopen("lista.txt","a"); printf("\n\tEntre com o codigo do usuario: "); scanf("%d",&cod); fprintf(arquivo,"\n\t%d\n\t",cod); printf("\n\tEntre com o nome do usuario: "); gets(aluno.nome); t1 = strlen(aluno.nome); for(i=0;i<t1;i++){ putc(aluno.nome[i],arquivo); } fprintf(arquivo,"\t"); printf("\n\tEntre com o endereco do usuario: "); gets(aluno.logradouro); t2 = strlen(aluno.logradouro); for(i=0;i<t2;i++){ putc(aluno.logradouro[i],arquivo); } printf("\n\tEntre com o numero da residencia: "); scanf("%d",&aluno.numero); fprintf(arquivo,"\t%d\n\n",aluno.numero);}int main() { int opcao; printf("\n\t\t\tMENU\n"); printf("\n\t[1] - Cadastrar novo usuario"); printf("\n\t[2] - Mostrar Lista de cadastrados"); printf("\n\t[3] - Limpar lista de cadstrados"); printf("\n\t[4] - SAIR"); printf("\n\n\tDigite uma das opções: "); scanf("%d",&opcao); while((opcao<1)||(opcao>4)){ printf("\n\tOpcao inexistente, digite novamente: "); scanf("%d",&opcao); } switch(opcao){ case 1: Cadastro(); break; case 2: break; case 3: break; case 4: printf("\n\t\tPROGRAMA ENCERRADO\n"); exit(0); break; } return 0;}
  5. No programa abaixo, o usuário insere as dimensões manualmente e a matriz é gerada aleatoriamente (no intervalo de 0 a 10, considerando os números DECIMAIS), além disso, o programa calcula a média de cada linha formando uma nova coluna, como pode ser visto na saída logo a seguir: #include <iostream>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <conio.h>#include <time.h>#include <string.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */float matriz(void){int i,j;int n,o;float soma[100];float media[100];printf("\n\tEntre com o numero de provas (Ex.: 4): ");scanf("%d",&o);printf("\n\tEntre com o numero de alunos (Ex.: 30): ");scanf("%d",&n);float m[100][50];for(i=0;i<n;i++){ for(j=0;j<o;j++){ m[i][j] = (rand() %105 + 1)/10.5; soma[i] = soma[i] + m[i][j]; media[i] = (soma[i])/o; } }for(i=0;i<n;i++){ printf("\n\t"); for(j=0;j<o;j++){ printf("\t%.2f",m[i][j]); } printf("\t\t%.2f\t",media[i]); }}int main(){ printf("\n\t\t\tNotas das provas e media de cada aluno\n\t\n"); printf("\n\tObs.: Cada linha representa um aluno e as colunas representam as provas, sendo que a ultima representa a media de cada aluno.\n\n"); matriz(); return 0;} SAÍDA: Notas das provas e media de cada aluno Obs.: Cada linha representa um aluno e as colunas representam as provas, sendo que a ultima representa a media de cada aluno. Entre com o numero de provas (Ex.: 4): 4 Entre com o numero de alunos (Ex.: 30): 30 4.00 8.86 3.33 3.90 5.02 5.71 7.62 3.24 6.10 5.67 7.90 10.00 3.43 0.57 5.48 7.33 2.67 8.76 6.86 6.40 5.33 7.43 9.81 7.81 7.60 4.95 0.95 1.71 4.67 3.07 7.90 9.33 9.24 2.57 7.26 8.00 4.86 8.86 9.24 7.74 6.86 8.95 8.10 6.48 7.60 4.57 4.76 2.48 2.38 3.55 3.71 7.81 3.14 8.95 5.90 3.24 4.29 2.10 4.48 3.52 0.86 4.19 3.14 2.86 2.76 0.76 9.81 8.38 4.76 5.93 0.86 7.81 1.90 4.19 3.69 3.05 9.14 3.43 5.52 5.29 7.52 7.33 1.05 1.71 4.40 4.76 7.05 4.00 7.24 5.76 3.43 0.95 1.05 2.00 1.86 9.24 2.10 3.24 8.00 5.64 9.52 2.29 3.81 0.48 4.02 6.38 7.71 3.05 2.57 4.93 6.86 5.62 3.81 9.52 6.45 5.43 8.48 7.43 1.33 5.67 5.14 8.38 3.81 5.43 5.69 0.38 3.43 1.90 4.67 2.60 2.38 5.81 1.24 9.71 4.79 6.57 2.10 8.29 7.71 6.17 4.29 6.48 7.24 5.24 5.81 0.29 3.24 5.52 2.67 2.93--------------------------------Process exited with return value 0Press any key to continue . . . Como devo gravar essa matriz e essa coluna em um arquivo txt, na forma como está acima, e depois ler a partir desse arquivo !?
  6. A intenção do programa é aleatorizar uma matriz mesmo, e ao lado dela imprimir a coluna das médias de cada linha. Eu talvez tenha confundido alguma coisa no meio do caminho, porque sou iniciante em c++, mas a minha intenção realmente é criar uma MATRIZ. Só estou muito confusa na hora de gravar essas informações em um arquivo. #include <iostream>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <conio.h>#include <time.h>#include <string.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */FILE *dados;float matriz(void){int i,j;int n,o;float soma[100];float media[100];printf("\n\tEntre com o numero de colunas (Ex.: 4): ");scanf("%d",&o);printf("\n\tEntre com o numero de linhas (Ex.: 30): ");scanf("%d",&n);float m[100][50];for(i=0;i<n;i++){ for(j=0;j<o;j++){ m[i][j] = (rand() %105 + 1)/10.5; //aleatorizando a matriz soma[i] = soma[i] + m[i][j]; //soma de cada linha da matriz media[i] = (soma[i])/o; //média de cada linha (soma/nº de colunas) } }//imprimindo a matriz e a coluna das médias ao ladofor(i=0;i<n;i++){ printf("\n\t"); for(j=0;j<o;j++){ printf("\t%.2f",m[i][j]); } printf("\t\t%.2f\t",media[i]); }} //Escrevendo a matriz e a coluna de médias no arquivo: void Arquivo(){ float media; int m; int i,n,j,o; dados = fopen("dados.txt","w"); //criando arquivo if(dados != NULL) printf("\n\n\tArquivo aberto com sucesso\n\t"); else{ printf("\n\tERRO ao abrir o arquivo\n\t"); system("pause"); exit(1); } for(i=0;i<n;i++){ for(j=0;j<o;j++){ fprintf(dados,"%.2f\t",m[i][j]); //ERRO fprintf(dados,"%t"); } fprintf(dados,"%.2f",media[i]); //ERRO fprintf(dados,"%t"); fprintf(dados,"\n"); } if (ferror){ printf("\n\tErro ao gravar no arquivo\n\t"); system("pause"); exit(2); } fclose(dados); dados = fopen("dados.txt","r"); for(i=0;i<n;i++){ for(j=0;j<o;j++){ fscanf(dados,"%f\t",&m[i][j]); //ERRO } fscanf(dados,"%f",&media[i]); //ERRO } fclose(dados); }int main(){ printf("\n\t\t\tNotas das provas e media de cada aluno\n\t\n"); printf("\n\tObs.: Cada linha representa um aluno e as colunas representam as provas, sendo que a ultima representa a media de cada aluno.\n\n"); Arquivo(); matriz(); return 0;} No programa eu tentei modificar a matriz m[100][50], para m[n][o], mas deu errado. A intenção é que fique assim: Notas das provas e media de cada aluno Obs.: Cada linha representa um aluno e as colunas representam as provas, sendo que a ultima representa a media de cada aluno. Entre com o numero de provas (Ex.: 4): 4 Entre com o numero de alunos (Ex.: 30): 20 4.00 8.86 3.33 3.90 5.02 5.71 7.62 3.24 6.10 5.67 7.90 10.00 3.43 0.57 5.48 7.33 2.67 8.76 6.86 6.40 5.33 7.43 9.81 7.81 7.60 4.95 0.95 1.71 4.67 3.07 7.90 9.33 9.24 2.57 7.26 8.00 4.86 8.86 9.24 7.74 6.86 8.95 8.10 6.48 7.60 4.57 4.76 2.48 2.38 3.55 3.71 7.81 3.14 8.95 5.90 3.24 4.29 2.10 4.48 3.52 0.86 4.19 3.14 2.86 2.76 0.76 9.81 8.38 4.76 5.93 0.86 7.81 1.90 4.19 3.69 3.05 9.14 3.43 5.52 5.29 7.52 7.33 1.05 1.71 4.40 4.76 7.05 4.00 7.24 5.76 3.43 0.95 1.05 2.00 1.86 9.24 2.10 3.24 8.00 5.64--------------------------------Process exited with return value 0Press any key to continue . . . A matriz e a coluna das médias de cada linha. Eu achei alguns erros em uma das funções, e modifiquei, agora o programa não da erros mas ele para de executar, não consigo entrar com os valores ainda. void Arquivo(){ float media[100]; float m[100][50]; //havia deixado no tipo int por engano int i,n,j,o; dados = fopen("dados.txt","w"); //criando arquivo if(dados != NULL) printf("\n\n\tArquivo aberto com sucesso\n\t"); else{ printf("\n\tERRO ao abrir o arquivo\n\t"); system("pause"); exit(1); } for(i=0;i<n;i++){ for(j=0;j<o;j++){ fprintf(dados,"%f\t",m[i][j]); fprintf(dados,"%t"); } fprintf(dados,"%f",media[i]); fprintf(dados,"%t"); fprintf(dados,"\n"); } if (ferror){ printf("\n\tErro ao gravar no arquivo\n\t"); system("pause"); exit(2); } fclose(dados); dados = fopen("dados.txt","r"); for(i=0;i<n;i++){ for(j=0;j<o;j++){ fscanf(dados,"%f\t",&m[i][j]); } fscanf(dados,"%f",&media[i]); } fclose(dados); }int main(){ printf("\n\t\t\tNotas das provas e media de cada aluno\n\t\n"); printf("\n\tObs.: Cada linha representa um aluno e as colunas representam as provas, sendo que a ultima representa a media de cada aluno.\n\n"); Arquivo(); matriz(); return 0;} So falta terminar de executar.
  7. No programa a seguir, eu aleatorizei a matriz de forma que o usuário possa inserir o seu tamanho manualmente e de forma que os valores dessa matriz variem de 0 ate 10 (considerando valores decimais). Até aí tudo bem. O problema começou quando eu tentei gravar essa matriz em um arquivo. Esses são os ERROS que ocorrem: C:\Users\Annanda\Documents\lal.cpp In function 'void Arquivo()': 61 28 C:\Users\Annanda\Documents\lal.cpp [Error] invalid types 'float[int]' for array subscript 64 29 C:\Users\Annanda\Documents\lal.cpp [Error] invalid types 'float[int]' for array subscript 77 28 C:\Users\Annanda\Documents\lal.cpp [Error] invalid types 'float[int]' for array subscript 79 29 C:\Users\Annanda\Documents\lal.cpp [Error] invalid types 'float[int]' for array subscript 29 C:\Users\Annanda\Documents\Makefile.win recipe for target 'lal.o' failed Não sei mais o que fazer!!! #include <iostream> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <conio.h> #include <time.h> #include <string.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ FILE *dados; float matriz(void){ int i,j; int n,o; float soma[50]; float media[50]; printf("\n\tEntre com o numero de provas (Ex.: 4): "); scanf("%d",&o); printf("\n\tEntre com o numero de alunos (Ex.: 30): "); scanf("%d",&n); float m[100][50]; for(i=0;i<n;i++){ for(j=0;j<o;j++){ m[j] = (rand() %105 + 1)/10.5; soma = soma + m[j]; media = (soma)/o; } } for(i=0;i<n;i++){ printf("\n\t"); for(j=0;j<o;j++){ printf("\t%.2f",m[j]); } printf("\t\t%.2f\t",media); } } void Arquivo(){ float media,m; int i,n,j,o; dados = fopen("dados.txt","w"); if(dados != NULL) printf("\n\n\tArquivo aberto com sucesso\n\t"); else{ printf("\n\tERRO ao abrir o arquivo\n\t"); system("pause"); exit(1); } for(i=0;i<n;i++){ for(j=0;j<o;j++){ fprintf(dados,"%f\t",m[j]); fprintf(dados,"%t"); } fprintf(dados,"%f",media); fprintf(dados,"%t"); fprintf(dados,"\n"); } if (ferror){ printf("\n\tErro ao gravar no arquivo\n\t"); system("pause"); exit(2); } fclose(dados); dados = fopen("dados.txt","r"); for(i=0;i<n;i++){ for(j=0;j<o;j++){ fscanf(dados,"%f\t",&m[j]); } fscanf(dados,"%f",&media); } fclose(dados); } int main(){ printf("\n\t\t\tNotas das provas e media de cada aluno\n\t\n"); printf("\n\tObs.: Cada linha representa um aluno e as colunas representam as provas, sendo que a ultima representa a media de cada aluno.\n\n"); Arquivo (); matriz(); 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!