|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Простые числа на Си++ |
|
|
Простые числа на Си++
|
Новый участник Сообщения: 42 |
Мне уже помагогали на этом замечательном форуме. Пожалуйста помогите ещё раз. Надо Составить программу на Си++ как консольное приложение, выводящую на экран n первых простых чисел. Сделать проверку n ≥0.
Простым наз-ся число p,большее 1 и не имеющее положительных целых делителей,кроме 1 и p |
|
Отправлено: 15:07, 11-03-2007 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Компилятор ошибку выдаёт.Помогите найти.
#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; } |
Последний раз редактировалось nemo555, 11-03-2007 в 19:06. Отправлено: 17:37, 11-03-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать Какую именно ошибку?
Вместо := используйте =, не в Паскале пишите все таки) |
Отправлено: 17:51, 11-03-2007 | #3 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать [C++ Error] Unit1.cpp(12): E2451 Undefined symbol 'i'
[C++ Error] Unit1.cpp(14): E2376 While statement missing ( |
Отправлено: 19:07, 11-03-2007 | #4 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Цитата:
Мне лениво исправлять всё, но кое что: 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; |
||
Отправлено: 19:47, 11-03-2007 | #5 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать 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 } |
Отправлено: 20:25, 11-03-2007 | #6 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
Цитата:
и...кхм... синтакиси вообще такой: if(условие) { } никаких begin...end & then Цитата:
Цитата:
Цитата:
Цитата:
имхо, лучше используйте Pascal, кажется он вам "роднее"... а то что делаете вы, это тоже самое что приехать во Францию и в магазине попросить "La 2 СОСИСКИ, please!". |
||||||
Отправлено: 20:54, 11-03-2007 | #7 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать Теперь вот:
#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, 11-03-2007 в 21:17. Отправлено: 21:10, 11-03-2007 | #8 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать nemo555
используй double ceil(double x); в меньшую сторону или double floor(double x); в большую сторону или RoundTo(const double AValue, int ADigit); округление до знака ADigit после запятой. |
Отправлено: 23:06, 11-03-2007 | #9 |
runs with scissors Сообщения: 642
|
Профиль | Отправить PM | Цитировать
P.S. Отступы нужны коду - без них он превращается в нечитабельное месиво. |
Отправлено: 23:09, 11-03-2007 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
SQL Lite простые манипуляцыи с БД | andr_mozg | AutoIt | 3 | 07-08-2009 12:55 | |
Простые правила PF | kryo | Общий по FreeBSD | 3 | 13-06-2007 18:27 | |
2 простые утилиты по сетям!!! Who??? | Syoga | Программирование и базы данных | 15 | 11-06-2007 14:10 | |
Новичок. Простые вопросы. | Grub | Вебмастеру | 7 | 28-04-2007 15:41 | |
Простые вопросы. | Unixman | Общий по Linux | 11 | 17-07-2003 03:04 |
|