Простые числа на Си++
Мне уже помагогали на этом замечательном форуме. Пожалуйста помогите ещё раз. Надо Составить программу на Си++ как консольное приложение, выводящую на экран n первых простых чисел. Сделать проверку n ≥0.
Простым наз-ся число p,большее 1 и не имеющее положительных целых делителей,кроме 1 и p |
Компилятор ошибку выдаёт.Помогите найти.
#include <math.h> #include <conio.h> #include <iostream.h> int main(int argc, char *argv[]) { using namespace std; double dn,di,dj; bool dest; clrscr; cout << "\nVvedite konechnoe chislo n= "; cin >> dn; i=1; while i<=n-2 do { i=i+2; est:=false; for j=3 to round(sqrt(i)) do { if i mod j = 0 then begin est:=true; break; } } if not est then cout << "Result: i=" << di; } |
Какую именно ошибку?
Вместо := используйте =, не в Паскале пишите все таки) |
[C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'i'
[C++ Error] Unit1.cpp(14): E2376 While statement missing ( |
Цитата:
Мне лениво исправлять всё, но кое что: 1. По поводу "Неопределённый символ i": нужно объявить переменную. Видимо, при объявлении double dn,di,dj; лучше написать double n, i, j; Всё же эти переменные используются в дальнейшем. 2. while i<=n-2 do { ... } Лучше писать while (i<=n-2) { ... }. Это ж не паскаль, как говорит XCodeR. 3. for j=3 to round(sqrt(i)) do { ... } Пишем: for (j=3; j<round(sqrt(i)); j++) { ... } Я не уверен насчёт round(sqrt(i)), но сначала исправьте то, что предлагается. 4. if not est then Так: if (!est) { ... } 5. cout << "Result: i=" << di; Раз переменные переименовали и разпереименовывали, нужно писать в конце i; |
CouttyXCodeR спасибо вам.Дело пошло.Мне просто непривычен синтаксис си++ - только начал изучать.Вот что вышло:
#include <math.h> #include <conio.h> #include <iostream.h> int main(int argc, char *argv[]) { using namespace std; double n,i,j; bool est; clrscr; cout << "\nVvedite konechnoe chislo n= "; cin >> n; i=1; while (i<=n-2) do { i=i+2; est=false; for (j=3; j<round(sqrt(i)); j++) //тут я не уверен - что то наворочено if i mod j = 0 then begin est:=true; break; } } if (!est) cout << "Result: i=" << i; getch(); return 0; } Вот список ошибок: [C++ Error] Unit1.cpp(16): E2268 Call to undefined function 'round' [C++ Error] Unit1.cpp(17): E2376 If statement missing ( [C++ Error] Unit1.cpp(21): E2308 do statement must have while [C++ Warning] Unit1.cpp(21): W8004 'est' is assigned a value that is never used [C++ Error] Unit1.cpp(22): E2040 Declaration terminated incorrectly [C++ Error] Unit1.cpp(25): E2040 Declaration terminated incorrectly [C++ Error] Unit1.cpp(26): E2190 Unexpected } |
Цитата:
Цитата:
и...кхм... синтакиси вообще такой: if(условие) { } никаких begin...end & then Цитата:
Цитата:
Цитата:
Цитата:
имхо, лучше используйте Pascal, кажется он вам "роднее"... а то что делаете вы, это тоже самое что приехать во Францию и в магазине попросить "La 2 СОСИСКИ, please!". |
Теперь вот:
#include <math.h> #include <conio.h> #include <iostream.h> int main(int argc, char *argv[]) { using namespace std; double n,i,j; bool est; clrscr; cout << "\nVvedite konechnoe chislo n= "; cin >> n; i=1; while (i<=n-2) { i=i+2; est=false; for (j=3; j<round(sqrt(i)); j++) if (i mod j = 0) { est:=true; break; } } if (!est) cout << "Result: i=" << i; getch(); return 0; } ------------------------------------------------------------------------ [C++ Error] Unit1.cpp(16): E2268 Call to undefined function 'round' [C++ Error] Unit1.cpp(17): E2377 If statement missing ) Вобщем надо что-то с round делать и 2-я ошибка указывает на if (i mod... |
nemo555
используй double ceil(double x); в меньшую сторону или double floor(double x); в большую сторону или RoundTo(const double AValue, int ADigit); округление до знака ADigit после запятой. |
PHP код:
|
XCodeR честно говоря уже запутался.Если можете то пожалуйста напиши рабочий вариант - очень надо к понедельнику днём. Будет большой респект
|
nemo555
см. выше, Вам уже помогли. |
Лишь одна поправка: est=true; Там присвоение должно быть (на мой взгляд).
И проверка if (!est), как заметил Arrest - внутри цикла for. |
я б еще est = false; в конец цикла while передвинул, для наглядности :-)
|
Время: 03:29. |
Время: 03:29.
© OSzone.net 2001-