suma liczb mniejszych od n i zarazem względnie pierwszych z n

0

Witam ponownie. Coś pokręciłem w programie.
Treść zadania jest taka:
"Napisz program, który wczytuje ze standardowego wejścia nieujemną liczbę całkowitą n i wypisuje na standardowym wyjściu sumę
liczb mniejszych od n i zarazem względnie pierwszych z n. Algorytm
wyliczania sumy podziel na dwie funkcje."
Na razie nie interesuje mnie dzielenie na dwie funkcje wyliczania sumy,ale o całą resztę zadania.
Oto kod programu który napisałem, ale się pogubiłem, i nie wiem co poprawić.

//biblioteki(dyrektywy):
#include<cmath>
#include<conio.h>//pozwala wywołać funkcję getch();
#include<cstdio>
#include<cstdlib>//pozwala wywołać system("pause");
#include<fstream>
#include<iostream>//pozwala pisać za pomocą cout<<"";//obsługa strumieni I/O
#include<iomanip>
#include<locale>
#include<math.h>
#include<sstream>
#include<stdio.h>//standardowa obsługa wejscia/wyjscia
#include<stdlib.h>
#include<string>
#include<time.h>
#include<windows.h>
#include<cwctype>
#include<cwchar>
#include<clocale>
using namespace std;
int suma(int liczba){
int i=0;
int cyfra_mniejsza_od_n=liczba-1;
int liczby_pierwsze[i];
int suma_liczb_pierwszych=0;
for(cyfra_mniejsza_od_n; cyfra_mniejsza_od_n>1; cyfra_mniejsza_od_n--){
	if((cyfra_mniejsza_od_n%2!=0 && cyfra_mniejsza_od_n%3!=0 && cyfra_mniejsza_od_n%5!=0) || cyfra_mniejsza_od_n==2 || cyfra_mniejsza_od_n==3){
		liczby_pierwsze[i]=cyfra_mniejsza_od_n;
		i++;
	}
}
for(i; i>=0; i--){
	suma_liczb_pierwszych=suma_liczb_pierwszych+liczby_pierwsze[i];
}
return suma_liczb_pierwszych;
}
int main(){
	int n;
cout<<"Podaj liczbe n: ";
cin>>n;
cout<<"suma liczb mniejszych od "<<n<<" i zarazem wzglednie pierwszych z "<<n<<" wynosi: "<<suma(n);
  system("pause");
  return 0;
}

Proszę o wskazówkę co jest nie tak?

0

Zacząłbym od zdecydowania czy piszesz w C++, czy C, bo ten kod to jakaś nędzna mieszanka obydwu.

0

A mógłbyś jaśniej? O co chodzi?
Co jest z języka C?
Rozchodzi się o dyrektywy include?

0

Co jest z języka C?

#include<math.h>
#include<stdio.h>//standardowa obsługa wejscia/wyjscia
#include<stdlib.h>
#include<time.h>
int liczby_pierwsze[i];

Plus parę rzeczy tak przy okazji:

  • dziwne nazwy zmiennych
  • beznadziejne formatowanie
  • znacznie zbyt duża liczba dyrektyw include
  • system("pause");

Btw, najpierw tworzysz tablicę mającą zero elementów, a potem po niej mażesz. To zapewne jest błędem.

0

To co powinienem zamiast tego dać? Z jakiego kursu powinienem się uczyć według ciebie?
Nie szukałem kursów c tylko c++, i to co w moim programie jest, to właśnie z tych kursów.
Bo ja już nie wiem w końcu z jakiego kursu mam się uczyć.

0

Bo ja już nie wiem w końcu z jakiego kursu mam się uczyć.

Z książek...
No i http://www.cplusplus.com/doc/tutorial/ ofc. :P

0

Ja bym nie fatygowałem się z odpowiedziami, koleś wszystkie odpowiedzi ma gdzieś: http://4programmers.net/Forum/Szukaj?q=pozwala+wywo%C5%82a%C4%87+funkcj%C4%99+getch

0

Najpierw napisz sobie funkcję int nwd(int a, int b); największy wspólny dzielnik, dalej będzie już z górki.

0

W sumie, to chyba rzeczywiście będzie lepiej jak kupię książkę, a nie żebym korzystała z tych internetowych kursów. Innego wyjścia chyba nie ma. Wszystko mi się myli

0

Jeżeli chciałeś użyć wszystkich nagłówków z biblioteki standardowej, to trochę Ci brakło..
Na twoim miejscu zaczął bym tutaj http://www.cplusplus.com/reference/

0

to zrób sobie plik wszystko.h o takiej treści:

#include<cmath>
#include<conio.h>//pozwala wywołać funkcję getch();
#include<cstdio>
#include<cstdlib>//pozwala wywołać system("pause");
#include<fstream>
// etc.

a w programie zrób tylko

#include "wszystko.h"

i będzie wiadomo co to robi, a nikomu oczu nie wykłuje...

0

... lub naucz się, które funkcje znajdują się w których nagłówkach.
Niekoniecznie od razu wszystkie na pamięć - po prostu nie kopiuj za każdym razem 'na pałę' tych wszystkich, a myśl, które będą Ci przydatne w danym programie.

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