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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2014, 20:44   #1
carrie bradshaw
Форумчанин
 
Регистрация: 25.01.2014
Сообщений: 105
Восклицание значения массива считывается с файла, а повторные элементы этого массива выводятся во 2 файл C++

привет, всем любителям программирования. помогите, пожалуйста, оценить программу (или возможно исправить её или предложить другой вариант). программа C++ (консольный режим работы)

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

код программы:
Код:
#pragma hdrstop
#pragma argsused
#include<iostream.h>
#include<fstream.h>
#include <tchar.h>
#include <stdio.h>
#include<conio.h>
int _tmain(int argc, _TCHAR* argv[])
{   std::ifstream ifs("d:/vzlom/login.txt");
	const int n = 4;
	int m[n], cnt = 0;

	for(int i = 0; i < 4; i++)
	{
            ifs >> m[i];
            std::cout << m[i] << ' ';
    }
	ifs.close();

    for(int i = 0; i < 4; i++)
    {
		for(int j  =0; j < i; j++)
        {
			if(m[i] == m[j])
            {
				cnt++;
            }
		}
	}

	std::ofstream ofs("d:/vzlom/login.txt");

	ofs << cnt;
	getch();
	return 0;
}

Последний раз редактировалось carrie bradshaw; 02.02.2014 в 22:45.
carrie bradshaw вне форума Ответить с цитированием
Старый 02.02.2014, 22:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Двойка.
Во-первых: визуальный режим работы - я тебя расстрою, эта программа консольная.
Во-вторых: const int n = 4; - тоже не порядок. Нужен динамический массив, или даже список, который будет наполняться из файла числами.
Третье: Для ускорения работы программы лучше было бы проверять наличие числа сразу при считке данных. Т.е.

Код:
	for(int i = 0; i < 4; i++)
	{
            ifs >> m[i];
            for(int j=i;j>0;j--) if(m[i]==m[j]) {ofs << m[i]; break;}
            std::cout << m[i] << ' ';
         }
И опять таки тут у меня нет проверки на повтор повтора, что тоже по хорошему должно быть учтено.
Короче твоя стратегия скорее провальна чем реальна.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.02.2014, 22:52   #3
carrie bradshaw
Форумчанин
 
Регистрация: 25.01.2014
Сообщений: 105
Восклицание

программа выдаёт ошибку
код программы:
Код:
#pragma hdrstop
#pragma argsused
#include<iostream.h>
#include<fstream.h>
#include <tchar.h>
#include <stdio.h>
#include<conio.h>
int _tmain(int argc, _TCHAR* argv[])
{   std::ifstream ifs("d:/vzlom/login.txt");
	const int n = 4;
	int m[n], cnt = 0;
    for(int i = 0; i < 4; i++)
	{
			ifs >> m[i];
			for(int j=i;j>0;j--) if(m[i]==m[j]) {ofs << m[i]; break;}
			std::cout << m[i] << ' ';

	{
	ifs >> m[i];
			std::cout << m[i] << ' ';
	}
	ifs.close();

    for(int i = 0; i < 4; i++)
	{
		for(int j  =0; j < i; j++)
		{
			if(m[i] == m[j])
            {
				cnt++;
			}
		}
	}

	std::ofstream ofs("d:/vzlom/login.txt");

	ofs << cnt;
	getch();
	return 0;
}
ошибка в строчке:
Код:
for(int j=i;j>0;j--) if(m[i]==m[j]) {ofs << m[i]; break;}
помогите, пожалуйста, убрать ошибку
carrie bradshaw вне форума Ответить с цитированием
Старый 03.02.2014, 01:04   #4
carrie bradshaw
Форумчанин
 
Регистрация: 25.01.2014
Сообщений: 105
Восклицание

программа работает правильно. спасибо тому, кто написал совет, а также всем тем, кто читал мой пост.

помогите, пожалуйста, написать эту программу в визуальном режиме с помощью вкладки Dialogs.
carrie bradshaw вне форума Ответить с цитированием
Старый 03.02.2014, 02:14   #5
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
с помощью вкладки Dialogs
Если я правильно понял, речь здесь идёт о C++ Builder. В нём эта вкладка предназначена для того, чтобы программа могла использовать стандартные диалоговые окна, например диалоги открытия и сохранения файла. Создайте форму и в ней реализуйте алгоритм.
Цитата:
помогите, пожалуйста, написать эту программу в визуальном режиме
Возможно, я Вас удивлю, но данный алгоритм в визуальном режиме практически ни чем не будет отличатся от своего консольного варианта. Отличия и общий принцип реализации в визуальном режиме можно прочитать, например, здесь: Вывести в порядке возрастания все целые числа которые находятся между "А" и "В" С++ (визуальный режим).

Последний раз редактировалось Streletz; 03.02.2014 в 09:36.
Streletz вне форума Ответить с цитированием
Старый 03.02.2014, 09:13   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
написать эту программу в визуальном режиме
У меня Билдера нет, соболезную.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
записать в файл массив, а в другой файл вывести повторные значения элементов массива С++ carrie bradshaw Помощь студентам 3 01.02.2014 23:27
Вопрос Сохранение массива в файл и чтение массива из файла vvzvlad Помощь студентам 2 05.11.2013 23:27
Найти минимальный и максимальный элементы массива Х и поменять их в массиве местами. Элементы массива вычисляются по формуле Xi=(( Милашечка Помощь студентам 0 26.05.2013 13:01
Элементы матрицы. Все ненулевые элементы массива D(k) расположить в начале массива E(k) и подсчитать их к Вася Маклауд Помощь студентам 0 03.04.2011 17:21