2014-05-20 4 views
-5
S,John 2 MATH101 CSE100 
K,Jack 2 BLAW203 MATH101 
B,Brown 2 STAT253 MATH259 
G,Mary 3 MATH259 HIST111 STAT253 

Это мой txt-файл, и я хочу преобразовать список совместимости.Преобразование файла txt в список смежности

Курсы в матрице названы как числа, так:

0 - MATH101 
1 - CSE100 
2 - BLAW203 
3 - STAT253 
4 - MATH259 
5 - HIST111 

Как я могу читать и конвертировать список adjancency в C? Спасибо.

+1

Вы уже пробовали? Вернитесь, когда у вас есть попытка – EyeOfTheHawks

+0

Я понятия не имею. Это часть моего проекта. Если я смогу сделать эту часть, я завершу проект. – Semih

+2

Мы здесь не для того, чтобы делать домашнее задание, вам нужно что-то принести к столу. Посмотрите на проблему очень высокоуровневую (не в плане программирования, как на концепцию вообще). Посмотрите, можете ли вы работать с высокого уровня на код. – EyeOfTheHawks

ответ

0

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

#include <stdio.h> 
#include <stdlib.h> 
#include <assert.h> 

int main() 
{ 

    FILE *in = fopen("newfile","r"); 
    FILE *out = fopen("newfile2.txt","w"); 
    size_t snby = 1024; 
    char *lineBuf = malloc(1024*sizeof(char)); 
    char *tmpVal; 
    char *maxVal; 
    int loop = 0; 
    int gar = 0; 
    int line = 0; 
    while(getline(&lineBuf, &snby, in) != -1) 
    { 
      if (gar == 0) 
      { 
       fprintf(out, "%d - ", line); 
       line++; 
       gar++; 
      } 
      else 
      { 
       fprintf(out, "\n%d - ", line); 
       line++; 
      } 
      line++; 
      int mark = 0; 
      tmpVal = lineBuf; 
      while(mark != 2) 
      { 
       if (*tmpVal == ' ') mark++; 
       tmpVal++; 
      } 
      while(*tmpVal != '\n') 
      { 
       if(*tmpVal == ' ') 
       { 
        fprintf(out, "\n%d - ", line); 
        line++; 
       } 
       else 
       { 
        fprintf(out, "%c", *tmpVal); 
       } 
       tmpVal++; 
      } 


    } 
    free(lineBuf); 
    fclose(out); 
    fclose(in); 
    return 0; 
} 
0

Это один из способов сделать это можно:

  1. Откройте входной файл. в режиме READ.
  2. Введите цикл, чтобы прочитать все строки из входного файла.
    1. Ознакомьтесь с первой строкой из файла.
    2. Назначьте новый узел списка учеников.
    3. Анализ имени студента с полей lineBuf на newStudentNode-> name
    4. Проанализируйте количество курсов из lineBuf.
    5. Введите цикл, чтобы проанализировать имя каждого курса из lineBuf.
      1. Разберите название курса.
      2. Преобразование названия курса в номер курса.
      3. Выделите новый узел курса.
      4. Вставьте newCourseNode в качестве хвостового узла списка курса newStudentNode.
    6. Вставьте новый элементStudentNode в качестве хвостового узла студента.

И если нужно, here это код спойлер.

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