Ir ao conteúdo
  • Cadastre-se

saulogoiana

Membro Júnior
  • Posts

    19
  • Cadastrado em

  • Última visita

posts postados por saulogoiana

  1. Olá! Estou com a seguinte dúvida...

    Estou passando para a View "Create" um objeto do tipo SalesRecordFormView e nele contém uma List com todos os Sellers (Vendedores) do meu banco de dados.

    Para fazer esta Sale (Venda) preciso que o input do Seller seja o nome de um vendedor que está na minha List.

    Tem como mostrar abaixo do (ou no próprio campo) input o nome do vendedor, que está na List, enquanto eu digito?

    Ou seja, ele pesquisa o nome na List de acordo com o que eu digito.

     

    @model SalesWEBMvc.Models.ViewModel.SalesRecordFormView
    
    @{
        ViewData["Title"] = "Create";
    }
    
    <h2>Create</h2>
    <hr />
    <div class="row">
        <div class="col-md-4">
            <form asp-action="Create">
                <div asp-validation-summary="All" class="text-danger"></div>
                <div class="form-group">
                    <label asp-for="SalesRecord.Amount" class="control-label"></label>
                    <input asp-for="SalesRecord.Amount" class="form-control" />
                </div>
                <div class="form-group">
                    <label asp-for="SalesRecord.Date" class="control-label"></label>
                    <input asp-for="SalesRecord.Date" class="form-control" />
                </div>
                <div class="form-group">
                    <label asp-for="SalesRecord.Status" class="control-label"></label>
                    <select asp-for="SalesRecord.Status" asp-items="Html.GetEnumSelectList<SalesWEBMvc.Models.Enums.SaleStatus>()" class="form-control"></select>
                </div>
                <div class="form-group">
                    <label asp-for="SalesRecord.Seller" class="control-label"></label>
                    <input asp-for="SalesRecord.Seller" />
    
                </div>
                <div class="form-group">
                    <input type="submit" value="Create" class="btn-default" />
                </div>
            </form>
        </div>
    </div>

     

    • Curtir 1
  2. Olá!!

    Meu código está compilando normalmente mas quando executo o programinha "apresenta problemas".

    Se puder me ajudar agradeço.

     

    EDIT: Vou colocar também a função de inserção na Arvore Binaria. Ao inserir deveria apontar para o nó pai mas isso parece não acontecer.

     

    void inserir_recursivo(int val,T *raiz, T pai){
    	
    	if(*raiz == NULL){//Testar se o valor para onde o ponteiro está apontando é nulo
    		printf("\n\n --> %d",val);
    		T tmp = (T) malloc(sizeof(NODE));
    		inicia_no(&tmp,val);
    		tmp->pai = pai;
    		*raiz = tmp;
    		printf("\nINSERIDO COM SUCESSO!\n");
    		printf("end: %x | pai: %x\n",&tmp,tmp->pai);
    	}else{
    		if(val < (*raiz)->valor)//Testar se o conteúdo valor no endereço de raiz é maior que o a ser inserido
    			inserir_recursivo(val, &((*raiz)->esq),*raiz);//Recursividade passando o endereço no CONTEÚDO ENDEREÇO do nó à esquerda
    		else if(val == (*raiz)->valor){
    			printf("\nValor ja existente!\n");
    			return;
    		}else
    			inserir_recursivo(val, &((*raiz)->dir),*raiz);//Recursividade passando o endereço no CONTEÚDO ENDEREÇO do nó à direita
    	}
    	
    	return;
    }

     

    struct NODE
    {
    	int valor;
    	struct NODE *dir;
    	struct NODE *esq;
    	struct NODE *pai;
    };
    typedef NODE *T;
    
    void pre_ordem(T r){
    	if(r == NULL) return;
    	else{
    		T tmp = r;
    		while(tmp!=NULL){
    			printf("\n%d",tmp->valor);
    			tmp = tmp->esq;
    			if((tmp==NULL) && (tmp->pai !=NULL)){
    				T tmp2 = tmp->pai;
    				if(tmp2){
    					if(tmp2->dir!=NULL){
    						tmp = tmp2->dir;
    					}else return;
    				}
    			}
    		}
    		return;
    	}
    }

     

  3. Olá companheiros!
     

    O problema do meu código é que não estou sabendo como tratar os ponteiros, na última linha parece que a variável tmp1 não está "caminhando" para o endereço à direita fazendo com que fique infinitamente no laço while.

     

    Meu resultado final deve ser uma árvore balanceada usando o algoritmo DSW.

    struct NODE
    {
    	int valor;
    	struct NODE *dir;
    	struct NODE *esq;
    };
    typedef NODE *T;
    
    void espinhadorsal(T *raiz){
    	T *tmp1,*tmp2;
    	tmp2 = tmp1 = raiz;
    	
    	while(tmp1!=NULL){
    		if((*tmp1)->esq != NULL){
    			tmp2 = tmp1;
    			(*tmp1) = (*tmp1)->esq;
    			if((*tmp1)->esq!=NULL){
    				(*tmp1)->esq->dir = (*tmp1)->dir;//1
    				(*tmp2)->esq = (*tmp1)->dir;//2
    			}
    			(*tmp1)->dir = *tmp2;//3
    			raiz = tmp1;//4
    			tmp1 = raiz;
    		}
    		else{
    			(*tmp1)=(*tmp1)->dir;
    		}
    	}
    	
    	return;	
    }

     

    • Curtir 1
  4. Olá colegas!

    Estou com problemas ao cadastrar um funcionário com o código seguinte.

    O salário não está sendo armazenado corretamente.

     

    Spoiler

     

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string.h>
    #include <iostream>
    
    using namespace std;
    
    //Estruturas
    struct nascData
    {
    	int dia;
    	int mes;
    	int ano;
    };
    
    struct Funcionario
    {
    	char nome[35];
    	char cargo[15];
    	float salario[15];
    	int CPF;
    	int matricula;
    	nascData data_nascimento;
    };
    
    //Protótipos das funções
    int menu();
    void cadastrarFuncionario(Funcionario M[], int, int);
    int imprimirMatricula(int, Funcionario V[]);
    void imprimirCadastros(Funcionario M[], int);
    void linhas_sinais();
    
    //Função principal
    int main()
    {
    	menu();
    }
    
    //Dev Funções
    void linhas_sinais()
    {
    	int i;
    	for(i = 0; i < 50; i++)
    	{
    		printf("#");
    	};
    	printf("\n");
    
    }
    
    int menu()
    {
    	//Declaração das variaveis
    	int op_usr, matr, matricula = 0;
    	Funcionario tCad[50];//Total de Cadastros
    	int nCad = 0;//Qnt de cadastros
    	//Funcionario Func;
    
    	do
    	{
    		printf("---- MENU ----\n");
    		linhas_sinais();
    		printf("1--> Cadastrar Funcionario.\n");
    		printf("2--> Acessar dados por matricula.\n");
    		printf("3--> Acessar todos os cadastros.\n0--> SAIR.\n");
    		linhas_sinais();
    		printf("--> ");
    		scanf("%i", &op_usr);
    		fflush(stdin);
    		system("cls");
    
    		//Avaliar escolha
    		switch(op_usr)
    		{
    		case 1:
    			matricula++;
    			cadastrarFuncionario(tCad, nCad, matricula);
    			nCad++;
    
    			break;
    		case 2:
    			printf("Digite a matricula procurada: ");
    			scanf("%i", &matr);
    			fflush(stdin);
    			system("cls");
    			matr = imprimirMatricula(matr, tCad);
    			if(matr < 0)
    				printf("Matricula nao encontrada!\n");
    			else
    			{
    				linhas_sinais();
    				printf("Funcionario: %s\n Cargo: %s\n Salario: %f\n", tCad[matr].nome, tCad[matr].cargo, tCad[matr].salario);
    				linhas_sinais();
    			}
    
    			break;
    		case 3:
    			if(nCad <= 0)
    			{
    				printf("Nao ha cadastros!\n");
    			}
    			else
    			{
    				imprimirCadastros(tCad, nCad);
    			}
    
    			break;
    		case 0:
    			printf("ENCERRADO!\n");
    			system("pause");
    			return 0;
    
    			break;
    		default:
    			break;
    		}
    
    		system("pause");
    		system("cls");
    	}
    	while(op_usr != 0);
    
    }
    //Vetor V do tipo Funcionario, n é a posição no vetor, matr é o nº de matricula
    void cadastrarFuncionario(Funcionario V[], int n, int matr)
    {
    	Funcionario Gen;
    
    	printf("Digite o nome do funcionario: ");
    	scanf("%s", Gen.nome);
    	fflush(stdin);
    	printf("Digite o cargo do funcionario %s: ", Gen.nome);
    	scanf("%s", Gen.cargo);
    	fflush(stdin);
    	printf(" Salario: ");
    	scanf("%f",&Gen.salario);
    	fflush(stdin);
    	printf("\n-->%f\n",Gen.salario);
    	fflush(stdin);
    	printf(" CPF: ");
    	scanf("%i", &Gen.CPF);
    	fflush(stdin);
    	printf(" Digite a data de nascimento:\n");
    	printf("  Dia: ");
    	scanf("%i", &Gen.data_nascimento.dia);
    	fflush(stdin);
    	printf("  Mes: ");
    	scanf("%i", &Gen.data_nascimento.mes);
    	fflush(stdin);
    	printf("  Ano: ");
    	scanf("%i", &Gen.data_nascimento.ano);
    	fflush(stdin);
    	Gen.matricula = matr;
    
    	V[n] = Gen;
    
    	linhas_sinais();
    	printf("\nCADASTRO EFETUADO!\n");
    	linhas_sinais();
    
    }
    
    void imprimirCadastros(Funcionario V[], int n)
    {
    	int i;
    	printf("------  FUNCIONARIOS  ------\n");
    	for(i = 0; i < n; i++)
    	{
    		printf("|%i|\nNome: %s\nMatricula: %i\n\n", i + 1, V[i].nome, V[i].matricula);
    	}
    }
    
    int imprimirMatricula(int matr, Funcionario V[])
    {
    	int i;
    	for(i = 0; i < sizeof(V); i++)
    		if(matr == V[i].matricula)
    			return i;
    		else
    		{
    			return -1;
    		}
    
    }
    
    

     

  5. Olá Fórum!

    Estou com um exercício que pede para fazer duas funções recursivas, uma para calculo de fatorial e outra para apresentar os divisores de um número inteiro.

    A primeira função recursiva eu consegui, a segunda não estou conseguindo desenvolver;

    #include<stdio.h>
    
    int fatorial(int n){
    	
    	if(n==0){
    		return 1;
    	}else{
    		return n*fatorial(n-1);
    	}
    	
    }
    
    void divisores(int n){
    int i,r;
    	
    	divisores(n-1);
    	r=n%n-1;
    	if(n==0){
    		return 0;
    	}else{
    		printf("%i",r);
    	}
    
    }
    
    
    main(){
    	int x;
    	
    	x=fatorial(4);
    	printf("%i\n",x);
    	divisores(10);
    	
    	system("pause");
    	return 0;
    }

    Por favor me ajude!

  6. @isrnick Muito Obrigado!

    O problema da leitura do sexo foi resolvido.

    Eu adoraria saber como eu posso corrigir minha função para procurar um nome no vetor.

     

    Spoiler
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    
    typedef struct{
    	char Sexo;
    	char Nome[20];
    	int Matricula;
    	float Media;
    	char Status[3];
    }Aluno;
    
    void flush_stdin(){
        int ch;
        do {
            ch = fgetc(stdin);
        } while (ch != EOF && ch != '\n');
    }
    
    void setCadastro(Aluno A[],int nAlunos){
    int i,j,auxInt;
    float auxFloat,s;
    Aluno auxAlu;
    char nome[20];
    char sexo;
    	
    	for(i=0;i<nAlunos;i++){
    		printf("Digite o nome do aluno %i: ",i+1);
    		scanf("%s",&nome);
    		flush_stdin();
    		strcpy(A[i].Nome,nome);
    		printf("Digite o sexo <M/F>: ");
    		scanf("%c",&sexo);
    		flush_stdin();
    		sexo=toupper(sexo);
    		A[i].Sexo=sexo;
    		printf("Digite o numero de matricula: ");
    		scanf("%i",&auxInt);
    		flush_stdin();
    		A[i].Matricula=auxInt;
    		
    		s=0;
    		for(j=0;j<4;j++){
    			printf("Digite a nota %i:",j+1);
    			scanf("%f",&auxFloat);
    			flush_stdin();
    			s+=auxFloat;
    		}
    	
    		A[i].Media=s/4;
    		if(A[i].Media>6){
    			strcpy(A[i].Status,"AP");
    		}else if(A[i].Media<5){
    			strcpy(A[i].Status,"RP");
    		}else{
    			strcpy(A[i].Status,"PF");
    		}
    		
    		if((A[i].Media<A[i-1].Media)&&(i>0)){
    			auxAlu=A[i];
    			A[i]=A[i-1];
    			A[i-1]=auxAlu;
    		}
    	printf("\n");
    	}
    }
    
    void procuraNome(char nome[],Aluno A[],int i){
    
    	if(nome==A[i].Nome){
    		printf("\n-- %i --\nNome: %s\nMatricula: %i\n",i+1,A[i].Nome,A[i].Matricula);
    		printf("Media: %.2f\n\n",A[i].Media);
    	}
    
    }
    
    void procuraSexo(char sexo,Aluno A[],int i){	
    
    	if(sexo==A[i].Sexo){
    		printf("\n-- %i --\nNome: %s\nMatricula: %i\n",i+1,A[i].Nome,A[i].Matricula);
    		printf("Media: %.2f\n\n",A[i].Media);
    	}
    
    }
    
    void getCadastro(Aluno A[],int n){
    int i;	
    	printf("------  ALUNOS  ------\n");
    	for(i=0;i<n;i++){			
    		printf("|%i|\nNome: %s\nSexo: %c\n",i+1,A[i].Nome,A[i].Sexo);
    		printf("Matricula: %i\nMedia: %.2f\n\n",A[i].Matricula,A[i].Media);		
    	}
    }
    
    void getStatus(Aluno A[],int n){
    int i;	
    	printf("------  STATUS  ------\n");
    	for(i=0;i<n;i++){			
    		printf("|%i|\nNome: %s\nEstado: %s\n",i+1,A[i].Nome,A[i].Status);		
    		printf("\n");
    	}
    }
    
    int menu(){
    int escolha;
    	printf("||||    MENU    ||||\n");	
    	printf("Escolha uma das opções:\n");
    	printf("1-> Cadastrar Aluno.\t2-> Cadastros.\n");
    	printf("3-> Busca por nome.\t4-> Busca por sexo.\n");
    	printf("5-> Consultar Aprovados/Reprovados/Prova Final.\n6-> Atualizar cadastros.\n");
    	printf("0-> Sair.\n");
    	
    	scanf("%i",&escolha);
    	flush_stdin();
    	
    	return escolha;
    }
    
    main(){
    	int i,n,p,esc,esc2=1;
    	char nome[20],sexo;
    	Aluno A[10];
    
    	while(esc2!=0){
    
    		esc=menu();
    	
    		switch(esc){
    		
    			case 0:
    				esc2=0;
    				
    				break;
    			case 1:
    				system("cls");
    				printf("||||  CADASTRAR ALUNOS  ||||\n\n");
    				printf("Digite a quantidade de alunos a serem cadastrados: ");
    				scanf("%i",&n);
    				flush_stdin();
    				printf("\n");
    				setCadastro(A,n);
    			
    				printf("\nCADASTROS EFETUADOS!\n");
    				system("pause");
    				system("cls");
    			
    				break;
    		
    			case 2:
    				system("cls");
    				if(n==0){
    					printf("ERRO! Nenhum cadastro armazenado!\n");
    				
    					system("pause");
    				}else{
    					getCadastro(A,n);
    				
    					system("pause");
    				}
    				system("cls");
    				
    				break;
    			case 3:
    				system("cls");
    					if(n==0){
    						printf("ERRO! Nenhum cadastrado armazenado!\n");
    					
    						system("pause");
    					}else{
    						do{
    						printf("|\t\tPROCURA POR NOME\t\t|\n");
    						printf("%i CADASTRO(S)\n",n);
    						printf("Digite o nome do aluno: ");
    						scanf("%s",&nome);
    						flush_stdin();
    						
    						for(i=0;i<n;i++){
    							procuraNome(nome,A,i);
    						}
    						
    						printf("Repetir busca? CONTINUAR<1>/SAIR<2>\n");
    						scanf("%i",&esc2);
    						flush_stdin();
    						
    						system("cls");
    						}while(esc2!=2);
    				
    					}
    				system("cls");
    				
    				break;
    				case 4:
    					system("cls");
    					if(n==0){
    						printf("ERRO! Nenhum cadastrado armazenado!\n");
    					
    						system("pause");
    					}else{
    						do{
    						printf("|\t\tPROCURA POR SEXO\t\t|\n");
    						printf("%i CADASTRO(S)\n",n);
    						printf("Digite o sexo do aluno <M/F>: ");
    						scanf("%c",&sexo);
    						flush_stdin();
    						sexo=toupper(sexo);
    						printf("Alunos do sexo |%c|",sexo);
    						
    						for(i=0;i<n;i++){
    							procuraSexo(sexo,A,i);
    						}
    						
    						printf("Repetir busca? CONTINUAR<1>/SAIR<2>\n");
    						scanf("%i",&esc2);
    						flush_stdin();
    						
    						system("cls");
    						}while(esc2!=2);
    				
    					}
    				system("cls");
    				
    				break;
    				
    				case 5:
    				system("cls");
    				if(n==0){
    					printf("ERRO! Nenhum cadastro armazenado!\n");
    				
    					system("pause");
    				}else{
    					getStatus(A,n);
    				
    					system("pause");
    				}
    				system("cls");
    				
    				break;					
    				
    				case 6:
    				system("cls");
    				printf("||||  CADASTRAR ALUNOS  ||||\n\n");
    				printf("Digite a quantidade de alunos a serem cadastrados: ");
    				scanf("%i",&n);
    				flush_stdin();
    				printf("\n");
    				setCadastro(A,n);
    			
    				printf("\nCADASTROS EFETUADOS!\n");
    				system("pause");
    				system("cls");
    			
    				break;		
    		}
    
    	}
    	system("cls");
    	printf("ENCERRADO!\n\n");
    		
    	system("pause");
    	return 0;
    }

     

     

    • Curtir 2
  7. Fiz as alterações no código e continuou o problema na hora de ler o sexo.

     

    Spoiler
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    
    typedef struct{
    	char Sexo;
    	char Nome[20];
    	int Matricula;
    	float Media;
    	char Status[3];
    }Aluno;
    
    void setCadastro(Aluno A[],int nAlunos){
    int i,j,auxInt;
    float auxFloat,s;
    Aluno auxAlu;
    char nome[20];
    char sexo;
    	
    	for(i=0;i<nAlunos;i++){
    		printf("Digite o nome do aluno %i: ",i+1);
    		scanf("%s",&nome);
    		strcpy(A[i].Nome,nome);
    		printf("Digite o sexo <M/F>: ");
    		scanf("%c",&sexo);
    		sexo=toupper(sexo);
    		A[i].Sexo=sexo;
    		printf("Digite o numero de matricula: ");
    		scanf("%i",&auxInt);
    		A[i].Matricula=auxInt;
    		
    		s=0;
    		for(j=0;j<4;j++){
    			printf("Digite a nota %i:",j+1);
    			scanf("%f",&auxFloat);
    			s+=auxFloat;
    		}
    	
    		A[i].Media=s/4;
    		if(A[i].Media>6){
    			strcpy(A[i].Status,"AP");
    		}else if(A[i].Media<5){
    			strcpy(A[i].Status,"RP");
    		}else{
    			strcpy(A[i].Status,"PF");
    		}
    		
    		if((A[i].Media<A[i-1].Media)&&(i>0)){
    			auxAlu=A[i];
    			A[i]=A[i-1];
    			A[i-1]=auxAlu;
    		}
    	printf("\n");
    	}
    }
    
    void procuraNome(char nome[20],Aluno A[],int nAlunos){
    int p=-1,i;
    
    	for(i=0;i<nAlunos;i++){	
    		if(A[i].Nome==nome[20]){
    			printf("\n-- %i --\nNome: %s\nMatricula: %i\nMedia: %.2f\n\n",i+1,A[i].Nome,A[i].Matricula,A[i].Media);
    		}
    	}
    
    }
    
    void procuraSexo(char sexo[1],Aluno A[],int i,int nAlunos){	
    
    	if(sexo==A[i].Sexo){
    		printf("\n-- %i --\nNome: %s\nMatricula: %i\nMedia: %.2f\n\n",i+1,A[i].Nome,A[i].Matricula,A[i].Media);
    	}
    
    }
    
    void getCadastro(Aluno A[],int n){
    int i;	
    	printf("------  ALUNOS  ------\n");
    	for(i=0;i<n;i++){			
    			printf("|%i|\nNome: %s\nSexo: %s\nMatricula: %i\nMedia: %.2f\n\n",i+1,A[i].Nome,A[i].Sexo,A[i].Matricula,A[i].Media);		
    	}
    }
    
    void getStatus(Aluno A[],int n){
    int i;	
    	printf("------  STATUS  ------\n");
    	for(i=0;i<n;i++){			
    		printf("|%i|\nNome: %s\nEstado: %s\n",i+1,A[i].Nome,A[i].Status);		
    		printf("\n");
    	}
    }
    
    int menu(){
    int escolha;
    	printf("||||    MENU    ||||\n");	
    	printf("Escolha uma das opções:\n");
    	printf("1-> Cadastrar Aluno.\t2-> Cadastros.\n");
    	printf("3-> Busca por nome.\t4-> Busca por sexo.\n");
    	printf("5-> Consultar Aprovados/Reprovados/Prova Final.\t6-> Atualizar cadastros.\n");
    	printf("0-> Sair.\n");
    	
    	scanf("%i",&escolha);
    	
    	return escolha;
    }
    
    main(){
    	int i,n,p,esc,esc2=1;
    	char nome[20],sexo;
    	Aluno A[10];
    
    	while(esc2!=0){
    
    		esc=menu();
    	
    		switch(esc){
    		
    			case 0:
    				esc2=0;
    				
    				break;
    			case 1:
    				system("cls");
    				printf("||||  CADASTRAR ALUNOS  ||||\n\n");
    				printf("Digite a quantidade de alunos a serem cadastrados: ");
    				scanf("%i",&n);
    				printf("\n");
    				setCadastro(A,n);
    			
    				printf("\nCADASTROS EFETUADOS!\n");
    				getch();
    				system("cls");
    			
    				break;
    		
    			case 2:
    				system("cls");
    				if(n==0){
    					printf("ERRO! Nenhum cadastro armazenado!\n");
    				
    					getch();
    				}else{
    					getCadastro(A,n);
    				
    					getch();
    				}
    				system("cls");
    				
    				break;
    			case 3:
    				system("cls");
    					if(n==0){
    						printf("ERRO! Nenhum cadastrado armazenado!\n");
    					
    						getch();
    					}else{
    						do{
    						printf("|\t\tPROCURA POR NOME\t\t|\n");
    						printf("%i CADASTRO(S)\n",n);
    						printf("Digite o nome do aluno: ");
    						scanf("%s",&nome);
    						procuraNome(nome,A,n);
    							if(p>=0){
    							printf("\n-- %i --\nNome: %s\nMatricula: %i\nMedia: %.2f\n\n",p+1,A[p].Nome,A[p].Matricula,A[p].Media);		
    							}else{
    							printf("|%i|Nome não encontrado!\n",p);
    							}
    						printf("Repetir busca? CONTINUAR<1>/SAIR<2>\n");
    						scanf("%i",&esc2);
    						
    						system("cls");
    						}while(esc2!=2);
    				
    					}
    				system("cls");
    				
    				break;
    				case 4:
    					system("cls");
    					if(n==0){
    						printf("ERRO! Nenhum cadastrado armazenado!\n");
    					
    						getch();
    					}else{
    						do{
    						printf("|\t\tPROCURA POR SEXO\t\t|\n");
    						printf("%i CADASTRO(S)\n",n);
    						printf("Digite o sexo do aluno <M/F>: ");
    						scanf("%s",&sexo);
    						strupr(sexo);
    						printf("Alunos do sexo |%c|",sexo);
    						
    						for(i=0;i<n;i++){
    							procuraSexo(sexo,A,i,n);
    						}
    						
    						printf("Repetir busca? CONTINUAR<1>/SAIR<2>\n");
    						scanf("%i",&esc2);
    						
    						system("cls");
    						}while(esc2!=2);
    				
    					}
    				system("cls");
    				
    				break;
    				
    				case 5:
    				system("cls");
    				if(n==0){
    					printf("ERRO! Nenhum cadastro armazenado!\n");
    				
    					getch();
    				}else{
    					getStatus(A,n);
    				
    					getch();
    				}
    				system("cls");
    				
    				break;					
    				
    				case 6:
    				system("cls");
    				printf("||||  CADASTRAR ALUNOS  ||||\n\n");
    				printf("Digite a quantidade de alunos a serem cadastrados: ");
    				scanf("%i",&n);
    				printf("\n");
    				setCadastro(A,n);
    			
    				printf("\nCADASTROS EFETUADOS!\n");
    				getch();
    				system("cls");
    			
    				break;		
    		}
    
    	}
    	system("cls");
    	printf("ENCERRADO!");
    		
    	getch();
    	return 0;
    }

    Obrigado pela atenção.

     

    • Curtir 1
  8. Olá Fórum!

     

    Estou com um problema num algoritmo usando funções para armazenar, imprimir e pesquisar dados de alunos em um vetor.

    Parece que está havendo conflito para armazenar sexo e nome de um índice do tipo aluno, pois quando eu retiro a opção de armazenar o sexo ele executa tranquilamente.

    O código está no spoiler.

     

    Spoiler
    
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<ctype.h>
    
    typedef struct{
    	char Sexo[1];
    	char Nome[20];
    	int Matricula;
    	float Media;
    	char Status[3];
    }Aluno;
    
    void setCadastro(Aluno A[],int nAlunos){
    int i,j,auxInt;
    float auxFloat,s;
    Aluno auxAlu;
    char nome[20];
    char sexo[1];
    	
    	for(i=0;i<nAlunos;i++){
    		printf("Digite o nome do aluno %i: ",i+1);
    		scanf("%s",&nome);
    		strcpy(A[i].Nome,nome);
    		printf("Digite o sexo <M/F>: ");
    		scanf("%s",&sexo);
    		sexo[1]=toupper(sexo);
    		A[i].Sexo[1]=sexo[1];
    		printf("Digite o numero de matricula: ");
    		scanf("%i",&auxInt);
    		A[i].Matricula=auxInt;
    		
    		s=0;
    		for(j=0;j<4;j++){
    			printf("Digite a nota %i:",j+1);
    			scanf("%f",&auxFloat);
    			s+=auxFloat;
    		}
    	
    		A[i].Media=s/4;
    		if(A[i].Media>6){
    			strcpy(A[i].Status,"AP");
    		}else if(A[i].Media<5){
    			strcpy(A[i].Status,"RP");
    		}else{
    			strcpy(A[i].Status,"PF");
    		}
    		
    		if((A[i].Media<A[i-1].Media)&&(i>0)){
    			auxAlu=A[i];
    			A[i]=A[i-1];
    			A[i-1]=auxAlu;
    		}
    	printf("\n");
    	}
    }
    
    void procuraNome(char nome[20],Aluno A[],int nAlunos){
    int p=-1,i;
    
    	for(i=0;i<nAlunos;i++){	
    		if(A[i].Nome==nome[20]){
    			printf("\n-- %i --\nNome: %s\nMatricula: %i\nMedia: %.2f\n\n",i+1,A[i].Nome,A[i].Matricula,A[i].Media);
    		}
    	}
    
    }
    
    void procuraSexo(char sexo[1],Aluno A[],int i,int nAlunos){	
    
    	if(sexo==A[i].Sexo){
    		printf("\n-- %i --\nNome: %s\nMatricula: %i\nMedia: %.2f\n\n",i+1,A[i].Nome,A[i].Matricula,A[i].Media);
    	}
    
    }
    
    void getCadastro(Aluno A[],int n){
    int i;	
    	printf("------  ALUNOS  ------\n");
    	for(i=0;i<n;i++){			
    			printf("|%i|\nNome: %s\nSexo: %s\nMatricula: %i\nMedia: %.2f\n\n",i+1,A[i].Nome,A[i].Sexo,A[i].Matricula,A[i].Media);		
    	}
    }
    
    void getStatus(Aluno A[],int n){
    int i;	
    	printf("------  STATUS  ------\n");
    	for(i=0;i<n;i++){			
    		printf("|%i|\nNome: %s\nEstado: %s\n",i+1,A[i].Nome,A[i].Status);		
    		printf("\n");
    	}
    }
    
    int menu(){
    int escolha;
    	printf("||||    MENU    ||||\n");	
    	printf("Escolha uma das opções:\n");
    	printf("1-> Cadastrar Aluno.\t2-> Cadastros.\n");
    	printf("3-> Busca por nome.\t4-> Busca por sexo.\n");
    	printf("5-> Consultar Aprovados/Reprovados/Prova Final.\t6-> Atualizar cadastros.\n");
    	printf("0-> Sair.\n");
    	
    	scanf("%i",&escolha);
    	
    	return escolha;
    }
    
    main(){
    	int i,n,p,esc,esc2=1;
    	char nome[20],sexo[1];
    	Aluno A[10];
    
    	while(esc2!=0){
    
    		esc=menu();
    	
    		switch(esc){
    		
    			case 0:
    				esc2=0;
    				
    				break;
    			case 1:
    				system("cls");
    				printf("||||  CADASTRAR ALUNOS  ||||\n\n");
    				printf("Digite a quantidade de alunos a serem cadastrados: ");
    				scanf("%i",&n);
    				printf("\n");
    				setCadastro(A,n);
    			
    				printf("\nCADASTROS EFETUADOS!\n");
    				getch();
    				system("cls");
    			
    				break;
    		
    			case 2:
    				system("cls");
    				if(n==0){
    					printf("ERRO! Nenhum cadastro armazenado!\n");
    				
    					getch();
    				}else{
    					getCadastro(A,n);
    				
    					getch();
    				}
    				system("cls");
    				
    				break;
    			case 3:
    				system("cls");
    					if(n==0){
    						printf("ERRO! Nenhum cadastrado armazenado!\n");
    					
    						getch();
    					}else{
    						do{
    						printf("|\t\tPROCURA POR NOME\t\t|\n");
    						printf("%i CADASTRO(S)\n",n);
    						printf("Digite o nome do aluno: ");
    						scanf("%s",&nome);
    						procuraNome(nome,A,n);
    							if(p>=0){
    							printf("\n-- %i --\nNome: %s\nMatricula: %i\nMedia: %.2f\n\n",p+1,A[p].Nome,A[p].Matricula,A[p].Media);		
    							}else{
    							printf("|%i|Nome não encontrado!\n",p);
    							}
    						printf("Repetir busca? CONTINUAR<1>/SAIR<2>\n");
    						scanf("%i",&esc2);
    						
    						system("cls");
    						}while(esc2!=2);
    				
    					}
    				system("cls");
    				
    				break;
    				case 4:
    					system("cls");
    					if(n==0){
    						printf("ERRO! Nenhum cadastrado armazenado!\n");
    					
    						getch();
    					}else{
    						do{
    						printf("|\t\tPROCURA POR SEXO\t\t|\n");
    						printf("%i CADASTRO(S)\n",n);
    						printf("Digite o sexo do aluno <M/F>: ");
    						scanf("%s",&sexo);
    						strupr(sexo);
    						printf("Alunos do sexo |%s|",sexo);
    						
    						for(i=0;i<n;i++){
    							procuraSexo(sexo[1],A,i,n);
    						}
    						
    						printf("Repetir busca? CONTINUAR<1>/SAIR<2>\n");
    						scanf("%i",&esc2);
    						
    						system("cls");
    						}while(esc2!=2);
    				
    					}
    				system("cls");
    				
    				break;
    				
    				case 5:
    				system("cls");
    				if(n==0){
    					printf("ERRO! Nenhum cadastro armazenado!\n");
    				
    					getch();
    				}else{
    					getStatus(A,n);
    				
    					getch();
    				}
    				system("cls");
    				
    				break;					
    				
    				case 6:
    				system("cls");
    				printf("||||  CADASTRAR ALUNOS  ||||\n\n");
    				printf("Digite a quantidade de alunos a serem cadastrados: ");
    				scanf("%i",&n);
    				printf("\n");
    				setCadastro(A,n);
    			
    				printf("\nCADASTROS EFETUADOS!\n");
    				getch();
    				system("cls");
    			
    				break;		
    		}
    
    	}
    	system("cls");
    	printf("ENCERRADO!");
    		
    	getch();
    	return 0;
    }

     

     

    Obrigado por visualizar, se possível me ajude!

    • Curtir 2
  9. Tentei fazer um algoritmo usando funções para o problema, mas está lendo incorretamente as matrizes.

     

    #include<stdio.h>
    #define MAX 10
    
    void setMatriz(int V[MAX][MAX],int maxI,int maxJ,char M){
    int i,j;
    		for(i=0;i<maxI;i++){
    			for(j=0;j<maxJ;j++){						
    				printf("Digite um valor para a posicao %c(%d,%d): ",M,i+1,j+1);
    				scanf("%i",&V[i][j]);			
    			}
    		}
    }
    void getMatriz(int V[MAX][MAX],int Mi,int Mj,char M){
    int i,j;	
    	printf("------  %c  ------\n",M);
    	for(i=0;i<Mi;i++){
    		for(j=0;j<Mj;j++){			
    			printf("[%i]\t",V[i][j]);
    		}
    	printf("\n");	
    	}
    }		
    
    main(){
    	int A[5][4],B[5][4],C[5][4];
    	int i,j;
    	
    	setMatriz(A,5,4,'A');
    	printf("\n");
    	setMatriz(B,5,4,'B');
    	printf("\n");
    	getMatriz(A,5,4,'A');
    	printf("\n");
    	getMatriz(B,5,4,'B');
    	printf("\n");
    
    	for(i=0;i<5;i++){
    		for(j=0;j<4;j++){			
    			C[i][j]=A[i][j]-B[i][j];
    		}
    	}
    	
    	getMatriz(C,5,4,'C');
    	
    	getch ();
    	return 0;
    }

    Sabe por que?

    valeu! consegui resolver o exercício, corrigindo o algoritmo anterior com sua ajuda.

  10. Olá Colegas!

     

    Estou com um exercício simples, mas o algoritmo está dando um erro que não compreendo. :mad: Minha professora não consegue me ajudar.

    Exercício: Ler duas matrizes A e B com 20 elementos cada, a partir da subtração dos correspondentes índices de A com os de B criar uma matriz C contendo os resultados.

    Mostrar a matriz C.

     

    #include<stdio.h>
    #include<stdlib.h>
    
    main(){
    	int i,j;
    	int A[5][4],B[5][4],C[5][4];
    
    	for(i=1;i<=5;i++){
    		for(j=1;j<=4;j++){						
    			printf("Digite um valor para a posicao A(%d,%d): ",i,j);
    			scanf("%i",&A[i][j]);			
    		}
    	}
    	printf("\n");
    	
    	for(i=1;i<=5;i++){
    		for(j=1;j<=4;j++){			
    			printf("Digite um valor para a posicao B(%d,%d): ",i,j);
    			scanf("%i",&B[i][j]);
    		}
    	}
    	printf("\n");	
    	
    	printf("\nMATRIZ C\n");
    	for(i=1;i<=5;i++){
    		for(j=1;j<=4;j++){			
    			C[i][j]=A[i][j]-B[i][j];
    			printf("[ %i ]\t",C[i][j]);
    		}
    	printf("\n");
    	}
    	
    	
    	
    	getch ();
    	return 0;
    }

     

    O problema é que quando eu executo o algoritmo ele lê os elementos da matriz A até a posição A[5][2] e já pula para a leitura da matriz B.

     

    Obrigado por visualizar, se possível me ajude!

     

  11. Olá!

    Estou com uma atividade para resolver, nela é pedido o seguinte:

    ---> Implementar uma multiplicação entre duas matrizes, pedir para o usuário digitar o numero de linhas e colunas das duas, no final apresentar o resultado. A entrada dos valores nas matrizes deve ser feita de forma automática ( função rand() ).

     

    A minha dúvida é a seguinte: Eu não sei como o usuário poderá escolher o número de linhas e colunas da matriz.

    • Curtir 1
  12. Spoiler

    Algoritmo "VOGAL_CONSOANTE"


    Var

    vogal:vetor [1..5] de caracter
    consoante:vetor [1..21] de caracter
    i,j,k:inteiro
    l:caracter

     

    funcao fvogal (letra:caractere):logico

    var
    posicao:inteiro
    existe:logico
    inicio

    existe <- falso
     para posicao de 1 ate 5 faca
       se (letra = vogal[posicao]) então
         existe <- verdadeiro
       fimse
     fimpara

     retorne existe
    fimfuncao


    funcao fconsoante (letra:caractere):logico
    var
    posicao:inteiro
    existe:logico
    inicio

    existe <- falso
     para posicao de 1 ate 21 faca
       se (letra = consoante[posicao]) então
         existe <- verdadeiro
       fimse
     fimpara

     retorne existe
    fimfuncao

     

    Inicio
    //Armazenamento nos devidos vetores.
    j <- 0
    k <- 97
    para i de 1 ate 26 faca

     se (k = 97) então
      vogal[1] <- carac(k)
     senao

      se (k = 101) então
      vogal[2] <- carac(k)
      senao

       se (k = 105) então
       vogal[3] <- carac(k)
       senao

        se (k = 111) então
        vogal[4] <- carac(k)
        senao

         se (k = 117) então
         vogal[5] <- carac(k)
         senao
         
         j <- j + 1
         consoante[j] <- carac(k)
         
         fimse
        fimse
       fimse
      fimse
     fimse

    k <- k + 1
    fimpara

     

    escreval("Digite uma letra:")
    leia(l)

    se (fvogal(l) = verdadeiro) então
      escreva("É uma vogal.")
      senao
       se(fconsoante(l) = verdadeiro) então
         escreva("É uma consoante.")
       senao
         escreva("Não é um caractere.")
      fimse
    fimse

    Fimalgoritmo

     

    @Simon Viegas

    MUITO OBRIGADO!!

    agora tudo fez sentido, consegui compreender como trabalhar com este tipo de função.

    Feliz Natal e Ano novo p você parceiro!

    • Curtir 1
  13. Spoiler

    Algoritmo "VOGAL_CONSOANTE"

     

    Var
      

    vogal    :vetor [1..5] de caracter
    consoante:vetor [1..21] de caracter
    i,j,k:inteiro
    c:caracter

     

    funcao fvogal (letra:caracter): logico
    var   

    existe,posicao: inteiro  

    inicio
        existe <- 0

        para posicao de 1 ate 5 faca
          se (letra = posicao) então
          existe <- 1
          fimse
        fimpara

       fimfuncao

     

    Inicio
    //PREENCHE OS VETORES DE VOGAIS E CONSOANTES
    j <- 0
    k <- 97
    para i de 1 ate 26 faca
       se (k = 97) ENTÃO //se letra "a"
          vogal[1] <- carac(k)
       senao
          se (k = 101) ENTÃO //se letra "e"
             vogal[2] <- carac(k)
          senao
             se (k = 105) ENTÃO //se letra "i"
                vogal[3] <- carac(k)
             senao
                se (k = 111) ENTÃO //se letra "o"
                   vogal[4] <- carac(k)
                senao
                   se (k = 117) ENTÃO //se letra "u"
                      vogal[5] <- carac(k)
                   senao //senão, é consoante
                      j <- j + 1 //atualiza contador de consoantes
                      consoante[j] <- carac(k)
                   fimse
                fimse
             fimse
          fimse
       fimse
       k <- k+1 //atualiza o contador de letras
    fimpara

     

    escreva("Digite um caractere:")
    leia(c)

     

    escreva(fvogal(c))

     

    @Simon Viegas 

    Acho que não estou conseguindo fazer a variável percorrer o vetor, não tenho ideia de como colocar isso numa função.

    Porque eu imagino ter de criar um vetor genérico na função, para quando for usar a função eu use o verdadeiro vetor no lugar desse genérico.

  14. @Simon Viegas

     

    Tentei muito fazer a função mas acho que ainda não está correta. :( 

    Var
    
    vogal:vetor [1..5] de caracter
    consoante:vetor [1..21] de caracter
    i,j,k:inteiro
    l:caracter
    
    funcao fvogal (x:inteiro): logico
    var
    t:inteiro
    inicio
    
     para t de 1 ate 26 faca
     vogal[t]
     consoante[t]
    
       se (x = vogal[t]) então
         retorne verdadeiro
       senao
        se (x = consoante[t]) então
          retorne falso
        fimse
       fimse
    
     fimpara
    
    fimfuncao
    
    Inicio
    //Armazenamento nos devidos vetores.
    j <- 0
    k <- 97
    para i de 1 ate 26 faca
    
    asc(k)
    
     se (k = 97) então
      vogal[1] <- carac(k)
     senao
    
      se (k = 101) então
      vogal[2] <- carac(k)
      senao
    
       se (k = 105) então
       vogal[3] <- carac(k)
       senao
    
        se (k = 111) então
        vogal[4] <- carac(k)
        senao
    
         se (k = 117) então
         vogal[5] <- carac(k)
         senao
    
         j <- j + 1
         consoante[j] <- carac(k)
    
         fimse
        fimse
       fimse
      fimse
     fimse
    
    k <- k + 1
    fimpara
    
    escreva("Digite uma letra:")
    leia(l)
    escreval("")
    
    se ((fvogal (l) = verdadeiro) então
      escreva("A letra é uma Vogal.")
    senao
     se ((fvogal (l) = falso) então
      escreva("A letra é uma Consoante.")
     senao
      escreva("Não é uma letra.")
     fimse
    fimse
    
    Fimalgoritmo

     

  15. @Simon Viegas , Muito Obrigado pela atenção.

     

    Eu consegui armazenar os caracteres nos devidos vetores.

    Porém estão armazenados em maiúsculo, se tiver que corrigir isto eu dou um jeito.

    Var
    
    vogal:vetor [1..5] de caracter
    consoante:vetor [1..21] de caracter
    i,j,k:inteiro
    
    Inicio
    //Armazenamento nos devidos vetores.
    j <- 0
    k <- 65
    para i de 1 ate 26 faca
    
    asc(k)
    
     se (k = 65) então
      vogal[1] <- carac(k)
     senao
    
      se (k = 69) então
      vogal[2] <- carac(k)
      senao
    
       se (k = 73) então
       vogal[3] <- carac(k)
       senao
    
        se (k = 79) então
        vogal[4] <- carac(k)
        senao
    
         se (k = 85) então
         vogal[5] <- carac(k)
         senao
         
         j <- j + 1
         consoante[j] <- carac(k)
         
         fimse
        fimse
       fimse
      fimse
     fimse
    
    k <- k + 1
    fimpara
    
    Fimalgoritmo

     

  16. Olá pessoal, meu professor me passou esta tarefa e não estou conseguindo resolver, se alguém me ajudar agradeço.

     

    Escreva um algoritmo em pseudocódigo que armazene as letras vogais em
    um vetor chamado vogal, as consoantes em um vetor chamado consoante. Em
    seguida crie duas funções do tipo lógico (as quais vão percorrer os vetores e
    comparar com a letra digitada, retornando V ou F) para saber se a letra é vogal
    ou consoante. Ao final deverá ser impresso: vogal, consoante ou não é uma
    letra (dependendo da letra digitada pelo usuário).

     

    Eu fiz um pouco mas não estou sabendo como armazenar as vogais e as consoantes nos seu devido vetor. Estou travado no algoritmo :( 

    Algoritmo "VOGAL_CONSOANTE"
    Var
    vogal:vetor [1..5] de caracter
    consoante:vetor [1..21] de caracter
    i:inteiro
    funcao letra(x:inteiro):logico
     var
     l:caractere
     inicio
     escolha l
      se
     fimescolha
     se
     fimse
    fimfuncao
    Inicio
    
    Fimalgoritmo

     

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