Aprendendo Nested Loops em C

Os nested loops (loops aninhados) são estruturas de repetição utilizadas quando precisamos executar um loop dentro de outro. Eles são muito comuns em sistemas que trabalham com tabelas, matrizes, andares de prédios, salas de aula, campeonatos, mapas, fábricas e diversas outras situações que possuem múltiplos níveis de informação.

Ao dominar os loops aninhados, você passa a conseguir resolver problemas mais complexos, organizando dados em camadas e criando sistemas capazes de processar grandes quantidades de informações de forma estruturada.

Neste conteúdo, você irá praticar nested loops através de situações reais envolvendo campeonatos, hotéis, laboratórios, fábricas e escolas.

Questão 1 — Campeonato de fases entre jogadores

Um jogo possui vários jogadores participando de um campeonato.

Cada jogador joga várias fases, e em cada fase ele possui algumas tentativas.

Crie um programa em C que peça:

  • A quantidade de jogadores;
  • A quantidade de fases;
  • A quantidade de tentativas por fase.

Para cada jogador, em cada fase, o programa deve pedir a pontuação de cada tentativa.

No final, mostre:

  • A pontuação total de cada jogador;
  • O jogador com maior pontuação geral.

Use nested loops.

Exemplo:
				
					Digite a quantidade de jogadores: 2
Digite a quantidade de fases: 2
Digite a quantidade de tentativas por fase: 3

Jogador 1
Fase 1
Digite a pontuacao da tentativa 1: 100
Digite a pontuacao da tentativa 2: 80
Digite a pontuacao da tentativa 3: 90
...
Total do jogador 1: 600

Jogador vencedor: 2
Maior pontuacao: 690
				
			
Resposta:
				
					#include <stdio.h>

int main() {
    int jogadores, fases, tentativas;
    int i, j, k;
    int pontos;
    int totalJogador;
    int maiorPontuacao = -1;
    int jogadorVencedor = 0;

    printf("Digite a quantidade de jogadores: ");
    scanf("%d", &jogadores);

    printf("Digite a quantidade de fases: ");
    scanf("%d", &fases);

    printf("Digite a quantidade de tentativas por fase: ");
    scanf("%d", &tentativas);

    for (i = 1; i <= jogadores; i++) {
        totalJogador = 0;

        printf("\nJogador %d\n", i);

        for (j = 1; j <= fases; j++) {
            printf("Fase %d\n", j);

            for (k = 1; k <= tentativas; k++) {
                printf("Digite a pontuacao da tentativa %d: ", k);
                scanf("%d", &pontos);

                totalJogador = totalJogador + pontos;
            }
        }

        printf("Total do jogador %d: %d\n", i, totalJogador);

        if (totalJogador > maiorPontuacao) {
            maiorPontuacao = totalJogador;
            jogadorVencedor = i;
        }
    }

    printf("\nJogador vencedor: %d\n", jogadorVencedor);
    printf("Maior pontuacao: %d\n", maiorPontuacao);

    return 0;
}
				
			

QUESTÃO 2 – Hotel inteligente com quartos e diárias

Um hotel quer analisar a ocupação dos quartos durante alguns dias.

O programa deve pedir:

A quantidade de andares;
A quantidade de quartos por andar;
A quantidade de dias analisados;
O valor da diária.

Para cada andar, quarto e dia, o usuário deve informar:

1 – Quarto ocupado
0 – Quarto vazio

No final, mostre:

Total de diárias ocupadas;
Total de diárias vazias;
Valor total arrecadado.

Use nested loops.

Exemplo:
				
					Digite a quantidade de andares: 2
Digite a quantidade de quartos por andar: 2
Digite a quantidade de dias analisados: 3
Digite o valor da diaria: 150

Andar 1
Quarto 1
Dia 1: 1
Dia 2: 1
Dia 3: 0

Total de diarias ocupadas: 7
Total de diarias vazias: 5
Valor arrecadado: R$ 1050.00
				
			
Resposta:
				
					#include <stdio.h>

int main() {
    int andares, quartos, dias;
    int i, j, k;
    int status;
    int ocupadas = 0;
    int vazias = 0;
    float diaria;
    float totalArrecadado;

    printf("Digite a quantidade de andares: ");
    scanf("%d", &andares);

    printf("Digite a quantidade de quartos por andar: ");
    scanf("%d", &quartos);

    printf("Digite a quantidade de dias analisados: ");
    scanf("%d", &dias);

    printf("Digite o valor da diaria: ");
    scanf("%f", &diaria);

    for (i = 1; i <= andares; i++) {
        printf("\nAndar %d\n", i);

        for (j = 1; j <= quartos; j++) {
            printf("Quarto %d\n", j);

            for (k = 1; k <= dias; k++) {
                printf("Dia %d: ", k);
                scanf("%d", &status);

                if (status == 1) {
                    ocupadas++;
                } else {
                    vazias++;
                }
            }

            printf("\n");
        }
    }

    totalArrecadado = ocupadas * diaria;

    printf("Total de diarias ocupadas: %d\n", ocupadas);
    printf("Total de diarias vazias: %d\n", vazias);
    printf("Valor arrecadado: R$ %.2f\n", totalArrecadado);

    return 0;
}
				
			

QUESTÃO 3 – Mapa de risco de um laboratório

Um laboratório possui várias áreas organizadas em linhas e colunas.

Cada posição do laboratório recebe um nível de risco de 0 a 10.

Crie um programa em C que peça:

  • A quantidade de linhas;
  • A quantidade de colunas.

Para cada posição, o usuário deve informar o nível de risco.

Exemplo:
				
					Digite a quantidade de linhas: 3
Digite a quantidade de colunas: 3

Linha 1
Digite o risco da posicao 1: 2
Digite o risco da posicao 2: 8
Digite o risco da posicao 3: 5

Areas criticas: 3
Soma total de risco: 49
Linha mais arriscada: 2
				
			
Resposta:
				
					#include <stdio.h>

int main() {
    int linhas, colunas;
    int i, j;
    int risco;
    int somaLinha;
    int somaTotal = 0;
    int areasCriticas = 0;
    int maiorSomaLinha = -1;
    int linhaMaisArriscada = 0;

    printf("Digite a quantidade de linhas: ");
    scanf("%d", &linhas);

    printf("Digite a quantidade de colunas: ");
    scanf("%d", &colunas);

    for (i = 1; i <= linhas; i++) {
        somaLinha = 0;

        printf("\nLinha %d\n", i);

        for (j = 1; j <= colunas; j++) {
            printf("Digite o risco da posicao %d: ", j);
            scanf("%d", &risco);

            somaLinha += risco;
            somaTotal += risco;

            if (risco >= 8 && risco <= 10) {
                areasCriticas++;
            }
        }

        printf("Soma de risco da linha %d: %d\n", i, somaLinha);

        if (somaLinha > maiorSomaLinha) {
            maiorSomaLinha = somaLinha;
            linhaMaisArriscada = i;
        }
    }

    printf("\nAreas criticas: %d\n", areasCriticas);
    printf("Soma total de risco: %d\n", somaTotal);
    printf("Linha mais arriscada: %d\n", linhaMaisArriscada);

    return 0;
}
				
			

QUESTÃO 4 – Produção de uma fábrica por máquina e turno

Uma fábrica quer analisar a produção de várias máquinas durante diferentes turnos.

Problema:
Crie um programa que solicite:

  • quantidade de máquinas;
  • quantidade de turnos por máquina;
  • meta mínima por turno.

Para cada máquina e turno, informe a produção.

No final, mostre:

  • produção total de cada máquina;
  • quantidade de turnos abaixo da meta;
  • máquina com maior produção.
Exemplo:
				
					Digite a quantidade de maquinas: 3
Digite a quantidade de turnos por maquina: 2
Digite a meta minima por turno: 100

Maquina 1
Digite a producao do turno 1: 120
Digite a producao do turno 2: 90

Total da maquina 1: 210

Turnos abaixo da meta: 2
Maquina com maior producao: 2
Maior producao total: 280
				
			
Resposta:
				
					#include <stdio.h>

int main() {
    int maquinas, turnos;
    int i, j;
    int producao;
    int meta;
    int totalMaquina;
    int abaixoMeta = 0;
    int maiorProducao = -1;
    int maquinaDestaque = 0;

    printf("Digite a quantidade de maquinas: ");
    scanf("%d", &maquinas);

    printf("Digite a quantidade de turnos por maquina: ");
    scanf("%d", &turnos);

    printf("Digite a meta minima por turno: ");
    scanf("%d", &meta);

    for (i = 1; i <= maquinas; i++) {
        totalMaquina = 0;

        printf("\nMaquina %d\n", i);

        for (j = 1; j <= turnos; j++) {
            printf("Digite a producao do turno %d: ", j);
            scanf("%d", &producao);

            totalMaquina += producao;

            if (producao < meta) {
                abaixoMeta++;
            }
        }

        printf("Total da maquina %d: %d\n", i, totalMaquina);

        if (totalMaquina > maiorProducao) {
            maiorProducao = totalMaquina;
            maquinaDestaque = i;
        }
    }

    printf("\nTurnos abaixo da meta: %d\n", abaixoMeta);
    printf("Maquina com maior producao: %d\n", maquinaDestaque);
    printf("Maior producao total: %d\n", maiorProducao);

    return 0;
}
				
			

QUESTÃO 5 — Sistema de correção de provas por turma

Uma escola quer analisar o desempenho de várias turmas em uma prova com várias questões.

Crie um programa em C que peça:

  • A quantidade de turmas;
  • A quantidade de alunos por turma;
  • A quantidade de questões da prova.

Para cada aluno, o programa deve pedir a pontuação de cada questão.

No final, mostre:

  • A média de cada turma;
  • A maior nota individual encontrada;
  • A turma com maior média.

Use nested loops.

Exemplo:
				
					Digite a quantidade de turmas: 2
Digite a quantidade de alunos por turma: 2
Digite a quantidade de questões: 3

Turma 1
Aluno 1
Digite a pontuação da questão 1: 2
Digite a pontuação da questão 2: 2
Digite a pontuação da questão 3: 1
Nota do aluno 1: 5

Aluno 2
Digite a pontuação da questão 1: 3
Digite a pontuação da questão 2: 2
Digite a pontuação da questão 3: 2
Nota do aluno 2: 7

Média da turma 1: 6.00

Turma 2
Aluno 1
Digite a pontuação da questão 1: 3
Digite a pontuação da questão 2: 3
Digite a pontuação da questão 3: 2
Nota do aluno 1: 8

Aluno 2
Digite a pontuação da questão 1: 2
Digite a pontuação da questão 2: 3
Digite a pontuação da questão 3: 3
Nota do aluno 2: 8

Média da turma 2: 8.00

Maior nota individual: 8
Turma com maior média: 2
Maior média: 8.00
				
			
Resposta:
				
					#include <stdio.h>

int main() {
    int turmas, alunos, questoes;
    int i, j, k;
    int pontos;
    int notaAluno;
    int somaTurma;
    int maiorNota = -1;
    int turmaMaiorMedia = 0;
    float mediaTurma;
    float maiorMedia = -1;

    printf("Digite a quantidade de turmas: ");
    scanf("%d", &turmas);

    printf("Digite a quantidade de alunos por turma: ");
    scanf("%d", &alunos);

    printf("Digite a quantidade de questoes: ");
    scanf("%d", &questoes);

    for (i = 1; i <= turmas; i++) {
        somaTurma = 0;

        printf("\nTurma %d\n", i);

        for (j = 1; j <= alunos; j++) {
            notaAluno = 0;

            printf("Aluno %d\n", j);

            for (k = 1; k <= questoes; k++) {
                printf("Digite a pontuacao da questao %d: ", k);
                scanf("%d", &pontos);

                notaAluno = notaAluno + pontos;
            }

            printf("Nota do aluno %d: %d\n\n", j, notaAluno);

            somaTurma = somaTurma + notaAluno;

            if (notaAluno > maiorNota) {
                maiorNota = notaAluno;
            }
        }

        mediaTurma = (float) somaTurma / alunos;

        printf("Media da turma %d: %.2f\n", i, mediaTurma);

        if (mediaTurma > maiorMedia) {
            maiorMedia = mediaTurma;
            turmaMaiorMedia = i;
        }
    }

    printf("\nMaior nota individual: %d\n", maiorNota);
    printf("Turma com maior media: %d\n", turmaMaiorMedia);
    printf("Maior media: %.2f\n", maiorMedia);

    return 0;
}
				
			

Caso o C ainda não esteja instalado em seu dispositivo, clique no botão abaixo para realizar a instalação.

Posts Similares

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *