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

Работа с файлами - C++

Восстановить пароль Регистрация
 
yura`
 Аватар для yura`
11 / 21 / 0
Регистрация: 09.02.2010
Сообщений: 107
13.05.2010, 21:34     Работа с файлами #1
Всем добрый день. Помогите кто-нибудь с этим заданием: о каждом из студентов известны фамилия и информация о том, имеет ли студент зачет по каждому из 6 предметов. Отпечатать фамилии студентов, не имеющих зачета более чем по 2 предметам.
Сам файл создать нужно самостоятельно, и с него информацию брать для создания нового файла.
Только на С++ программу делать, не на С.
Заранее очень и очень благодарен.

Добавлено через 3 часа 28 минут
Помогите пожалуйста, очень нужно...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 21:34     Работа с файлами
Посмотрите здесь:

C++ Работа с файлами
Работа с файлами C++
Работа с файлами. C++
C++ Работа с файлами
C++ Работа с файлами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
13.05.2010, 22:19     Работа с файлами #2
т.е. есть файл текстовый в котором информация о студентах, вводить информацию с консоли не нужно, а просто взять считать данные с файла?
yura`
 Аватар для yura`
11 / 21 / 0
Регистрация: 09.02.2010
Сообщений: 107
13.05.2010, 22:28  [ТС]     Работа с файлами #3
Да, ну вот есть пример похожей рабочей программы:
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
#include <iostream>
#include <fstream>
using namespace std;
char f[] = "file1.txt";
char g[] = "file2.txt";
char h[] = "out.txt";
ifstream inp1(f);
ifstream inp2(g);
ofstream out(h);
 
int main()
{
        int n;
       while(inp1 >> n) {
                out << n << " ";
        }
        while(inp2 >> n) {
                        out << n << " ";
        }
        out.close();
        inp1.close();
        inp2.close();
        system("PAUSE");
        return 0;
}
Заранее спасибо.

Добавлено через 1 минуту
Тут есть созданые пользователем текст в текстовом файле, и данные с файлов считываются в новый, но я не знаю как в моей программе это все вычислить...тоесть как перенести правильные данные по условию задания в новый файл...
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
13.05.2010, 23:08     Работа с файлами #4
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
//о каждом из студентов известны фамилия и информация о том, имеет ли студент зачет по каждому из 6 предметов.
//Отпечатать фамилии студентов, не имеющих зачета более чем по 2 предметам. 
//Сам файл создать нужно самостоятельно, и с него информацию брать для создания нового файла.
//Только на С++ программу делать, не на С.
#include<iostream>
using namespace std;
struct Student
{
    char name[150];
    int osenk[6];
};
void Find(Student *st,int n)
{
    FILE *fn;
        fn=fopen("student2.txt","w");
    if(!fn)
        cout<<"Невозможно открыть файл\n";
    else
    {
    int ch=0;
    for(int i=0;i<n;i++)
    {
        int k=0;
        for(int j=0;j<5;j++)
        {
            if(st[i].osenk[j]<=2)
                ch++;
        if(ch>2&&k==0)
        {
            fprintf(fn,"%s\t%d\t%d\t%d\t%d\t%d\t%d\t\n",st[i].name,st[i].osenk[0],st[i].osenk[1],st[i].osenk[2],st[i].osenk[3],st[i].osenk[4],st[i].osenk[5]);
        k++;
        }
            
        }
    }
    
 
}
    fclose(fn);
}
void main()
{
    int n=10,q=0;
    Student *st=new Student[n];
    setlocale(LC_CTYPE,"Rus");
    FILE *fo;
    fo=fopen("student.txt","r");
    if(!fo)
        cout<<"Невозможно открыть файл\n";
    else
    {
        while(!feof(fo))
        {
            fscanf(fo,"%s%d%d%d%d%d%d",&st[q].name,&st[q].osenk[0],&st[q].osenk[1],&st[q].osenk[2],&st[q].osenk[3],&st[q].osenk[4],&st[q].osenk[5]);
            q++;
        }
    fclose(fo);
    }
    Find(st,n);
    cout<<endl;
    delete [] st;
}
Файл студентов выглядит так
Серов 5 5 5 3 2 2
Белов 2 2 2 2 2 2
Иванов 2 2 2 2 2 2

и т.д.

Добавлено через 40 секунд
использовал не сдал это оценка меньше 2х
yura`
 Аватар для yura`
11 / 21 / 0
Регистрация: 09.02.2010
Сообщений: 107
13.05.2010, 23:33  [ТС]     Работа с файлами #5
Crudelis, программа выдает ошибку...Может я не там работаю где нужно? У меня Dev C++ .
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
14.05.2010, 00:20     Работа с файлами #6
попробуйте подключить <stdio.h>
и вместо <iostream> попробуйте <iostream.h>
yura`
 Аватар для yura`
11 / 21 / 0
Регистрация: 09.02.2010
Сообщений: 107
14.05.2010, 00:50  [ТС]     Работа с файлами #7
Vorona, у меня ошибку выдает сдесь:
C++
1
2
3
void main()
{
        int n=10,q=0;
Ошибка выглядит так:
`main' must return `int'
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
14.05.2010, 01:00     Работа с файлами #8
Цитата Сообщение от yura` Посмотреть сообщение
Ошибка выглядит так:
`main' must return `int'
C++
1
2
3
4
5
...
int main(){
...
    return 0;
}
yura`
 Аватар для yura`
11 / 21 / 0
Регистрация: 09.02.2010
Сообщений: 107
14.05.2010, 01:13  [ТС]     Работа с файлами #9
easybudda, а куда его вставить?
Я уже пробывал по разному...А оно еще больше ошибок...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2010, 01:21     Работа с файлами
Еще ссылки по теме:

C++ Работа с файлами
C++ Работа с файлами. С++
Работа с файлами C++

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

Или воспользуйтесь поиском по форуму:
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
14.05.2010, 01:21     Работа с файлами #10
работает?
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
#include<iostream>
using namespace std;
struct Student
{
        char name[150];
        int osenk[6];
};
void Find(Student *st,int n)
{
        FILE *fn;
                fn=fopen("student2.txt","w");
        if(!fn)
                cout<<"Невозможно открыть файл\n";
        else
        {
        int ch=0;
        for(int i=0;i<n;i++)
        {
                int k=0;
                for(int j=0;j<5;j++)
                {
                        if(st[i].osenk[j]<=2)
                                ch++;
                if(ch>2&&k==0)
                {
                        fprintf(fn,"%s\t%d\t%d\t%d\t%d\t%d\t%d\t\n",st[i].name,st[i].osenk[0],st[i].osenk[1],st[i].osenk[2],st[i].osenk[3],st[i].osenk[4],st[i].osenk[5]);
                k++;
                }
                        
                }
        }
        
 
}
        fclose(fn);
}
int main()
{
        int n=10,q=0;
        Student *st=new Student[n];
        setlocale(LC_CTYPE,"Rus");
        FILE *fo;
        fo=fopen("student.txt","r");
        if(!fo)
                cout<<"Невозможно открыть файл\n";
        else
        {
                while(!feof(fo))
                {
                        fscanf(fo,"%s%d%d%d%d%d%d",&st[q].name,&st[q].osenk[0],&st[q].osenk[1],&st[q].osenk[2],&st[q].osenk[3],&st[q].osenk[4],&st[q].osenk[5]);
                        q++;
                }
        fclose(fo);
        }
        Find(st,n);
        cout<<endl;
        delete [] st;
        return 0;
}
Yandex
Объявления
14.05.2010, 01:21     Работа с файлами
Ответ Создать тему
Опции темы

Текущее время: 17:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru