Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2012, 01:08   #1
nasharasssha
 
Регистрация: 08.02.2011
Сообщений: 3
Печаль Лабораторная по массивам (язык С)

задание : Написать программу, которая выводит на экран только простые числа. Массив и его длина вводится пользователем.

вот вроде написал что бы можно было вводить в массив элементы, а вот как их вывести (отфильтрованные) ума не хватило, точнее не работало то что пытался написать.
Цитата:
#include <stdio.h>
int main()
{
//Объявление пременных, массива
int i, n, a;

while (1)

{
printf("for exet press 0\n");

do
{
_flushall();
printf( "Enter kol-vo elementov: ");
}
while (scanf("%d",&n)==0);

int a[n];
printf("\n"); // Перевод курсора на новую строку

//заполнение массива значениями и вычисление произведения отрицательных элементов
for (i = 0; i < n; i++)
{
do
{
_flushall();
printf("enter element ");
}
while (scanf("%d",&a[i])==0);
}

printf("\n");// Перевод курсора на новую строку
if (n == 0)break;
}

return 0;
}
nasharasssha вне форума Ответить с цитированием
Старый 12.12.2012, 01:35   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

А что пытались написать? Функцию, проверяющую, является ли аргумент простым числом - пытались?
Abstraction вне форума Ответить с цитированием
Старый 12.12.2012, 01:47   #3
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
int main()
{
//Объявление пременных, массива
int i, n, a;

while (1)

{
printf("for exet press 0\n");

do
{
_flushall();
printf( "Enter kol-vo elementov: ");
}
while (scanf("%d",&n)==0);

int a[n];
printf("\n"); // Перевод курсора на новую строку
вы совершили ошибку как у вас это съело?
a не массив а просто целое необходимо указать так int i, n, *a;

обращение a[n] в вашем случаи ошибка.

/-----

вы ещё и создаёте новую переменную таким же именем?
и я тож не особо понял, что вы в этом коде собераетесь делать.
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 12.12.2012 в 01:51. Причина: хрень а не код...
Perchik71 вне форума Ответить с цитированием
Старый 12.12.2012, 02:00   #4
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

ваша проблема моим взглядом

Код:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
setlocal(0, "");
int size, *arr, id;

std::cout<<"Введите кол-во элементов:";
std::cin>>size;

arr = new int[size];

for(id=0;id<size;id++)
{
std::cout<<"Введите элемент "<<id<<":";
std::cin>>arr[id];
}
delete[] arr;
}
Если помог, тут весы есть , Вам не сложно, а мне приятно.

Последний раз редактировалось Perchik71; 12.12.2012 в 02:01. Причина: забыл почистить массив.
Perchik71 вне форума Ответить с цитированием
Старый 12.12.2012, 05:50   #5
Murashov
Форумчанин
 
Аватар для Murashov
 
Регистрация: 30.10.2012
Сообщений: 121
По умолчанию

Цитата:
Сообщение от Perchik71 Посмотреть сообщение
ваша проблема моим взглядом

Код:
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
setlocal(0, "");
int size, *arr, id;

std::cout<<"Введите кол-во элементов:";
std::cin>>size;

arr = new int[size];

for(id=0;id<size;id++)
{
std::cout<<"Введите элемент "<<id<<":";
std::cin>>arr[id];
}
delete[] arr;
}
сказано же язык си.

Код:
int size=0,i,k,flag=0;
printf("size: ");
fflush(stdin);
scanf("%d", &size);//размер
int *mas=(int*)malloc(size*sizeof(int));//выделяем память
for(i=0;i<size;i++)//ввод элементов
{
    printf("\nmas[%d]: ", i);
    fflush(stdin);
    scanf("%d", &mas[i]);
}

for(i=0;i<size;i++)//отбор простых чисел (просто - делится только на себя и на 1)
{
    for(k=2,flag=0;k<i;k++)//прогоняем от 2 до i-1
        if(i%k==0) flag=1;//записываем событие во флаг
    if(flag==0) printf("%d\n", mas[i]);//если за время прогона ни одно число не поделилось, то это простое
}
free(mas);//освободить память
не проверял, времени нету) сорри.. но я бы решил так бы задачу...
если динамический массив не устраивает, то можно просто написать int mas[дофига]; и запомнить некую переменную размером, до которого у нас будут циклы. и размер массива будет якобы указанный

Последний раз редактировалось Murashov; 12.12.2012 в 06:13.
Murashov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лабораторная работа Язык С++ sofalina Помощь студентам 0 22.11.2012 21:35
Лабораторная GelarX C++ Builder 0 22.01.2012 20:31
Лабораторная за $ djendalf Фриланс 2 06.10.2011 14:58
C# лабораторная Tase4ka Помощь студентам 1 09.12.2010 03:51
Лабораторная в С++ Volenka Помощь студентам 0 15.06.2009 09:13