Ir ao conteúdo
  • Cadastre-se
Bernardo Nunes

C++ Como fazer com que o usuario remova e ordene os valores em um Array

Recommended Posts

Olá, estou a fazer um programa em que tenho de fazer com que o usuário insira, pesquise, liste os valores de um array(isso faz o programa), mas essas partes já estão feitas. Agora falta que o programa ordene e faça uma estatística e que o usuário remova. é um programa com linguagem básica pois ainda estou a aprender. A alguém pode ajudar?

 

Obrigado

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Bernardo Nunes disse:

Agora falta que o programa ordene

Ordenação você encontra neste artigo da Wikipédia. Melhor é você mesmo ler.

 

Caso esteja com coragem :thumbsup:

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Bernardo Nunes    para remover do array você pode apenas colocar um valor negativo, por exemplo -1,  naquela posição, assim quando for pesquisar, se em uma posição do array tiver o valor -1 então você saberá que o dado naquela posição foi deletado, assim você faz o que for necessário .   se você puder poste seu código para vermos como está e em que podemos ajudar .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 O código é o seguinte:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<locale.h>
int idades()
{
    system("cls");
    int r=5;
    int idades[r];
    int escolha2, escolha3, i, x, j, posicao, tamanho, encontrado;
    do
    {
    printf("\n1-inserir idades\n2-Listar\n3-Pesquisar\n4-Ordenar\n5-Eliminar\n6-Estatistica\n7-Regressar ao menu");
    printf("\n\n Escolha uma opcao: ");
    scanf("%d",&escolha2);
    system("cls");
    switch (escolha2)
    {
        case 1:
            {
                for(i=0;i<r;i++)
                {
                    printf("Introduza a %d idade: ",i+1);//aqui na coisa dos nomes no case 2 e 3.
                    scanf("%d",&idades);
                }
                system("cls");
                break;
            }
        case 2:
            {
                for(i=0;i<r;i++)
                {
                    printf("%d\n",idades);
                }
                sleep(5);
                system("cls");
                break;
            }
        case 3: 
            {
                printf("Introduza a idade que dejesa procurar: ");
                scanf("%d",&x);
                i=0;
                encontrado=0;
                do
                {
                    if (idades==x)
                    {
                        encontrado=1;
                        posicao=i+1;
                        break;
                    }
                    i++;
                    }while(i < r && encontrado==0);
                    if (encontrado==1)
                    {
                        printf ("Idade encontrada na posição: %d\n",posicao);
                    }
                    else if(encontrado!=1)

                    {
                        printf ("Idade não encontrada\n");
                    } 
                    sleep(5);
                    system("cls");
                    break;        
                }
            }
        }while(escolha2!=7);
}
int nomes()
{
    system("cls");
    int N;
    int r=5;
    char nomes[r][20];
    char x[1][20];
    int escolha2, i,posicao,j, tamanho, encontrado;
    do
    {
        printf("\n1-Inserir nome\n2-Listar\n3-Pesquisar\n4-Ordenar\n5-Eliminar\n6-Regressar a Menu");
        printf("\n\n Escolha uma opcao: ");
        scanf("%d",&escolha2);
        system("cls");
            switch (escolha2)
            {
            case 1:
                {
                    system("cls");
                    for(i=0;i<r;i++)
                    {
                        for(j=0;j<1;j++)//bernardo a partir de agr no menu dos nomes sempre que fores mexer no vetor nomes vais usar este ciclo for
                        {
                            printf("Introduza o %d nome: ",i+1);
                            scanf("%s",&nomes[j]/*a mesma coisa para o j*/);
                        }
                    }
                    system("cls");
                    break;
                }
                case 2:
                {
                    for (i=0;i<r;i++) 
                    {
                        N=strlen(nomes);//define o tamanha da string
                        printf("\n");
                        for (j=0;j<N;j++)
                        {
                            printf("%c",nomes[j]);
                        }
                    }
                    sleep(5);
                    system("cls");
                    break;
                }
                case 3: 
                {
                    printf("Introduza o nome que dejesa procurar: ");
                    scanf("%s",&x);
                    i=0;
                    encontrado=0;
                    do
                    {
                         if (strcmp(nomes,x[0])==0)//compara os dois nomes
                        {
                            encontrado=1;
                            posicao=i+1;
                            break;
                        }
                        i++;
                    }while(i < r && encontrado==0);
                    if (encontrado==1)
                    {
                        printf ("Nome encontrado na posição: %d\n",posicao);
                    }
                    else
                    {
                        printf ("Nome não encontrado\n");
                    } 
                    sleep(5);
                    system("cls");
                    break;        
                }
            }
        }while(escolha2!=6);
}
int notas()
{
    system("cls");
    int r=5;
    int notas[r];
    int escolha2,escolha3, i, x, encontrado, posicao;
    do
    {
    system("cls");
    printf("\n1-Inserir notas\n2-Listar\n3-Pesquisar\n4-Eliminar\n5-Estatistica\n6-Regressar a Menu");
    printf("\n\n Escolha uma opcao: ");
    scanf("%d",&escolha2);
    switch (escolha2)
    {
        case 1:
            {
                for(i=0;i<r;i++)
                {
                    printf("Introduza a %d nota: ",i+1);
                    scanf("%d",&notas);
                }
                system("cls");
                break;
            }
            case 2:
            {
                for(i=0;i<r;i++)
                {
                    printf("%d\n",notas);
                }
                sleep(5);
                system("cls");
                break;
            }
        case 3: 
            {
                printf("Introduza a nota que dejesa procurar: ");
                scanf("%d",&x);
                i=0;
                encontrado=0;
                do
                {
                    if (notas==x)
                    {
                        encontrado=1;
                        posicao=i+1;
                        break;
                    }
                    i++;
                    }while(i < r && encontrado==0);
                    if (encontrado==1)
                    {
                        printf ("Nota encontrada na posição: %d\n",posicao);
                    }
                    else if(encontrado!=1)

                    {
                        printf ("Nota não encontrada\n");
                    } 
                    sleep(5);
                    system("cls");
                    break;        
                }
        case 5:
            {
                do
                {
                system("cls");
                    printf("\n 1 - Numero de alunos\n 2 - Numero de notas positivas3 - Numero de notas negativas\n 4 - Nota mais elevada\n 5 - Nota mais baixa\n 6 - Media das notas por aluno\n 7 - Media das notas por modulo\n 8 - Media das notas\n 9 - Regressar a Menu");
                    printf("\n\n Escolha uma opcao: ");
                    scanf("%d",&escolha3);
                    switch (escolha3)
                    {
                        case 1:
                            {
                            }
                    }
                }while(escolha3!=9);
            }
       }
   }while(escolha2!=6);
}
int main()
{
    int escolha, i, x;
    setlocale(LC_ALL,"");
    while (escolha!=4)
    {
        system("cls");
        printf("\n 1 - Idades ");
        printf("\n 2 - Nomes ");
        printf("\n 3 - Notas ");
        printf("\n 4 - Fechar Programa ");
        printf("\n\n Escolha uma opcao: ");
        scanf("%d",&escolha); 
        if( escolha==4)
        {
            printf("\n O Programa foi fechado.\n\n");
            system ("\n\npause");
        }  
        if(escolha==1)
        {
            idades();
        }
        if(escolha==2)
        {
            nomes();
        }
        if(escolha==3)
        {
            notas();
        }
    }
} 
adicionado 2 minutos depois

@devair1010 ignore os comentários 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Bernardo Nunes

 

21 horas atrás, Bernardo Nunes disse:

Olá, estou a fazer um programa em que tenho de fazer com que o usuário insira, pesquise, liste os valores de um array(isso faz o programa), mas essas partes já estão feitas. Agora falta que o programa ordene e faça uma estatística e que o usuário remova. é um programa com linguagem básica pois ainda estou a aprender. A alguém pode ajudar?

 

Qual a sua dúvida? entendi do que falta, mas o que nelas está com dificuldades?

 

Peguei o seu código acima, mas está dando erro. Não compila. Possivelmente por que não postou o código com a tag CODE :(. Acho que "sumiu" uns [i ]...  Por favor, edite a sua postagem e cole novamente o código dentro da tag CODE, beleza?

 

 

Vamos lá:

21 horas atrás, Bernardo Nunes disse:

Agora falta que o programa ordene e faça uma estatística e que o usuário remova. é um programa com linguagem básica pois ainda estou a aprender. A alguém pode ajudar?

 

Escolha um dos pontos e tente fazer... Por exemplo, pegue a parte do "ordenar". Então, assim como citado por @Mauro Britivaldo, existem diversos métodos de ordenação prontos. Você não precisa reinventar a roda :D. Sugiro utilizar o Bubble Sort... é o mais popular e um dos mais simples de entender e implementar.

 

Agora tudo vai depender também de como quer utilizar a ordenação... mas vamos supor que adicione um item ao menu para "Ordenar de for crescente ", ai só pegar o vetor e aplicar o método correspondente. Ao escolher para listar, os dados devem aparecer em ordem.

 

 

 

Para remover, tem o exemplo do @devair1010... altere para um valor que seja definido como "apagado"... poderia ser o 0 também.

 

 

 

Para Estatísticas, precisaria especificar melhor o que precisa...

 

 

RESUMINDO:

Tente implementar ou a ordenação ou a remoção, e posta o código aqui e onde está com dúvidas. Depois ver outro item.

 

 

No aguardo.

 

 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×