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

Problem w zadaniu C++

+1 głos
97 wizyt
pytanie zadane 10 czerwca 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 przez Chuuudv Nowicjusz (130 p.)
przeniesione 10 czerwca przez Arkadiusz Waluk

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

komentarz 10 czerwca przez adrian17 Ekspert (294,640 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 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 przez TOM_CPP Pasjonat (16,220 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 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ź 99 wizyt
pytanie zadane 9 grudnia 2020 w C i C++ przez amik.wafelek Nowicjusz (170 p.)
0 głosów
1 odpowiedź 46 wizyt
0 głosów
1 odpowiedź 83 wizyt
pytanie zadane 27 marca 2020 w C i C++ przez g34g3gdfg43 Początkujący (300 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

83,606 zapytań

132,261 odpowiedzi

291,761 komentarzy

55,206 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...