Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jeovane Carvalho

Buscar segunda posição de um vetor, quando deletado a posição 1 em c/ c++

Recommended Posts

Saudações senhoras (es), venho por meio desta pedir um help, pois tenho esse código que exibirei abaixo que esta funcionando 99%, mas só esta faltando um porém que ainda não consigo implementar, tipo:

Tenho esse código , um menu de nota de alunos, que insere, deleta, imprime e busca por código, até aí esta funcionando de boa, só que, por exemplo se eu cadastrar 2 alunos, um com a matrícula 1 e o outro com a matrícula 2, ele mostra normalmente na tela quando eu peço para listar , mas se eu deletar a matrícula 1 e deixar apenas a matrícula 2 , ele já não lista mais, e pelo que vi e li em vários fóruns é que teria que colocar um ponteiro, ou uma opção recursiva de uma função chamando ela mesma, e gostaria de saber como faço , e se preciso que ao deletar a matrícula 1, este espaço de memória ficará vazio e se tem como realocar a matrícula 2 para o espaço 1 da memória, pois mesmo eu fazendo o laço nessa variável ela não  busca a segunda cadastrada, segue o código:

A senha de acesso é 1

 

#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<string.h>
#define SENHA 1
#define MAX 3
#ifndef COLORS_H
#define COLORS_H

#define foreground(color) FORE##color
#define background(color) BACK##color
#define style(style_) style_

/** Foreground Colors **/
#define FOREBLACK printf("\033[30m") 
#define FORERED printf("\033[31m") 
#define FOREGREEN printf("\033[32m") 
#define FOREYELLOW printf("\033[33m") 
#define FOREBLUE printf("\033[34m") 
#define FOREMARGENTA printf("\033[35m") 
#define FORECYAN printf("\033[36m") 
#define FOREWHITE printf("\033[37m") 
#define FORENORMAL_COLOR printf("\033[39m") 

/** Background Colors **/
#define BACKBLACK printf("\033[40m") 
#define BACKRED printf("\033[41m") 
#define BACKGREEN printf("\033[42m") 
#define BACKYELLOW printf("\033[43m") 
#define BACKBLUE printf("\033[44m") 
#define BACKMAGENTA printf("\033[45m") 
#define BACKCYAN printf("\033[46m") 
#define BACKWHITE printf("\033[47m") 
#define BACKNORMAL printf("\033[49m")

/** Style **/
#define BRIGHT printf("\033[1m")
#define DIM printf("\033[2m")
#define NORMAL printf("\033[22m")
#define RESETALL printf("\033[0m")
#define UNDERLINE printf("\033[4m")
#define BLINKSLOW printf("\033[5m")
#define BLINKRAPID printf("\033[6m")
#define ITALIC printf("\033[3m")
#define NEGATIVE printf("\033[7m")
#endif /* COLORS_H */




	//CONSTRUTOR DE VARIÁVEIS
	struct cadastro
	{
	int matricula;
	char aluno[50];
	char disciplina1[50];
	char disciplina2[50];
	char disciplina3[50];
	float nota1;
	float nota2;
	float nota3;
	float nota4;
	float nota5;
	float nota6;
	float nota7;
	float nota8;
	float nota9;
	int codaux[20];
	int vazio;
	int cod;
	
		
	};

	struct cadastro registros[MAX];
	
	void flush_in(){ 
	int ch;
	while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){} 
	}
	void gotoxy (int x, int y);
	//Funçoes que serao usadas
	void cadastrar(int cod, int pos);
	
	//Funçao para consulta
	void listar( void );
	
	//Funçao para consulta
	void consultar( void );
	
	//Funçao para exibir relatorio
	int relatorio( void );
	
	//Função para verificar posição
	int verifica_pos( void );
	
	//Função para verificar codigo
	int verifica_cod( int cod );
	
	//Função para verificar posição do codigo
	int verifica_pos( void );

	//Função para excluir cadastro
	void zerar( void );
		
	//Função para excluir cadastro
	void excluir( void );
	
	//FUNÇÃO DO MAIN QUE CHAMA TODAS AS FUNÇÕES
	int  main(void){
    system ("color 1f");
  	int op = 0,senha=SENHA,posicao, matricula, retorno;
   	printf("#########               SISTEMA DE NOTAS DE ALUNOS:               ##############\n\n ");
	
	do
	{
	printf ("\t\t     ----------------------------------\n");
	printf ("\n\t\t\t   INSIRA A SUA SENHA : ");
	fflush(stdin);
  
    scanf ("%d",&senha);
    if(senha!=SENHA)
	{
		system ("color 1E");
   	printf("\n\n\t\t\t Senha incorreta. Tente Novamente !\n\n");
                   printf("\t\t    ");system("pause");
    system("cls");
  

	}
	}
	while(senha!=SENHA);
	
	while(op!=5){
	system("cls");
	printf ("\t\t\t *** MENU DE NOTAS DE ALUNO: ***\n\n ",setlocale(LC_ALL,""));
	printf ("\n\n\n\t\t\t  DIGITE UMA OPÇÃO ABAIXO: \n\n\n\n ",setlocale(LC_ALL,""));
	printf ("\t\t\t -----------------------------\n",setlocale(LC_ALL,""));
	printf ("\t\t\t| 1 - Matrícula do Aluno      |\n",setlocale(LC_ALL,""));
	printf ("\t\t\t| 2 - Listar todos os Alunos  |\n",setlocale(LC_ALL,""));
	printf ("\t\t\t| 3 - Pesquisar por Matrícula |\n",setlocale(LC_ALL,""));
	printf ("\t\t\t| 4 - Excluir Aluno           |\n",setlocale(LC_ALL,""));
	printf ("\t\t\t| 5 - Sair                    |\n",setlocale(LC_ALL,""));
	printf ("\t\t\t -----------------------------\n",setlocale(LC_ALL,""));
	scanf ("%d", &op); 
	switch(op)
    {
	case 1: // FUNÇÃO VERIFICA A MATRÍCULA AO CADASTRAR
    {
    posicao=verifica_pos();
    
	if ( posicao !=2)
    {

    printf("\n\t\t  Digite o número da matrícula para o aluno : ");
    scanf("%d",&matricula);
	fflush(stdin);

    retorno = verifica_cod( matricula);

    if ( retorno == 1 )
	{
	
    cadastrar( matricula, posicao );
    }else{
	
    printf("\n\t\tEste número de Matrícula já existe. Tente Outro !\n\n");
    printf("\t\t    ");system("pause\n\n");
    }

	}else
	
    printf("\n\n\t\t     Não é possível realizar mais cadastros !\n\n");
    printf("\t\t    ");system("pause\n\n");
	break;

    }

    case 2: // LISTAR
    
	{
    listar();
    break;    
    
	}
    
    case 3:// CONSULTAR
    {
    consultar();
    break;
    }
    
    case 4:// EXCLUIR
    {
    excluir();
    system ("pause");
    break;    
    }
	 // SAIR
    case 5:
    {
    
	printf("\n\n\t\t           Saindo do Sistema - Tchau");
    getchar();
    printf("\t\t    ");return 0;
    break;
    }
    
	default :// OPÇÃO INVÁLIDA
    printf("\n\t\t         Opcão Inválida\n\n",setlocale(LC_ALL,""));
    printf("\t\t    ");system("pause\n\n");
    break;
   
    }
    }
    getchar();

    }//Final da Função Verifica se a matrícula ja esta sendo usada
    //FIM DO MAIN


   // FUNÇAO CADASTRAR
    void cadastrar( int cod, int pos )
    {
    pos = verifica_pos();

    registros[pos].cod = cod;

	
	printf("\n\t\t  Digite Nome do Aluno: ");
    scanf("%s",&registros[pos].aluno);
    
    
	printf("\n\t\t  Digite a 1º  Disciplina : ");
    scanf("%s",&registros[pos].disciplina1);
    flush_in();
    printf("\n\t\t  Nota do 1º Bimestre: ");
	scanf("%f",&registros[pos].nota1);
    fflush(stdin);
    printf("\n\t\t  Nota do 2º Bimestre: ");
    scanf("%f",&registros[pos].nota2);
    fflush(stdin);
    printf("\n\t\t  Nota do 3º Bimestre: ");
    scanf("%f",&registros[pos].nota3);
	
	printf("\n\t\t  Digite a 2º Disciplina : ");
    scanf("%s",&registros[pos].disciplina2);
    fflush(stdin);
    printf("\n\t\t  Nota do 1º Bimestre: ");
	scanf("%f",&registros[pos].nota4);
    fflush(stdin);
    printf("\n\t\t  Nota do 2º Bimestre: ");
    scanf("%f",&registros[pos].nota5);
    fflush(stdin);
    printf("\n\t\t  Nota do 3º Bimestre: ");
    scanf("%f",&registros[pos].nota6);
    
    printf("\n\t\t  Digite a 3º Disciplina :  ",setlocale(LC_ALL,""));
    scanf("%s",&registros[pos].disciplina3);
    fflush(stdin);
    printf("\n\t\t  Nota do 1º Bimestre: ",setlocale(LC_ALL,""));
	scanf("%f",&registros[pos].nota7);
    fflush(stdin);
    printf("\n\t\t  Nota do 2º Bimestre: ",setlocale(LC_ALL,""));
    scanf("%f",&registros[pos].nota8);
    fflush(stdin);
    printf("\n\t\t  Nota do 3º Bimestre: ",setlocale(LC_ALL,""));
    scanf("%f",&registros[pos].nota9);
    

    registros[pos].vazio = 1;

    printf("\n\t\t  Cadastro Realizado com Sucesso!\n\n",setlocale(LC_ALL,""));
    
    printf("\t\t    ");system("pause"); 


    } //Final da Função Cadastrar


   // FUNÇAO LISTAR DADOS
    void listar(void)
    {
   
    int i,cod,posicao,pos,total;
    setlocale(LC_ALL," ");
    

    pos = verifica_pos();
   
   
    if (cod>MAX)
    {
    	 system("cls");	
    printf("\nRESULTADO DA BUSCA: \n");
    printf("\nForam encontrado (s) o total de :");
    for(i=0; i<pos; i++){
    total=pos;
    
    }
    printf(" %d Aluno (s) :\n",total);
    printf("________________________________________________\n\n");
	}
    	
    
 
    if (pos>=1)
    {

    for (i=0; i<pos; i++ )
    {
	printf("\n\t |Matrícula : %d\n",registros[i].cod);
	printf("\n\t |Nome do Aluno é: %s\n" ,registros[i].aluno);
	
	printf("\n\t |Disciplina : %s\n",registros[i].disciplina1);
	printf("\n\t |Nota do 1º Bimestre: %.1f\t",registros[i].nota1);
	printf("\n\t |Nota do 2º Bimestre: %.1f\t",registros[i].nota1);
	printf("\n\t |Nota do 3º Bimestre: %.1f\n",registros[i].nota3);
	
	printf("\n\t |Disciplina : %s\n",registros[i].disciplina2);
	printf("\n\t |Nota do 1º Bimestre: %.1f\t",registros[i].nota4);
	printf("\n\t |Nota do 2º Bimestre: %.1f\t",registros[i].nota5);
	printf("\n\t |Nota do 3º Bimestre: %.1f\n",registros[i].nota6);
	
	printf("\n\t |Disciplina : %s\n",registros[i].disciplina3);
	printf("\n\t |Nota do 1º Bimestre: %.1f\t",registros[i].nota7);
	printf("\n\t |Nota do 2º Bimestre: %.1f\t",registros[i].nota8);
	printf("\n\t |Nota do 3º Bimestre: %.1f\n",registros[i].nota9);
	printf("___________________________________________________\n\n");

    } 
    
	}else{

    if (pos<=0)
	{

	printf("\n\n\t\t\t Não existe Aluno cadastrado !\n\n");
                   printf("\t\t    ");system("pause");
                   return;
	getchar();
    } 

	}
    
    printf("\t\t    ")/system("pause");
    }//Final da Função Listar


    //FUNÇÃO CONSULTAR  DADOS
    void consultar( void )
    {
    int cont = 0, cod,posicao, retorno,codaux;
   
    printf("\n\n\t\t\tEntre com o número de Matrícula : ",setlocale(LC_ALL,""));
    scanf("%d",&cod);


    while ( cont <=2)
    {

    
    if (registros[cont].cod==cod)
    {
    if (registros[cont].vazio==1)
    { 
    system("cls");
    printf("\nRESULTADO DA BUSCA: \n\n");
    printf("_____________________________________________\n\n");
    printf("\nMatrícula : %d\n",registros[cont].cod);
    printf("\nNome do Aluno é: %s\n" ,registros[cont].aluno);
	
	printf("\nDisciplina : %s\n",registros[cont].disciplina1);
	printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota1);
	printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota1);
	printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota3);
	
	printf("\nDisciplina : %s\n",registros[cont].disciplina2);
	printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota4);
	printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota5);
	printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota6);
	
	printf("\nDisciplina : %s\n",registros[cont].disciplina3);
	printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota7);
	printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota8);
	printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota9);
   
   
    printf("\n\n");
	system ("pause");
	break;

    }

	}
        
    cont++;

    }
    if (registros[cont].vazio==0)
    {
		
    printf("\n\t\t  Esta Matrícula não existe. Tente novamente !\n\n",setlocale(LC_ALL,""));
    printf("\t\t    ")/system("pause");

    }
    
    }   //Final da Função Consultar Dados


  	 //FUNÇÃO VERIFICA POSIÇÃO
    int verifica_pos( void )
    {
    int cont = 0;
    while ( cont <=MAX)
    {
    if ( registros[cont].vazio == 0 )
    return(cont);
	cont++;
    }

    return(-1);

    }//Final da verifica Posição



    int zerar(int cod)  
    {
    int cont;

    for ( cont = 0; cont <= MAX; cont++ )
    registros[cont].vazio = 0;
    }



     //FUNÇÃO VERIFICA CÓDIGO
    int verifica_cod( int cod )
    {
    int cont = 0;
	while ( cont <= MAX )
    {
    if ( registros[cont].cod == cod )
    return(0);

    cont++;
    }

    return(1);

    }//Final da Função Verifica Código


    //FUNÇÃO EXCLUIR
    void excluir( void )
    {
    int cod, cont = 0;
    char resp;

    printf("\n\t     Entre com o código do registro que deseja excluir :",setlocale(LC_ALL,""));
    scanf("%d", &cod );

    while ( cont <= MAX)
    {

    if ( registros[cont].cod == cod )
    { // FALTOU

    if ( registros[cont].vazio == 1 )
    {
    	printf("\n\n\nRESULTADO DA BUSCA: \n\n");
        printf("\nForam encontrado (os) Aluno (s) : %d\n" ,registros[cont].cod);
		printf("**********************************************\n\n");
	    printf("\nMatrícula : %d\n",registros[cont].cod);
	    printf("\nNome do Aluno é: %s\n" ,registros[cont].aluno);
		
		printf("\nDisciplina : %s\n",registros[cont].disciplina1);
		printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota1);
		printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota1);
		printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota3);
		
		printf("\nDisciplina : %s\n",registros[cont].disciplina2);
		printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota4);
		printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota5);
		printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota6);
		
		printf("\nDisciplina : %s\n",registros[cont].disciplina3);
		printf("\nNota do 1º Bimestre: %.1f\t",registros[cont].nota7);
		printf("\nNota do 2º Bimestre: %.1f\t",registros[cont].nota8);
		printf("\nNota do 3º Bimestre: %.1f\n",registros[cont].nota9);
              
        getchar();

        printf("\nDeseja realmente excluir ? S/N:");
        scanf("%c",&resp);

        if ( ( resp == 'S' ) || ( resp == 's' ) )
        {
        	
	    registros[cont].cod=0;
	    registros[cont].aluno[50]=0;
		registros[cont].disciplina1[50]=0;
		registros[cont].nota1=0;
		registros[cont].nota1=0;
		registros[cont].nota3=0;
		registros[cont].disciplina2[50]=0;
	    registros[cont].nota4=0;
		registros[cont].nota5=0;
		registros[cont].nota6=0;	
		registros[cont].disciplina3[50]=0;
		registros[cont].nota7=0;
		registros[cont].nota8=0;
		registros[cont].nota9=0;
        registros[cont].vazio=0;	        
	    printf("\nExclusão feita com sucesso\n\n");
	        
	        
	
	     
		   break;
          }
        else
        {
            if ( ( resp == 'N' ) || ( resp == 'n' ) )
            {
            printf("Exclusão cancelada!\n");
            break;
            }
        }

    }

    }

    cont++;

    if ( cont > 2)
    printf("\n\n\t\t    Código não encontrado . Tente Outro !\n");

    }
    printf("\n\t\t  ");return;system("pause"); 
    system("cls");

    }//Final da Função Excluir

  Desde já eu agradeço o espaço..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não manjo de C, mas me recordo de uma função chamada 'free' pra liberar o espaço da memória, e depois mudar os elementos pra posição -1

Tipo, você tem o array 

1 2 3 4 5

remove o 3

1 2 x 4 5

Ai você puxa o 4 pro lugar do 3 e o 5 pro lugar do 4

1 2 4 5

 

https://stackoverflow.com/questions/17080077/deleting-a-node-from-a-queue

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por josenilson
      Olá pessoal !
       
      Estou tentando rodar um projeto de um jogo na minha maquina porem o mesmo pede para adicionar o log4cxx 0.10.0, realizei pesquisas na internet a respeito mas até agora nada, Encontre para baixar nesse site https://logging.apache.org/log4cxx/1.0.0/download.html porem não sei se devo instalar ele no windows porque ao exportar ele no projeto as depêndencias que precisam dele ficam informando o erro log4cxx.logger.h no such file or directory. a linguagem que estou usando e C++
       
       
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Jack Oliveira
      Ola pessoal boa tarde
      estou tentando fazer um texto se mover dentro do input porem nao esta dando resultado que preciso
       
      Este é o codigo 
      <script type="text/javascript"> $(document).ready(function () { var frases = [{ 'elemento': $('input[name=search_string]'), 'frases': ["O que você está procurando?", "Buscar por: Academia, Barbearia, Churrascaria, Decoração, Escola, Farmácia, Gráfica, Imobiliaria, Lanchonete, Mecânica, Odontologia, Pizzaria...", "Faça sua busca por segmentos aqui.", "São mais de 3mil empresas para serem exploradas."] }]; animaInput(frases); }); </script>  
    • Por Rengavitp
      Boa noite pessoal!
       
      Estou fazendo um projeto web com spring boot e é a primeira vez que lido com imagens. Minha idéia é salvar imagens em uma pasta e depois recuperar essa imagem e mostrar, mas o problema que estou enfrentando é o seguinte, seu eu envio para o src do projeto na pasta imagens, eu até consigo acessar as imagens, mas preciso atualizar o projeto na IDE (isso vai acontecer em produção?) eu tentei salvar em uma pasta fora do source do projeto mas ai não consigo acessar. como devo fazer? fiz várias pesquisas, mas nenhuma me ajudou.
       
      Desde já agradeço.
    • Por Rengavitp
      Bom dia pessoal!

      Estou com o seguinte problema, tenho uma aplicação que funciona perfeitamente rodando na minha IDE (Spring Tool Suite) mas ao gerar o arquivo war e subir a aplicação no tom cat ele não funciona, mas apenas erro 404, abri o war e todos os arquivo estão lá, já tem seguir tudo quando e tutorial com problemas semelhantes mas nenhum resolveu. Abaixo mais informações,.

      Versão do java na aplicacao 11
      Versão do jva no servidor 11
      Versão do tomcat no servidor 8.5.55
       
      minha classe principal
      package br.com.masterplastfitas; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class MasterApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(MasterApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MasterApplication.class); } } meu pom.xml
      <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.2</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>masterplast</groupId> <artifactId>Master</artifactId> <version>2.0</version> <packaging>war</packaging> <name>Master</name> <description>Aplicação web </description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> <dependency> <groupId>org.mindrot</groupId> <artifactId>jbcrypt</artifactId> <version>0.4</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.0</version> </dependency> </dependencies> <build> <plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> </plugins> </build> </project>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.