Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
#1

Создать текстовый файл, содержащий изображения чисел, расположенные в два столбц - C++

25.05.2009, 18:45. Просмотров 3024. Ответов 39
Метки нет (Все метки)

Текст задачи
Даны два файла целых чисел одного размера с именами Name1 и Name2. Создать текстовый файл с именем NameT, содержащий изображения этих чисел, расположенные в два столбца шириной по 30 символов: первый содержит числа из файла Name1, второй- из файла Name2. Вначале и конце каждой строки текстового файла ввести разделитель"|". Числа выравниваются по правому краю столбца.
В кратце. Третий файл должен содержать цифры из первых двух,записанные в столбик.УМОЛЯЮ ПОМОГИТЕ!!!!!

Вот текст моей проги
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
#include<iostream.h>;
#include <string.h>
#include <fstream>
#include<stdio.h>;
#pragma argsused
void main( void )
{
FILE *Name1;
FILE *Name2;
FILE *NameT;
char* file_name1 = "Name1.txt";
char* file_name2 = "Name2.txt";
char* file_nameT = "NameT.txt";
char load_string[50] = "none";
char w[50] = "none";
char q[50] = "none";
int  i,j;
Name1 = fopen( file_name1, "wt" );
Name2 = fopen( file_name2, "wt" );
   for( i=0; i<5; i++ )
   {
     fprintf( Name1, "|%d| ", i );
   }
   for( j=0; j<5; j++ )
   {
     fprintf( Name2, "|%d| ", j );
   }
fclose( Name1 );
fclose(Name2);
 
Name1 = fopen( file_name1, "r" );
Name2 = fopen( file_name2, "r" );
NameT = fopen( file_nameT, "wt" );
if( Name1 != 0 )
{
fgets( w, 50 , Name1 );
cout << "Name1 : \n\n" << w <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
if( Name2 != 0 )
{
fgets( q, 50 , Name2 );
cout << "Name2  \n\n" << q <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fputs(w,NameT);
fputs(q,NameT);
fclose(NameT);
fclose(Name1);
fclose(Name2);
NameT = fopen( file_nameT, "r" );
if( NameT != 0 )
{
fgets( load_string, 50 , NameT );
cout << "NameT : \n\n" << load_string<<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fclose(NameT);
system("pause");
}
//---------------------------------------------------------------------------
Тут осталось тока сделать вывод третьего файла в столбик с выравниванием.Это как раз я и не знаю как сделать.Помогите плиз позарез сегодня нужна.

Добавлено через 58 минут 38 секунд
Помогите пожалуйста,если завтра не сдам из универа могу вылететь((((((((((((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2009, 18:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать текстовый файл, содержащий изображения чисел, расположенные в два столбц (C++):

Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла - C++
Дано число k (&lt; 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного...

Создать текстовый файл, содержащий программу на С++ - C++
Моя задача звучит следующим образом: &quot;Дан текстовый файл, содержащий программу на С++. Проверить эту программу на соответствие числа...

Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле - C++
Дан текстовый файл. Создать символьный файл, содержащий все знаки препинания, встретившиеся в текстовом файле (в том же порядке).

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла - C++
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся...

Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся этой буквой - C++
Дан символ 'C' (прописная латинская буква) и текстовый файл. Создать строковый файл, содержащий все слова из исходного файла, начинающиеся...

Создать текстовый файл, содержащий таблицу значений заданной функции на указанном промежутке - C++
Даны вещественные числа А, В и целое число N. Создать текстовый файл, содержащий таблиц значений функции х на промежутке с шагом (В -...

39
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
25.05.2009, 19:09 #2
Я что-то с трудом могу понять, что делает программа на данный момент?
Точнее - я вижу, что, но не понимаю смысла.

Такой вопрос: накладывается ли на задачу требование, с помощью каких средств ввода/вывода реализовывать задачу? Есть возможность это сделать стандартными средствами с помощью структуры FILE и функций fopen/fclose/fgets и т.д., либо с помощью классов потоков ввода/вывода fstream.
Экспертами в C++ не рекомендуется использовать в одной программе оба эти средства.

PS: вообще, к задачам на файлы (по крайней мере в нашем университете), рекомендовали псать отдельную программу для создания исходного файла (исходных файлов), и отдельно программу для их обработки - то есть не лепить всё в одну кучу.

ну или можно реализовать это с использованием функций хотя бы. Например формирование исходных файлов (если принцип один, то дважды вызвать одну и ту же функцию для двух разных файлов) в одной функции, а обработка файла (файлов) с заданным именем и именем для выходного файла в другой.
0
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
25.05.2009, 19:22  [ТС] #3
На данный момент программа создает два файла и заполняет его цифрами далее копирует в 3 файл и выводит на экран. С тобой полностью согласен что код у меня кривой.Это из-за того что я дела с файлами не имел(((((((.Если не сложно можешь написать код программы которая будет отвечать требованиям поставленным в задании. Буду безмерно благодарен.

Добавлено через 3 минуты 10 секунд
А насчет средств если согласишься написать прогу используй те средства которые ты считаешь нужнымии более удобными, но одна просьба если это возможно без функций(но если так лучше возражать не буду)
0
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
25.05.2009, 19:24 #4
Какими средствами делать - имеет значение? Классами потоков (C++, <fstream>), или функциями (C, <cstdio>)?



PS: переделывай свою прогармму просто для создания двух файлов, а я напишу пока программу для слияния двух файлов.
Давай договоримся насчет парочки констант и их имен. Например, сколько чисел в строке - известно, или же это необходимо определять по ходу обработки? Сколько строк? Считать известными и фиксированными?
И еще - разделители должны быть в начале и в конце строки каждого файла (в том числе и результирующего, как я понял). А в твоей программе, насколько я понимаю, получается каждое число с двух сторон имеет по рпзделителю, а значит между соседними числами - два разделителя, что кажется совсем неправильным.
0
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
25.05.2009, 19:28  [ТС] #5
классами потоков. Если сделаешь век не забуду
0
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
25.05.2009, 19:31 #6
Цитата Сообщение от Андрей Полынкин Посмотреть сообщение
классами потоков. Если сделаешь век не забуду
ну раз классами потоков, тогда тебе придется переделать в своей прогармме все места взаимодействия с файлами с помощью методов этих классов .
0
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
25.05.2009, 19:37  [ТС] #7
а ты можешь это сделать плиз просто я же говорю я не имел дело с файлами вообще практически ни чего не понимаю(((((( Если чесно я бы переделал есил знал файлы а так приходится просить(((((( Ты напишешь?

Добавлено через 2 минуты 2 секунды
а через stdio.h ,который по ходу я использовал много надо переделывать
0
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
25.05.2009, 19:46 #8
на самом деле сложного ничего нет.

вот пример работы с файлом с помощью fstream:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fstream fp;
if(!fp.open(Name1,"r"))
{
cout << "There was any problem to open the file" << endl;
return -1;
}
int num;
while(!fp.eof())
{
fp >> num;
cout << num << '\t';
}
 
fp.close();
1
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
25.05.2009, 19:52  [ТС] #9
Понятно.Ты так и не сказал много надо исправить в моей проге используя функции которые я взял ,для того чтобы сделать вывод в 2 столбца?
0
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
25.05.2009, 19:55 #10
а она вообще работает?

если бы ты поместил сюда код, используя обрамление тегами для языка C++ (они в форме редактирования сообщения есть), нам было бы легче общаться, т.к. там есть нумерация строк.
0
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
25.05.2009, 20:00  [ТС] #11
то что написано работает.Создает 2 файла ,записывает цифры(в строчку) копирует цифры в 3 файл(тоже в строчку(((((((((() и выводит на экран

Добавлено через 1 минуту 50 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<iostream.h>;
#include <string.h>
#include <fstream>
#include<stdio.h>;
#pragma argsused
void main( void )
{
FILE *Name1;
FILE *Name2;
FILE *NameT;
char* file_name1 = "Name1.txt";
char* file_name2 = "Name2.txt";
char* file_nameT = "NameT.txt";
char load_string[50] = "none";
char w[50] = "none";
char q[50] = "none";
int  i,j;
Name1 = fopen( file_name1, "wt" );
Name2 = fopen( file_name2, "wt" );
   for( i=0; i<5; i++ )
   {
     fprintf( Name1, "|%d| ", i );
   }
   for( j=0; j<5; j++ )
   {
     fprintf( Name2, "|%d| ", j );
   }
fclose( Name1 );
fclose(Name2);
 
Name1 = fopen( file_name1, "r" );
Name2 = fopen( file_name2, "r" );
NameT = fopen( file_nameT, "wt" );
if( Name1 != 0 )
{
fgets( w, 50 , Name1 );
cout << "Name1 : \n\n" << w <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
if( Name2 != 0 )
{
fgets( q, 50 , Name2 );
cout << "Name2  \n\n" << q <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fputs(w,NameT);
fputs(q,NameT);
fclose(NameT);
fclose(Name1);
fclose(Name2);
NameT = fopen( file_nameT, "r" );
if( NameT != 0 )
{
fgets( load_string, 50 , NameT );
cout << "NameT : \n\n" << load_string<<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fclose(NameT);
system("pause");
}
0
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
25.05.2009, 20:08 #12
Нажми "правка" для своего сообщения и выдели весь код программы, затем нажми кнопочку с надписью "C++", она под кнопками для управления начертанием шрифта (B,I,U).

Добавлено через 4 минуты 20 секунд
PS: и если можно, то текст задания не в кратце, а полностью - как преподаватель дал .
0
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
25.05.2009, 20:26  [ТС] #13
Программа рабочая. Создает два файла, заполняет его числами(в строчку), создает 3 файл, копирует в него числа из первых двух и выводит на экран(тоже в строчку(((((((()

Добавлено через 59 секунд
текст задания я привел полностью как препод дал

Добавлено через 1 минуту 21 секунду
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<iostream.h>;
#include <string.h>
#include <fstream>
#include<stdio.h>;
#pragma argsused
void main( void )
{
FILE *Name1;
FILE *Name2;
FILE *NameT;
char* file_name1 = "Name1.txt";
char* file_name2 = "Name2.txt";
char* file_nameT = "NameT.txt";
char load_string[50] = "none";
char w[50] = "none";
char q[50] = "none";
int  i,j;
Name1 = fopen( file_name1, "wt" );
Name2 = fopen( file_name2, "wt" );
   for( i=0; i<5; i++ )
   {
     fprintf( Name1, "|%d| ", i );
   }
   for( j=0; j<5; j++ )
   {
     fprintf( Name2, "|%d| ", j );
   }
fclose( Name1 );
fclose(Name2);
 
Name1 = fopen( file_name1, "r" );
Name2 = fopen( file_name2, "r" );
NameT = fopen( file_nameT, "wt" );
if( Name1 != 0 )
{
fgets( w, 50 , Name1 );
cout << "Name1 : \n\n" << w <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
if( Name2 != 0 )
{
fgets( q, 50 , Name2 );
cout << "Name2  \n\n" << q <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fputs(w,NameT);
fputs(q,NameT);
fclose(NameT);
fclose(Name1);
fclose(Name2);
NameT = fopen( file_nameT, "r" );
if( NameT != 0 )
{
fgets( load_string, 50 , NameT );
cout << "NameT : \n\n" << load_string<<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fclose(NameT);
system("pause");
}
Добавлено через 38 секунд
вот так

Добавлено через 5 минут 18 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
#include<iostream.h>;
#include <string.h>
#include <fstream>
#include<stdio.h>;
#pragma argsused
void main( void )
{
FILE *Name1;
FILE *Name2;
FILE *NameT;
char* file_name1 = "Name1.txt";
char* file_name2 = "Name2.txt";
char* file_nameT = "NameT.txt";
char load_string[50] = "none";
char w[50] = "none";
char q[50] = "none";
int  i,j;
Name1 = fopen( file_name1, "wt" );
Name2 = fopen( file_name2, "wt" );
   for( i=0; i<5; i++ )
   {
     fprintf( Name1, "|%d| ", i );
   }
   for( j=0; j<5; j++ )
   {
     fprintf( Name2, "|%d| ", j );
   }
fclose( Name1 );
fclose(Name2);
 
Name1 = fopen( file_name1, "r" );
Name2 = fopen( file_name2, "r" );
NameT = fopen( file_nameT, "wt" );
if( Name1 != 0 )
{
fgets( w, 50 , Name1 );
cout << "Name1 : \n\n" << w <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
if( Name2 != 0 )
{
fgets( q, 50 , Name2 );
cout << "Name2  \n\n" << q <<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fputs(w,NameT);
fputs(q,NameT);
fclose(NameT);
fclose(Name1);
fclose(Name2);
NameT = fopen( file_nameT, "r" );
if( NameT != 0 )
{
fgets( load_string, 50 , NameT );
cout << "NameT : \n\n" << load_string<<"\n"<< endl;
}
else
{
cout << "File not found !!!" << endl;
}
fclose(NameT);
system("pause");
}
 
//---------------------------------------------------------------------------
Добавлено через 1 минуту 58 секунд
Блин запутался то ли добавляет сообщение то ли нет сори за флуд одними и теми же сообщениями
0
Xardas
15 / 15 / 0
Регистрация: 08.05.2009
Сообщений: 81
25.05.2009, 20:32 #14
По заданию не совсем понятно - только в конечном файле должны быть разделители в начале и конце каждой строки, или в исходных тоже.
Из задания неясно - сколько чисел в строке. И что значит ширина 30 символов? Либо просто выводить числа подряд из файла, и когда общая ширина строки достигнет 30 символов, то продолжать вывод с новой строки, либо это какой-то намек на количество чисел в строке.

И собственно, числа-то какие - целые, или вещественные?

Добавлено через 1 минуту 2 секунды
(Попробуй просто обновить страницу. если не получится, то лишнее удалишь. у меня тоже бывало такое)

PS: просто в зависимости от условия решение может быть как элементарным, так и не слишком тривиальным. Например, если количество чисел в строке не фиксировано, то нужно будет его определить еще по входному файлу. К тому же, если разделители присутствуют во входных файлах тоже, то придется работать со строками (чего не хочется), что весьма осложнит задачу и выигрыша от использования потоков не будет.
0
Андрей Полынкин
0 / 0 / 0
Регистрация: 25.05.2009
Сообщений: 20
25.05.2009, 20:39  [ТС] #15
Числа в исходных вещественные, что же касается разделителей то только в конечном файле анасчет столбцов они должны быть просто шириной 30 т.е. разделител как я понял обозначают нширину столбца
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2009, 20:39
Привет! Вот еще темы с ответами:

Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но в обратном порядке - C++
Пожалуйста, помогите решить задачу в C++!!! Дан файл целых чисел. Создать новый файл, содержащий те же элементы, что и исходный файл, но...

Создать текстовый файл содержащий все группы слов из словаря отличающиеся расположением букв - C++
Нужно сделать лабу,я впринципе копирование сделал,но вот только он дальше проверки 1ого слова не идёт =( Дан текстовый файл-словарь (в...

Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый файл - C++
Дан текстовый файл, содержащий целые числа. Определить в каждой четной строке максимальное число и записать результаты в новый текстовый...

Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла - C++
Дан файл целых чисел. Создать новый файл целых чисел, содержащий длины всех серий исходного файла (серией называется набор последова- ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
25.05.2009, 20:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru