Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите с 3-мя программами

Ответить
Настройки темы
C/C++ - Помогите с 3-мя программами

Пользователь


Сообщения: 133
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: VokaMut
Дата: 16-12-2010
Помогите написать программы:
1.Которая считывает линейный массив натуральных чисел из файла, имя которого вводится с клавиатуры, и выводит на экран те элементы, которые являются простыми числами.
2.Которая создает стек целых чисел, считываемых из файла и удаляет из него повторяющиеся. Всё это вывести на экран.
3.Которая заполняет квадратную матрицу случайными числами из заданного диапазона. Из полученной матрицы все положительные числа занести во второй массив, а все отрицательные - в третий. Каждый из полученных массивов упорядочить по возрастанию. Определить во втором массиве количество элементов являющихся простыми числами. Второй и третий массивы записать каждый в отдельный файл.

Первую и вторую пытался сделать, но ничего хорошего у меня не вышло.(В первой до проверки на простые числа)
Третью программу сделал почти до конца, осталось сделать в цикле проверку на простые числа.

Третья программа:
Код: Выделить весь код
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
#include <fstream.h>
#include <math.h>
void main()
{
	do
	{
		int i=0;
		int j=0;
		int min,max;
		int matrix[10][10];
		cout<<"\nVvedite diapazon:"<<endl<<"min - ";
		cin>>min;
		cout<<endl<<"max - ";
		cin>>max;
		int mass1[100];
		int mass2[100];
		int mass3[100];
		int z=0;
		cout<<endl<<endl;
		cout<<endl<<"Matrix:"<<endl;
		for(i=0; i<10;i++) \\Создаем матрицу 10х10 из чисел заданного диапазона
		{
			for(j=0; j<10;j++)
			{
				matrix[i][j]=min+rand()%(max-min+1);
				cout<<setw(3)<<matrix[i][j]<<" ";
			}
			cout<<endl;
		}
		j=0;
		cout<<endl<<endl;
		cout<<"Massiv pologitelinix 4isel:\n";
		for(i=0;i<10;i++) \\Создаем из полученной матрицы матрицы массив положительных чисел
		{
			for(j=0;j<10;j++)
			{
				if(matrix[i][j]>0)
				{
					mass1[z]=matrix[i][j];
					cout<<mass1[z]<<" ";
					z++;
				}
			}
		}
		int q,w;
		z--;
		q=z;
		j=0;
		cout<<endl<<endl;
		cout<<endl<<"Massiv otricatelinix 4isel:\n";
		for(i=0;i<10;i++) \\Создаем массив отрицательных чисел
		{
			for(j=0;j<10;j++)
			{
				if(matrix[i][j]<0)
				{
					mass2[z]=matrix[i][j];
					cout<<mass2[z]<<" ";
					z++;
				}
			}
		}
		j=0;
		z--;
		w=z;
		for (i=0;i<q;i++) \\сортируем методом пузырька 1 массив
		 {
			 for (j=0;j<q;j++)
			 {
			  if (mass1[i]>mass1[j])
			  {
			    z=mass1[i];
		      mass1[i]=mass1[j];
		      mass1[j]=z;
		     }
		    }
		  }
		for(i=0;i<w;i++) \\сортируем второй массив
			mass2[i]*=-1;
		for (i=0;i<w;i++)
		 {
			 for (j=0;j<w;j++)
			 {
			  if (mass2[i]<mass2[j])
			  {
			    z=mass2[i];
		      mass2[i]=mass2[j];
		      mass2[j]=z;
		     }
		    }
		  }
		
		for(i=0;i<w;i++)
			mass2[i]*=-1;
		cout<<endl<<endl; \\выводим на экран полученное 
		cout<<endl<<endl<<"Massis 1 : ";
		for(i=0;i<q;i++)
		cout<<mass1[i]<<" ";
		cout<<endl<<endl;
		cout<<endl<<endl<<"Massis 2 : ";
		for(i=0;i<98-q;i++)
		cout<<mass2[i]<<" \n";
		int ch=0;
		char flag=1;
		for(int qq=1;qq<=mass1[i];qq++)
		{
		for(long pr=0;pr<sqrt(mass1[i]);pr++)  \\Проверка на простые числа
		{
			if(mass1[i]%pr==0)
				{
					flag=0;
					break;
				}
			}
		}
		cout<<endl<<endl;
		cout<<"kol-vo 4usel 9vl sten 3    "<<ch;
		fstream outf("mass1.txt", ios::out); \\записываем в файлы полученные массивы
		for(i=0;i<w;i++)
		outf<<mass1[i]<<" ";
		outf.close();
		getch();
		outf.open("mass2.txt",ios::out);
		for(i=0;i<98-q;i++)
		outf<<mass2[i]<<" ";
		outf.close();
	}while(getch()!=27);
}
Выделил проверку на простые.
Это проверка одного числа, в цикле сделать не получается...

p.s. хотя бы третью помогите доделать,а то уже неделю с бубном и учебниками парюсь

Отправлено: 16:49, 16-12-2010

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


VokaMut, процедуры и функции вещь пройденная? Если да, то переписывай программу с их использованием. Это структурирует задачу и делает проще в понимании, отладке. Соотв. разбивай задачу на этапы и функциональный шаги, и милости просим с комментариями к коду, наработками сделанными ранее.
Проверку на простоту тоже желательно вынести отдельной функцией.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 18:45, 16-12-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 133
Благодарности: 2

Профиль | Отправить PM | Цитировать


lxa85, Комментарии написал в программе, мне бы только создать проверку на простые числа в массиве

Отправлено: 20:17, 16-12-2010 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


VokaMut, самый банальный способ исходит из определения простого числа.
Простые числа - это целое положительное число больше единицы, которое не делится без остатка ни на одно другое целое положительное число, кроме единицы и самого себя.
Цикл от 2 до n + проверка остатка от деления (mod).

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:24, 16-12-2010 | #4


Пользователь


Сообщения: 133
Благодарности: 2

Профиль | Отправить PM | Цитировать


lxa85, У меня есть такая проверка:
Код: Выделить весь код
char flag=1;
for(long pr=0;pr<sqrt(n);pr++)
{
	if(n%pr==0)
		{
			flag=0;
			break;
		}
	}
}
if(flag) cout<<n<<" - простое число";
Как вместо n вставить проверку по всему массиву n[i](к примеру) ?

Отправлено: 22:42, 16-12-2010 | #5


Пользователь


Сообщения: 133
Благодарности: 2

Профиль | Отправить PM | Цитировать


Третью и вторую написал.

Со второй помогите.

На счет того как нас учат.нам дают примеры и делайте по их подобию. Не удобно,хоть и комментарии написаны к коду.

Отправлено: 21:47, 17-12-2010 | #6


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


VokaMut, у тебя правильная проверка на простое число. Меня % смущал, но сейчас разобрался.
Вводи дополнительный цикл. Собственно что тебя смутило?
Код: Выделить весь код
for (int i=0;i<n;i++) 
{
char flag=1;
for(long pr=0;pr<sqrt(n[i]);pr++)
{if(n[i]%pr==0){
flag=0;break;}}
}
if(flag) cout<<n[i]<<" - простое число";
}

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 02:16, 18-12-2010 | #7


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Цитата lxa85:
char flag=1; »
Я бы только вместо char использовал булевый тип bool

Код: Выделить весь код
   for (int i = 0; i < n; i++){
      bool flag = true;
      for(long pr = 0; pr < sqrt(n[i]); pr++){
         if(n[i] % pr == 0){
            flag=false;
            break;
           }
       }
   }
   if(flag)
      cout<<n[i]<<" - простое число";
И ставьте отступы пробелы в коде, вы что, жалеете кнопку пробел или пытаетесь за счёт отсутствия пробелов уменьшить размер программы?

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 23:54, 18-12-2010 | #8


Пользователь


Сообщения: 133
Благодарности: 2

Профиль | Отправить PM | Цитировать


Всем спасибо,лабы сделал,вот третья(Может пригодится ):
Код: Выделить весь код
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <iomanip.h>
#include <fstream.h>
#include <math.h>
void main()
{
	do
	{
		int i,j,min,max,matrix[4][8],z=0,mass1[100],mass2[100],mass3[100],q,w,ch=0,qq;
		cout<<"Vvedite diapazon:\nmin: ";
		cin>>min;
		cout<<"\nmax: ";
		cin>>max;
		cout<<"\n\nMatrix:\n";
		for(i=0; i<4;i++)
		{
			for(j=0; j<8;j++)
			{
				matrix[i][j]=min+rand()%(max-min+1);
				cout<<setw(3)<<matrix[i][j]<<" ";
			}
			cout<<endl;
		}
		j=0;
		cout<<"\n\nMassiv pologitelinix 4isel:\n";
		for(i=0;i<4;i++)
		{
			for(j=0;j<8;j++)
			{
				if(matrix[i][j]>0)
				{
					mass1[z]=matrix[i][j];
					cout<<mass1[z]<<" ";
					z++;
				}
			}
		}
		q=z;
		cout<<"\n\nMassiv otricatelinix 4isel:\n";
		for(i=0;i<4;i++)
		{
			for(j=0;j<8;j++)
			{
				if(matrix[i][j]<0)
				{
					mass2[z]=matrix[i][j];
					cout<<mass2[z]<<" ";
					z++;
				}
			}
		}
		j=0;
		w=z;
		for (i=0;i<q-1;i++)
		 {
			 for (j=i+1;j<q;j++)
			 {
			  if (mass1[i]>mass1[j])
			  {
			    z=mass1[i];
				mass1[i]=mass1[j];
				mass1[j]=z;
		     }
		    }
		  }
		for (i=0;i<w-1;i++)
		 {
			 for (j=i+1;j<w;j++)
			 {
			  if (mass2[i]<mass2[j])
			  {
			    z=mass2[i];
				mass2[i]=mass2[j];
				mass2[j]=z;
		     }
		    }
		  }
		cout<<"\n\nMassiv 1: ";
		for(i=0;i<q;i++)
		cout<<mass1[i]<<" ";
		cout<<"\n\nMassiv 2: ";
		for(i=0;i<w;i++)
		cout<<mass2[i]<<" ";
		char flag=1;
		cout<<"\n\nProst chisla: ";
		for(qq=0;qq<q;qq++)
		{
			flag=1;
			for(long pr=2;pr<=mass1[qq]/2;pr++)
			{
				if(mass1[qq]%pr==0)
				{
					flag=0;
					break;
				}
			}
			if(flag)
			{
				cout<<mass1[qq]<<"  ";
				ch++;
			}
		}
		cout<<"\n\nkol-vo number "<<ch;
		fstream outf("mass1.txt",ios::out);
		for(i=0;i<q;i++)
		outf<<mass1[i]<<" ";
		outf.close();
		getch();
		outf.open("mass2.txt",ios::out);
		for(i=0;i<w;i++)
		outf<<mass2[i]<<" ";
		outf.close();
	}while(getch()!=27);
}
Осталась одна:
нужно написать программу которая создает стек целых чисел, считываемых из файла и удаляет из него повторяющиеся. Всё это вывести на экран.

Пример со стеком в методичке плохой,он слишком большой,разобраться не могу(

Отправлено: 14:02, 19-12-2010 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Помогите с 3-мя программами

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Система - Создания загрузочного диска с программами Evgesha_572 Программное обеспечение Windows 6 04-09-2009 10:35
Загрузка - Проблеа с программами автозапуска.. Alexxandr Microsoft Windows 2000/XP 17 29-09-2008 10:59
Проблемы с Интернет-программами elekta Microsoft Windows 2000/XP 3 25-05-2006 00:17
Windows XP с программами на 2-х CD Jamesssss Автоматическая установка Windows 2000/XP/2003 5 18-05-2005 12:07
Странности с почтовыми программами valery559 Хочу все знать 5 22-10-2002 04:36




 
Переход