Alguém pode me ajudar nessa questão de C++? não estou conseguindo construir o algorítmo corretamente.
5.92) Faça um algoritmo que leia a matrícula, nome, sexo e três notas dos alunos de uma escola e obtenha os seguintes resultados:
a) A matrícula da aluna que obteve a maior média.
b) A matrícula do aluno que obteve a menor média.
c) O percentual de mulheres na turma.
d) Quantos alunos foram aprovados, independente do sexo.
e) O percentual de alunas aprovadas.
Obs.: o flag é uma matrícula igual a 0 (zero).
Estou tentando fazer esse exercício de introdução a programação em C++, e estou tendo dificuldades para criar os algoritmos. Alguém poderia me ajudar?
Uma agência de turismo quer fazer um levantamento das praias da cidade para um programação turística de verão, sabendo-se que cada praia tem um nome e uma distância (em Km) do hotel. Criar um algoritmo que forneça os seguintes dados:
18
Porcentagem de turistas nas praias próprias do hotel
A praia mais adiante
Nome e distancia das praias não-próprias com distancia do hotel maior que 10 km.
O algoritmo acaba quando se digita @ para nome da praia.
#include<iostream>
using namespace std;
int BuscaBin (int lista[], int baixo, int alto, int chave)
{
int central;
int valorcentral;
while (baixo <= alto)
{
central = (baixo + alto)/2;
valorcentral = lista[central];
if (chave == valorcentral)
return central;
else if (chave < valorcentral)
alto = central -1;
else
baixo = central + 1;
}
}
int main()
{
int a[10];
int chave, pos;
cout << "Introduza uma lista de 10 inteiros:";
for (pos = 0; pos < 10; pos++)
cin >> a[pos];
cout << "Introduza chave a buscar:";
cin >> chave;
pos = 0;
while ((pos = BuscaBin(a, 0, 9, chave))!= -1)
{
pos++;
}
cout << chave << " está na lista " << " vezes na lista " << endl;
}
O objetivo é inserir uma lista e resultar numa busca binária e ele retornar a chave, não posso alterar a função BuscaBin
Sua tarefa é implementar uma árvore de busca binária que armazene strings. A ordem de inserção deverá ser alfabética crescente, ou seja, se o valor do elemento da raiz for “iguana”, então a palavra “beterraba” deverá ser inserida na subárvore da esquerda, enquanto a palavra “pagode” deverá ser inserida na subárvore da direita.
Devem ser declaradas a struct e implementadas as seguintes funções da árvore:
• criar(): inicialização da árvore.
• buscar(): busca de um elemento na árvore.
• inserir(): inserção de um elemento na árvore.
• remover(): remove um elemento da lista.
• estaVazia(): retorna um booleano indicando se a árvore está vazia.
• ehEstritamenteBinaria(): retorna um booleano indicando se a árvore é estritamente binária.
• ehQuaseCompleta(): retorna um booleano indicando se a árvore é quase completa.
• ehCompletaCheia(): retorna um booleano indicando se a árvore é completa (cheia).
• preOrdem(): visita e imprime os elementos da árvore em PRÉ-ORDEM (“RED”).
• emOrdem(): visita e imprime os elementos da árvore EM-ORDEM (“ERD”).
• posOrdem(): visita e imprime os elementos da árvore em PÓS-ORDEM (“EDR”). Após implementar a estrutura de dados, escreva um programa em C/C++ que permita ao usuário executar as funções acima
Bom, eu preciso fazer uma tabela hash de 100 elementos como mostrado no esquema:
Essa tabela (vetor) de 100 elementos … cada um deles possuem números chamados de “chaves” e um ponteiro apontando para o a próxima chave (lista encadeada). A regra que deve ser seguida para as inserções no vetor, é que o ultimo digito da chave é seu “endereço”, e esse endereço indica qual posição do vetor eu devo inserir.
Ex: Inserir a chave 487
(chave) 487 % (tamanho do vetor) 100 = 7
Então devo inserir a chave 487 na posição 87 do vetor: v[87] = 487
Porém eu estou tendo problemas com os ponteiros para chamar as funções e utiliza-los... Eu sei fazer uma lista encadeada, porém não sei como fazer um vetor disso... Esse é um pouco do que eu fiz quando era só uma lista encadeada...
struct dados
{
int chave;
struct dados *prox;
};
typedef struct dados Lista;
void Cria(Lista **L)
{
*L = NULL;
}
void Inserir(Lista **L, int v)
{
Lista *p, *q;
p = (Lista*)calloc(1, sizeof(Lista));
p->chave = v;
p->prox = NULL;
if(*L == NULL)
{
*L = p;
}
else
{
q = *L;
while(q->prox != NULL)
{
q = q->prox;
};
q->prox = p;
}
}
Eu conversei com um amigo e ele me indicou fazer a declaração da struct dessa forma:
struct dados
{
int chave;
struct dados * prox;
} tabela[100];
typedef struct dados Elemento;
Entretanto eu não tenho ideia de como eu vou chamar isso na função... Porque o vetor vai estar na main()... e eu só vou chamar a função "Inserir" com o vetor e o valor para inserir
Como eu chamaria essa função ? Inserir(???,int chave)
Se alguém puder me dar uma luz, eu agradeço demais ... Preciso fazer varias coisas alem da inserção, mas não consigo porque eu não sei de que forma eu vou chamar esse vetor/variável de controle das listas