Search the Community

Showing results for tags 'arrays'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Blogs

  • Projectos
  • Revista PROGRAMAR
  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Wiki

Forums

  • Bem-vindos ao Portugal-a-Programar
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML / XHTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • SharePoint
    • Apresentação de Software
  • Informática Extra-Programação
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica
    • Automação Industrial
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • Matemática
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
    • Arquivo Morto

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Found 23 results

  1. Olá, minha dúvida é a seguinte, já criei o sistema de listar ele e as vezes que repetiu mas eu gostaria agora de fazer o seguinte o "IP" que repetiu mais vezes ficar em primeiro lugar, o segundo em segundo e assim em diante Dim itemlist As New List(Of String) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim strReturn As New System.Text.StringBuilder Dim lItems As New Dictionary(Of String, Integer) Dim intCount As Integer = 0 Dim strCurrentItem As String = String.Empty itemlist.Add(ip.Text) 'Loop through listbox grabbing items... For Each nItem As String In itemlist If Not (lItems.ContainsKey(nItem)) Then 'Add listbox item to dictionary if not in there... 'The current item we are looking at... strCurrentItem = nItem 'Check how many occurances of this items there are in the referenced listbox... For Each sItem As String In itemlist If sItem.Equals(strCurrentItem) Then 'We have a match add to the count... intCount += 1 End If Next 'Finally add the item to the dictionary with the items count... lItems.Add(nItem, intCount) 'Reset intCount for next item... and strCurrentItem intCount = 0 strCurrentItem = String.Empty End If Next 'Add to the string builder... For i As Integer = 0 To lItems.Count - 1 strReturn.AppendLine(lItems.Values(i).ToString & " | " & lItems.Keys(i).ToString) Next richtextbox1.Text = (strReturn.ToString) End Sub O Código está funcionando perfeitamente mas está saindo assim: 3 | 192.99.156.98 10 | 186.206.152.52 5 | 186.206.144.4 2 | 186.206.155.7 43 | 186.66.6.2 6 | 186.206.152.77 Ele está totalmente desorganizado e não estou conseguindo resolver gostaria que me ajudem. não sei, tipo um sort de array eu quero mesmo é organizar esses ips e seus valores olhem... gostaria que ficasse assim(esses ips é apenas exemplo, os ips vem do strreturn.tostring) 43 | 186.66.6.2 10 | 186.206.152.52 6 | 186.206.152.77 5 | 186.206.144.4 3 | 192.99.156.98 2 | 186.206.155.7 "O que tem valor mais alto ficasse em primeiro que no caso esse valor é as repetições dele.". 43 | 186.66.6.2 << no caso é este oque está com mais valor eu tambem gostaria que apagasse o valor dele e o separador 43 | e escrevesse apenas o IP em uma outra string que no caso seria (186.66.6.2) obrigado a atenção.
  2. Galera, por favor, me ajudem aqui nessa questão O código é de uma mini agenda telefonica certo O código é este. Program Pzim ; const quant = 5; type vnome = array[1..quant] of string[30]; vidade = array[1..quant] of integer; valtura = array[1..quant] of real; vsexo = array[1..quant] of char; var //posicao: integer; opcao: char; nomes: vnome; idades: vidade; alturas: valtura; sexos: vsexo; procedure menu(var op: char); begin clrscr; writeln('menu'); writeln('1 - listar todos'); writeln('2 - cadastrar'); writeln('3 - procurar'); writeln('4 - modificar'); writeln('5 - excluir'); writeln('6 - resetar'); writeln('7 - sair'); writeln('qual a sua opção?'); op:=readkey; end; procedure limpar_ns(var ns: vnome); var cont: integer; begin for cont:= 1 to quant do ns[cont]:='XXX'; end; procedure limpar_is(var is: vidade); var cont: integer; begin for cont:= 1 to quant do is[cont]:=0; end; procedure limpar_as(var as: valtura); var cont: integer; begin for cont:= 1 to quant do as[cont]:=0; end; procedure limpar_ss(var ss: vsexo); var cont: integer; begin for cont:= 1 to quant do ss[cont]:='X'; end; procedure limpar(var ns: vnome; var is: vidade; var as: valtura; var ss: vsexo); begin limpar_ns(ns); limpar_is(is); limpar_as(as); limpar_ss(ss); end; procedure exibir_ns(ns: vnome; c: integer); begin writeln('nome[',c,']=',ns[c]); end; procedure exibir_is(is: vidade; c: integer); begin writeln('idade[',c,']=',is[c]); end; procedure exibir_as(as: valtura; c: integer); begin writeln('altura[',c,']=',as[c]:4:2); end; procedure exibir_ss(ss: vsexo; c: integer); begin writeln('sexo[',c,']=',ss[c]); end; procedure exibir(ns: vnome; is: vidade; as: valtura; ss: vsexo; c: integer); begin exibir_ns(ns,c); exibir_is(is,c); exibir_as(as,c); exibir_ss(ss,c); end; procedure cadastrar_ns(var ns: vnome; p: integer); begin writeln('informe nome[',p,']='); readln(ns[p]); end; procedure cadastrar_is(var is: vidade; p: integer); begin writeln('informe idade[',p,']='); readln(is[p]); end; procedure cadastrar_as(var as: valtura; p: integer); begin writeln('informe altura[',p,']='); readln(as[p]); end; procedure cadastrar_ss(var ss: vsexo; p: integer); begin writeln('informe sexo[',p,']='); readln(ss[p]); end; procedure cadastrar(var ns: vnome; var is: vidade; var as: valtura; var ss: vsexo; var p: integer); begin cadastrar_ns(ns,p); cadastrar_is(is,p); cadastrar_as(as,p); cadastrar_ss(ss,p); //p:= p + 1; end; procedure executar(var op: char; var ns: vnome; var is: vidade; var as: valtura; var ss: vsexo); var posicao, cont, achou, atual: integer; chave: string[30]; begin limpar(ns,is,as,ss); posicao:=1; repeat menu(op); case (op) of '1':begin if (posicao = 1) then begin writeln('agenda vazia!'); readln; end else begin writeln('lista das pessoas'); for cont:=1 to (posicao-1) do begin exibir(ns,is,as,ss,cont); readln; end; end; end; '2':begin if (posicao > quant) then begin writeln('agenda cheia!'); readln; end else begin cadastrar(ns,is,as,ss,posicao); posicao:= posicao + 1; end; end; '3':begin if (posicao = 1) then begin writeln('agenda vazia! não posso procurar...'); readln; end else begin writeln('qual a pessoa a ser procurada:'); readln(chave); achou:=0; atual:=1; repeat if (chave = ns[atual]) then achou:= atual else atual:= atual + 1; until (achou<>0) or (atual = posicao); if (achou = 0) then begin writeln(chave,' não encotrada na agenda!'); readln; end else begin exibir(ns,is,as,ss,achou); readln; end; end; end; '4':begin if (posicao = 1) then begin writeln('agenda vazia! não posso modificar...'); readln; end else begin writeln('qual a pessoa a ser modificada:'); readln(chave); achou:=0; atual:=1; repeat if (chave = ns[atual]) then achou:= atual else atual:= atual + 1; until (achou<>0) or (atual = posicao); if (achou = 0) then begin writeln(chave,' não encotrada na agenda, logo não posso modificar!'); readln; end else begin writeln('dados antigos'); exibir(ns,is,as,ss,achou); readln; cadastrar(ns,is,as,ss,achou); writeln('dados novos'); exibir(ns,is,as,ss,achou); readln; end; end; end; '5':begin if (posicao = 1) then begin writeln('agenda vazia! não posso excluir...'); readln; end else begin writeln('qual a pessoa a ser excluída:'); readln(chave); achou:=0; atual:=1; repeat if (chave = ns[atual]) then achou:= atual else atual:= atual + 1; until (achou<>0) or (atual = posicao); if (achou = 0) then begin writeln(chave,' não encotrada na agenda! não posso excluir...'); readln; end else begin for cont:= (achou + 1) to (posicao - 1) do begin ns[cont-1]:=ns[cont]; as[cont-1]:=as[cont]; is[cont-1]:=is[cont]; ss[cont-1]:=ss[cont]; end; posicao:= posicao - 1; end; end; end; '6':begin //limpar(ns,is,as,ss); posicao:=1; writeln('agenda resetada...!'); readln; end else begin if (op = '7') then begin writeln('bye bye!'); readln; end else begin writeln('opção inválida!'); readln; end; end; end; until (op = '7'); end; Begin //posicao:=1; executar(opcao,nomes,idades,alturas,sexos); End. Só que que esse trecho aqui, se repete várias vezes no código, preciso transforma-lo em função e procedimento, só que não estou conseguindo raciocinar, como farei, isso, por favor alguém sabe me ajudar? O trecho é este. if (posicao = 1) then begin writeln('agenda vazia! não posso excluir...'); readln; end else begin writeln('qual a pessoa a ser excluída:'); readln(chave); achou:=0; atual:=1; repeat if (chave = ns[atual]) then achou:= atual else atual:= atual + 1; until (achou<>0) or (atual = posicao); if (achou = 0) por favor
  3. Estava aqui à procura de uns programas e encontrei isto,não está nada de mais ,fiz isto quando estava a aprender arrays, mas penso que pode ser uma boa ajuda para os iniciantes. Não sei o que aconteceu com a edentação, mas se alguém quiser o ficheiro original(edentado) é só pedir. {$mode objfpc} Unit jta; Interface uses crt,jtb; type vetorint=array[1..10000]of longint; vetorstr=array[1..10000]of string; //VETOR DE INTEIROS //PROCEDIMENTOS procedure insereINT(frase:string;var A:vetorint;var n:integer);//Procedimento que insere valores do tipo inteiro em um array[1..300] Procedure MostraI(frase:string;var A:vetorint; n:integer);//PROCEDIMENTO QUE MOSTRA TODOS OS DADOS DO ARRAY Procedure REMOVEint(erro:string;numero:integer;var A:vetorint;var n:integer);// REMOVE UM NUMERO DO ARRAY DE INTEIROS Procedure atualizaINT(erro:string;numero:integer;var A:vetorint; n:integer);//PROCEDURE QUE ATUALIZA DOS DADOS DO ARRAY(INTEIROS) Procedure ordenaint(var A:vetorint;n:integer); //PROCEDIMENTO QUE ORDENA N DADOS INTEIROS DO VETOR Procedure CRUD(x,y:integer); //MENU ->Create, Read, Update e Delete //FUNÇÕES Function posint(numero:integer; A:vetorint; n:integer):integer;//FUNÇÃO QUE RETORNA O INDICE NO NUMERO A PROCURAR Function maioriA(A:vetorint;n:longint):longint;//FUNÇÃO QUE RETORNA O MAIOR VALOR DO ARRAY, Function menorIA(A:vetorint;n:longint):longint;//FUNÇÃO QUE RETORNA O MENOR VALOR DO ARRAY //VETOR DE STRINGS //PROCEDIMENTOS procedure insereSTR(frase:string;var A:vetorstr;var n:integer);//Procedimento que insere valores do tipo string em um array[1..300] Procedure MostraS(frase:string; var A:vetorstr; n:integer);//PROCEDIMENTO QUE MOSTRA TODOS OS DADOS DO ARRAY(string) Procedure REMOVEstr(erro:string;cadeia:string;var A:vetorstr;var n:integer);//QUE REMOVE UMA STRING DO ARRAY DE STRINGS Procedure atualizaSTR(erro:string;cadeia:string;var A:vetorstr; n:integer);//ATUALIZA DOS DADOS DO ARRAY(STRING) Procedure ordenastr(var A:vetorstr;n:integer);//PROCEDIMENTO QUE ORDENA N DADOS INTEIROS DO VETOR //FUNÇÕES Function posstr(cadeia:string; A:vetorstr; n:integer):integer;//FUNÇÃO QUE RETORNA O INDICE NO DA STRING A PROCURAR Implementation //MENU ->Create, Read, Update e Delete Procedure CRUD(x,y:integer); begin gotoxy(x,y); writeln('1-Inserir'); gotoxy(x,y+1); writeln('2-Procurar'); gotoxy(x,y+2); writeln('3-Listar'); gotoxy(x,y+3); writeln('4-Atualizar'); gotoxy(x,y+4); writeln('5-Remover'); gotoxy(x,y+5); writeln('6-Ordenar'); gotoxy(x,y+6); writeln('0-Sair'); end; //PROCEDIMENTO QUE ORDENA N DADOS INTEIROS DO VETOR Procedure ordenastr(var A:vetorstr;n:integer); var aux:string; i,b:integer; begin for i:=1 to n-1 do for b:=i+1 to n do if A[i]>A[b] then begin aux:=A[i]; A[i]:=A[b]; A[b]:=aux; end; end; //PROCEDIMENTO QUE ORDENA N DADOS INTEIROS DO VETOR Procedure ordenaint(var A:vetorint;n:integer); var aux:integer; i,b:integer; begin for i:=1 to n-1 do for b:=i+1 to n do if A[i]>A[b] then begin aux:=A[i]; A[i]:=A[b]; A[b]:=aux; end; end; //Procedimento que insere valores do tipo inteiro em um array[1..300] procedure insereINT(frase:string;var A:vetorint;var n:integer); var valor:integer; begin repeat write(frase); readln(valor); if valor<>0 then //entra se o valor introduzido pelo usuario for diferente de 0 begin n:=n+1; A[n]:=valor; end; until valor=0; end; //PROCEDIMENTO QUE MOSTRA TODOS OS DADOS DO ARRAY(integer) Procedure MostraI(frase:string; var A:vetorint; n:integer); var i:integer; begin if n<>0 then begin for i:=1 to n do writeln(frase,' ',A[i]); end else writeln('Não existem dados!!'); end; //Procedimento que insere valores do tipo string em um array[1..300] procedure insereSTR(frase:string;var A:vetorstr;var n:integer); var dado:string; begin repeat write(frase); readln(dado); if dado<>'zz' then //entra se o valor introduzido pelo usuario for diferente de 'zz' begin n:=n+1; A[n]:=dado; end; until dado='zz'; //Termina se o dado introduzido for 'zz' end; //PROCEDIMENTO QUE MOSTRA TODOS OS DADOS DO ARRAY(string) Procedure MostraS(frase:string; var A:vetorstr;n:integer); var i:integer; begin if n<>0 then begin for i:=1 to n do writeln(frase,' ',A[i]) end else writeln('Não existem dados!!'); end; //FUNÇÃO QUE RETORNA O INDICE NO NUMERO A PROCURAR Function posint(numero:integer; A:vetorint; n:integer):integer; var i:integer; begin if n<>0 then for i:=1 to n do if numero=A[i] then begin posint:=i; exit; end; end; //FUNÇÃO QUE RETORNA O INDICE NO DA STRING A PROCURAR Function posstr(cadeia:string; A:vetorstr; n:integer):integer; var i:integer; begin if n<>0 then for i:=1 to n do if cadeia=A[i] then begin posstr:=i; exit; end; end; //PROCEDIMENTO QUE REMOVE UM NUMERO DO ARRAY DE INTEIROS procedure REMOVEint(erro:string;numero:integer;var A:vetorint;var n:integer); var i,p:integer; begin p:=0; p:=posint(numero,A,n);//p recebe a posiçao do numero no indice A if p<>0 then //só entra se o numero for encontrado begin for i:=p to n do A[i]:=A[i+1]; //A posiçao de indice p toma o valor da posiçao seguinte n:=n-1; end else begin writeln(erro);//é enviada para o ecra uma mensagem de erro(inserida pelo usuario) readln; end; end; //PROCEDIMENTO QUE REMOVE UMA STRING DO ARRAY DE STRINGS procedure REMOVEstr(erro:string;cadeia:string;var A:vetorstr;var n:integer); var i,p:integer; begin p:=0; p:=posstr(cadeia,A,n);//p recebe a posiçao do numero no indice A if p<>0 then //só entra se o numero for encontrado begin for i:=p to n do A[i]:=A[i+1]; //A posiçao de indice p toma o valor da posiçao seguinte n:=n-1; end else begin writeln(erro);//é enviada para o ecra uma mensagem de erro(inserida pelo usuario) readln; end; end; //PROCEDURE QUE ATUALIZA DOS DADOS DO ARRAY(INTEIROS) Procedure atualizaINT(erro:string;numero:integer;var A:vetorint; n:integer); var p:integer; begin p:=0; p:=posint(numero,A,n); if p<>0 then begin writeln('Digite um novo valor: '); readln(A[p]); end else begin writeln(erro); readln end; end; //FUNÇÃO QUE RETORNA O MAIOR VALOR DO ARRAY function maiorIA(A:vetorint;n:longint):longint; var i:longint; begin maiorIA:=-2147483647; for i:=1 to n do if A[i]>maiorIA then maiorIA:=A[i]; end; //FUNÇÃO QUE RETORNA O MENOR VALOR DO ARRAY Function menorIA(A:vetorint;n:longint):longint; var i:longint; begin menorIA:=2147483647; for i:=1 to n do if A[i]<menorIA then menorIA:=A[i]; end; //PROCEDURE QUE ATUALIZA DOS DADOS DO ARRAY(STRING) Procedure atualizaSTR(erro:string;cadeia:string; var A:vetorstr; n:integer); var p:integer; begin p:=0; p:=posstr(cadeia,A,n); if p<>0 then begin writeln('Digite o novo valor: '); readln(A[p]); end else begin writeln(erro); readln; end; end; end. end.
  4. O programa deve criar um array com n elementos que são previamente definidos pelo utilizador,pedir ao utilizador para escrevê-los e posteriormente imprimi-los na ordem inversa. Eu tenho este código mas no fim não consigo imprimir os valores. int main(){ int *arr,n,i; printf("Introduza o número de elementos:\n"); scanf("%d",&n); arr=(int *)calloc(n , sizeof(int)); for(i=0;i<n;i++) { fflush(stdin); printf("Introduza um valor:\n"); scanf("%d",&arr); } for(i=n-1;i=0;i--){ printf("0 valor e %d ",arr); } }
  5. Olá pessoal. Sou novato em c# e queria ajuda na criação de uma aplicação em c#. Pretendo fazer uma aplicação com ligação a uma base de dados de produtos, em que esses produtos são procurados através de uma sequência de cores. O administrador vai inserir todos os produtos com uma sequência de cores e essa sequência de cores é a identificação do produto, pois cada produto tem uma etiqueta com uma sequência de cores. Depois o utilizador vai inserir uma sequência de cores a procurar e a aplicação retorna o código desse produto. Exemplo: Tava com ideia de dar um número ou uma abreviatura a cada cor e na hora de inserir a sequência de cores de um produto a aplicação guardaria numa String essa sequência da seguinte forma: - Exemplo de um produto com a sequência de cores: VERMELHO ((1) ou (vrm)) - VERDE ((2) ou (vrd)) - AZUL ((3) ou (azl)) - AMARELO ((4) ou (amr)) - A String ficaria com o valor: 1234 ou com o valor: vrmvrdazlamr Depois procurava na base de dados o valor dessa String e a aplicação retornaria o código do produto. Mas a minha grande dúvida é saber qual a melhor forma de fazer isso, se uso Strings ou neste caso é melhor usar Arrays, pois na hora de procurar o produto eu pretendia que, ao ser colocada a primeira cor, a aplicação iria começar e mostrar os produtos q iniciassem c essa cor e assim sucessivamente até terminar a sequência de cores do produto (equivalente a um filtro...). Agradeço desde já a ajuda de todo o pessoal e também se alguém tem uma ideia melhor para este caso, agradecia que falasse... Abraço pessoal...
  6. Boas, estou a fazer um trabalho para uma cadeira e estou a ter dificuldades. eu quero abrir uma janela em que peça a introdução de angulos a cada um dos polarizadores conforme o numero de polarizadores(npolarizadores), que vem de outra classe. para isso tenho de criar um array de jtextfields para que apareçam varios jtextfields conforme o numero de polarizadores e ao carregar no botao next no fim, guardar os valores de todos os campos num array(para isso criar a classe angulos). JTextField jTextFieldArray[] = new JTextField[npolarizadores]; ... for (i = 0; i < npolarizadores; i++) { JPanel x = new JPanel(); JLabel y = new JLabel("Polarizador " + (i + 1) + ": "); JButton b = new JButton("OK"); x.add(y); x.add(jTextFieldArray[i]); //linha que diz ter erro x.add(b); a.add(x); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { angulos(); } }); } Alguem me pode ajudar ? So pus parte do codigo pois acho que chega, mas se precisarem de todo avisem
  7. Boas, estou a fazer um programa em que no form2 o utilizador vai introduzir dados. Através de uma classe estática vou passar os valores do form2 para o form1. No form1 criei um botão a dizer "Guardar dados", e queria armazenar os valores através de array's. A minha duvida é, qual é a melhor maneira de criar os array's, para que na segunda vez que o utilizador clique nesse botão os dados não sejam criados de novo? Agradeço pela ajuda.
  8. Boas, Estou com uma duvida em como fazer para escrever numa struct, o que leio de um ficheiro. O problema é este: Tenho uma struct deste género. typedef struct dicionario { char palavra[100]; char definicao[1000]; } Dicionario; E agora tenho que ler de um ficheiro de texto ( com varias palavras e definições deste género: "Engenharia; Ciência do engenheiro") e gravar isso naquela struct mas tenho duas duvidas: 1ª Não sabendo nem o tamanho da palavra nem o tamanho da definição como é que faço para saber que tenho que parae de escrever no array qualquercoisa[0].palavra para começar a escrever no array qualquercoisa[0].definicao? 2ª A alocação de memória tem que ser dinâmica, como faço para á medida que mudar de array ( e enquanto leio do ficheiro claro ) ele aloque memoria para um novo array através de um malloc? Cumps
  9. Boas pessoal, NetLogo, linguagem pouco usada mas cá vai. Preciso simular uma rede inteligente, tenho dois tipos de breeds--> houses e producers. Basicamente pretendo fazer troca de energia entre as houses e os producers. A energia vem em forma de array. As houses foram criadas assim: (São 12, e o array consumo é diferente em todas) create-houses 1[ setxy 10 -6 set color blue set consumo [0.525 0.225 0.15 0.15 0.15] ] Os producers foram criados assim: (São 2, e o array potencia é diferente nos dois) create-producers 1[ setxy -5 8 set color blue set potencia [5 5 5 5 5 5] ] Pretendo fazer operações de subtracção entre os arrays dos diferentes agentes, eu desenvolvi um pequeno teste assim: to test let power [5 5 5 5 5 5] let consumption [.1 .04 .05 .03 .08 0.8] ; subtract each item of consumption from each item of power set power (map [?1 - ?2] power consumption) print power end observer> test [4.9 4.96 4.95 4.97 4.92 4.92] Mas não me satisfaz pois pretendo "ir" a todas as casas e fazer operações nos arrays das mesmas com os arrays dos producers. Alguma sugestão é bem vinda(talvez tenha de desenvolver um ciclo para aceder a todas as houses mas não estou a ter sucesso). Se não perceberam a explicação digam qualquer coisa.
  10. Boa Tarde pessoal do PAP. Sou estudante do Instituto Superior Técnico no 1º ano e esta é a minha pequena a apresentação. Estou a fim de entregar um projeto de Programação em C e estou com dificuldades na parte final do programa. O meu problema consiste na ordenação de um vetor de estruturas quando este tem que ser imprimido na consola. Usando o algoritmo de quicksort consigo ordenar o meu array por apenas um field da estrutura, mas o que é pedido é: Se pagamentosA=pagamentosB então ordena por numero de sócio, ou seja ter dois critérios de ordenação, um precedente ao outro. A minha ideia para fazer isto foi no define da função de partição do quicksort alterar o less para isto: #define less(A, B) ((key(A) == key(B)) ? (key3(A) < key3(B)) : (key(A) < key(B))) Vou apresentar aqui o código da estrutura e da função de partição do quicksort. Não sei o que esteja mal, mas ele não ordena de facto a array como quero... (Já agora, não consigo alterar o tipo de codigo para C, e ele não me mete as cores ai...) typedef struct { int num; char nome[tamanho_nome]; char apelido[tamanho_apelido]; int despesas; int pagamentos; int meses; int modalidades[numero_modalidades]; } associado; //Inicio do algoritmo de quicksort #define key(A) (A.meses) #define key3(A) (A.num) #define less(A, B) ((key(A) == key(B)) ? (key3(A) < key3(B)) : (key(A) < key(B))) #define compexch(A, B) if (less(B, A)) exch(A, B) #define exch(A, B) { associado t = A; A = B; B = t; } int partition(associado a[], int l, int r) { int i = l-1; int j = r; while(i < j) { while(less(a[++i],a[r])); while(less(a[r],a[--j])) { if(j == l) break; } if(i < j) exch(a[i], a[j]); } exch(a[i],a[r]); return i; } void quicksort(associado a[], int l, int r,int tipo) { //Tipo: 0 -> Ordena segundo divida, 1-> Ordena segundo numero de associado int i; if(r <= l) return; if(tipo==0) { i = partition(a,l,r); } if(tipo==1) { i = partition2(a,l,r); } quicksort(a,l,i-1,tipo); quicksort(a,i+1,r,tipo); } //Fim do algoritmo de quicksort Se alguem puder dar uma ajuda agradeco! Obrigado
  11. boa noite, Sou estudante e preciso de ajuda na resolução de um problema. Sei que a versão 6 para a versão 10 e um pouco diferente mas penso que neste caso não há problema. Portanto o enunciado do problema é: Elabore um programa que declara um array de inteiro com 100 posições. O programa deve ter um botão “Preenche” que permite preencher o array de 100 posições com o valor da sua posição acrescida de uma unidade (na posição 0 é inserido o 1). Deve existir um segundo botão, SOMA, que, quando selecionado, soma nas primeiras 50 posições do array o valor das últimas 50. Ou seja, guarda na posição 0 o resultado da soma do valor que está na posição 0 com o da posição 50, , na 1 guarda o resultado da soma do valor que está na posição 1 com o valor da 51, etc. Deve existir um terceiro botão, MIRROR, que, quando selecionado, copia as primeiras 50 posições do array para as últimas 50 posições, invertendo a ordem dos valores na segunda metade do array. Ou seja, o valor da primeira posição é copiado para a última, da segunda para a penúltima, etc. A solução que comecei por fazer foi: Public Class Form1 Private Sub ClearList() ListBox1.Items.Clear() End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click ClearList() Dim i(99) As Integer Dim total As Integer i(0) = "1" For total = 0 To 99 ListBox1.Items.Add(i(total)) Next End Sub End Class mas o resultado desta solução são 99 valores todos em 0 excepto a primeira posição que esta em 1. Alguém me poderá ajudar a solucionar este exercício? Obrigado
  12. Nome do Ficheiro: Sebentas VB.NET Submetido por: NunoDinis Submetido em: 07 Dez 2012 Categoria: Tutoriais Submetido pelo Autor?: Não Conjunto de notas com conceitos básicos de Visual Basic. Conteúdo Operadores Tipos de dados I/O Estruturas de controlo Arrays Exemplos de algoritmos Clique aqui para fazer download do ficheiro
  13. Sebentas VB.NET

    Version

    2744 downloads

    Conjunto de notas com conceitos básicos de Visual Basic. Conteúdo Operadores Tipos de dados I/O Estruturas de controlo Arrays Exemplos de algoritmos
  14. Boas, estou a resolver um exercicio em que uma função deve comparar dois elemento do array com o o elemento na posição i+2 e depois i+2+2 etc... exemplo: array[0] com array[2] e depois array[0] com array[4] array[1] com array[3] e depois array[1] com array[5]; e depois alerar os valores de acordo com umas certas regras o problema é que apenas os consigo comparar com i+2, o código que tenho é o seguinte: void comparador (int array[2048], int size_array) { int i; for (i=0; i< size_array; (i+2)) { if (array[i] == array[i+2] && array[i+1] < array[i+3]) .... if (aray[i] == array[i+2] && array[i+1] == array[i+3]) ..... if (array[i] == array[i+2] && array[i+1] > array[i+3]) .....//fim de == if (array[i] > array[i+2] && array[i+1] < array[i+3]) ...... if (array[i] > array[i+2] && array[i+1] == array[i+3]) ...... if (array[i] > array[i+2] && array[i+1] > array[i+3]) .......//fim de > if (array[i] < array[i+2] && array[i+1] < array[i+3]) ..... if (array[i] < array[i+2] && array[i+1] == array[i+3]) ...... if (array[i] < array[i+2] && array[i+1] > array[i+3]) ....... } } EDIT1: identar o código correctamente
  15. Boa tarde a todos. Estou a fazer exercicios sobre apontadores e strings. Mas mesmo após reler o material de estudo, continuo a fazer confusão com algumas coisas. O exercício é o seguinte e está parcialmente resolvido. A troca de strings com arrays de caracteres, funciona. A troca com apontadores não. /* Escreva uma função em C que troque duas strings. Efetue duas versões desta função: uma para strings guardadas em arrays de carateres e outra para strings guardadas em apontadores para carateres. */ #include <stdio.h> #include <string.h> #include <stdlib.h> void trocaStringsV1(char s1[], char s2[]) { char temp[100]; strcpy(temp, s1); strcpy(s1, s2); strcpy(s2, temp); printf("arrays: s1=%s, s2=%s\n", s1, s2); // aqui correcto } void trocaStringsV2(char *s1, char *s2) { char *temp = s1; s1 = s2; s2 = temp; printf("apontadores: s3=%s, s4=%s\n", s1, s2); // aqui correcto } int main() { /* dou muito espaco para cada array pq n sei qual sera' o tamanho do outro array para qual vou copiar */ char s1[100] = "string1", s2[100] = "string2"; char *s3 = "string1", *s4 = "string2"; trocaStringsV1(s1, s2); printf("final arrays: s1=%s e s2=%s\n\n", s1, s2); trocaStringsV2(s3, s4); printf("final apontadores: s3=%s e s4=%s\n\n", s3, s4); // pq continua igual ao inicio? return 0; } Tenho 3 dúvidas: 1ª Duvida: pq é q apesar da troca com apontadores na funcao trocaStringsV2 funcionar, no main os valores continuam os mesmos de inicio? 2ª Duvida: é necessário utilizar malloc? Qual seria a solução optima para este problema? Isto é, a solucao q fosse mais eficiente, ocupasse menos memoria possivel? Por exemplo eu reservei um espaço de 100 caracteres para array, assumindo q seria grande o suficiente, existe solucao mais elegante? :S 3ª Duvida: ainda continuo sem perceber qual a vantagem da utilização dos mallocs em relação à memória estática... alguém me pode dar exemplos claros em que tenha q obrigatoriamente utilizar um e não possa usar outro? por exemplo eu já percebi q para alocar memoria para estruturas tenho q usar malloc, mas em relacao a arrays de inteiros ou de outra coisa qq existe alguma vantagem em usar malloc? Ainda me sinto verdinho neste assunto por isso qualquer ajuda é bem-vinda Obrigado pela atenção. Cumprimentos
  16. Boas Eu estou a fazer um programa no visual basic 10, e estou com problemas ao atribuir valores a um array... Dame sempre este erro, já tentei com um bidimensional mas como não dava estou a usar 2 uni dimensionais porque já tinha trabalhados com estes... Object reference not set to an instance of an object. Defino logo os arrays no inicio do programa Dim arrnome() As String Dim arrdest() As String conta e o meu contador que inicializo a 0, e atribuo strings aos arrays assim: arrnome(conta) = nomec arrdest(conta) = dest <-- dame erro aqui conta = conta + 1 Alguma ideia do que estou a fazer mal?
  17. Alguém me pode dizer porque é que o código abaixo imprime coisas a mais? Exemplo de input: 23 4 5 6 output: VZYZTZTTZV V V ZYSZYXXZYCOCYYZV ZYSZKCZKSSZGZZJZQQSXXSZZZQXZZZZV V FGGGYGXGGKGXYSYW W S #include <stdio.h> #include <stdlib.h> int main () { int x[4096]; int i=0; int len; printf("Dá-me os números\n"); while (scanf ("%d", &x[i]) != EOF) len=sizeof(x)/sizeof(int); for (i=0; i<len; i++) { if(x[i] == 26) printf ("A"); else if(x[i] == 25) printf ("B"); else if(x[i] == 24) printf ("C"); else if(x[i] == 23) printf ("D"); else if(x[i] == 22) printf ("E"); else if(x[i] == 21) printf ("F"); else if(x[i] == 20) printf ("G"); else if(x[i] == 19) printf ("H"); else if(x[i] == 18) printf ("I"); else if(x[i] == 17) printf ("J"); else if(x[i] == 16) printf ("K"); else if(x[i] == 15) printf ("L"); else if(x[i] == 14) printf ("M"); else if(x[i] == 13) printf ("N"); else if(x[i] == 12) printf ("O"); else if(x[i] == 11) printf ("P"); else if(x[i] == 10) printf ("Q"); else if(x[i] == 9) printf ("R"); else if(x[i] == 8) printf ("S"); else if(x[i] == 7) printf ("T"); else if(x[i] == 6) printf ("U"); else if(x[i] == 5) printf ("V\n"); else if(x[i] == 4) printf ("W\n"); else if(x[i] == 3) printf ("X"); else if(x[i] == 2) printf ("Y"); else if(x[i] == 1) printf ("Z"); } return 0; } P.S.: O 1º printf não funciona correctamente, a mensagem apresentada é "Dß-me os n.meros" como posso corigir isto? EDIT1: o output parece ser o mesmo independentemente to input
  18. Nome do Ficheiro: Sebenta - Programação em C (IPVC - ESTG) Submetido por: apocsantos Submetido em: 24 Mai 2012 Ficheiro Actualizado: 24 Mai 2012 Categoria: Textos Académicos Submetido pelo Autor?: Não Instituto Politécnico de Viana do Castelo Escola Superior de Técnologia e Gestão Algoritmos e Estruturas de Dados Autor: Filipe Marques Conteúdo Cap. 2 - Introdução Cap. 3 - Tipos de Dados Básicos Cap. 4 - Testes e Condições Cap. 5 - Ciclos Cap. 6 - Arrays Cap. 7 - Strings Cap. 8 - Estruturas Cap. 9 - Funções Cap. 10 - Parâmetros das Funções Cap. 13 - Apontadores Cap. 17 - Ficheiros Clique aqui para fazer download do ficheiro
  19. Version

    8549 downloads

    Instituto Politécnico de Viana do Castelo Escola Superior de Técnologia e Gestão Algoritmos e Estruturas de Dados Autor: Filipe Marques Conteúdo Cap. 2 - Introdução Cap. 3 - Tipos de Dados Básicos Cap. 4 - Testes e Condições Cap. 5 - Ciclos Cap. 6 - Arrays Cap. 7 - Strings Cap. 8 - Estruturas Cap. 9 - Funções Cap. 10 - Parâmetros das Funções Cap. 13 - Apontadores Cap. 17 - Ficheiros
  20. Nome do Ficheiro: Slides de Algoritmos e Estruturas de Dados (IPVC - ESTG) Submetido por: apocsantos Submetido em: 24 Mai 2012 Ficheiro Actualizado: 24 Mai 2012 Categoria: Textos Académicos Submetido pelo Autor?: Não Instituto Politécnico de Viana do Castelo Escola Superior de Técnologia e Gestão Algoritmos e Estruturas de Dados Autores: Professor Dr. Salvado Lima, Professor Ricardo Castro Conteúdo Algoritmos Linguagem de Programação C Operadores / Estruturas de Controlo de Fluxo Apotadores / Arrays Clique aqui para fazer download do ficheiro
  21. Version

    2362 downloads

    Instituto Politécnico de Viana do Castelo Escola Superior de Técnologia e Gestão Algoritmos e Estruturas de Dados Autores: Professor Dr. Salvado Lima, Professor Ricardo Castro Conteúdo Algoritmos Linguagem de Programação C Operadores / Estruturas de Controlo de Fluxo Apotadores / Arrays
  22. Estou a fazer um programa em que uma das funções deve concatenar 2 arrays (1 dos arays pode ser o resultado da concatenação de outros 2) mas, independentemente to tamanho dos arrays o resultado nunca é o pretendido. #include <stdio.h> #include <stdlib.h> #include <math.h> int q; //nº elementos array1 int array1[1024]; int array2[1024]; int array3[1024]; int array4[1024]; int i; void multer ()//multiplica array1 por um int { for(i = 0; i<q; i++){ array1[i] = 1* array1[i]; array2[i] = 2* array1[i]; array3[i] = 3* array1[i]; array4[i] = 4* array1[i]; } } void merger() //concatena os arrays { multer(); for( i = 0 ; i < q ; i++) array2[i+(q-1)] = array1[i]; for (i=0; i < ((q*2)-1); i++) array3[i+((q*2)-1)] = array2[i]; for (i=0; i < ((q*3)-1); i++) array4[i+((q*3)-1)] = array3[i]; } int main() { scanf("%d",&q); for (i=0; i<q; i++){ scanf("%d",&array1[i]);} merger (); printf("Arrya4 = "); for( i = 0 ; i < 40 ;i++) printf("%d " , array4[i]); return 0; } neste caso estou a imprimir o array 4 o resultado se array1 = 1 2 3 4 deveria ser: Array4 = 4 8 12 16 3 6 9 12 2 4 6 8 1 2 3 4 mas em vez disso imprime: Array4 = 4 8 12 16 0 0 0 0 0 0 0 3 6 9 12 0 0 0 2 4 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 os zeros não me chateiam muito pois posso remove-los depois de ordenar o array mas o facto de nem todos os valores pretendidos aparecemrem e na parte "2 4 6 1" aparecer "1" em vez 8 e a ultima sequencia (repetição do array1) não ser apresentada está-me a deixar um bocado chateado, se alguém me pudesse dizer onde está o erro agradecia muito. EDIT1: correcção de erro na main
  23. Boas, estou a tentar criar uma função que faça a soma cumulativa de um array e as coloque num outro array, mas não nenhuma das minhas implementações até agora funciona correctamente, agradecia se me pudessem dar umas dicas sobre como o fazer. Edit: não mencionei que queria colocar os resultados noutro array, mas com as vossas sugestões acho que já conseguigo fazer o pretendido.