Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

msmsms

como fazer uma lista de imput?

Mensagens Recomendadas

msmsms

aplicação para receber uma lista de input com valor de n objectos

já fiz assim

se o problema pede lista e não devo colocar nenhum array não é?

int main()
{
   int numero;
   printf("numero de objectos:");
   scanf("%d",numero);


}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

EDIT: Parece que afinal pensei mal. (ver post do pmg em baixo)


se o problema pede lista e não devo colocar nenhum array não é?

Um array é uma lista (até no java o ArrayList é um "array com esteroides").

Basicamente, uma lista é algo que guarda dados numa posição e ordenação bem definida.

Contrasta com o conjunto, em que a ordem é um conceito inexistente.

Editado por brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Em C, o que normalmente se designa por lista, é um conjunto de "nós". "Nós" esses que estao encadeados, fazendo uma lista de nós. Um array é uma area de armazenamento de dados contigua capaz de guardar 1 ou mais elementos de determinado tipo.

As diferencas principais sao que o array nao é facil de mudar o tamanho enquanto que a lista muda de tamanho com facilidade extrema. O acesso a qualquer elemento de um array é imediato enquanto que o acesso aos elementos duma lista tem de percorrer todos os elementos anteriores.

Se o problema pede uma lista (no sentido acima), fizeste bem um nao usar array!


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

muito bem

então eu preciso:

1º - pedir e receber n de objectos que já fiz

2º - receber uma lista de numeros ate ao maximo de n objectos

vou tentar continuar e deixo aqui continuação, eu achava que existiria arraylist como no java em c mas tambem um arraylist no java e uma lista sem limite e então aqui há limite n definidos como casas por isso

não estou a ver é como é que na consola vou conseguir colocar os n elementos na lista...

int main()
{
 int n;
 int lista[n];
 printf("numero de objectos:");
 scanf("%d",n);

}

como é que faço agora para pedir e introduzir os numeros inteiros na lista?

segundo a ficha a consola vai receber como input

CONSOLA

linha1: valor n

linha2: numero de coisas A

linha3: numero de coisas B

linha4: numero de coisas C

exemplo:

4 = n

10 = elem 1 da lista

6 = elem 2 da lista

5 = elem 3 da lista

2 = elem 4 da lista

e diz que isto será um conjunto com 4 objectos com os valores {10,6,5,2}

Editado por Rui Carlos
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

1º - pedir e receber n de objectos que já fiz

2º - receber uma lista de numeros ate ao maximo de n objectos

What?

int main()
{
   int n;
   int lista[n];
   printf("numero de objectos:");
   scanf("%d",n);

}

Isso não é uma lista, é uma array, e é uma array que está muito mal declarada, para não referir o scanf que tem a falta de um &.

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

eu já reparei

não dá para fazer scanf sem fazer printf primeiro?

ou seja colocar o valor na consola sem o pedir?

int main()
{
   int n;
   int lista[n];
   scanf("%d",&n);
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

eu já reparei

não dá para fazer scanf sem fazer printf primeiro?

ou seja colocar o valor na consola sem o pedir?

int main()
{
   int n;
   int lista[n];
   scanf("%d",&n);
}

Claro que é possível! printf e scanf são coisas distintas. Um não implica o outro. ;)

E continuas com uma array declarada com um método, no mínimo, original...

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

Claro que é possível! printf e scanf são coisas distintas. Um não implica o outro. ;)

E continuas com uma array declarada com um método, no mínimo, original...

nao percebo o que dizes quanto ao array...

int main()
{
int n;
int lista[n] = {e1,e2,e3,como fazer generico????}
scanf("%d",&n);

}

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Declaras n, e depois declaras a Array com n elementos. Isto não é dinâmico. Nem sei se compila, sequer. Isso não altera o tamanho da array conforme o valor de n, se era isso que estavas a pensar.

O que te vêm vindo a falar é de listas ligadas... apontadores! Não são arrays.

Editado por thoga31

Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

eu apenas sei que tenho de fazer a consola do IDE receber n coisas sendo que a primeira delas linha 1 é o número das coisas

fazer sem ser generico tambem eu sei mas através de input

input consola:

linha 1 = n numeros;

linha 2 = 1º numero;

linha 3 = 2º numero;

isto se o n colocado na linha 1 for 2

int main()
{
   int n;
   int lista[n] ={};
   scanf("%d",&n);

   while(qualquer coisa){
   scanf("%d",&lista)
   }
}

será este o caminho certo? o que me está a faltar no cerebro vocẽs já têm de facto?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Mas podes (queres) fazer com arrays ou nao?

Se usas [ e ] no codigo estas a usar arrays!


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

Mas podes (queres) fazer com arrays ou nao?

Se usas [ e ] no codigo estas a usar arrays!

eu acho que tem de ser com array até porque é um array que tem numero definido de elementos

tinha sentido para mim da seguinte maneira, mas deu erro

int main()
{
int n;
int lista[n] ={};
scanf("%d",&n);
int i;
for (i=0; i<n, i++){
	scanf("%d",&lista)
}
}

fazer os input para a lista é que é o diabo

eu já pesquisei exemplos e não encontro nenhum que faça o que eu preciso

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

int n; // qual o valor de n nesta instrução ?
int lista[n]; // qual o tamanho do array?

o valor n é colocado na consola ai é suposto fazer o pedido de n inteiros para ser formado um array com tamanho n e com n inteiros

o tamanho do array é n

olhas-te o exemplo do objectivo em cima?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Tens uma linha no teu codigo que nao é C valido.

        int lista[n] ={};

Nao sei se é C++ valido, pois nao sei C++.

Se queres aprender C, sugiro que configures o teu compilador para dar o maximo de warnings/erros possiveis.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

o valor n é colocado na consola ai é suposto fazer o pedido de n inteiros para ser formado um array com tamanho n e com n inteiros

o tamanho do array é n

olhas-te o exemplo do objectivo em cima?

eu não quero saber o que tu queres fazer, até porque isso é mais do que claro.

o que eu quero é que abras os olhos e respondas às perguntas feitas


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Oh @msmsms, qual foi a parte de...

Declaras n, e depois declaras a Array com n elementos. Isto não é dinâmico. Nem sei se compila, sequer. Isso não altera o tamanho da array conforme o valor de n, se era isso que estavas a pensar.

O que te vêm vindo a falar é de listas ligadas... apontadores! Não são arrays.

...que não percebeste?

Continuas a insistir numa coisa que já três pessoas te disseram que não é possível. Se queres fazer uma lista de n valores, em que esse n é dado pelo utilizador, então não podes declarar uma Array dessa forma. O mais simples, em C, é fazer uma lista ligada.

Algumas linguagens permitem variar o tamanho das Arrays - as chamadas Dynamic Arrays - de uma forma simples, mas em C as coisas não são assim.

Esquece as maravilhas do Python, em que uma lista/array/whatever tinha um tamanho sempre variável. Aqui, em C, tens, em linhas gerais (sem entrar em pormenores), duas coisas: Arrays - tamanho bem definido -, e listas ligadas - tamanho totalmente variável.

Se queres utilizar Arrays, então tens de adoptar um limite máximo, e essa Array deverá ter esse número de elementos. No final haverá, claro, espaço alocado desnecessariamente, mas essas questões deixo para os big boys do C.


Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

eu desisto do trabalho, isto é só a raiz o pronto de partida para o trabalho nem alinea é e se já é o inferno deixo que o diabo resolva

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

nao é possivel entender o que ninguem consegue fazer entender

nao posso inventar como se faz inputs em c já tentei inventar e não sou bom como deixei em cima deu para ver

o meu objectivo tambem é ignorado, como se faz é o menos o importante é que fica-se feito mas nao ha exemplos com array ou outro bugalhos para eu solucionar com aquilo que sei

input consola:

input 1 = n numeros possiveis de colocar na lista;

lnput 2 = 1º numero da lista;

lnput 3 = 2º numero da lista;

isto se o n colocado no input 1 for 2

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Não é possível fazer entender a alguém aquilo que não quer entender, ou faz de conta não entender.

O teu objectivo já todos nós entendemos. Quem não entendeu foste tu uma coisa: a tua ideia de uma Array dde n elementos, em que n é dado pelo utilizador, não está certa, e aquilo que tens de utilizar para o teu objectivo é outra coisa.

Batalhaste na Array com a dimensão n em vez de pesquisares e procurares saber mais sobre aquilo que te dissemos: listas ligadas.


Knowledge is free!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

input consola:

input 1 = n numeros possiveis de colocar na lista;

lnput 2 = 1º numero da lista;

lnput 3 = 2º numero da lista;

#include <stdio.h>
#include <stdlib.h>

int main(void) {
   int n; // numero de elementos do array
   int index;
   int array[1000]; // array com capacidade para 1000 elementos;

   // input 1
   if (scanf("%d", &n) != 1) exit(EXIT_FAILURE);
   if (n > 1000) exit(EXIT_FAILURE); // maximo de 1000 excedido
   if (n < 1) exit(EXIT_FAILURE); // minimo de 1

   // ciclo n vezes (1o, 2o, 3o, ... numero da lista)
   for (index = 0; index < n; index++) {
       if (scanf("%d", array + index) != 1) exit(EXIT_FAILURE);
   }

   // output dos n elementos do array
   printf("Array (%d elementos): %d", n, array[0]);
   for (index = 1; index < n; index++) printf(" %d", array[index]);
   puts("");

   return 0;
}

Podes ver o codigo acima a funcionar no ideone

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

deu certo vou analisar bem o codigo e tentar fazer simplificação

parece que existem coisas desncessarias como exit

obrigado :)

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
msmsms

pmg 2 duvidas no codigo!

#include <stdio.h>
#include <stdlib.h>
int main() {
int n; /* n para a lista*/
int i; /*posicao na lista */
int lista[1000]; /* n(max-lista) = 1000 */
/*input n*/
scanf("%d", &n);
/*input lista*/
for (i = 0; i < n; i++) {
   scanf("%d", lista + i); duvida1 => porquê lista + i?
}
/*output dos n elementos do array*/
printf("lista com %d objectos: %d", n, lista[0]); duvida 2=> porquê lista[0]?
for (i = 1; i < n; i++)
	printf("%d", lista[i]);
return 0;
}

como output eles dizem que querem o seguinte mas eu não percebo o que querem dizer:

''apresentar como output a menor diferença que é possivel encontrar entre o valor de dois subconjuntos que contenham entre si a totalidade desses objectos''

eu acho que eles querem também que eu faça várias listas!!!! ou seja existir subconjuntos!!!

o que achas?

Editado por msmsms

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

deu certo vou analisar bem o codigo e tentar fazer simplificação

parece que existem coisas desncessarias como exit

não ... eles estão lá para prevenir erros. se não percebes porquê, pergunta

scanf("%d", lista + i); // duvida1 => porquê lista + i?

porque é a mesma coisa que teres o endereço de memória do elemento de índice "i" do array "lista"

o que tens quando fazes : "lista" é teres o valor que se encontra no índice i, mas o que necessitas para o caso é a posição de memória.

printf("lista com %d objectos: %d", n, lista[0]); // duvida 2=> porquê lista[0]?

aqui necessitas do valor e na posição de memória

"apresentar como output a menor diferença que é possivel encontrar entre o valor de dois subconjuntos que contenham entre si a totalidade desses objectos"

de repente parece a união dos conjuntos, mas como a pergunta fala em "... dois conjuntos que contenham ..." fiquei baralhado


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.