Ir ao conteúdo
  • Cadastre-se

Nandaa

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

posts postados por Nandaa

  1. 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. 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;}
  3. 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;}
  4. 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 !?

  5. 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.  :confused:

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

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