Gente preciso de ajuda urgente

6 respostas
csharp
V

Preciso de ajuda com esse exercicio não consigo efetuar a rotação de números a direita

Exercício em C

#7) O sargento Silva organiza seu pelotão em M filas numeradas a partir de 1, sendo cada fila com a mesma quantidade de
soldados. Por exemplo, a figura abaixo mostra a organização do pelotão em 3 filas com 8 soldados em cada uma.
Um dos exercícios que o sargento Silva realiza com o pelotão é o exercício “girar fila”, que consiste em dizer o número
de uma fila, de modo que os soldados desta fila devem se mover para a direita, e o último soldado da direita vai para a
posição mais à esquerda. Você deve fazer um programa para ler a formação do pelotão e executar o exercício “girar fila”.
Entrada:
A entrada consiste em um inteiro M representando o número de filas, um inteiro N representado a quantidade de soldados
por fila, as M filas de soldados (cada soldado é representado por um número inteiro), e o número inteiro para o exercício
“girar fila”.
Saída:
A saída contém a formação do pelotão após a execução do exercício “girar fila”.
Exemplo:
Entrada
3
5
1034 2271 9013 9281 1138
2837 1827 1074 9271 7201
1822 1977 1821 2278 1821
2
Saida :
1034 2271 9013 9281 1138
7201 2837 1827 1074 9271
1822 1977 1821 2278 1821

6 Respostas

D

Por favor, poste o que fez até agora.
Já adiantando, a ideia é:

  • Salve o número do soldado mais à direita da fila em questão, no seu exemplo, o 7201;
  • Partindo da última posição da fila, mova cada soldado da esquerda para a direita. Pare antes de chegar ao primeiro, pois não há soldado à esquerda dele, ou seja:
    • Na posição do 7201, entra o 9271;
    • Na posição do 9271, entra o 1074;
    • Na posição do 1074, entra o 1827;
    • Na posição do 1827, entra o 2837;
  • Por fim, coloque o número do soldado que estava mais à direita (que você salvou no primeiro passo) na primeira posição.

Note que sua solução precisa ser geral, ou seja, para qualquer tamanho de fila maior ou igual a 2.

V
Opa boa noite então o máximo que consegui até agora é alterar os dois primeiros números de acordo com oque pedi

int M;

int N;

int[,] A;

M = int.Parse(Console.ReadLine());

N = int.Parse(Console.ReadLine());

A = new int[M, N];

for (int i = 0; i < M; i++)

{

string[] s = Console.ReadLine().Split( ');

for (int j = 0; j < N; j++)

{

A[i, j] = int.Parse(s[j]);

}

}

int Z = int.Parse(Console.ReadLine());

int M2 = M;

int N2 = N;

A[Z, 0] = A[Z, N - 1];

for (int j = 1; j <= N; j++)

{

if (j + 1 < N)

{

A[Z, j] = A[Z, j + 1];

A[Z, j - 1] = A[Z, j - 1];

}

}

for (int i = 0; i < M; i++)

{

for (int j = 0; j < N; j++)

{

Console.Write(A[i, j]);

Console.Write(" ");

}

Console.WriteLine();

}

}

}

}
D

Esse código seu não está escrito em C.
Veja o passo a passo, você vai conseguir resolver.

V

Ops… errei na descrição é em C# o exercício mas em si já vi em várias linguagens e nenhuma aprendi locomover os números das matrizes vc tem uma ideia de for para fazer a mesma?

D
// Para j começando na última posição da linha, decrementando de um em um enquanto j for maior que 1
for ( int j = N - 1; j > 1; j-- ) {
    // copia para a posição j da linha Z o valor da esquerda (j-1)
    A[Z, j] = A[Z, j-1];
}

Se não errei nada, é algo assim. Não programo em C#.

V

a linha ficou assim 7201 1827 1827 1074 9271 só a matriz 1 que ficou errada mesmo
estou tentando alterar o numero de repetições para ver se da resultado eu tenho conhecimento da linguagem C se vc souber sobrescrever esse for nela sem problemas.

Criado 26 de fevereiro de 2021
Ultima resposta 27 de fev. de 2021
Respostas 6
Participantes 2