Автор Тема: Работа с файлове  (Прочетена 5620 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Работа с файлове
« -: 03 Декември 2013, 21:02:34 »
Здравейте!
Имам нужда от помощ.
Така имам файл file.dat, който съдържа данни за студент: фак.ном, име, фамилия, точки.Използвам библиотека fstream направил съм няколко функции за добавяне на студент, редактиране, извеждане на всички студенти и така нататък, но малко забих за следните функции:
-Трябва да напиша функция която прочита файла и записва данните в масив.
-Функция която сортира масива по точки.
-Функция която намира средно аритметично на точките.
Благодаря!

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Работа с файлове
« Отговор #1 -: 03 Декември 2013, 21:55:12 »
Какво точно си забил? На мене лично с една година опит информатика от университета ми е по-трудно да направя това, което имаш дотук, отколкото това което ти е останало.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Работа с файлове
« Отговор #2 -: 03 Декември 2013, 22:16:41 »
Ами например как при прочитане на файла да пропусна нулевите елементи. Как да изчисля sizeof на файла, т.е ако има 5 записа да прочете 5 а не 205 ако зададем предварително зададени записи.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Работа с файлове
« Отговор #3 -: 03 Декември 2013, 23:06:34 »
Ето ти една скромна идея, как да записваш информацията от файла в масив, скалъпена от мен, с малко познания и повече гугъл. Сортирането е по-лесно, то се учи в първи семестър :)
Код: C++
  1. #include "stdafx.h"
  2. #include "iostream"
  3. #include "fstream"
  4. #include "string"
  5.  
  6. using namespace std;
  7.  
  8. string line;
  9. string arrayInfo [5];
  10.  
  11. void main() {
  12.  
  13.         ifstream file;
  14.         file.open("File.dat");
  15.        
  16.         int i = 0;
  17.         // Четем информацията от файла
  18.         while (getline(file, line)) {
  19.                 if (line == "") { // Ако няма нищо на реда, ами пропускамего
  20.                         continue;
  21.                 }
  22.                 arrayInfo[i] = line; // записваме съдържанието на съответния ред в масив
  23.                 i++;
  24.         }
  25.         file.close();
  26.  
  27.         // int arraySize = (sizeof(arrayInfo)/sizeof(*arrayInfo)) - това ще намери колко елемента има масива, ако не беше задал/знаеше предварително
  28.         for (int x = 0; x < 5; x++) {
  29.                 cout<<arrayInfo[x]<<"\n";
  30.         }
  31.  
  32.         system("PAUSE");
  33. }
« Последна редакция: 03 Декември 2013, 23:08:29 от Avalanche »
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Работа с файлове
« Отговор #4 -: 04 Декември 2013, 12:30:53 »
Благодаря за идеята, това ми беше проблема да запиша информацията в масив сортирането не е толкова голям проблем за сега, поне докато не съм направил записването  ;D  :)

Слято мнение: 04 Декември 2013, 13:03:20
Сега проблемът е друг като извеждам масива факултетния номер и точките не ги извежда както трябва т.е ако факултетния номер е 1 извежда усмивка  :D Всъщност това е защото го прочитам с getline и го слагам в стринг.
« Последна редакция: 05 Декември 2013, 23:46:45 от choice »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Работа с файлове
« Отговор #5 -: 17 Декември 2013, 13:36:19 »
Благодаря за идеята, това ми беше проблема да запиша информацията в масив сортирането не е толкова голям проблем за сега, поне докато не съм направил записването  ;D  :)

Слято мнение: 04 Декември 2013, 13:03:20
Сега проблемът е друг като извеждам масива факултетния номер и точките не ги извежда както трябва т.е ако факултетния номер е 1 извежда усмивка  :D Всъщност това е защото го прочитам с getline и го слагам в стринг.
Извинявай, не съм видял че си писал още един отговор понеже се е слял с другия. Май ще трябва да я разкараме тази функционалност на форума. Та до къде стигна, още ли си с усмивчици?
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Работа с файлове
« Отговор #6 -: 17 Декември 2013, 18:25:37 »
Нямах време да продължа до сега, сега тръгнах да разнищвам още малко направих и функцията за средно аритметично, остана ми тази с масива. Интересно ми е  ако задам масив от структура Student massive[250]; , при прочитане на файла например f.read(reinterpret_cast<char*>(&s),sizeof(Student)); как да го запиша в масива за да мога да го сортирам. Май малко не успях да обясня :D

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Работа с файлове
« Отговор #7 -: 17 Декември 2013, 18:39:29 »
Май малко да. За сортирането отваряш лекциите, там някъде трябва да има метод на мехурче, на балони, там е ключа от бараката :)
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Работа с файлове
« Отговор #8 -: 17 Декември 2013, 18:52:10 »
Сортирането ще го оправя, но както казах много ми е интересно това с масива как ще го направя. Окей например прочитам файла
Код: C++
  1. Struct s;
  2. Struct massive[250];
  3. fstream p;
  4. p.open("file.txt");
  5. if(!p){
  6.        cout<<"Faylut ne moje da b1de otvoren";
  7.        }else{
  8.             p.read(reinterpret_cast<char *>(&s),sizeof(Struct));
  9.             while(p.good()){
  10.             if(s.faknom !=0){
  11.                        
  12.              cout<<s.faknom<<" "<<s.name<<" "<<s.fname<<" "<<s.points<<endl;;            
  13.              p.read(reinterpret_cast<char *>(&s),sizeof(Struct));
  14.                                           }
  15.                                   }
  16.              }
  17. p.close();
  18.  
Ето така мога да си изведа съдържанието на файла. Ако пробвам да присвоя прочетеното от файла в масива ест че няма да стане :D

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Работа с файлове
« Отговор #9 -: 17 Декември 2013, 20:18:06 »
Знанията ми по C++ започват да се изчерпват, но пък ми стана интересно какъв е тоя масив от тип Struct. Я дай да видим и този документ с информацията за студентите.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Работа с файлове
« Отговор #10 -: 17 Декември 2013, 20:39:26 »
Нямам такова нещо  :'(

Prometheus

  • Гост
Re: Работа с файлове
« Отговор #11 -: 17 Декември 2013, 20:54:40 »
Имаш - виж си горния пост

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Работа с файлове
« Отговор #12 -: 17 Декември 2013, 20:58:45 »
"документ с информацията за студентите"- т.е източник на информация по програмиране ?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Работа с файлове
« Отговор #13 -: 17 Декември 2013, 21:35:01 »
Нямам такова нещо  :'(
Код: C++
  1. Struct s;
  2. Struct massive[250];
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

choice

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Работа с файлове
« Отговор #14 -: 18 Декември 2013, 13:55:58 »
Оправих го!
Масива от структура например: struct massive[NUM];
И после си прехвърлих цялата информация от файла в масива.