Wyznaczenie największej i najmniejszej liczby nipodzielnej przez 2, 3, 5, 7

0

Mam wypisać naiwiekszą liczbę niepodzielną przez 2, 3, 5, 7 (zakres 1-1000)

Mój kod wygląda mniej wiecej tak:

#include<stdio.h>
int main()

{
int max,min, i, tab[999]
min = tab[0];
max = tab[0];
for(i=1;i<1000;i++){
if(i%210 !=0){
if(tab[i]>max){
tab[i]=max;
}
if(tab[i]<min){
tab[i]=min;
}
printf("%d", max);

return 0;
}

Program się odpala, ale pokazuje bzdury. Prosze mi wybaczyć, jeśli są tu jakieś herezje, ale po prostu jeszcze nie do konca ogarniam tablice

1

Poprawiłem wcięcia (polecam używać) i może teraz zobaczysz parę błędów:

#include<stdio.h>

int main() {
    int max,min, i, tab[999]
        min = tab[0];
    max = tab[0];

    for (i = 1; i < 1000; i++) {
        if (i % 210 != 0) {
            if (tab[i] > max) {
                tab[i] = max;
            }
            if (tab[i] < min) {
                tab[i] = min;
            }
            printf("%d", max);

            return 0;
        }
0

Nawiasy na pewno. Ja to przepisywałam, bo robię to w Oracle Boxie i nie wiem jak to skopiować do schowka na Windowsie jakby. W sensie kopiuję, ale to się zapisuje w schowku na Oracle.

Czy ja tu powinnam wprowadzić funkcje?

0

U mnie się kompiluje, bo mam wszystko zapisane z nawiasami poprawnie, to przepisywałam na szybko, zeby był głowny zarys :)
Nie wiem jak to skopiować z Oracle Boxa, ktoś da radę tez z tym mi pomoc? Jak kopiuje to wszystko zapisuje się w systemie linux w oracle boxie

1

tab[999] ma indeksy od 0 do 998 a Ty sobie iterujesz od 1 do 1000.
W ogóle to po co ci tablica? Masz wypisać 2 liczby tylko.
Największa to będzie pierwsza spotkana idąc od 1000 więc możesz iterować "od tyłu" i wypisać po prostu pierwszą znalezioną, najmniejsza odwrotnie.

0

W sumie o tym nie pomyślałam... Tablice wzięłam po to, żeby się ich pouczyć trochę. Dopiero zaczynam,więc temat jest dla mnie trudny :)

0

No to szybko się naucz, bo niebawem dział zostanie zlikwidowany :)

1

Zobacz ile razy wykona Ci się pętla. No i ten warunek z mody po 210... Z treści chyba nie wynika, że to ma być iloczyn liczb?

0

teraz program działa i chyba prawdiłowo.
Podaję kod skrótowy:

for(i=999; i>1;i--)
{
if(i%210!=0)
{
printf("%d",i);
break;
}
}

for(i=1; i<100;i++)
{
if(i%210!=0)
{
printf("%d",i);
break;
}
}

Wynik min = 1 i wynik max = 999. Czy teraz instrukcje warunkowe są poprawnie sformułowane?

0

No zastanówmy się przez chwilę. Jakby tak np. sprawdzić czy 999 nie dzieli się przez żadną podaną liczbę? Nie wiem, ale wydaje się to niegłupie. :P

0

Ale z Was śmieszki! Nie pamięta wół jak cielęciem był? :D
Chciałam, żebyście też sprawdzili po prostu zapis, jak na profesjonalistów przystało :)

1

A ja żebyś spróbowała podzielić 999 przez 3.

0

Jesli liczba ma nie być podzielna przez 2 i 3 to robisz taki warunek
IF( i%2!=0 && i%3!=0)
nie mnożysz liczb badając podIelność przez 6 bo np. 15 dzieli się przez 3 ale przez 6 już nie.
Musisz użyć operatorów logicznych.

2

@wokalove: zasadnicze pytanie jest: deklarujesz sobie tablicę tab[999], ale co jest w środku tej tablicy? Jakie wartości mają te komórki w pamięci? Skąd się te wartości biorą?

0

Dziękuję bardzo! Już ogarnęłam, i zmienilam warunek w ifie.
A ktoś mógłby mi napisać jakby to wyglądało z tablicami? W tym temacie jestem zielona. Wiem, że tablica musi zawierać w klamrach jakieś elementy, ale przecież nie będę wypisywala wszystkich do 1000 :/

0

To zrób pętle a w niej tab[i] = i + 1 i tyle. BTW dziwny pomysł iterowac po tej tablicy skoro te same wartości masz w zmiennej i w pętli.

0

Ja serio jestem początkująca i mam strasznie słabego prowadzącego, dlatego mówiłam, że mogą być tam herezje. Czasem mam pomysł, ale po prostu nie umiem tego dobrze zapisać, bo nie wiem dokładnie za co dana funkcja odpowiada. Tak wiem, jest internet, ale pewne rzeczy trzeba przeczytać sto razy xd

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