Ввод в массив
| |
Shevron_7 | Дата: Четверг, 16 Мая 2013, 22:48 | Сообщение # 1 |
маньяк-бомбист
Сейчас нет на сайте
| Дарова, народ,нужно решить задачку: Программа должна считывать с клавиатуры в массив целые числа до тех пор, пока не будет введено простое число. Помогите решить.
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
|
|
| |
Snick | Дата: Четверг, 16 Мая 2013, 23:36 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Вот, написал: Код #include <stdio.h> #include <stdlib.h>
#define SIZE 100 #define EXIT 0
int entered = 0;
void printArr(int arr[]);
int main(void) { int numArr[SIZE]; //Ìàññèâ ÷èñåë int num = 0; int i; printf("Input.\n"); for(i = 0; i < SIZE; i++) { printf("Element[%d]: ", (i + 1)); scanf("%d", &num); numArr[i] = num; entered++; if(num == EXIT) { printArr(numArr); break; } } system("PAUSE"); return 0; }
void printArr(int arr[]) { int i; printf("\nOutput.\n"); for(i = 0; i < entered; i++) { printf("Element[%d]: %d\n", (i + 1), arr[i]); } }
Сообщение отредактировал Darkle - Пятница, 17 Мая 2013, 00:40 |
|
| |
Shevron_7 | Дата: Четверг, 16 Мая 2013, 23:46 | Сообщение # 3 |
маньяк-бомбист
Сейчас нет на сайте
| это что-то не то
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
|
|
| |
castielblack | Дата: Четверг, 16 Мая 2013, 23:50 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Безразмерный массив что ли нужен?
Знания : C#, Lua, C++, Unity, Dreemchest, DirectX 11 Выпущенные проекты : BuildAndRun, Match 3 Cubes
|
|
| |
Snick | Дата: Четверг, 16 Мая 2013, 23:58 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Цитата это что-то не то biggrin Не понял. Цитата Программа должна считывать с клавиатуры в массив целые числа до тех пор, пока не будет введено простое число. Программа и считывает с клавиатуры и вносит в массив целые числа до тех пор пока не встретит число объявленное макросом EXIT. Shevron_7, если нужен динамический массив, то надо помнить что в статических массивах размер динамически менять нельзя. Если всё таки именно в этом суть твоей проблемы, то кури динамическое выделение памяти.
Сообщение отредактировал Darkle - Пятница, 17 Мая 2013, 00:41 |
|
| |
Shevron_7 | Дата: Пятница, 17 Мая 2013, 00:03 | Сообщение # 6 |
маньяк-бомбист
Сейчас нет на сайте
| А нельзя как-то проще проверять простое чило или нет?
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
|
|
| |
x_X | Дата: Пятница, 17 Мая 2013, 00:05 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| кури, что такое простое число
Сообщение отредактировал x_X - Пятница, 17 Мая 2013, 00:05 |
|
| |
Shevron_7 | Дата: Пятница, 17 Мая 2013, 00:07 | Сообщение # 8 |
маньяк-бомбист
Сейчас нет на сайте
| Простое число - это число которое можно разделить само на себя и на еденицу. И все же я не могу сварганить эту программу
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
Сообщение отредактировал Shevron_7 - Пятница, 17 Мая 2013, 00:07 |
|
| |
castielblack | Дата: Пятница, 17 Мая 2013, 00:18 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| Гугл тебе поможет
Знания : C#, Lua, C++, Unity, Dreemchest, DirectX 11 Выпущенные проекты : BuildAndRun, Match 3 Cubes
|
|
| |
Snick | Дата: Пятница, 17 Мая 2013, 00:20 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| Цитата кури, что такое простое число Ночью мозг уже не варит. Пропустил в первом посте про простое число.
Сообщение отредактировал Darkle - Пятница, 17 Мая 2013, 00:42 |
|
| |
Revolver_45 | Дата: Пятница, 17 Мая 2013, 00:20 | Сообщение # 11 |
почетный гость
Сейчас нет на сайте
| Цитата (Shevron_7) А нельзя как-то проще проверять простое чило или нет? сначала проверяй делится ли число на 2, если делится, то число уже не простое, если нет, то запускай цикл от 3 до num - 2 c увеличением счётчика на 2 в каждой итерации цикла, если число делится на значение счётчика устанавливаешь флаг, что число неправильное и прерываешь цикл.
rtytyrtyr
Сообщение отредактировал Revolver_45 - Пятница, 17 Мая 2013, 00:37 |
|
| |
x_X | Дата: Пятница, 17 Мая 2013, 00:23 | Сообщение # 12 |
был не раз
Сейчас нет на сайте
| Shevron_7, сам пытался написать? наработки какие-то есть?
|
|
| |
Snick | Дата: Пятница, 17 Мая 2013, 00:25 | Сообщение # 13 |
почетный гость
Сейчас нет на сайте
| Shevron_7, этого будет достаточно.
Код int number = 0, check = 1; cin>>number; for(int i = 2; i < number; i++){ if(div(number, i).rem != 0){ check = 0; break; } } if(check){ cout<<"Простое"; }else{ cout<<"Непростое"; }
Первая ссылка в гугле.
Ввод в массив я думаю сам реализуешь. Удачи!
Сообщение отредактировал Darkle - Пятница, 17 Мая 2013, 00:26 |
|
| |
Shevron_7 | Дата: Пятница, 17 Мая 2013, 00:35 | Сообщение # 14 |
маньяк-бомбист
Сейчас нет на сайте
| Darkle, спасибо, пойду варганить!
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
|
|
| |
x_X | Дата: Пятница, 17 Мая 2013, 00:47 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| Цитата (Darkle) if(div(number, i).rem != 0) думаю, имелось в виду это: Код if(div(number, i).rem == 0) а лучше так: чтобы не забивать голову новичкам всякой ересью
|
|
| |
Revolver_45 | Дата: Пятница, 17 Мая 2013, 00:58 | Сообщение # 16 |
почетный гость
Сейчас нет на сайте
| вот вобщем, правда на Си, без плюсов
Код #include <stdio.h> #include <stdbool.h> #define SIZE 10
bool isPrime (int number) { if (number != 2 && (number % 2) == 0 || number <= 1) return false; else { auto int i; for (i = 3; i < number - 2; i += 2) { if ( (number % i) ==0) return false; } } return true; }
int main (void) { int number; int array[SIZE] = {0}; int i;
for (i = 0; i < SIZE; i++) { scanf("%i", &number); if (!isPrime(number)) array[i] = number; else break; } return 0; }
rtytyrtyr
Сообщение отредактировал Revolver_45 - Пятница, 17 Мая 2013, 03:30 |
|
| |
Shevron_7 | Дата: Пятница, 17 Мая 2013, 01:49 | Сообщение # 17 |
маньяк-бомбист
Сейчас нет на сайте
| Вот вообщем моя поделка. Код #include<iostream> #include <conio.h> #include <cstdio> using namespace std;
int main() { int i = 0,m = 0,m1[m],summa = 0; setlocale(0,""); do { i++; cout<<"Введите "<<i<<" элемент массива: "; cin>>m1[i];
} while ((m1[i]%2)==0);
cout<<"Было введено простое число, ввод элементов остановлен!\n"; cout<<"Числа попадающие в диапазон между первым и вторым введенныв числом: "; for (int j=0;j<m;j++) { if (m1[j]>m1[0] && m1[j]<m1[1]) { summa = summa+m1[j]; cout<<m1[j]<<" "; } } cout<<"\nСумма чисел попадающих в диапазон между первым и вторым введенным числом: "<<summa<<"\n"; getch(); } почему-то не работает диапазон
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
Сообщение отредактировал Shevron_7 - Пятница, 17 Мая 2013, 01:51 |
|
| |
Revolver_45 | Дата: Пятница, 17 Мая 2013, 02:11 | Сообщение # 18 |
почетный гость
Сейчас нет на сайте
| Цитата (Shevron_7) m = 0,m1[m] ты объявляешь массив с нулевым размером... И, кстати, вообще никогда не указывай размерность при помощи переменной, это совсем не хорошо, даже если тебе позволяет компилятор (компилит, но просто выдаёт ворнинг, или даже если он вовсе молчит), всегда указывай константу. По одной легенде сотрудники майкрософт когда-то тоже не обращали внимания на ворнинги и получалось то, что получалось)
rtytyrtyr
Сообщение отредактировал Revolver_45 - Пятница, 17 Мая 2013, 02:13 |
|
| |
Shevron_7 | Дата: Пятница, 17 Мая 2013, 02:33 | Сообщение # 19 |
маньяк-бомбист
Сейчас нет на сайте
| Revolver_45, Оно теперь вообще не обращает внимания на ввод простых чисел!
Добавлено (17.05.2013, 02:25) --------------------------------------------- Я это сделал!!! - нет не сделал Код #include <cstdlib> #include <iostream> #include <stdio.h> using namespace std;
int main() { int i = -1,m = 0,m1[m],summa = 0; setlocale(0,""); do { i++; cout<<"Введите "<<i<<" элемент массива: "; cin>>m1[i]; } while ((m1[i]%2)==0);
cout<<"Было введено простое число, ввод элементов остановлен!\n"; cout<<"Числа попадающие в диапазон между первым и вторым введенныв числом: " for (int j=0;j<i;j++) { if (m1[j]>m1[0] && m1[j]<m1[1]) { summa = summa+m1[j]; cout<<m1[j]<<" "; } } cout<<"\nСумма чисел попадающих в диапазон между первым и вторым введенным числом: "<<summa<<"\n"; system("PAUSE"); }
Добавлено (17.05.2013, 02:33) --------------------------------------------- И все же глюки присутствуют - при выводе чисел что попадают в диапазон, если ввести дважды одно й то же самое число в конце их тоже будет несколько
TEST => Мои игры: Kill your brain Space Conflict Zombie Day Bounce PC Extra ball 2012
Это спасибо в карман не положишь, а в репутацию можно. +1
Сообщение отредактировал Shevron_7 - Пятница, 17 Мая 2013, 17:08 |
|
| |
Revolver_45 | Дата: Пятница, 17 Мая 2013, 02:41 | Сообщение # 20 |
почетный гость
Сейчас нет на сайте
| Shevron_7, ага а ещё твоя программа, принимает за простые все нечётные числа, принимает за простое едиицу и не принимает за простое двойку. Да, короче, вообще не вычисляет правильное число. Переписывай.. Зыркай лучше в моё описание алгоритма и в мой пример выше..
rtytyrtyr
Сообщение отредактировал Revolver_45 - Пятница, 17 Мая 2013, 03:07 |
|
| |
|