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

Poczatki w c++

VPS Starter Arubacloud
0 głosów
1,424 wizyt
pytanie zadane 22 października 2017 w C i C++ przez Krystian01 Nowicjusz (150 p.)
edycja 22 października 2017 przez Arkadiusz Waluk

Witam, postanowiłem nauczyc sie programowac w c++. To jest pierwszy jezyk jakiego sie ucze wiec prosze o wyrozumiałosc.

#include <iostream>

using namespace std;
int przedmioty;
float ocena [5],srednia,suma=0;
int main()
{
    cout << "Ile masz Przedmiotow:" << endl;
    cin>>przedmioty;
        for (int i=0;i<5;i+1)
           {
            cout<<"Podaj "<<i+1<<" ocene:"<<endl;
            cin>>ocena[i];
            suma=suma+ocena[i++];
           }
   srednia=suma/5;
   cout<<"srednia="<<srednia<<endl;

    return 0;
}

To napisałem z poradnikiem z yt z kanału Pasja Informatyki, ale chciałbym zeby po wpisaniu liczby przedmiotow, ta liczba wskoczyła na miejsce x, da rade tak zrobic?

float ocena [x]

 

komentarz 22 października 2017 przez Milesq Nałogowiec (32,020 p.)
jest specjalny bloczek do wstawiania kodu
1
komentarz 22 października 2017 przez Aisekai Nałogowiec (42,190 p.)
https://www.youtube.com/watch?v=0DQl74alJzw <--- O coś takiego Ci chodziło?
komentarz 22 października 2017 przez Milesq Nałogowiec (32,020 p.)

w pętli for masz coś takiego 

for (int i=0;i<5;i+1)

powinno być 

for (int i=0;i<5;i = i+1)
albo
for (int i=0;i<5;i++)

komentarz 22 października 2017 przez Krystian01 Nowicjusz (150 p.)
edycja 22 października 2017 przez Krystian01
Tak! wielkie dzieki :) a w petli jak robie tak jak Ty mi napisałes zwieksza mi sie o 2, nie wiem dlaczego :/

2 odpowiedzi

+1 głos
odpowiedź 22 października 2017 przez Gynvael Coldwind Nałogowiec (26,850 p.)

Standardowy disclaimer: C++ jak pierwszy język brzmi hardcore'owo ;) Może Python?

Ad meritum:

Możesz użyć wektora:

#include <vector>
#include <iostream>

int main(void) {
  std::vector<float> grades;
  // Przyjelo sie stosowac angielskie nazwy

  unsigned int grade_count;
  // Lepiej unsigned int; a najlepiej size_t.

  // Uproszczone pobieranie, ale ujdzie na poczatek.
  std::cin >> grade_count;  

  // Zmiana wielkosci wektora grades.
  grades.resize(grade_count);

  // Ponizej mozna uzyc grades.size() albo grade_count, na 
  // jedno wyjdzie, ale chyba troche lepiej bedzie uzyc tego
  // pierwszego.
  for (unsigned int i = 0; i < grades.size(); i++) {
    std::cin >> grades[i];  // Pobranie.
  }

  for (unsigned int i = 0; i < grades.size(); i++) {
    std::cout << grades[i] << " ";
  }

  std::cout << std::endl;
  return 0;
}

Ah, i widziałem, że wyżej ktoś pisał o wskaźnikach i dynamicznej alokacji pamięci - dużo lepszym pomysłem jest używanie rozwiązań typu std::vector, które to robią w tle (o ile się oczywiście da).

komentarz 22 października 2017 przez Krystian01 Nowicjusz (150 p.)
Python, próbowałem ale jakoś nie mogłem sobie wyobrazić do czego mógłbym w przyszłości wykorzystać ten jerzyk i dlatego przerzuciłem sie na C++, jestem w 1 klasie technikum wiec mam dużo czasu na naukę programowania :)

A z tego z Ty mi napisałeś dużo nie zrozumiałem uczę się tego od wczoraj wiec jak na razie nie jestem aż tak zaawansowany, ale dzięki za pomoc!
komentarz 22 października 2017 przez Gynvael Coldwind Nałogowiec (26,850 p.)

Zauważ, że ten mój kod jest bardzo podobny do Twojego, z kilkoma różnicami:

  • Powrzucałem std:: w kilka miejsc - to taki "dobry nawyk", ale początkujący (zresztą nie tylko) często wolą pisać using namespace std; gdzieś na górze programu, więc de facto te "std::" możesz zignorować.
  • "vector<float> asdf" to taka trochę bardziej automatyczna wersja tablicy (float asdf[5]), której możesz dynamicznie (w czasie działania programu) zwiększać wielkość korzystając z metody resize(liczba_elementów).

I w sumie tyle ;) Ten wektor się używa prawie tak samo jak tablicę w wielu wypadkach.

W każdym razie powodzenia :)

0 głosów
odpowiedź 22 października 2017 przez Szahid Pasjonat (20,930 p.)
edycja 22 października 2017 przez Szahid

To co napisał przedmówca jest bardzo wygodnym rozwiązaniem ale do tego musisz znać  element biblioteki STL jakim jest vector. Uważam że uczenie się takich rzeczy na początku nie jest dobre bo nie będziesz rozumiał jak dane procesy funkcjonują. 

Twój problem polega na tym że w c++ ilość elementów tablicy musi być znana przed uruchomieniem programu. Lekarstwem na to jest " Dynamiczny przydział pamięci". W koleinych etapach nauki dowiesz się czym różni się od automatycznego.

Aby zrobić tablicę której wielkość poda użytkownik możesz użyć takiego kodu 

//...

cout<<"Podja ilosc elementow tab"<<emdl;
int ilosc;
cin>>ilosc;

int* tab=new int [ilosc];

Jeden z odcinków MZ o c++ jest o tym także nie wyprzedzaj i cierpliwie przebrnij przez ten kurs a powyższy kod będzie dla Ciebie zrozumiały. 

 

EDIT

Znalazłem odcinek który Ci pomoże. Jest to odc nr 10

https://www.youtube.com/watch?v=0DQl74alJzw&index=11&list=PLOYHgt8dIdoxx0Y5wzs7CFpmBzb40PaDo

Swoją drogą zobacz kim jest osoba która odpowiedziałą Ci pierwsza na pytanie. Tworzy bardzo wartoścowy kontent i gorąco polecam Ci zapoznanie się z nim. Ale to jak będziesz znał już trochę cpp i maił jakieś pojęcie jak działają sytemy i sam komputer

Podobne pytania

0 głosów
2 odpowiedzi 847 wizyt
pytanie zadane 12 października 2017 w C i C++ przez Dawid98 Użytkownik (830 p.)
0 głosów
1 odpowiedź 246 wizyt
pytanie zadane 19 maja 2021 w C i C++ przez ViniVici Początkujący (300 p.)
0 głosów
1 odpowiedź 23,839 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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!

...