Работа с файлами

  • Автор темы piton369
  • Дата начала
P

piton369

#1
Случайным образом создать таблицу пар значений и записать её в текстовый файл в виде:
n * c
5 * m
7 * a
3 * q и т.д.
Считать из файла пары значений и создать из них другой текстовый файл вида
mmmmm
aaaaaaa
qqq
Вот что я пока написал:
C++:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include<time.h>
#include<math.h>
using namespace std;
void main()
{time_t t;
srand(time(&t));
int i,c=0;
float x,y;
FILE *fp, *ft;
fp=fopen("in.txt", "w");
for(i=0;i<15;i++)
{
x=rand()%100/10.0f;
y=rand()%100/10.0f;
fprintf(fp,"%3.lf:%3.lf\n",x,y);
}
fclose(fp);
fp=fopen("in.txt", "r");
ft=fopen("out.txt","w");
for(i=0;i<15;i++)
{fscanf(fp,"%f",&x);
fscanf(fp,"%f",&y);
fprintf(ft,"%3.lf",y);
while(x=0)
{
fprintf(ft,"%3.lf",y);
x=x-1;
}
}
fclose(fp);
fclose(ft);
fp=fopen("in.txt","r");
printf(" n : c\n");
while ((c=fgetc(fp))!=EOF)
printf("%c",c);
fclose (fp);
}

Я не знаю как заполнять буквами и ошибка в заполнении второго файла, помогите пожалйуста
 

ВЛас

New member
04.04.2008
3
0
#2
Задание следует конкретизировать, например так:

Случайным образом создать таблицу 15 пар значений n * c,
где n – случайное число в диапазоне от 1 до 10,
с – символ с кодом ASCII от 97 до 122,
(числа и символы могут повторяться)
и записать её на экран и в текстовый файл в виде:

5 * m
7 * a
3 * q и т.д.

Считать из файла пары значений, записать на экран
и создать из них другой текстовый файл вида
mmmmm
aaaaaaa
qqq

А вот решение на С++, создано, проверено и отлажено в Visual C++ 2008.

C++:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include<time.h>
using namespace std;
void main()
{

int n;
char c;


srand(time(NULL));
// создание исходного файла
ofstream fp;
fp.open("in.txt");
for(int i=1;i<=15;i++)
{
n=1 + rand() % 10;
c=97 + rand() % 24;
fp << n << " * " << c << endl;
cout << n << " * " << c << endl;
}
fp.close();

cout << endl;
// создание конечного файла
int ii=0;
char ch[2];

ifstream fp1;
fp1.open("in.txt");

ofstream ft;
ft.open("out.txt");

for(int i=1;i<=15;i++)
{
fp1 >> n >> ch >> c; // чтение данных из файла
ii=0;
while (ii < n)
{
cout << c;// вывод в консольное окно
ft << c;// вывод в файл
ii++;
}
cout << endl;
ft << endl;
}
fp1.close();
ft.close();
}
 
P

Poloz

#4
Здравствуйте, помогите пожалуйста. Есть файл с таким содержанием

input.txt
2115959972 1097468422
926583362 511606919
2540269021 462145303
3944088823 962858646
1378309145 185548767
184384886 723230571
758674860 153732082
235924252 3413274775
2101168336 4091192498
1604482021 1434320407

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

C++:
int main()
{
char tmp[22];
FILE *input;
input = fopen("input.txt","rb");	
while(!feof(input))
{						
fgets(tmp,22,input);
cout<<tmp;
}

return 0;
}
П.С. никто не писал программу расчета S-блоков?
 
A

abdyla_v

#7
нужно прочитать его и каждую строку записать в отдельный элемент массива.
Наталья, прочитать и получать каждую строку уже ты можеш. Осталось понять куда ты хочеш затолкнуть эту строку? В масив строк или другое?