1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Matlab

Discussão em 'Programação' iniciada por MadalenaM, 19 de Outubro de 2006. (Respostas: 16; Visualizações: 1195)

  1. Olá pessoal :)
    Preciso mt da vossa ajuda em programação ' MatLab '
    Estes problemas fazem parte da minha avaliação na cadeira de programação e computação no IST e agradecia que me ajudassem a resolve-los o mais depressa possível, ja que nao percebo mt disto :(
    São os seguintes:

    Problema A

    Desenvolva em Matlab uma função que receba como argumento um vector de números naturais, percorra elemento a elemento o vector dado recorrendo a um ciclo while e retorne um vector com os seguintes dois elementos:
    • na primeira posição, o número de elementos que ocorrem em posições ímpares no vector diferentes da posição que ocupam no vector;
    • na segunda posição, a soma das posições pares do vector em que ocorrem números menores que 7.
    Problema B

    Desenvolva em Matlab uma função que receba como argumento um vector de números naturais, percorra elemento a elemento o vector dado recorrendo a um ciclo while e retorne um vector do mesmo comprimento em que cada elemento do argumento é substituído:
    • pela soma da sua posição com o elemento que se lhe segue, caso o elemento anterior seja superior à posição que ocupa;
    • por 1, caso contrário.
    Mto OBRIGADA :D
     
  2. _zZz_

    _zZz_ Professional Folder

    olha, aqui não podemos resolver os teus problemas..

    mas porque não tentas por tu mesmo e depois mostras? aposto que ai ja teras muito mais ajuda, e ainda aprenderas alguma coisa ;)
     
  3. hellaxe

    hellaxe Power Member

    Que tal leres o manual???????
    Eu fiz assim e depois quando não conseguia resolver os bugs pedia ajuda.

    Boa sorte com isso
     
  4. CookiePT

    CookiePT Power Member

    Realmente...mas pelo que li usava um ciclo While! :lol:
     
  5. bem...entao já q é assim agradecia que me propusessem a correcção do PROBLEMA A que ja fiz e q nao esta correcto:
    function f(v)
    I=1;
    X=0;
    Y=0;
    while I<=length(v)
    if mod(X,2)==1 & ~(V(I)==I)
    X=X+1;
    end
    if mod(Y,2)==0 & Y<7
    Y=Y+v(I)
    end
    I=I+1;
    end
     
  6. jaac

    jaac Power Member

    Não percebo muito bem o que se pretende aqui...
     
  7. jaac

    jaac Power Member

    Código:
    if mod(Y,2)==0 & Y<7
    Y=Y+v(I)
        end
    O que tu queres é saber se o índice é par e se o valor do vector na posição é menor que 7

    Código:
    if mod(I,2)==0 & v(I)<7
    Y=Y+v(I)
        end
     
  8. Jaac -- ""na primeira posição, o número de elementos que ocorrem em posições ímpares no vector diferentes da posição que ocupam no vector; " quer dizer que por exemplo o 2 nao pode estar na 2ª posição do vector nem um 3 na 3ª.

    e mt obrigada pela correcção :) mas continua a nao estar certo...:/ é que estou a experimentar mesmo no programa.Por ex. fazendo f([2,3,1,2,5]) a resposta do matlab é:
    Y =
    2

    Y =
    5

    os valores estao certos mas as variaveis para alem d ser Y,Y tem q aparecer ans= (e so depois o resultado)
     
  9. Triston

    Triston Aku Soku Zan SM

    Flames apagados, agradecia que acalmassem os animos para nao ter de fechar a thread...
     
  10. jaac

    jaac Power Member

    tens [ 2 3 1 2 5 ], como em matlab os vectores começam na posição um, fica 1->2, 2->3, 3->1, 4->2, 5->5

    Para a primeira condição o único que ocupa a mesma posição que o índice é o 5, o resultado é 4 (2,3,1,2)

    De qualquer forma a tua interpretação da condição não me parece correcta, porque não utiliza a parte das posições impares.
     
  11. kaxias

    kaxias Power Member

    E arranjar o matlab para linux? isso é que era :D
     
  12. AwakE

    AwakE Banido

    A resposta à A é .....

    function f(v)
    I=1;
    X=0;
    Y=0;
    while I<=length(v)
    if mod(I,2)~=0 & v(I)~=I
    X=X+1;
    end
    if mod(I,2)==0 & v(I) <7
    Y=Y+v(I);
    end
    I=I+1;
    end
    w = [X Y]

    Não tenho o Matlab disponivel para testar mas se houver algum erro é de compilação. Básico.
    Eu posso estar a ser brutinho, mas sou ex-aluno do IST, e choca-me quando as pessoas não usam a massa cinzenta. Não devemos ver este problema como programação. Isto é lógica, raciocinio abstracto, sem o qual o engenheiro (ou qualquer outra ciencia) não vive, por isso Madalena não me venhas dizer que isto não te vai servir para nada na tua carreira.
     
    Última edição pelo moderador: 20 de Outubro de 2006
  13. Awake....
    Antes de mais agradeço-te mt pela resolução, só tenho q esperar pela correcção do prof.
    Quanto à cadeira servir-me ou não para alguma coisa acho q nao vale a pena discutir.
    "choca-me quando as pessoas não usam a massa cinzenta" - reconheço q isto desenvolve a massa cinzenta mas tb há outras cadeiras q desenvolvem a lógica e raciocinio abstracto de um engenheiro como por ex. analise matematica ou algebra e q têm continuação no meu curso durante os 5 anos. Computação so tenho no 1ºsemetre do 1º ano...e nem toda a gente gosta d desenvolver a massa cinzenta em frente de um computador...é isso q quis dizer.
    mt obrigada pela ajuda :)
     
  14. Problema B

    Desenvolva em Matlab uma função que receba como argumento um vector de números naturais, percorra elemento a elemento o vector dado recorrendo a um ciclo while e retorne um vector do mesmo comprimento em que cada elemento do argumento é substituído:
    • pela soma da sua posição com o elemento que se lhe segue, caso o elemento anterior seja superior à posição que ocupa;
    • por 1, caso contrário.
    function U=g(v)
    I = 2;
    U(1) = 1;
    U(length(v)) = 1;
    while I < length(v)
    if v(I-1) > I
    U(I) = I + v(I+1);
    else
    U(I)=1;
    end
    I = I + 1;
    end

    agradecia que me corrigissem tb este q nao esta certo pq me foi rejeitado pelo professor
    OBRIGADA
     
  15. AwakE

    AwakE Banido

    Repara que :

    - caso o elemento anterior seja superior à posição que ocupa;

    é diferente de:

    - if v(I-1) > I

    Isto é uma questão de português, não de programação. O enunciado também está mal feito porque não diz o que deve acontecer na fronteira quando não existe próximo ou anterior.
     
  16. Obrigada Awake...ja percebi...é isto:

    if v(I-1) > I-1

    :)
     
  17. HiGhVoIcE

    HiGhVoIcE Power Member

    MadalenaM, um pequeno conselho para usares aqui no forum: sempre que queiras por codigo por estes lados, tenta usar a tag ["code"] ["/code"] (sem as aspas). Ajuda na compreensão. :)
     

Partilhar esta Página