Ir para conteúdo
Fórum Script Brasil

p4t0X

Membros
  • Total de itens

    151
  • Registro em

  • Última visita

Posts postados por p4t0X

  1. Qual exatamente o erro?!

    @edit

    Ví algumas coisas...

    1) A variável str não tem comprimento, você precisa alocar memória pra ela. Solução: str = char[20];

    2) Você tem que ler string, o formato é "%s" ainda sim, vale ressaltar que strings com espaços não serão tratadas da forma esperada. Solução: "%s" no lugar de "%c" para a variável str;

    3) O formato "%char" não existe, é "%c", a variável str é um vetor de char, portanto na atribuição da str2, basta fazer uma atribuição simples. Solução: str2 = str[caracterequalquer];

    4) Na hora da comparação (linha 23), você precisa fazer o casttype para a posição do vetor a ser testada, não do vetor inteiro. Solução: aux = (int) str[posicaoasertestada];

  2. Aconselho a colocar chaves sempre que possível, também aconselho fazer uso de uma identação padrão, isso reduz consideravelmente o número de erros...

    E ó, aconselho você a dar uma olhada em vetores, ficaria 70% mais fácil usa-los.

    if( condição )
    {
        façaalgumacoisa;
        façaoutracoisa;
        for( bla; ble; bli )
        {
            ++variavellegal;
        }
        if( nossa )
        {
            vaipralonge;
        }
    }

  3. A lógica é a mesma, só o que vai mudar é são as condições de parada:

    Por exemplo: a condição para 'subir' na diagonal /, é linha >= 0 e coluna > colunaMax (decrementa a linha e incrementa a coluna).

    para 'descer' é: coluna >= 0 e linha < linhaMax (decrementa a coluna e incrementa a linha)

    Acho que é isso, dá uma tentada ae :)

  4. Uma maneira de se fazer:

    Primeiro você cria todos os números a serem testados.

    Percorre todos os números restantes, o primeiro sempre será primo, depois disso você tira todos os multiplos desse número.

    Continue fazendo isso até o fim dos números.

    Ex: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

    Começe do 2 é claro.

    2 é primo, agora tire todos os multiplos de 2: ( 3, 5, 7, 9, 11, 13, 15, 17, 19 ); próximo passo (3):

    3 é primo, agora tire todos os multiplos de 3: ( 5, 7, 11, 13, 17, 19 ); próximo passo (5):

    5 é primo, agora tire toods os multiplos de 5: ( 7, 11 , 13 , 17, 19 ); próximo passo (7):

    7 é primo, agora tire toods os multiplos de 7: ( 11 , 13 , 17, 19 ); próximo passo (11):

    11 é primo, agora tire toods os multiplos de 11: ( 13 , 17, 19 ); próximo passo (13):

    13 é primo, agora tire toods os multiplos de 13: ( 17, 19 ); próximo passo (17):

    17 é primo, agora tire toods os multiplos de 17: ( 19 ); próximo passo (19):

    17 é primo, agora tire toods os multiplos de 19: (): FIM

  5. Sem o uso de vetor é meio chatinho mesmo! rsrs

    Se você trocar as comparações

    else if( N2 < menor ){
        menor = N2;
    }
    e colocar:
    else if( N2 <= menor ){
        segundamenor = menor;
        menor = N2;

    Você vai conseguir um semi-resultado. Só vai haver 1 problema, se a menor nota for a primeira, a segunda menor nota vai ser a menor também.

    Vê se agora você consegue pensar em alguma coisa! ;~)

  6. Tarde!

    Legal isso!

    Basicamente você vai ter 4 diagonais né!?

    Dois sentidos para cada diagonal.

    / -> Uma indo para cima e outra indo para baixo

    \ -> Uma indo para cima e outra indo para baixo

    A diagonal do elemento x[j], pertencente a matriz A[m][n], vai ser todo elemento x[i+q][j+q], sendo m > i+q > 0 e n > j+q > 0, considerando q inteiro e i,j naturais.

    Veja se ajuda:

    #include <stdlib.h>
    #include <stdio.h>
    
    void percorreDiagonalDireitaParaBaixo( int x, int y, int linha, int coluna, int v[][4] ){
        while( x < linha && y < coluna ){
            printf( "%d\t" , v[x++][y++] );
        }
    }
    
    int main( int argc, char **argv ){
        
        int v[][4] = { { 1 , 2 , 3 , 10 },
                       { 4 , 5 , 6 , 11 },
                       { 7 , 8 , 9 , 12 } };
    
        percorreDiagonalDireitaParaBaixo( 0, 1, 3, 4, v );
    }

  7. Tá dando errado por causa disso, coloque assim:

    while ( NUM1 != 0 || NUM2 != 0 ){

    Mais eu acho que tem alguma coisa errada com a lógica, se num1 ou num2 for 0, a soma vai ser o outro número O_o, e se num1 ou num2 não for 0, o programa vai ficar exibindo a soma para sempre...

  8. Oh, esse menu seu não está explicando o que ele realmente faz, o certo seria:

    printf("[1] -> Media aritmetica\n");
    printf("[2] -> Media aritmetica sem a maior e menor nota\n");

    Para calcular sem as 2 menores notas você precisa descobrir as 2 menores, atualmente você só sabe a menor.

    A lógica para descobrir a segunda menor é parecida...

    A saída do programa está correta.

    No primeiro caso ele faz a média aritmética das notas, isso é, soma todas e divide pelo número de notas.

    7+6+5+4+3+2 = 27

    Como temos 6 notas, a média será: 27/6 = 4.5

    No segundo caso ele faz a média aritmética das notas, excluindo a maior e a menor.

    6+5+4+3 = 18

    Como temos 4 notas, a média será: 18/4 = 4.5

    Para você fazer a média das 4 maiores notas, você precisa descobrir as duas menores notas, criar mais uma opção para a escolha desse tipo de media e na hora que for calcular a média, calcular da seguinte maneira:

    media = ( media - menor - menor2 )/4;

  9. Por exemplo, você verifica se ele quer ver a média com ou sem a subtração das maiores/menores, e na hora de calcular você calcula.

    Por exemplo, antes de ler as médias.

    printf( "Informe o tipo de media a ser calculada;\n[1] -> Media aritmetica\n[2] -> Media aritmetica sem a maior e menor" );
    scanf( "%d" , &opcao );//Declarar essa variável lá encima
    Daí na hora de calcular a média você faz:
    if( opcao == 1 ){
        media = media/6;//Aqui inclui TODAS as notas
    }else if( opcao == 2 ){
        media = ( media - maior - menor )/4;//Aqui tira a maior e a menor
    }
    E assim por diante! :) Nesse segundo programa, você lê todos os números para a variavel Num[X], porem você não altera o X, então você fica substituindo a variavel Num[X], que no seu caso é Num[0], já que o X foi iniciado com 0. Duas soluções: Ou você coloca todos os indices na hora da leitura das variáveis;
    printf("Digite o PRIMEIRO numero:\n");
    scanf("%d",&Num[X]);//&Num[0]
    printf("Digite o SEGUNDO numero:\n");
    scanf("%d",&Num[X]);//&Num[1]
    ....
    Ou você faz a leitura das variáveis em um laço de repetição
    while( X < 10 ){
        printf( "Digite o %d numero: " , X );
        scanf( "%d" , &Num[X] );
        X++
    }
    //Lembre-se de antes de começar outro laço de repetição, alterar o valor de X para 0 novamente

  10. Vish, não sei se foi erro na hora de digitar aki, mais oh:

    //Na main
    struct CPUTIMER_VARS
    
    //Na declaração
    struct CPUTIMER_REGS
    Fiz um exemplo simples aqui, não tive maiores problemas:
    #include <stdio.h>
    
    union teste {
        int asd;
        float qqq;
    };
    struct s {
        union teste t;
        int qwert;
    };
    
    
    int main( int argc, char **argv ){
        struct s a;
        int b;
    
        a.t.asd = 213;
    
        b = a.t.asd;
    
        printf( "%d" , b );
    }

    Uso ubuntu e estou compilando com gcc

×
×
  • Criar Novo...