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

Форум АНТИЧАТ (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=122892)

unfii 30.05.2009 20:10

Работа с файлами
 
Создать файл, содержащий сведения о результатах охоты.
Данные должны быть представлены в виде следующей структуры:
-фамилия охотника;
-количество убитых животных;
-общая масса всех животных.
Написать программу, которая находит самого результативного охотника-за количеством животных и по весу животных.
Каждую из функций разместить в отдельном заголовочном файле.

На чем я остановился?
Код:

#include <stdio.h>
#include <stdlib.h>
#define FILE_NAME "file.txt"
struct oxota
{
char prizvishe;
int vpol;
int vaga;};

void main ()
{
struct oxota data[100];
char line[100];
int v=0;
FILE*fp=fopen(FILE_NAME, "r");
while (fgets(line, sizeof(line), fp)!=NULL)
{
sscanf(line, "%s %i %i", &data[v].prizvishe, &data[v].vpol, &data[v].vaga);
printf("%s", line);
v++;
}
printf("\n");
}


Fata1ex 30.05.2009 20:24

В каком виде строки в файле?

unfii 30.05.2009 20:29

пример 2 записей
Код:

Babyrka 12 300
Pupkin 13 200


Fata1ex 30.05.2009 21:06

Код:

// main.cpp

#include //
#include "readname.h"
#include "readmass.h"
#include "readcount.h"


const int N = 10;

int main () {
        const char* name;
        scanf_s("%s",&name);
        FILE *f;
        char* names;
        int* mass;
        int* count;
        char buffer[256];

 f=fopen(name, "r");

if (f) {
        while (fgetc(f)!=EOF) {
                for (int i=0; N; i++) {
                fgets(buffer, 256, f);
                        readname(i, names, buffer);
                        readmass(i, mass, buffer);
                        readcount(i, count, buffer);
                }
        }
}
int maxcount=0;
int C=0;
int maxmass=0; 
int m=0;

for (int i=0; N; i++) {
        if (mass[i]>maxmass) {
                maxmass=mass[i];
                m=i; }
        if (count[i]>maxcount) {
                maxcount=count[i];
                C=i; }
      }


        for (int i=0; N; i++) {
                if (mass[i]=maxmass)
                        printf(" Максимальная масса %s", &name[m]);
                if (count[i]=maxcount)
                        printf(" Максимальное количество %s", &name[C]);
        }

return 0;
}

Код:

// readname.h

#include //


void readname(int i, char* names, char* buffer) {
        char c;
                while (1) {
                        sscanf_s(buffer, "%c", &c);
                        if (c==' ') break;
                        names[i]+=c;
                        }
}

Код:

// readcount.h

#include //

void readcount(int i, int* count, char* buffer) {
        char c;
        char* temp;
                while (1) {
                        sscanf_s(buffer, "%c", &c);
                        if (c==' ') break;
                        temp+=c;
                        }
       
        count[i]=atoi(temp);
}

Код:

// readmass.h

#include //

void readmass(int i, int* mass, char* buffer) {
        char c;
        char* temp;
                while (1) {
                        sscanf_s(buffer, "%c", &c);
                        if (c==' ') break;
                        temp+=c;
                        }
       
        mass[i]=atoi(temp);
}


unfii 30.05.2009 21:14

а можно просто на C?а то преподы порешают :)

Ra$cal 31.05.2009 00:54

я не пойму в чем сложность? ну считал ты всех охотников в массив. отправляй этот массив в функции, считающие лучшего охотника. там простой цикл.
в первой функции переменные типа

Код:

int cur_max_kills = 0;
int best_hunter_index = 0;
if(cur_max_kills < hunters[i].kills){
    cur_max_kills = hunters[i].kills;
    best_hunter_index = i;
}

эти функции, которые вычисляют лучших охотников, вообще мало чем привязаны к си \ с++, ибо не юзают никакие специфичные классы и функции. чистый самопал.

unfii 31.05.2009 18:06

ошибка KRNL386.exe при запуске приложения

Ra$cal 31.05.2009 18:23

борланд такой борланд.
на самом деле хз что значит эта ошибка, ибо борланд с++ никада не юзал.


Время: 20:29