ageska Opublikowano 25 Marca 2007 Zgłoś Opublikowano 25 Marca 2007 Mam do zrobienia zadanko, w ktorego treści występuje "Liczby tablicy łączymy w pary: pierwszą z ostatnią, drugą z przedostatnią, itd. Każdą taką parę sumujemy i sprawdzamy, czy otrzymana suma jest liczbą pierwszą." Mam problem z tym, ze nie wiem jak oznaczyć tę ostatią liczbę. Możę ktoś mi pomóc?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Linoge Opublikowano 25 Marca 2007 Zgłoś Opublikowano 25 Marca 2007 (edytowane) suma w petli suma:=0 for i=1 to n/2 do suma:=a+a[n-i+1] no tak mi sie wydaje edit tylko nie pamietam od jakiej liczby sa indeksowane tablice w pascalu dla wielowymiarowych mozna zrobic analogicznie Edytowane 25 Marca 2007 przez Linoge Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ULLISSES Opublikowano 25 Marca 2007 Zgłoś Opublikowano 25 Marca 2007 (edytowane) Jak by nie patrzeć, to musisz znać długość tablicy. Długość tablicy zapisz sobie podczas wprowadzania danych. Nawet jak tablica będzie dłuższa, to będziesz wiedział, ile cyfr jest wprowadzone. Więc masz (ostrzegam, że pascala nie widziałem na oczy parę ładnych lat): x := dlugosc_tab/2;for i:=0 to x dobeginsuma := tab[i] + tab[dlugosc_tab-1-i];czy_jest_pierwsza(suma); <- tu wywolanie funckji sprawdzania, czy to jest liczba pierwszaend;Wyjaśnie "dlugosc_tab-1-i": e1 e2 e3 e4 e5 e6 <- elementy _0 _1 _2 _3 _4 _5 <-indeksy Początkowo i=0, więc tab=tab[0]=e1 tab[dlugosc_tab-1-i]=tab[6-1-0]=tab[5]=e6 Potem i=1, więc tab=tab[1]=e2 tab[dlugosc_tab-1-i]=tab[6-1-1]=tab[4]=e5 W przypadku nieparzystej długości tablicy przed wykonaniem dzielenia (całkowitego) "dlugosc_tab/2" od dlugosc_tab należy odjąć 1, aby dzielenie się wykonało. Po zakończoniu pętli natomiast trzeba dodać: i:=i+1;czy_jest_pierwsza(tab[i]); Edytowane 25 Marca 2007 przez ULLISSES Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ageska Opublikowano 26 Marca 2007 Zgłoś Opublikowano 26 Marca 2007 Mogłby mi to ktos sprawdzic?? Dane jest ziarno generatora z z zakresu 1..10000. Wygeneruj tablicę A zawierającą 1000 liczb całkowitych Liczby tablicy łączymy w pary: pierwszą z ostatnią, drugą z przedostatnią, itd. Każdą taką parę sumujemy i sprawdzamy, czy otrzymana suma jest liczbą pierwszą. Wejście Pierwszy wiersz wejścia zawiera liczbę całkowitą z z zakresu 1..10000. Wyjście Pierwszy wiersz wyjścia powinien zawierać jedną liczbę całkowitą: wyznaczoną ilość sum, które są liczbami pierwszymi. W wierszu drugim należy zapisać najmniejszą z otrzymanych liczb pierwszych lub liczbę 0, gdy żadna z sum nie była liczbą pierwszą. program tab06; var a:array[1..10000] of integer; d,i,n,sum,min,sump,p: integer; x:longint; begin readln(n); for i:=1 to n do readln(a); begin; x:=n/2; for i:=0 to x do begin; sum:=a+a[n-1-i]; end; end; for i:=1 to n do p:=0; begin; for d:=2 to trunc(sqrt(sum)) do begin; if (sum mod d)=0 then p:=1; break; end; end; begin; sump:=0; if p=0 then sump:=sump +1 else writeln(a, ' nie jest liczba pierwsza'); end; begin; min:=1; if sum<min then min:=sum; if sump=0 then min:=0; end; writeln('ilosc sum, ktore sa liczbami pierwszymi to',sump); writeln('najmniejsza suma ktora jest liczba pierwsza to',min); readln; end. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 26 Marca 2007 Zgłoś Opublikowano 26 Marca 2007 gdyby ten kod miał jeszcze wcięcia zgodne z "polskimi normami" to by ułatwiło sprawę sprawdzającym... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...