• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem w zadaniu C++

VPS Starter Arubacloud
+1 głos
273 wizyt
pytanie zadane 10 czerwca 2021 w C i C++ przez Chuuudv Nowicjusz (130 p.)

Witam was. Dostałem na zadanie od Pani program który muszę dzisiaj wysłać do 18 żeby dostać 4 na koniec roku. Próbowałem go rozwiązać, ale jestem łosiem z programowania i coś nie działa... chodzi o zadanie 2.

 

 

tutaj to co udał

#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cmath>

using namespace std;

void pauzy()
{
	for(int i=0;i<=88;i++)
	{
		cout<<"-";
	}
}

int main() 
{
int q,w,z,n,licznik,l;
n=1000;
int T[n+1];
cout<<"tablica z liczbami pierwszymi"<<endl;
cout<<endl;
pauzy();
cout<<endl<<endl;
for(int i=2;i<=n;i++)
{
    T[i]=i;

}
q=sqrt(n);
for(int i=2;i<=q;i++)
{
  if(T[i]!=0)
  {
    w=2*i;
    while(w<=n)
    {
        if(T[w]!=0)
        T[w]=0;

        w=w+i;
    }
  }
}
licznik=0;
for(int i=2;i<=n;i++)
{
   if(T[i]!=0)
    {
    licznik=licznik+1;
    if(licznik%15==0)
    	cout<<setw(5)<<T[i]<<endl;
    else
        cout<<setw(5)<<T[i]<<",";
    }
}
cout<<endl;
pauzy();
cout<<endl<<endl;
cout<<"tablica z wygenerowanymi liczbami"<<endl;
cout<<endl;
pauzy();
cout<<endl<<endl<<endl;;

return 0;
}

komentarz 10 czerwca 2021 przez Chuuudv Nowicjusz (130 p.)
przeniesione 10 czerwca 2021 przez Arkadiusz Waluk

jeszcze jedno zdjęcie się nie wysłało 

komentarz 10 czerwca 2021 przez adrian17 Ekspert (344,100 p.)

i coś nie działa

Nigdzie nie napisałeś co nie działa, więc nawet gdyby ktoś chciał pomóc, to nie wie z czym.

Liczby pierwsze z pierwszego screenshota wyglądają poprawnie, a kodu generującego drugi screenshot nie wrzuciłeś.

komentarz 10 czerwca 2021 przez Chuuudv Nowicjusz (130 p.)

Fakt. Do tego momentu wszystko działa poprawnie. Kolejną część nie za bardzo wiem jak zrobić. Jak wprowadzić drugą tablicę do programu? Kiedy próbowałem int T[n] wyskakiwał błąd. Postanowiłem zrobić to w nowym pliku. Napisałem i nie wyświetla mi wyniku. n to ma być ilość liczb w tablicy w przedziale (5,200) więc powinienem to zapisać n=(rand()%195)+5 ? Tablica przyjmuje wartości z przedziału (4,1000) więc zapisuje to T[i]=(rand()%996)+4? I teraz skoro tablica ma mieć n elementów to w pętli powinno być for(int i=0 ; i<=n ; i++) to po co mam i ma przedział <0,200)?. Jak już wyświetli n elementów i ich wartości to jak mam znaleźć najmniejszą z nich?

#include <iostream>
#include <iomanip>
#include <ctime>
#include <cmath>
#include <cstdlib>

using namespace std;

int main()
{
    int n,l;
    int T[n];
	srand(time(NULL));
	n=(rand()%195)+5;
for(int i=0;i<=n;i++)
{
	T[i]=(rand()%996)+4;
}

l=0;

for(int i=0;i<=n;i++)
{
    if(T[i]!=0)
    {
        l=l+1;
        if(l%9==0)
          cout<<setw(5)<<"["<<l<<"]="<<T[i]<<endl;
        else
          cout<<setw(5)<<"["<<l<<"]="<<T[i]<<",";
    }
}

    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 10 czerwca 2021 przez TOM_CPP Pasjonat (22,640 p.)

To czego potrzebujesz aby rozwiązać to zadanie, jest użycie dynamicznych tablic, których rozmiar może być ustalony już po uruchomieniu programu ( dynamicznie ). Możesz do tego celu użyć operatora new i pamiętać o późniejszym zwolnieniu pamięci ( delete ), lub też użyć tablicy dynamicznej z biblioteki STL - std::vector.

Poniżej przykład:

#include <iostream>
#include <vector>

using namespace std;

int is_prime( int number )
{
    if( number <= 1 ) return false;
    for( int i {2} ; i<number ; ++i ) if( number%i == 0 ) return false;

    return true;
}

int find_index_of_lowest_prime_number( const vector<int>& data )
{
    int minimum_prime {1000};
    int result {-1};

    for( size_t index {0} ; index<data.size() ; ++index )
    {
        if( is_prime(data[index]) && data[index]<minimum_prime )
        {
            minimum_prime = data[index];
            result = index;
        }
    }

    return result;
}

int main()
{
    vector<int> data {6,24,10,18,11,34,222,998};
    cout << find_index_of_lowest_prime_number(data) << endl;
}

 

komentarz 10 czerwca 2021 przez Chuuudv Nowicjusz (130 p.)
Da się to napisać jakoś prościej? Programowanie mam od 3 miesięcy i gubię się w tym :(

Podobne pytania

+1 głos
1 odpowiedź 353 wizyt
pytanie zadane 9 grudnia 2020 w C i C++ przez amik.wafelek Nowicjusz (170 p.)
0 głosów
1 odpowiedź 168 wizyt
0 głosów
1 odpowiedź 140 wizyt
pytanie zadane 27 marca 2020 w C i C++ przez g34g3gdfg43 Początkujący (300 p.)

92,452 zapytań

141,262 odpowiedzi

319,079 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...