Понедельник, 23 Мая 2022, 12:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » C/C++ » Ввод в массив (С++)
Ввод в массив
Shevron_7Дата: Четверг, 16 Мая 2013, 22:48 | Сообщение # 1
маньяк-бомбист
Сейчас нет на сайте
Дарова, народ,нужно решить задачку:
Программа должна считывать с клавиатуры в массив целые числа до тех пор, пока не будет введено простое число.
Помогите решить. cool


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
маньяк-бомбист
Сейчас нет на сайте
это что-то не то biggrin

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
был не раз
Сейчас нет на сайте
Цитата (Darkle)
Не понял.

кури, что такое простое число


Сообщение отредактировал x_X - Пятница, 17 Мая 2013, 00:05
Shevron_7Дата: Пятница, 17 Мая 2013, 00:07 | Сообщение # 8
маньяк-бомбист
Сейчас нет на сайте
Простое число - это число которое можно разделить само на себя и на еденицу. И все же я не могу сварганить эту программу sad

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)

а лучше так:
Код

if (number % i == 0)

чтобы не забивать голову новичкам всякой ересью biggrin
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)
---------------------------------------------
Я это сделал!!! cool - нет не сделал sad
Код
#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)
---------------------------------------------
И все же глюки присутствуют - при выводе чисел что попадают в диапазон, если ввести дважды одно й то же самое число в конце их тоже будет несколько sad


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
Форум игроделов » Программирование » C/C++ » Ввод в массив (С++)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг