• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Ajuda com Matriz e Vetor em C e C++

Pedrogyn

Novo
Membro Inactivo
Entrou
Abr 23, 2014
Mensagens
1
Gostos Recebidos
0
Boa noite gente. Tenho alguns exercícios em C ou C++ para entregar na faculdade e estou com algumas dúvidas. Alguém por favor me ajude :D. Desses 4 execícios eu consegui fazer apenas o número 1 por completo. Toda ajuda é bem vinda. Obrigado.

1. Ordene um vetor A em ordem decrescente, adotando o seguinte procedimento.
-Coloque na 1ª posição do vetor o maior elemento do mesmo.
-Coloque na 2ª posição do vetor o segundo maior elemento do mesmo
-Coloque na 3ª posição do vetor o terceiro maior elemento do mesmo e assim por diante.

OBS: Consegui fazer tranquilo.

Código:
#include <stdlib.h>
#include<stdio.h>
main (){
int x[10];
int i, j, temp;
/* Leitura do Vetor */
for (i = 0; i<10; i++){
printf("Digite um numero:");
scanf("%d",&x[i]);}
//ordenando o vetor
for (i=0;i<10; i++)
for(j=i+1;j<10;j++){
if (x[j]>x[i]){
temp=x[i];
x[i]=x[j];
x[j]=temp;}}
/* Impressão do Vetor Ordenado */
printf("Vetor em ordem decrescente: \n");
for(i=0;i<10;i++)
printf(" %d",x[i]);
return 0;
return 0;}

2. Elaborar um algoritmo que leia uma matriz A de dimensão 5x7 de inteiros e verifique qual é o seu maior elemento e o imprima juntamente com sua posição na matriz (linha e coluna).

OBS: Estou com problemas com esse código aqui na hora de imprimir o maior elemento e a sua posição na matriz.

Código:
#include <iostream>
using namespace std;

int main ()
{
    int i, j, Mat[5][7],maior;
    for(i=0;i<=5;i++)
    {
        for(j=0;j<=7;j++)
        {
            cout<<i<< ";" <<j<< ": ";
            cin>>Mat[i][j];
        }
    }

    maior=Mat[5][7];
    for(i=0;i<=5;i++)
    {
        for(j=0;j<=7;j++)

            if(Mat[i][j]>maior)
                maior=Mat[i][j];
    }

    cout<<"O maior valor é:\n"<< maior;

    return 0;

}

3. Modificar o exercício anterior para imprimir as posições de todas as ocorrências do maior elemento de A.

OBS: Como não consegui fazer o anterior não vou conseguir fazer esse aqui também. Dicas por favor.

4. Dados dois vetores A e B em ordem crescente, escreva um algoritmo para construir um vetor em C resultante da intercalação destes 2 vetores de modo que C já seja gerado em ordem crescente. Considere que a dimensão máxima desses vetores é 20. Entretanto, os vetores podem ter dimensões distintas( ex: A ter 6 elementos e B ter 3). Não é permitido colocar um vetor após o outro em C e fazer a ordenação em seguida.

OBS: Posso aproveitar parte do código da questão número 1 e criar outro vetor B. Agora não sei como faço essa intercalação entre A e B pra gerar o vetor C. Dicas por favor.
 

npgomes

GF Bronze
Membro Inactivo
Entrou
Out 4, 2006
Mensagens
93
Gostos Recebidos
0
Boas,

Não sou muito apologista de reescrever o código, mas gosto de ajudar a resolver o problema, na 2 questão além de guardares o valor "maior=<=Mat[j]" dentro da mesma condição tens que guardar a posição de i e j noutras variáveis e depois é só imprimires o resultado.

A 3 questão tens que tornar a fazer um ciclo para comprares os valores com o teu maior e guardares as posições i e j em dois vectores respectivamente.

A 4 questão é mais complexa....

tens que fazer algo do género:

Por cada elemento de B comparar com a posição de A (sabes que ambos os vetores já estão por ordem crescente) e escrever C = B caso B<A se não C = A e começares a leitura de B não na 1º posição mas na ultima em que escreveste C no fim escreves a Posição A e incrementas os contadores iniciais A.


posicaoinicialA=0;
posicaoinicialB=0;
k=0;

for(i=posicaoinicialA;i<=a.end();i++)
{

for(j=posicaoinicialB;j<=B.end();j++)
if b[j] < a
{ C[k] = B[j];
k++;
posicaoinicialB++;}
C[k] = A;
k++;
posicaoinicialA++;


}

esta é uma solução mas atenção que o tamanho A é sempre maior que o tamanho de B...

outra talvez mais eficiente é por um ciclo while...
 
Topo