Zadanie - cukierki - pomoc

0

Zacznę od tego, że jestem początkującym programistą i mam problem z zadaniem. Mianowicie, jak zrobić, aby w każdym okrążeniu pętli, dopóki nie znajdzie tego kand (największej, parzystej liczby), zapamiętywało które to było okrążenie i na końcu wypisało w którym okrążeniu znalazło tego kand.

Oto kod:

#include<iostream>
#include<cstdio>
using namespace std;
int n;
 
int main()
{
 
 
cout<<"Podaj ile elementow ma miec tablica:"<<endl;
cout<<endl;
cin>>n; // wczytuje tablice o n elementach
cout<<endl;
 
 

int kand=1; //kandydat na najwieksza liczbe
int tab[n];
for(int i=0; i<n; i++)
{
cout<<"Wprowadz "<<i+1<<" liczbe:"<<endl;
cout<<endl;
cin>>tab[i];
 
{
if((kand<tab[i])&&(tab[i]%2==0)) kand=tab[i]; //zapisuje kandydata jako najwieksza parzysta liczbe
cout<<endl;
}
 
}
 
 
 

 
cin.ignore(2);
return 0;
} 

Całkiem możliwe, że zupełnie źle zabrałem się za to zadanie, i jeżeli możecie to prosiłbym o naprowadzenie.

A tu treśc tego zadania:
Tata Krysi pracuje w cukierni. Każdego dnia przynosi do domu n pudełek z cukierkami. W i-tym pudełku znajduje się ai cukierków. Krysia może wybrać jedno z pudełek i o ile jest tam parzysta liczba cukierków, może je wszystkie zjeść. Jeżeli natomiast w wybranym pudełku jest nieparzyście wiele cukierków, trafiają one do brzuszka jej młodszego brata, Adasia. Które pudełko ma wybrać Krysia, aby zjeść jak najwięcej cukierków?

Wejście W pierwszej linii wejścia znajduje się liczba całkowita n oznaczająca liczbę pudełek z cukierkami. W następnej linii najduje się n pooddzielanych spacjami liczb oznaczających liczby cukierków w kolejnych pudełkach.
Wyjście Program powinien wypisać jedną liczbę oznaczającą numer pudełka dającego Krysi najwięcej cukierków. W przypadku kilku tak samo korzystnych pudełek wskaż spośród nich to o najmniejszym numerze. Pudełka są ponumerowane od 1 do n.

0
#include <iostream>
using namespace std;
 
int main()
  {
   int n;
   cin>>n;
   int p=0;
   for(int i=1,v=0;i<=n;++i)
     {
      int V;
      cin>>V;
      if((!(V&1))&&((!p)||(v<V))) p=i,v=V;
     }
   cout<<p<<endl;
   return 0;
  }

I nie rób żadnych udziwnień w stylu: cout<<"Podaj ile elementow ma miec tablica:"<<endl; inaczej sprawdzarka tego nie przyjmie.

0

Dzięki, wszystko działa, tylko czy mógłbyś wytłumaczyc co robi ten fragment !(V&1) ???

2

Jest to nieczytelna, nieprzenośna, niepotrzebna optymalizacja na poziomie kodu sprawdzenia czy liczba jest (nie)parzysta. Używaj modulo.
I nie bój się nazywać zmiennych pełnymi wyrazami, kod wcale nie będzie się wykonywał szybciej, gdy będzie miał mniej znaków, a będzie w cholerę mniej czytelny.

0
Rev napisał(a):

... nieczytelna ...
Jak ktoś nie zna się na maskach bitowych - owszem.

Rev napisał(a):

... nieprzenośna ...
Totalne bzdury.

Rev napisał(a):

... niepotrzebna ...
W powszechnych kompilatorach pod windows/linuks owszem niepotrzebna, optymalizator zrobi to za ciebie. Zaś są też kompilatory dla urządzeń, nie są to bardzo rozbudowane kompilatory więc mają minimalną (jeżeli mają) optymalizacje.

1
_13th_Dragon napisał(a):
Rev napisał(a):

... nieprzenośna ...
Totalne bzdury.

Ta optymalizacja zakłada konkretną formę reprezentacji liczb w pamięci. Da to np. nieprawidłowe wyniki przy kodzie uzupełnień do jednego.

_13th_Dragon napisał(a):
Rev napisał(a):

... niepotrzebna ...
Zaś są też kompilatory dla urządzeń, nie są to bardzo rozbudowane kompilatory więc mają minimalną (jeżeli mają) optymalizacje.

Ta optymalizacja jest właśnie minimalną.

0
Rev napisał(a):
_13th_Dragon napisał(a):
Rev napisał(a):

... nieprzenośna ...
Totalne bzdury.

Ta optymalizacja zakłada konkretną formę reprezentacji liczb w pamięci. Da to np. nieprawidłowe wyniki przy kodzie uzupełnień do jednego.
A i owszem o ile w pudełku przypadkiem się znajdzie ujemna liczba cukierków. Tak a propos reszta z dzielenia przez 2 jest bardziej nie przenośna ponieważ ta operacja dla liczb ujemnych - "zgodna z procesorem" więc reszta z dzielenia (-10)%7 może wynosić: 3,-3,4,-4 w zależności od procesora.

Rev napisał(a):
_13th_Dragon napisał(a):
Rev napisał(a):

... niepotrzebna ...
Zaś są też kompilatory dla urządzeń, nie są to bardzo rozbudowane kompilatory więc mają minimalną (jeżeli mają) optymalizacje.

Ta optymalizacja jest właśnie minimalną.
Z twojego punktu widzenia - może, ale z punktu widzenia twórców kompilatorów pod urządzenia - nie koniecznie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1