Ir ao conteúdo
  • Cadastre-se

C olimpiada programas em c resolver exercicios


Graci Ela
Ir à solução Resolvido por Graci Ela,

Posts recomendados

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.

Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

#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
Link para o comentário
Compartilhar em outros sites

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 ) 

Link para o comentário
Compartilhar em outros sites

#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 

Link para o comentário
Compartilhar em outros sites

#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;  
 }  

 

Link para o comentário
Compartilhar em outros sites

  • Solução
#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?

Link para o comentário
Compartilhar em outros sites

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 ? 

Link para o comentário
Compartilhar em outros sites

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...