Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Задача =) (https://forum.antichat.xyz/showthread.php?t=39468)

Sinex 03.05.2007 23:37

Задача =)
 
Помогите пожалуйста с задачей на C++,буду благодарен до конца жизни, не получается у самого, опыта нет =(
В рабочем каталоге Exzample размещен файл, содержащий информацию об итогах сессии в учебной группе. Сведения о каждом студенте предоставлены в следующем виде:
Фамилия, инициалы - 20 букв
оценки по физике, математике, механики и истории - 1 байт
Составить программу создания индексного файла в каталоге E:/rab с именем Ind1.dat, в котором разместить записи, средний балл по всем экзаменам в которых меньше 3,5.
Функции работы с записями оформить в виде открытого метода.

Gorn 04.05.2007 00:11

Если я правильно понял задачу - то вот прога:
Код:

#include <stdio.h>
#include <string.h>

class CFind
{
        char *FILEIN,*FILEOUT;
public:
        void SetInFile(char *name) { FILEIN = new char[strlen(name)]; strcpy(FILEIN,name); }
        void SetOutFile(char *name) { FILEOUT = new char[strlen(name)]; strcpy(FILEOUT,name); }
        void Make()
        {
                char line[21],fio[21];
                int p,m,meh,h;
                double res;
                FILE *fin = fopen(FILEIN,"r");
                FILE *fout = fopen(FILEOUT,"w");
                while (fgets(line,20,fin))
                {
                        strcpy(fio,line);
                        fgets(line,20,fin);
                        sscanf(line,"%d %d %d %d",&p,&m,&meh,&h);
                        if ((double)(p+m+meh+h)/4.0>=3.5) continue;
                        fputs(fio,fout);
                        fputs(line,fout);               
                }
                fclose(fin);
                fclose(fout);
        }
};

int main()
{
        CFind fnd;
        fnd.SetInFile("base.txt");
        fnd.SetOutFile("E:/rab/ind1.dat");
        fnd.Make();
        return 0;
}

Формат in файла:
Код:

Пупкин В.В.
3 5 7 2
Петров П.П
4 6 8 3
Иванов И.И
1 2 2 2

Формат out файла:
Код:

Иванов И.И
1 2 2 2

Если чё не так - пиши )

Sinex 04.05.2007 07:52

Спасибо огромное =)

Sinex 13.05.2007 19:35

Опять не могу решить, помогите плиз, это последняя для сдачи. Вся надежда на родной античат =(

Файл Rez1.dat,расположенный в каталогу EXZAMPL диска, содержит вещественные числа, являющиеся значениями матрицы размера 8*9. Составить объект имеющий метод чтения их в динамический массив и поиска минимального значения из максимальных значений строк матрицы. На экран вывести значение и исходной матрицы, полученные максимальные значения и выбранное минимальное.

sni4ok 13.05.2007 20:20

Цитата:

Сообщение от Gorn
Если я правильно понял задачу - то вот прога:

просто ужас, куча мемори ликов.

scrat 13.05.2007 22:55

блин я ужасно торможу и голова болит!вот что получилось:
Код:

class matr
{
public:
        int m[8][9];
        void read(char* filename)
        {
                ifstream f(filename);
                for(int i=0;i<8;i++) for(int j=0;i<9;i++) f>>m[i][j];
        }
        void show()
        {
                for(int i=0;i<8;i++) for(int j=0;i<9;i++) cout<<m[i][j]<<endl;
        }
};


Ky3bMu4 14.05.2007 17:50

А вот и поиск мах числа из мах строк. Мог где-нить не поставить } . И не забудь про +
Код:

//матрица int m[8][9] уже есть. Ищем Макс значения в стрроках.

int e;
int n;
int w = 0;
int s=8;//строки и столбцы
int k=9;
int l = 0;
for(s; s=>0; s--)
{
for (k;k=>0; k--)
{
if(l==0){ //если ваще первый наш элемент
e = [s][k];
l++;
}
else{
if(e<m[s][k]){ //если текущий эл-мент больше мах значение строки
e=m[s][k];
}
}
if(k == 0){//если посчитали всю строку
if(w==0){ //если наша первая  строка
n = e; //текущее мах значение строки кладём в мах всей матрицы
w++;
}
if(e>n){ //текущее мах значение строки больше мах всей матрицы
n = e;

l = 0; //  посчитали всю строку 
}


}
}


Sinex 14.05.2007 21:25

всем спасибо)


Время: 23:24