Forum Index

Rules  | Points  | Add...  | Recent posts  | Search  | Register  | Log in

This site uses cookies. Learn more about cookies and changing the settings in your browser.

wyswietlanie elementow tablicy


Post new topic  This topic is locked      Main Page -> Forum Index -> Programming Generally -> wyswietlanie elementow tablicy
Author
Message
Raulpg
Poziom 12
Poziom 12


Joined: 19 Dec 2005
Posts: 87
Location: Olsztyn

Post#1 Post from the author of the topic 17 Dec 2010 00:20   

wyswietlanie elementow tablicy


Na wstepie dodam co ma robic program. Ma wyswietac numer wiersza oraz wartosc funkcji gdy ilosc wierszy nie przekracza 20. Gdy jest ich 20 lub wiecej ma wyswietlac ostatnie 20 wynikow oraz dodatkowo:

- po nacisnieciu "tab" - ostatnie 20 wynikow
- po nacisnieciu "backspace" - pierwsze 20 wynikow
- po nacisnieciu "strzaka w prawo" - 20 nastepnych wynikow
- po nacisnieciu "strzaka w lewo" - 20 poprzednich wynikow
- po nacisnieciu "strzaka w gore" - 20 kolejnych wynikow dla liczby wierszow--
- po nacisnieciu "strzaka w dol" - 20 kolejnych wynikow dla liczby wierszow++

Problem ktory napotkalem jest nastepujacy: ponizszy kod dziala tylko raz tzn. po wcisnieciu np. strzalki w lewo za pierszym razem pokazuje mi co trzeba, ale gdy ja wciskam kolejny raz - nic to nie daje, a powinno sie zmieniac w analogiczny sposob. Gdzie poprawiac i jeszcze pytanie czy da sie ponizszy program bardziej uproscic, bo wiekszosc elementow sie powtarza, zmieniaja sie jedynie ograniczenia na wyswietlanie.


Code:


#include <iostream>
#include <conio.h>

int main()
{

int i,n=97,k=20, x[n], wybierz;

for (i=0;i<n;i++)
    {
       x[i]=2*i;
       if (n>=20)
       {
          for (i=n-19;i<=n;i++)
              {
                  x[i]=2*i;
                  printf("\n %d    |      %d",i, x[i]);
              }
       }
       else printf("\n %d    |      %d",i, x[i]);
    }

    do
      {
         wybierz = getch();
         switch (wybierz)
           {
              case 75:
                   system("cls"); // 20 rekordow-- STRZALKA W LEWO
                   for (i=n-2*k;i<=n-k;i++)
                       {
                           x[i]=2*i;
                           printf("\n %d    |      %d",i, x[i]);
                       }
                   break;
              case 77:
                   system("cls"); // 20 rekordow++ STRZALKA W PRAWO
                   for (i=n+2*k;i<=n+k;i++)
                       {
                           x[i]=2*i;
                           printf("\n %d    |      %d",i, x[i]);
                       }
                   break;
              case 72:
                   system("cls"); // rekord-- STRZALKA W GORE
                   for (i=n-19-1;i<=n-1;i++)
                       {
                           x[i]=2*i;
                           printf("\n %d    |      %d",i, x[i]);
                       }
                   break;
              case 80:
                   system("cls"); // rekord++ STRRZALKA W DOL
                   for (i=n-19+1;i<=n+1;i++)
                       {
                          x[i]=2*i;
                          printf("\n %d    |      %d",i, x[i]);
                       }
                   break;
              case 8:
                   system("cls"); // start BACKSPACE
                   for (i=0;i<k;i++)
                       {
                          x[i]=2*i;
                          printf("\n %d    |      %d",i, x[i]);
                       }
                   break;
              case 9:
                   system("cls"); // koniec TAB
                   for (i=n-19;i<n;i++)
                       {
                          x[i]=2*i;
                          printf("\n %d    |      %d",i, x[i]);
                       }
                   break;
           }
      }

    while (wybierz != 27);

return 0;
}





Helpful message? + -

Back to top
   
Google


Google Adsense


Post# 17 Dec 2010 00:20   





Back to top
   
voland
Poziom 13
Poziom 13


Joined: 07 Apr 2003
Posts: 114
Location: Poznań

Post#2 17 Dec 2010 01:59   

Re: wyswietlanie elementow tablicy


ogólnie nie do końca rozumiem co ma robić twój program.
Masz 27 elementow tablicy i wyświetla ostatnie 20 zatem jeśli naciśniesz strzałkę w lewo to ma wyświetlić od 0-7 czy od 0-20? tak czy owak widzę że twój program próbuje wyświetlić od
Code:
i=n-2*k;
czyli jakieś 27-40=-13 do n-k czyli 7, oczywiście próba wpisania jakiejkolwiek liczby pod ten index tablicy
Code:
x[-13]=-26;
musi zakończyć się zawieszeniem programu albo brakiem reakcji programu.

Dodano po 7 [minuty]:

dodatkowo jeśli chcesz uprościć kod można to zrobić na przykład tak:
Code:


do {
   wybierz = getch();
   int od, do_;
   switch (wybierz) {
      case 75:
         od=n-2*k; do_=n-k;
         break;
      case 77:
         od=n+2*k; do_=n+k;
         break;
      case 72:
         od=n-19; do_=n-1;
         break;
      case 80:
         od=n-19+1; do_ =n+1;
         break;
      case 8:
         od=0; do_=k-1;
         break;
      case 9:
         od=n-19; do_=n-1;
         break;
   }
   system("cls");
   for (i=od;i<=do_;i++) {
      x[i]=2*i;
      printf("\n %d    |      %d",i, x[i]);
   }
}

Helpful message? + -

Back to top
   
Google


Google Adsense


Post# 17 Dec 2010 01:59   





Back to top
   
Raulpg
Poziom 12
Poziom 12


Joined: 19 Dec 2005
Posts: 87
Location: Olsztyn

Post#3 Post from the author of the topic 17 Dec 2010 20:28   

Re: wyswietlanie elementow tablicy


już zmieniłem n=97 i tak na starcie w tym wypadku ma wyświetać 20 ostatnich wynikow czyli od 78 do 97. Gdy raz nacisne strzalke w lewo ma wyswietlac wyniki od 58 do 77. Gdy drugi raz nacisne strzalke w lewo ma wyswietlac od 38 do 57 itd. Mam na razie zrobione tak, ze za kazdym razem gdy wciskam strzalke w ewo wyswietla mi wyniki od 58 do 77. Analogicznie jest z innymi kawiszami (poza TAB i BACKSPACE - one dziaaja dobrze). Co do przekroczenia zakresow - wiem, ze sa bledy, ale mysle ze bede w stanie sie z tym uporac. Najwazniejsze jest by roziazac ten problem ze strzalkami, by program zapamietywal bierzace pozycje i w oparciu o nie tworzyl dalsze wyswietlanie.

Helpful message? + -

Back to top
   
Google


Google Adsense


Post# 17 Dec 2010 20:28   





Back to top
   
Raulpg
Poziom 12
Poziom 12


Joined: 19 Dec 2005
Posts: 87
Location: Olsztyn

Post#4 Post from the author of the topic 18 Dec 2010 21:38   

Re: wyswietlanie elementow tablicy


juz sobie sam poradzilem, dziala jak chcialem

Helpful message? + -

Back to top
   
Post new topic  This topic is locked      Main Page -> Forum Index -> Programming Generally -> wyswietlanie elementow tablicy
Page 1 of 1
Similar topics
Kombinacja elementow z tablicy - jezyk C (1)
perl - zapisywanie elementow do tablicy (1)
[C++]Przypisanie elementow tablicy jako wspolrzedne oraz obliczenie odleglosci (2)
C++ - Średnia elementów tablicy i licznik wartości w tablicy (5)
VBA - Znalezienie wartości w tablicy i zwrot tablicy (5)
c++ - Deklaracja tablicy wskaznikow do tablicy znakowej (2)


Administrator || Moderators || Forum Rules || General Rules || Cookies information || Contact

Page generation time: 0.056 seconds

elektroda.pl topic RSS feed