Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поменять записи местами 
:(
    Опции темы
Alexey91
  Дата 7.4.2009, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Дана запись.  Поменять местами в файле записи о первых двух студентах.

Как это сделать?  smile 
PM   Вверх
GoldFinch
Дата 7.4.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



прочитать и записать в обратном порядке

алсо тема  не в том разделе
PM MAIL ICQ   Вверх
andrew_121
Дата 7.4.2009, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Alexey91, Код показывай!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 7.4.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(andrew_121 @  7.4.2009,  11:40 Найти цитируемый пост)
Код показывай!

гы, с кодом любой может справиться. а вы без кода попробуйте  smile 


--------------------
PM MAIL   Вверх
andrew_121
Дата 7.4.2009, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(zim22 @  7.4.2009,  11:47 Найти цитируемый пост)
а вы без кода попробуйте  smile  

 smile А это МЫ должны пробовать smile 


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 7.4.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



andrew_121, клуб телепатов в сборе.
Цитата(Alexey91 @  7.4.2009,  08:39 Найти цитируемый пост)
Как это сделать? 

используйте конструкции языка С++ для решения данной проблемы.



--------------------
PM MAIL   Вверх
Alexey91
Дата 7.4.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Код

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

#define br puts("\n");

struct sm {char surname[10]; int points; int number;} t1;
struct sm2 {char surname[10]; int points; int number;} t2;
void input(FILE *); // создание нового файла

main()
{ char c;
  FILE *tf;
  while (1)
  { 
    br;
    puts("  1 - Create new file");
    puts("  0 - quit");
    c=getch();
    switch(c)
    { case '1':input(tf); break;
      case '0':return 0;
      default : puts("error");
     }
  }
}
void input(FILE *tf)
{ char ch;
  tf=fopen("file1.dat","wb"); // открытие бинарного файла для записи
  
  printf("\n Enter sportsman info\n");
  do
  { printf("\n Surname: "); scanf("%s",t1.surname);
    printf(" Points: "); scanf("%d",&t1.points);
    printf(" Number: "); scanf("%d",&t1.number);
    
    fwrite(&t1,sizeof(t1),1,tf); // запись в файл одной структуры t1
    printf("\n End?  y/n  ");
    ch=getch();
  }
  while (ch != 'y');
  fclose(tf);
}


Цитата


прочитать и записать в обратном порядке

алсо тема  не в том разделе

Сказано, что для обмена нужно использовать дополнительную структуру. У меня пока в голове не укладывается как это сделать  smile 
PM   Вверх
baldina
Дата 7.4.2009, 16:06 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



видимо имеется в виду поменять порядок записей в файле на обратный.
для  этого нужна дополнительная структура, но не sm2, а массив (или список), содержащий элементы типа struct sm. В массив считывается содержимое файла, потом записывается в файл в обратном порядке.
Конечно, можно без считывания в память, а путем создания временного файла, но раз задание "через промежуточную", то - так.
PM MAIL   Вверх
zim22
Дата 7.4.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



здесь хороший мануал, как работать со структурами в С++.
http://www.codeguru.com/forum/showthread.php?t=269648


--------------------
PM MAIL   Вверх
Alexey91
  Дата 12.4.2009, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Код написал, только я не могу проверить правильно ли он работает. В блокноте выдаются непонятные символы, даже если пишу только цифры или английские символы  smile 
Скорее всего ошибка в коде, но я пока не вижу  smile может у вас получится что увидеть?)

Код

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define n putchar('\n');

main()
{
 FILE *f;     
      
 struct sportsman
 {
  char surname[8];
  int number;
  int points;
 } a,b[10];
 
 puts("Enter info about sportsman");     
 n;
 
 int i=0,k=0; char c,t[8];  
 
 f=fopen("sportsman.txt","w"); 
 do
 {                               
  printf("Sportsman #%d: ",i+1);
  scanf("%s %d %d",&a.surname,&a.number,&a.points);
  fwrite(&a,sizeof(a),1,f);
  k++; i++;
  printf("End?[y]");
  c=getch();
  n;
 }
 while(c != 'y');
 fclose(f);
 
 i=0;
    
 f=fopen("sportsman.txt","r"); 
 fread(&a,sizeof(a),1,f);
 while(!feof(f))
 {
  strcpy(b[i].surname,a.surname);
  b[i].number=a.number;
  b[i].points=a.points;
  fread(&a,sizeof(a),1,f);
  i++; 
 }
 fclose(f);
 
 strcpy(t,b[2].surname); strcpy(b[2].surname,b[1].surname); strcpy(b[1].surname,t);
 
 f=fopen("sportsman.txt","w"); 
 for(i=0; i < k; i++)
 {
  fwrite(&b[i],sizeof(b[i]),1,f);
 }  

fclose(f);
 
 getch();
 return 0;
}



Это сообщение отредактировал(а) Alexey91 - 14.4.2009, 10:18
PM   Вверх
zim22
Дата 12.4.2009, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



за границы массива выходите. и здесь вы присваиваете один символ, а не строку.
Код

A[i].surname[16]=a.surname[16];



--------------------
PM MAIL   Вверх
Alexey91
Дата 14.4.2009, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Исправил, только текст все равно криво отображается (
(Обновил предыдущее сообщение с кодом)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0849 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.