Ir para o conteúdo
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! | Occasional Fortnite player

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! | Occasional Fortnite player

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! | Occasional Fortnite player

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! | Occasional Fortnite player

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! | Occasional Fortnite player

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.