• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

2 duvida

14 mensagens neste tópico

outro problema!

dao-vos uma sequencia qualquer de numeros inteiros, quando o utilizador coloca o numero 0, para a contagem.

Como vou saber o maximo desta sequencia e a posição que ocupa?? ATENÇÃO!!! nao posso usar vectores  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Humm explica la isso melhor nao tou bem a perceber o que queres :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:( é assim, peço ao utilizador uma sequencia se numeros, quando o utilizador coloca o numero 0 (zero) a sequencia de numeros para.

desta sequencia quero saber qual o numero maximo, e qual a posição que ocupa??

Exemplo:

2 5 7 8 3 4 5 6 0

tenho 8 algarismos

o numero maximo é 8 e ocupa a posição 4

;) ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Entao usa 1 array e depois cada vez ke é colocado um valor novo mais ou menos isto.

int max;
int post;
int contador = 0;
int lista [] = new int [x];

public void putNumber(int i){
lista[contador] = i;
if(lista[contador] >= lista[contador-1]){
  max = i;
  post = contador;
}
}

Isto é java mas a teoria é a mesma para kualker linguagem.

Há antes dakele if deves meter um if para ver se o contador tá a 0 se nao vai dar erro no contador-1.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:)tou a fazer em c, mas nao pode ser em arrays tem que ser em ciclos :cheesygrin:, mas obrigada na mesma ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

raw = raw_input("Introduza uma sequencia de numeros (ex. 1 2 3 0): ")
seq = raw.split(' ')
clean = []
                
for i in seq:
    e = int(i)
    if e == 0: break
    clean.append(e)

nr = max(clean)

print 'Maximo:', nr, 'Posicao:', clean.index(nr)+1

EDIT:

:)tou a fazer em c, mas nao pode ser em arrays tem que ser em ciclos :cheesygrin:, mas obrigada na mesma ;)

Aqui vai uma versão sem arrays ;), fartei-me de comentar, penso que vais entender, qualquer dúvida não tenhas problemas em perguntar.

Esta versão é muito mais feia que a de cima, mas como não podes usar arrays, aqui fica:

raw = raw_input("Introduza uma sequencia de numeros (ex. 1 2 3 0): ") #obter os dados
maximo, pos, contador = 0, 0, 0 #variaveis temporarias para guardar o maximo, a posicao e um contador
#vamos dividir a string em numeros e verificar o maximo
for i in range(0, len(raw), 2): #ciclo for de 0 ao tamanho da string de input de 2 em 2
    contador += 1 #contador por causa dos espacos
    temp = int(raw[i]) #numero temporario da string
    if temp == 0: break #se o numero for 0, sair do ciclo
    if temp > maximo: #se o numero for maior que o maximo
        maximo = temp #substituir a variavel max pelo novo numero
        pos = contador+1 #guardar a posicao do contador + 1 porque a string conta a partir de 0
print 'Maximo:', maximo, 'Posicao:', pos #print dos valores

EDIT2:

Não tinha nada para fazer, fiz outra versão em C:

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

int main()
{
int novo, ant, pos, max, contador = 1, num;

printf("Introduza numeros inteiros (Zero para parar)\n\n");
printf("%d numero -> ", contador);
scanf("%d",&novo);

if(novo==0) 
{
 printf("Nao foram introduzidos numeros");
 num = 1;
    }
    ant = novo;
    max = novo;
    pos = contador;
    
    while(novo!=0)
{
  contador++;
  printf("%d numero -> ",contador);
  scanf("%d",&novo);

  if(novo>=max)
  {
   max=novo;
       pos=contador;
      }
  ant = novo;
 }	

 if (num != 1)
     {
	 printf("\n\n\nO maior numero da sequencia introduzida foi: o %d e esta na posicao %d\n\n\n",max,pos);
     }	
system("PAUSE"); 
return 0; 
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Haá mas tu disses.te ke nao podias usar vectores nao falas.te em arrays ;) é diferente alias nem se bem se C tem vectores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

axo que vectores e arrays são exactamente a mesma coisa mas esse prgm e mt facil

basta ir lendo os numeros ate encontrar um 0 e a cada numero que se recebe ve se se é maior que o maximo actual e incrementar um contador. so precisas de duas variaveis, uma para guardares o maximo e outra para o contador!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nada a ver arrays e vectores são coisas completamente distintas alias a unica coisa ke tem de igual é os dados serem guardados de forma indexada.

Pelo menos em java vectores é uma coisa e arrays outra nada a ver!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nada a ver arrays e vectores são coisas completamente distintas alias a unica coisa ke tem de igual é os dados serem guardados de forma indexada.

Pelo menos em java vectores é uma coisa e arrays outra nada a ver!

normalmente em C considera-se um vector como sendo um array de uma dimensão. no entanto arrays de dimensão superior a 1 não são vectores...

em Java temos a classe Vector, mas (que eu saiba) em C os únicos vectores que temos são os arrays.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois java tem a class Vector (MUITO BOM ;)) é tipo 1 array unidimencional mas completamente dinamico nao tem tamanho fixo e tem uma grande leque de metodos para utilizar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que eu aprendí, em C um vestor é um array com um número de posições. Pode ser isto:

[] [] [] []

ou

[]

[]

[]

... etc etc...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como já não programava C há muito tempo tomei a liberdade de pegar no código do Triton e aplicar-lhe uns tweaks :wallbash:

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

int main()
{
   int novo, pos, max=0, contador=0;

   printf("Introduza numeros inteiros (Zero para parar)\n\n");

   do{
       printf("%do numero -> ", ++contador);
       scanf("%d",&novo);

       /*se usares >= em vez de >, quando for introduzido o mesmo número mais que uma vez, ele considera o primeiro o maior */    
       if(novo>max)
       {
  max=novo;
          pos=contador;
       }
      
   }while(novo!=0);

   if (max > 0)
   {
      printf("\n\n\nO maior numero da sequencia introduzida foi: o %d e esta na posicao %d\n\n\n",max,pos);
   }else
   {
      printf("\n\n\nNao foram introduzidos numeros!\n\n\n");
   }

   /*comenta a proxima linha se não estiveres a programar em ambiente windows*/	
   system("PAUSE"); 
   return 0; 
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nada a ver arrays e vectores são coisas completamente distintas alias a unica coisa ke tem de igual é os dados serem guardados de forma indexada.

Pelo menos em java vectores é uma coisa e arrays outra nada a ver!

tens razao, nao me lembrava dos arrays multidimensionais;)

0

Partilhar esta mensagem


Link 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