2013-12-08 2 views
0

Я пытаюсь создать программу, которая попросит пользователя ввести имя (предполагается, что каждое имя будет содержать 30 символов или меньше). Затем он найдет популярность названия с 1921 по 2010 год и распечатает график и график. Затем программа спросит пользователя, хотят ли они сделать еще один анализ и повторить этот процесс.C: проблема с пониманием этого файла/инструкция на основе структуры

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

Функция 1:

int getRawData(FILE* fp,struct NameRecord records[],int currSize);` 

функции передается указатель на файл, который уже открыт для чтения. Каждая строка в этом файле будет иметь вид (имена являются полностью капитализируются в файле):

год, NAME, частота

Функция также передается массив NameRecord структур (записей) и количество записей в этом массиве (currSize). эта функция будет считывать данные из файла в массив, помещая его в конец массива (первая запись из файла будет помещена в массив [currSize]). Функция будет возвращать общее количество записей в массиве после чтения в файле.

struct NameRecord{ 
      char name[31]; 
      int year; 
      int frequency; 
     } 

Теперь я не уверен, если это означает, что мне нужно создать новый массив в функции, которая принимает запись из файла или, если это что-то совсем другое, и я не читала инструкцию . правильно (файл в этом случае malebabynames.csv)

вторая функция:

void setYearTotals(struct NameRecord records[], int size, int yearRangeTotal[]); 

функция передается массив NameRecords (записей) и размер это массив (размер). Также передается массив под названием yearRangeTotal , который будет использоваться для хранения общей численности населения за данный год .

yearRangeTotal[0] holds the total population between 1921 to 1925 
yearRangeTotal[1] holds the total population between 1926 to 1930 
yearRangeTotal[2] holds the total population between 1931 to 1935 
... 
yearRangeTotal[17] holds the total population between 2006 to 2010 

ответ

1

(1) Нет, просто заполнить массив, который передается. Это не отличается от передачи fread массива char (или что-то еще) и просить его прочитать N элементов. Проверьте код возврата, чтобы узнать, сколько из них действительно было прочитано.

(2) Менее ясный. Я бы предположил, что вас попросят перебрать массив NameRecord и увеличить соответствующий элемент yearRangeTotal в соответствии с полем «год» в NameRecord.year.

Смежные вопросы