Ir ao conteúdo
  • Cadastre-se

Emerson2156547384729849

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

posts postados por Emerson2156547384729849

  1. @devair1010  eu não entendi como eu deveria aplicar a ordenação nos dois vetores, já que se eu aplicar a ordenação nos vetores Peso e Vu eles perderiam seu correspondente.

    Exemplo:

    Item  Valor    Peso       Vu

    A         4         12         0,33  

    B         2          2           1

    C         1          1           1

    D         2          1          2

    E        10          4         2,5

     

    Se aplicarmos a ordenação no vetor Peso e vetor Vu vai ficar:

     

    Item  Valor    Peso       Vu

    A         4          1         0,33  

    B         2          1           1

    C         1          2           1

    D         2          4          2

    E        10        12         2,5

    • Curtir 1
  2. E ai galera estou fazendo o projeto da faculdade do tema Problema da mochila de algoritmos gulosos e estou sem ideias de como resolver uma coisa. O usuário entrara com um numero para o tamanho da mochila e o numero de itens. Os itens terão o seu peso, seu valor e sua valoração (valoração = Valor/Peso). O algoritmo deve ver nos Valores quais são os números maiores, pegar o peso desse determinado item e diminuir o seu peso do tamanho da mochila.

    Exemplo:

     

    Tamanho da mochila = 15;

    Numero de itens = 5;

     

    Item  Valor    Peso       Vu

    A         4         12         0,33  

    B         2          2           1

    C         1          1           1

    D         2          1          2

    E        10          4         2,5

     

    Temos que ver quais são os maiores valores do vetor Vu e pegar o peso correspondente. Como no vetor Vu o maior valor é 2,5 pegamos o peso desse item que é 4 e descontamos da mochila 15-4 =11. Depois pegamos o próximo maior valor que seria o 2 do vetor Vu, e pegamos o peso desse item que é 1 e descontamos da mochila 11-1 = 10. E fazemos esses passos até onde a mochila suportar (mochila >= 0). O problema esta na parte em que eu tenho que pegar o peso do maior valor. Eu declarei vetores separados para o Valor, Peso e Vu. Quando eu acho o maior valor do vetor Vu (nesse exemplo seria o 2,5) como eu pego o seu peso no vetor Peso (que nesse exemplo seria 4)? É nisso que estou travado e não sei como resolver. Desde já agradeço.

     

    #include <stdio.h>
    #include <stdlib.h>
    
    #define maxItens 200	//coloque aqui a quantidade maxima de itens 
    
    int peso[maxItens];
    int valor[maxItens];
    float Vu[maxItens];
    
    int main(){
    	int capacidade, i, itens, aux, ItensMax=0;
      float maior=0;
    
      printf("Insira a capacidade da mochila e o numero de itens: ");
      scanf("%d %d", &capacidade, &itens);
      
    	while(capacidade){ 
        
    		//lendo os elementos:
    		for(i = 0; i<itens; i++){
          printf("Insira o peso e valor do ITEM numero %d: \n", i+1);
    			scanf("%d %d", &peso[i], &valor[i]); //peso do item, valor do objeto
    		}
    
        //Fazer a divisaõ de valor/peso e armazena no Vu
        for(i=0;i<itens;i++){
          Vu[i] = (float)valor[i] / peso[i];
        }
    
    
        //vai achar o maior valor de todo o vetor Vu, mas o objetico é achar os maiores valores do vetor Vu
       //e pegar seus deteminados pesos e descontar da mochila
        for(i=0;i<itens;i++){
          if(Vu[i] > maior){
            maior = Vu[i];
          }
        }
        
        
        printf("Valor  Peso  Vu\n");
        for(i=0;i<itens;i++){
          printf("%d     %d      %f\n", valor[i], peso[i], Vu[i]);
        }
    
        printf("\n\nMaior valor de Vu: %f", maior);
      
      exit(0);
       
     }
    
      return 0;
    }

     

    • Amei 1
  3. Estou com problema na hora de passar os valores de 3 vetores pra uma matriz.

    Ex: int Valor[5], Peso[5];

     float Vu[5], matriz[5][3];

    O meu objetivo é passar os valores dos vetores 'Valor, Peso e Vu' para as colunas da matriz. Por exemplo:

    Valor = {4, 2, 1, 2, 10};

    Peso = {12, 2, 1, 1, 4};

    Vu = {0.333, 1, 1, 2, 2.5};

     

    Passando esses valores para a matriz, cada vetor formara uma coluna na matriz:

     

    matriz = { {4, 12, 0.333},

                    {2, 2, 1},

                    {1, 1, 1},

                    {2, 1, 2},

                   {10, 4, 2.5} };

    mas não estou conseguindo passar os valores dos vetores para a matriz, alguém pode me ajudar?

    /* 
     * Problema da mochila booleana
     */
     
    #include <stdio.h>
    #include <stdlib.h>
    
    #define maxN 200	//coloque aqui a quantidade maxima de objetos 
    #define maxC 1000	//coloque aqui o valor maximo do peso da mochila
    
    
    int peso[maxN+1];
    int valor[maxN+1];
    
    int main(){
    	int capacidade, i, itens;
      
      
    
      printf("Insira a capacidade da mochila e o numero de itens: ");
      
    	while(scanf("%d %d", &capacidade, &itens), capacidade ){ //capacidade da mochila, numero de objetos
    	
    		//lendo os elementos:
    		for(i = 0; i<itens; i++){
          printf("Insira o valor e o peso do ITEM numero %d: \n", i);
    			scanf("%d %d", &valor[i], &peso[i]); //peso do item, valor do objeto
    		}
        
        float vu[itens];
        
        for(int i=0; i<itens; i++){
          vu[i] = (float)valor[i] / peso[i];
        }
        printf("Valor   Peso     Vu\n");
        
        for(int i=0; i<itens; i++){
        printf("   %d   ", valor[i]);
        printf("   %d   ", peso[i]);
        printf("  %0.2f \n", vu[i]);
      }
    
    
        int matriz[itens][3];
        for(int i=0;i<itens;i++){
          for(int j=0;j<itens;j++){
            matriz[i][j] = valor[i];
            matriz[i][j] = peso[i];
          }
        }
    
        printf("Na matriz: \n");
        for(int i=0;i<itens;i++){
          for(int j=0;j<itens;j++){
            printf("%d", matriz[i][j]);
          }
          printf("\n");
        }
    
        
        exit(0);
    }
      
      return 0;
    	}

     

     

     

     

    • Obrigado 1
  4. O programa só está funcionado na primeira iteração. Alguém sabe porque só está funcionando na primeira e nas posteriores não?

     

    #include<stdio.h>
    
    
    int ChecarVaga(char sala[8][10], int x, int y){
    
    int i = y - 1;
    int j = x - 1;
    int maxi = y + 1;
    int maxj = x + 1;
    
    if(i < 0) i = 0;
    if(maxi > 7) maxi = 7;
    
    for(i=i; i <= maxi; i++){
      j = x - 1;
      maxj = x + 1;
    if(j < 0) j = 0;
    if(maxj > 7) maxj = 7;
    
    for(j=j; j <= maxj; j++){
      if(sala[i][j] == 'P'){
        return 0;
        }
      }
    }
    return 1;
    }
    
    // Transforma a Letra em numero
    int Converte(char letra)
    {
      int numero;
    
      if (letra == 'a' || letra == 'A')
        numero = 0;
      if (letra == 'b' || letra == 'B')
        numero = 1;
      if (letra == 'c' || letra == 'C')
        numero = 2;
      if (letra == 'd' || letra == 'D')
        numero = 3;
      if (letra == 'e' || letra == 'E')
        numero = 4;
      if (letra == 'f' || letra == 'F')
        numero = 5;
      if (letra == 'g' || letra == 'G')
        numero = 6;
      if (letra == 'h' || letra == 'H')
        numero = 7;
      return numero;
    }
    
    int main(){
    
      char letra;
      char sala[8][10] = {
        '@','@','@','@','@','@','@','@','@','@',
        '@','@','@','@','@','@','@','@','@','@',
        ' ','@','@','@','@','@','@','@','@',' ',
        ' ','@','@','@','@','@','@','@','@',' ',
        ' ',' ','@','@','@','@','@','@',' ',' ',
        ' ',' ','@','@','@','@','@','@',' ',' ',
        ' ',' ',' ','@','@','@','@',' ',' ',' ',
        ' ',' ',' ',' ','@','@',' ',' ',' ',' ',
    };
    
    
    int x, y,i,j,lotado=0,ok;
    int npessoas = 0;
    
    
    while((!lotado) && (npessoas < 10)){
      printf("     0  1  2  3  4  5  6  7  8  9\n");
      //Impressão da matriz
      for(i = 0; i < 8; i++){
        printf("%3c", 65+i);          //printf("%3c", 72-i)
        for(j = 0; j < 10; j++){
        printf("%3c", sala[i][j]);
      }
      puts("");
    }
    
    
    printf("\nDigite uma coordenada (x,y): ");
    scanf("%c,%d", &letra, &y);
    x = Converte(letra);
    
    ok = ChecarVaga(sala,x,y);
    
    if(ok == 0){
      printf("Por favor escolha uma localizacao segura\n");
    }
    else{
      sala[x][y] = 'P';
      npessoas++;
    }
    
    ok = 0;
    
    //Checar se esta lotado
    for(i = 0; i < 8; i++){
      for(j =0; j < 10; j++){
        ok = ChecarVaga(sala, j, i);
        if(ok){
         break; //sai do loop pois tem vaga disponivel
        }
      }
    }
    
    if(!ok){
      lotado = 1;
      printf("Lotacao maxima alcancada!\n");
    
      }
    }
    
    for(i=0; i < 8; i++){
      printf("%3c", 65+i);          //printf("%3c", 72-i)
      for(j=0; j < 10; j++){
        printf("%3c", sala[i][j]);
      }
      puts("");
    }
    
    
    
      printf("     0  1  2  3  4  5  6  7\n");
    
    
      return 0;
    }

     

    • Curtir 1
  5. E ai rapaziada, beleza? Então, tô com um exercício da faculdade que não tô conseguindo progredir em certas partes dele. O exercício é o seguinte: Crie uma matriz (tela de cinema) que receba uma coordenada no formato, 1° a letra da posição da cadeira(eixo y) seguido pelo numero da cadeira(eixo x). Ao receber as posições da cadeira desejada devesse colocar o caractere 'P' na posição desejada se a posição ao lado (direita e esquerda) e em cima e em baixo estiverem vazias (devido ao distanciamento social), se a posição digitada tiver as cadeiras vizinhas vazias divise reserva essa cadeira com o caractere 'P' e colocar na sua vizinhança o caractere '#' para simbolizar as cadeiras que não podem ser usadas. As partes que eu estou com problema são:

    1° Colocar o '#' nas posições vizinhas

    2° Minha matriz feita até agora está nesse formato mostrado ao usuário                       0  1  2  3  4  5  6  7

     7   -  -   -   -   -  -   -   -                                                                                                A     -  -   -   -   -  -   -   -   
      6  -  -   -   -   -  -   -   -                                                                                                B     -  -   -   -   #  -   -   -   
      5  -  -   -   -   -  -   -   -                                                                                                C        -   -   #  P  #   -     
      4  -  -   -   -   P  -   -   -                                                                                                D        -   -   -  #  -   -     
      3  -  -   -   -   -  -   -   -               e o exercício pede que fique nesse formato ->        E             -   -   -  -      
      2  -  -   -   -   -  -   -   -                                                                                                F             -   -   -  -      
      1  -  -   -   -   -  -   -   -                                                                                                G                 -   -    
      0  -  -   -   -   -  -   -   -                                                                                               
         0  1  2  3  4  5  6  7

       exemplo com coordenada(4,4)                                                                               exemplo com coordenada(C,4)

     

    a matriz que eu fiz ate agora esta recebem os valores em dois números inteiros (x,y) mas o exercício pede que digitemos uma letra seguido de um numero para reserva a vaga (se essa for uma posição segura) e preencher em seu vizinhos com '#' para indicar cadeiras que não podem ser usadas. Então em resumo, o que eu tenho que fazer é 1° receber coordenadas (Letra/numero), 2° modificar a matriz para aparecer no formato que pede, e 3° colocar '#' nas vizinhanças.

     

    código até agora:

     

    #include<stdio.h>
    
    
    int ChecarVaga(char sala[8][8], int x, int y){
    
    int i = y - 1;
    int j = x - 1;
    int maxi = y + 1;
    int maxj = x + 1;
    
    if(i < 0) i = 0;
    if(maxi > 7) maxi = 7;
    
    for(i=i; i <= maxi; i++){
      j = x - 1;
      maxj = x + 1;
    if(j < 0) j = 0;
    if(maxj > 7) maxj = 7;
    
    for(j=j; j <= maxj; j++){
      if(sala[i][j] == 'P'){
        return 0;
        }
      }
    }
    return 1;
    }
    
    
    
    int main(){
    
      char sala[8][8] = {
        '-','-','-','-','-','-','-','-',
        '-','-','-','-','-','-','-','-',
        '-','-','-','-','-','-','-','-',
        '-','-','-','-','-','-','-','-',
        '-','-','-','-','-','-','-','-',
        '-','-','-','-','-','-','-','-',
        '-','-','-','-','-','-','-','-',
        '-','-','-','-','-','-','-','-',
    };
    
    
    int x, y,i,j,lotado=0,ok;
    int npessoas = 0;
    
    
    while((!lotado) && (npessoas < 10)){
      //Impressão da matriz
      for(i = 0; i < 8; i++){
        printf("%3d", 7-i);          //printf("%3c", 72-i)
        for(j = 0; j < 8; j++){
        printf("%3c", sala[i][j]);
      }
      puts("");
    }
    printf("     0  1  2  3  4  5  6  7\n");
    
    printf("\nDigite uma coordenada (x,y): ");
    scanf("%d,%d", &x, &y);
    
    y = 7 - y;
    ok = ChecarVaga(sala,x,y);
    
    if(ok == 0){
      printf("Por favor escolha uma localizacao segura\n");
    }
    else{
      sala[y][x] = 'P';
      npessoas++;
    }
    
    ok = 0;
    
    //Checar se esta lotado
    for(i = 0; i < 8; i++){
      for(j =0; j < 8; j++){
        ok = ChecarVaga(sala, j, i);
        if(ok){
         break; //sai do loop pois tem vaga disponivel
        }
      }
    }
    
    if(!ok){
      lotado = 1;
      printf("Locatacao maxima alcancada!\n");
    
      }
    }
    
    for(i=0; i < 8; i++){
      printf("%3d", 7-i);          //printf("%3c", 72-i)
      for(j=0; j < 8; j++){
        printf("%3c", sala[i][j]);
      }
      puts("");
    }
    
    
    
      printf("     0  1  2  3  4  5  6  7\n");
    
    
      return 0;
    }

     

    • Curtir 1
  6. #include<stdio.h>
    #include<string.h>
    
    
    int validaSenha (char frase[20]){
    
    int num, numMinusculo, numMaiusculo, cont;
    
    for(int i = 0; frase[i] != '\0'; ++i){
    
        if (strlen(frase) >= 8)
            cont = 1;
    
        if(frase[i] >= 'a' && frase[i] <= 'z'){
            ++numMinusculo;
        }
        if(frase[i] >= 'A' && frase[i] <= 'Z'){
            ++numMaiusculo;
        }
        if((frase[i] >= '0') && (frase[i] <= '9')){
            ++num;
        }
    }
    if ((cont = 1) && (numMinusculo > 0) && (numMaiusculo > 0) && (num > 0))
            return 1;
    else
            return 0;
    }
    
    int main(){
    char frase[20];
    int resultado;
    
    printf("Informe sua senha: \n");
    gets(frase);
    
    resultado = validaSenha(frase);
    
    printf("Resulatado: %d", resultado);
    
    
    return 0;
    }

    Esse programa que eu estou criando deve receber uma string de tamanho 20.

    Dentro da função:

    O programa deve verificar se a string possua pelo menos 8 caracteres.

    O programa deve verificar se contém ao menos uma letra maiúscula.

    O programa deve verificar se contém ao menos uma letra minúscula.

    O programa deve verificar se contém ao menos e ao menos um número.

    Se o todos os casos acima forem verdadeiros deve retornar 1 caso contrario deve retornar 0.

    O meu problema nesse codigo é que o meu só está retornando 1 mesmo os casos acima dando falso.

  7. Estou tentando mostras as posições de uma palavra encontrada em uma frase digitada. Exemplo:

     

    Entrada:

    Frase: O rato roel a roupa

    palavra: ro

     

    Saída:

    A palavra foi encontra.

     

    Posição: 8, 15.

    O programa deve buscar essa palavra na frase e mostra se ela tem, se tiver deve mostrar a posição dela.

    #include <stdio.h>
    #include <string.h>
    #include <stdbool.h>
    
    
    bool existe(char termo[], char frase[]){
        int teste[ strlen(termo) ];
        int aux;
        bool ok;
    
        //se o termo for maior que a frase
        if( strlen(termo) > strlen(frase) ){
            return false;
        }
        //se o termo for do tamanho da frase
        if( strcmp(termo, frase) == 0){
            return true;
        }
        //se o termo for menor que a frase
        for(int i=0; i<= strlen(frase) - strlen(termo); ++i){
            if(frase[i] == termo[0]){
    
                    for(int k=0; k < strlen(termo); ++k)
                        teste[k]=0;
    
                    aux=i;
                    for(int j=0; j < strlen(termo);++j){
                        if(termo[j] == frase[aux]){
                            teste[j]=1;
                            aux++;
    
                        }
                    }
            ok=true;
            for(int m=0; m< strlen(termo); ++m){
                if(teste[m] == 0){
                    ok=false;
                }
            }
            if( ok ){
                return true;
            }
        }
    }
        return false;
    
    }
    
    int main() {
    
    char frase[100];
    char termo[10];
    gets(termo);
    gets(frase);
    
        if(existe(termo, frase)){
            printf("\n A palavra foi encontrada \n");
        }else{
            printf("\n A palavra nao foi encontrada \n");
        }
    
    return 0;
    }

     

    • Obrigado 1
  8. Eu estou tentando criar um programa que inverta a frase letra a letra. Meu programa está assim no momento.

    Entrada: olá mundo

    Saída: odnum alo

    O desejado: álo odnum

     

    Vejo que tem um exercício semelhante a esse nesse cite respondido com funções, mas como eu ainda não aprendi funções tem uma forma de fazer isso sem funções? 

    Desde de já agradeço.😌

    #include<stdio.h>
    #include<string.h>
    
    int main(){
    char nome[100];
    char inverso[100];
    int i, h = 0;
    printf("Digite uma frase: \n");
    gets(nome);
    strlen(nome);
    
    for(i = strlen(nome) - 1; i >= 0; --i){
        inverso[h] = nome[i];   // inverte a frase toda e joga na string inverso
        ++h;
    }
    inverso[h] = '\0';
    
    printf("\nO inverso: %s \n", inverso);
    return 0;
    }
    

     

    • Curtir 1
  9. Crie um programa que receba o nome dos 8 candidatos em um vetor de strings, onde cada string tem tamanho máximo igual a 30. O programa deve repetidamente apresentar o nome dos candidatos e perguntar ao público (usuário) quem deve sair até que haja apenas três candidatos. Na fase final o público deve escolher quem dentre os três candidatos deve vencer o programa.

     

    Eu consegui fazer até a parte que o usuário informa os 8 nomes, mas eu não sei como remover o nome dos candidatos a cada iteração. Alguém pode me ajudar?

     

     

     

     

    #include<stdio.h>

    int main(){
    char vetor1[30], vetor2[30], vetor3[30], vetor4[30];
    char vetor5[30], vetor6[30], vetor7[30], vetor8[30];
    int i;

     

    printf("Digite o primeiro candidato: ");
    scanf("%s", &vetor1);

     

    printf("Digite o segundo candidato: ");
    scanf("%s", &vetor2);

     

    printf("Digite o terceiro candidato: ");
    scanf("%s", &vetor3);

     

    printf("Digite o quarto candidato: ");
    scanf("%s", &vetor4);

     

    printf("Digite o quinto candidato: ");
    scanf("%s", &vetor5);

     

    printf("Digite o sexto candidato: ");
    scanf("%s", &vetor6);

     

    printf("Digite o setimo candidato: ");
    scanf("%s", &vetor7);

    printf("Digite o oitavo candidato: ");
    scanf("%s", &vetor8);

     

    printf("Quem dever sair?\n");

     

    return 0;

    }

    • Amei 1

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!