zadanie w c++(tablice)

0

czesc . moglby ktos sprawdzic czy ten program jest poprawny . jesli nie to czego tu brakuje .
z gory dzieki .

//tablica [20] liczb naturalnych, program sprawdza, czy w tablicy na pozycjach
//parzystych występują te same liczby co na pozycjach nieparzystych
#include <iostream>
using namespace std;
int main()
{
int tab[20];
int i;
for(i=0;i<20;i++)
if(tab[i]=tab[i+1])
{
cout<<"te same"<<endl;
}
else
{
cout<<"nie takie same"<<endl;
}
system("pause");
return 0;
}

0

W warunku powinno być == a nie jedno =, bo operatorem porównania są właśnie 2 znaki równości.

0

zależy co chcesz osiągnąć? chcesz sprawdzić czy dla każdej pary warunek jest spełniony?

#include <iostream>
using namespace std;
int main() {
  int tab[20];
  int i;
  int flaga = 1;
  for(i=0; i<20; i+=2) {
    if(tab[i] != tab[i+1]) {
      flaga = 0;
      break;
    }
  }
  if (flaga) {
    cout<<"te same"<<endl;
  } else {
    cout<<"nie takie same"<<endl;
  }
  system("pause");
  return 0;
 }

no i w warunku masz = zamiast ==

0
raven168in1 napisał(a):

Tablica [20] liczb naturalnych, program sprawdza, czy w tablicy na pozycjach
parzystych występują te same liczby co na pozycjach nieparzystych

Albo to zadanie jest niedoprecyzowane, albo masz zły algorytm.
Jeśli masz sprawdzać czy jakiś element na pozycji parzystej jest równy elementowi na pozycji nieparzystej, to musisz porównać ten element z pozycji parzystej z każdym elementem na pozycji nieparzystej. Jeśli są równe to wtedy wyświetlasz komunikat.
W tym momencie, Twój algorytm porównuje dwa sąsiednie elementy. A co, jeśli na pozycji drugiej jest ten sam element, co na pozycji jedenastej?

0

dzieki za odpowiedzi dawidgarus , int flaga mozna zastapic bool' em , tak ? A te break to po co , bo nie wiem ? Ale czy ta wersja co napisałeś porównuje liczby np. 4 i 9 tak jak pisze allocer czy tylko sasiednie liczby ? allocer a co mozna tu zmienic zeby była taka własnie wersja , która porównuje nawet te nie sąsiadujące liczby?

0
raven168in1 napisał(a):

allocer a co mozna tu zmienic zeby była taka własnie wersja , która porównuje nawet te nie sąsiadujące liczby?

Oczywiście, że można, a nawet trzeba jeśli Ci o to chodzi :).
Musisz zagnieździć dodatkową pętlę for w aktualnej. Wtedy każdy element na pozycji parzystej porównujesz najpierw z wszystkimi elementami z pozycji nieparzystych, a następnie przechodzisz do następnego elementu na pozycji parzystej.

Na szybko, coś takiego (nie testowałem):

#include<iostream>

int main(){

    int tab[20] = {2, 2, 2, 3, 3, 4, 5, 6, 7, 7, 8, 8, 9, 9, 10, 11, 11, 12, 4 , 15};    
    for(int i = 1; i <= 20; i += 2){
        for(int j = 0; j < 20; j += 2)
            if(tab[i] == tab[j])
                std::cout<<"Elementy takie same na pozycjach: "<< i <<" "<< j <<"\n";
    }
}

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