Ir ao conteúdo
  • Cadastre-se

ytalopaulo_

Membro Júnior
  • Posts

    15
  • Cadastrado em

  • Última visita

posts postados por ytalopaulo_

  1. Gente, estou tentando criar um programa que criar A, B, C, D e E, sendo o A o processo pai. o programa tem que fica num loop infinito imprimindo o nome do processo e seu id e a cada 5 segundos o processo pai(A) matar um filho na ordem B, C, D, E.

    Quando todos os filhos tiverem mortos o processo pai imprimir a mensagem "não tenho mais filhos" e finaliza o programa. 

     

    A minha dúvida é, não estou conseguindo matar os processos filhos. O código fica em loop infinito e nunca termina. 

     

    #include <sys/types.h>
    #include <sys/wait.h>
    #include <stdio.h>
    #include <unistd.h>
    #include <signal.h>
    
    
    int main(void) {
    
        wait(NULL);
        printf("Não tenho mais filhos.\n");
    
    
        while(1){
            if(fork()){ //B
                printf("B | ID = %d\n", getpid());
                kill( getpid(), SIG_TERM);
            }
            if(fork()){ //C
                printf("C | ID = %d\n", getpid());
            }
            if(fork()){ //D
                printf("D | ID = %d\n", getpid());
            }
            if(fork()){ //E
                printf("E | ID = %d\n", getpid());
            }
        }
    
        return 0;
    }

     

    • Obrigado 1
  2. Estou tentando fazer a ordenação de uma lista de datas em Java, mas não tô conseguindo faze com que ela fica ordenada de forma correta.  Na classe Hora a ordenação ta funcionando perfeitamente, mas quando vou ordenar a classe Data e tem hora também não pega.

    Código da classe Hora

    package comparetotest;
    
    public class Hora implements Comparable<Hora> {
    
        private int hora; // 0 -23
        private int minutos; // 0 - 59
    
        public Hora(int hora, int minutos) {
            this.hora = ((hora >= 0 && hora < 24) ? hora : 0); //validando a hora
            this.minutos = ((minutos >= 0 && minutos < 60) ? minutos : 0); // validando os minutos
        }
    
        public int getHora() {
            return hora;
        }
    
        public void setHora(int hora) {
            this.hora = hora;
        }
    
        public int getMinutos() {
            return minutos;
        }
    
        public void setMinutos(int minutos) {
            this.minutos = minutos;
        }
    
        @Override
        public String toString() {
            return String.format("%d:%02d", hora, minutos);
        }
    
        @Override
        public int compareTo(Hora h) {
            if (this.getHora() > h.getHora()) {
                return 1;
            }
            if(this.getMinutos() > h.getMinutos()){
                return 1;
            }
            if (this.getHora() < h.getHora()) {
                return -1;
            }
            if(this.getMinutos() < h.getMinutos()){
                return -1;
            }
            return 0;
        }
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + hora;
            result = prime * result + minutos;
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj) {
                return true;
            }
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            Hora other = (Hora) obj;
            if (hora != other.hora) {
                return false;
            }
            if (minutos != other.minutos) {
                return false;
            }
            return true;
        }
    }

    Código da classe Data

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package comparetotest;
    
    /**
     *
     * @author Windows
     */
    public class Data implements Comparable<Data> {
    
        private int dia; // 1 - 31
        private int mes; // 1 - 12
        private int ano;
        private Hora hora;
    
        public Data(int dia, int mes, int ano, Hora hora) {
            this.dia = ((dia >= 1 && dia <= 31) ? dia : 1); //validando o dia
            this.mes = ((mes >= 1 && mes <= 12) ? mes : 1); // validando o mes
            this.ano = ano;
            this.hora = hora;
        }
    
        public int getDia() {
            return dia;
        }
    
        public void setDia(int dia) {
            this.dia = dia;
        }
    
        public int getMes() {
            return mes;
        }
    
        public void setMes(int mes) {
            this.mes = mes;
        }
    
        public int getAno() {
            return ano;
        }
    
        public void setAno(int ano) {
            this.ano = ano;
        }
    
        public Hora getHora() {
            return hora;
        }
    
        public void setHora(Hora hora) {
            this.hora = hora;
        }
    
        @Override
        public String toString() {
            return "Data/Hora: " + dia + "/" + mes + "/" + ano + " " + hora.toString();
        }
    
        @Override
        public int compareTo(Data d) {
            if(this.getMes() > d.getMes()){
                return 1;
            }
            if(this.getMes() < d.getMes()){
                return -1;
            }
            if(this.getDia() > d.getDia()){
                return 1;
            }
            if(this.getDia() < d.getDia()){
                return -1;
            }
            if(this.getAno() > d.getAno()){
                return 1;
            }
            if(this.getAno() < d.getAno()){
                return -1;
            }
            if(this.getHora().getHora() > d.getHora().getHora()){
                return 1;
            }
            if(this.getHora().getHora() < d.getHora().getHora()){
                return -1;
            }
            return 0;
        }
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ano;
            result = prime * result + dia;
            result = prime * result + ((hora == null) ? 0 : hora.hashCode());
            result = prime * result + mes;
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj) {
                return true;
            }
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            Data other = (Data) obj;
            if (ano != other.ano) {
                return false;
            }
            if (dia != other.dia) {
                return false;
            }
            if (hora == null) {
                if (other.hora != null) {
                    return false;
                }
            } else if (!hora.equals(other.hora)) {
                return false;
            }
            if (mes != other.mes) {
                return false;
            }
            return true;
        }
    
    }

    Código que testa a ordenação 

    
    package comparetotest;
    
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class CompareTotest {
    
        public static void main(String[] args) {
            // TODO code application logic here
            ArrayList<Hora> horas = new ArrayList<>();
            ArrayList<Data> datas = new ArrayList<>();
            
            Hora hora1 = new Hora(1,50);
            Hora hora2 = new Hora(1,40);
            Hora hora7 = new Hora(1,00);
            Hora hora3 = new Hora(1,30);
            Hora hora4 = new Hora(1,20);
            Hora hora5 = new Hora(1,10);
            Hora hora6 = new Hora(1,00);
            
            
            horas.add(hora1);
            horas.add(hora2);
            horas.add(hora3);
            horas.add(hora4);
            horas.add(hora5);
            horas.add(hora6);
            horas.add(hora7);
            
            Collections.sort(horas);
            
            for(Hora hora: horas){
                System.out.println(hora);
            }
            
            Data data1 = new Data(13,12,2017,hora1);
            Data data2 = new Data(17,11,2016,hora2);
            Data data3 = new Data(12,10,2019,hora3);
            Data data4 = new Data(11,10,2016,hora4);
            Data data5 = new Data(10,8,2015,hora5);
            Data data6 = new Data(12,10,2016,hora6);
            Data data7 = new Data(11,6,2018,hora7);
            
            
            datas.add(data1);
            datas.add(data2);
            datas.add(data3);
            datas.add(data4);
            datas.add(data5);
            datas.add(data6);
            datas.add(data7);
            
            Collections.sort(datas);
            
            for(Data data: datas){
                System.out.println(data);
            }
    
            
        }
        
    }

    A saída é a seguinte :

    run:
    1:00
    1:00
    1:10
    1:20
    1:30
    1:40
    1:50
    Data/Hora: 11/6/2018 1:00
    Data/Hora: 10/8/2015 1:10
    Data/Hora: 11/10/2016 1:20
    Data/Hora: 12/10/2016 1:00
    Data/Hora: 12/10/2019 1:30
    Data/Hora: 17/11/2016 1:40
    Data/Hora: 13/12/2017 1:50
    CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)

    A ordenação de Horas tá funcionando. Mas a de Data só da ordenando pelo mês e eu quero ele ele ordene pelo ano, mês e dia, se possível caso tenha data iguais, a ordenação seja feita pela horas.  

    • Curtir 1
  3. Dias do trabalho no século XX

     

    Considere as seguintes informações:

                        I.            1º de janeiro de 1900 foi uma segunda-feira.

                       II.            Os meses de abril, junho setembro e novembro possuem 30 dias. Todos os demais meses possuem 31 dias, exceto fevereiro. O mês de fevereiro possui 29 dias nos anos bissextos e 28 dias nos demais anos.

                     III.            As regras para verificar se um ano é bissexto são:

                                     i.      Um ano divisível por 400 é bissexto;

                                    ii.      Um ano divisível por 4 é bissexto, desde que não seja divisível por 100.

    O dia internacional do trabalho é comemorado no dia 1º de maio. Faça um programa que informe quantas vezes o dia do trabalho caiu em um domingo no século XX (1 de janeiro de 1901 até 31 de dezembro 2000) e informe a quantidade obtida.

     

    • Alguém poderia me ajuda com esse desafio, a lógica que utiliza pra fazer ele e etc... 
    adicionado 44 minutos depois
    package desafio4;
    public class Desafio4 {
        public static void main(String[] args) {
            int ano;
            int jan = 31, mar = 31, mai = 31, jul = 31, ago = 31, out = 31, dez = 31;
            int abr = 30, jun = 30, set = 30, nov = 30;
            int fev;
            for(ano = 1901; ano <= 2000; ano++){
                if(ano % 400 == 0 && ano % 100 == 0){
                    fev = 29;
                }
                else if(ano % 4 == 0){
                    fev = 29;
                }
                else{
                    fev = 28;
                }
            }
        } 
    }

    Fiz esse código que diz quando fevereiro é de 28 o 29 dias... Quero sabe agora como faço para contar quantos dia 1 de maio caiu no domingo nesse período.

  4. Pesquisei na internet e encontrei duas maneiras de excluir um registro do arquivo:

    1º  localizando o registro que vai ser excluído e escrever o ultimo registro do arquivo em cima dele...

    2º Copia todo o registro do arquivo ( sem o registro que vai ser excluído ),  para um novo arquivo, depois excluir o antigo arquivo e renomeia o novo como o nome do arquivo "padrão" ....

     

    Me corrijam se eu estiver errado, mas foi esses dois métodos que encontrei na internet.

    No livro disponibilizado pelo meu professor mostrar uma maneira de excluir  colocando valores nulo no lugar do registro... (Não entendi direito kk).

     

    Gostaria de saber como ficaria o código dessa duas maneiras (foco pra 2º) ou se tem outro meio de excluir um registro do arquivo?

     

     

    • Curtir 2
  5.         printf("MENU\n");
    
            printf("\t1->ADICIONAR SÉRIES\n");
            printf("\t2->EDITAR SÉRIE\n");
            printf("\t3->REMOVER SÉRIE\n");
            printf("\t4->lISTAR SÉRIES\n");
            printf("\t5->PESQUISAR SÉRIES\n");
            printf("\t6->SAIR\n");
    
            printf("OPÇÃO: ");
            scanf("%d",&opPrinc);

    Estou criando um programa e no momento o menu está sendo feito com a estrutura do/wihle e switch-case. Gostaria de saber como fazer com que a movimentação de escolha das opções do menu fosse feita através das teclas de setar (cima e baixo) e quando clicar em ENTER a opção escolhida fosse acessada?  (Eliminando então a forma como esta, o usuário digitar o nº correspondente as opções.)

    • Amei 1
    • Confuso 1
  6. Meu professor me mandou fazer a mesma coisa, mas o que eu não entendo é como isso se aplicaria quando o usuário for digital.

    Tipo, vai aparece uma mensagem pra o usuário digita a quantidade de temporadas de uma série...  

    Ex : 3

    Ai as próximas mensagem vai ser em cima desse valor digitado:

    ->  Quantidades de episódios na 1 temporada: 

    ->  Quantidades de episódios na 2 temporada: 

    ->  Quantidades de episódios na 3 temporada: 

    _______________________________________

    Isso normalmente sem estrutura ficaria resolvido se eu declarasse a variável dos episódios após o usuário digita a quantidades de temporadas da séries 

     qtdsEps[qtdsTemps];

  7. Estou fazendo um projeto de armazenamento de séries e queria saber como resolver o problema de vetor de variável dentro de struct?

    Abaixo está a estrutura  do registro!!

    typedef struct series{
        char nome[20];
        char genero[20];
        char emissora[20];
        char lanc, assistindo, passistir, finalz, fav;
        int ano;
        int qtdsTemps; 
        int qtdsEps; //era pra ser um vetor de episodios de cada temporada, a partir da qtds informada pela usuário int qtdsEps[qtdsTemps];
        int totalEps;
    } SERIE;

     

    Como resolveria esse problema já que não pode criar vetor de variável no struct?

    • Obrigado 1
    • 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!