Forum elektroda.pl

Regulamin  | Punkty  | Dodaj...  | Ostatnie  | Szukaj  | Rejestracja  | Zaloguj

Ta strona używa cookie. Dowiedz się więcej o celu ich używania i zmianie ustawień cookie w przeglądarce.
Korzystając ze strony wyrażasz zgodę na używanie cookie, zgodnie z aktualnymi ustawieniami przeglądarki.

wyswietlanie elementow tablicy


Napisz nowy temat  Temat zablokowany      Strona Główna -> Forum elektroda.pl -> Programowanie Ogólne -> wyswietlanie elementow tablicy
Autor
Wiadomość
Raulpg
Poziom 12
Poziom 12


Dołączył: 19 Gru 2005
Posty: 87
Miasto: Olsztyn

Post#1 Post autora tematu 17 Gru 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.


Kod:


#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;
}





Powrót do góry
   
Google


Google Adsense


Post# 17 Gru 2010 00:20   





Powrót do góry
   
voland
Poziom 13
Poziom 13


Dołączył: 07 Kwi 2003
Posty: 114
Miasto: Poznań

Post#2 17 Gru 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
Kod:
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
Kod:
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:
Kod:


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]);
   }
}

Powrót do góry
   
Google


Google Adsense


Post# 17 Gru 2010 01:59   





Powrót do góry
   
Raulpg
Poziom 12
Poziom 12


Dołączył: 19 Gru 2005
Posty: 87
Miasto: Olsztyn

Post#3 Post autora tematu 17 Gru 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.
Powrót do góry
   
Google


Google Adsense


Post# 17 Gru 2010 20:28   





Powrót do góry
   
Raulpg
Poziom 12
Poziom 12


Dołączył: 19 Gru 2005
Posty: 87
Miasto: Olsztyn

Post#4 Post autora tematu 18 Gru 2010 21:38   

Re: wyswietlanie elementow tablicy


juz sobie sam poradzilem, dziala jak chcialem
Powrót do góry
   
Napisz nowy temat  Temat zablokowany      Strona Główna -> Forum elektroda.pl -> Programowanie Ogólne -> wyswietlanie elementow tablicy
Strona 1 z 1
Podobne tematy
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 || Moderatorzy || Regulamin forum || Regulamin ogólny || Informacja o cookies || Reklama || Kontakt

Page generation time: 0.047 seconds

elektroda.pl temat RSS