Ir ao conteúdo

C olimpiada programas em c resolver exercicios


Ir à solução Resolvido por Graci Ela,

Posts recomendados

Postado

1 - Fazer um programa em C que receba dois números inteiros. O programa deverá: • Passar os dois valores recebidos para uma função (passagem por valor). • A função deverá mostrar a sequência do primeiro valor ao segundo. • A função deverá retornar para a função principal a quantidade de elementos mostrados.

2 - Fazer uma função que receba um vetor do tipo inteiro com 20 elementos e um ponteiro do tipo inteiro. A função deverá guardar na variável do tipo ponteiro a quantidade de elementos diferentes do vetor, mostrando os elementos (não é necessário armazenar os mesmos). A função principal deverá mostrar o valor da variável ponteiro, ou seja, a quantidade de elementos que não se repetem no vetor.

3 - Carolina tem um jogo de tabuleiro que possui 24 cartas contendo, cada uma, uma permutação dos quatro primeiros números naturais. (Cartas distintas contêm permutações distintas.) Lembre-se de que a quantidade de permutações de quatro números é 4!, que é igual a 24. Só que ela contou e encontrou apenas 23 cartas. Está faltando uma! Dê uma olhada nessa lista embaralhada de 23 cartas. Qual está faltando? Agora suponha que o jogo tenha um baralho de N! cartas, com todas as permutações possíveis dos N primeiros naturais. Neste problema, dado N e uma lista com N! − 1 cartas, seu programa deve imprimir a carta que está faltando.

4 - Um sistema de informações geográficas computadorizado está representando o perfil de uma montanha através de uma sequência de números inteiros, na qual não há dois números consecutivos iguais, como ilustrado na figura abaixo para três montanhas. Os números representam a altura da montanha ao longo de uma certa direção. Para ajudar o gerente, seu programa deve determinar, dada a sequência de números inteiros representando a montanha, se ela tem mais de um pico, ou se tem um pico apenas. Seu programa deve imprimir uma linha contendo o caractere “S” se há mais de um pico, ou o caractere “N” se há apenas um pico.

Postado

Bom dia @Graci Ela

 

Nós não podemos escrever o código para você, nós só podemos lhe auxiliar tirando duvidas e corrigindo algum código que você já tenha feito.

 

Se puder postar o código que você já fez ou colocar em qual parte do exercício você está com duvida, poderemos lhe ajudar melhor :D 

  • Curtir 2
Postado
#include <stdio.h>

int main ( void )
{
int num1,num2;

printf("Insere dois numeros:");
scanf("%d",&num1);
scanf("%d",&num2);


}


 Eu não sei fazer  a partir daqui , no caso, para que eu coloque por ex, 1 e 5  ( e apareça na tela 1, 2, 3, 4,5 ) a seguencia de 1 ate 5, e depois a quantidade de elementos mostrados no caso , se digitar 5 e 1, apareça 5 elementos, 5, 4, 3, 2, 1 .

no caso do exercício 1 

  • Curtir 1
Postado

Pois entao eu nao consigo passar a minha logica para o programa, por ex, eu sei que no caso seria, 

enquanto o num 1 for menor ou igual  que o num 2, no caso num 1 < = num 2 , ele sempre vai ter que somar um ao numero 1 , ( eu nao consegui entender esta parte de for, while ou do while ) 

Postado

tivemos algumas aulas, porém, não consegui entender. Tu nao terias nenhuma indicaçao de vídeo algo assim para que possa ver e depois tentar fazer estes exercícios. 

Postado
#include <stdio.h>  


 int main(){  
      int num1, num2;  
      
      printf(" Digite o primeiro numero:\n ");  
      scanf("%i", &num1);  
      printf("Digite o segundo numero: \n");  
      scanf("%i", &num2); 
       
      while(num1<=num2){  
                       printf("\n%i\n", num1);  
                       num1++;  
                       }  
     
      return 0;  
 }  


fiz aqui o programa olhando os videos, so que no caso, no mesmo exercício 1 preciso que mostre quantos números foram mostrados no caso se colocar de 1 a 6, vai ter que mostrar 6 números nesta parte me atrapalhei 

Postado
#include <stdio.h>  


 int main(){  
      int num1, num2, num3 = 0; //declara uma variavel zerada
      
      printf(" Digite o primeiro numero:\n ");  
      scanf("%i", &num1);  
      printf("Digite o segundo numero: \n");  
      scanf("%i", &num2); 
       
      while(num1<=num2){  
                       printf("\n%i\n", num1);  
                       num1++;
                       num3++; //soma mais 1 na variavel
                       } 
     printf("\nForam mostrado %d numeros!\n", &num3);
     
      return 0;  
 }  

 

  • Solução
Postado
#include <stdio.h>


int main(){
int vet[20];
int* p;
int cont2 = 0;
printf("Digite o numero");
for(int i = 0; i < 20; i++)
    scanf("%d",&vet);
for(int i = 0; i < 20; i++)
    int cont = 0;
    for(int j = 0;j < 20;j++)
        if(vet == vet[j]){
            cont++;    
        }
    if(cont == 1){
        p = &vet
        printf("%d",p);
        cont2++;
    }
printf("%d elementos nao se repetem",cont2);
return 0;
}


 

Ola tudo bem nao estou conseguindo Identar poderiam me ajudar?

Postado

3 - Carolina tem um jogo de tabuleiro que possui 24 cartas contendo, cada uma, uma permutação dos quatro primeiros números naturais. (Cartas distintas contêm permutações distintas.) Lembre-se de que a quantidade de permutações de quatro números é 4!, que é igual a 24. Só que ela contou e encontrou apenas 23 cartas. Está faltando uma! Dê uma olhada nessa lista embaralhada de 23 cartas. Qual está faltando? Agora suponha que o jogo tenha um baralho de N! cartas, com todas as permutações possíveis dos N primeiros naturais. Neste problema, dado N e uma lista com N! − 1 cartas, seu programa deve imprimir a carta que está faltando.

 

 

#include <stdio.h>
#include <stdlib.h>

int fat(int n)
{
    if(n == 1) return 1;
    return n * fat(n-1);
}

void troca(int* n, int i, int j)
{
    int aux = n;
    n = n[j];
    n[j] = aux;
}

int** permutacao(int n)
{
    int i,j,p1 = 0,p2 = 1, v[n];

    int** per = (int **) malloc(fat(n) * sizeof(int*));

    for(i = 0; i < fat(n); i++)
        per = (int *) malloc(n * sizeof(int));

    for(i = 0; i < n; i++)
        v = i+1;

    for(i = 0; i < fat(n); i++)
    {
        for(j = 0; j < n; j++)
            per[j] = v[j];
         
        if(p2 == n)
        {
            p1 = 0;
            p2 = 1;
        }
        troca(v,p1,p2);

        p1++;
        p2++;
    }
    return per;
}

int main (int argc, char* argv[])
{
    int n,i,j,t = 0;

    if(scanf("%d", &n) == EOF)
        return 0;

    int tab[fat(n)][n];

    int** per = permutacao(n);

    for(i = 0; i < fat(n); i++)
    {
        for(j = 0; j < n; j++)
        {
            if(scanf("%d", &tab[j]) == EOF)
                break;
        }
        t++;
    }

        for(i = 0; i < fat(n); i++)
    {
        for(j = 0; j < n; j++)
        {
            printf("%d ", per[j]);
        }
        printf("\n");
    }
       for(i = 0; i < fat(n); i++)
        free(per);
    
    free(per);

    return 0;
}


 

 

OBS: Nao consegui compara as matriz e imprimir as que esta faltando no tabuleiro alguem pode ajudar ? 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!