Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Vertual
1

Вопрос по структурам,массивам,постройка календаря

28.12.2009, 11:41. Показов 659. Ответов 1
Метки нет (Все метки)

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

1. В текстовом файле содержится информация о студентах группы. Каждая строка файла содержит следующую информацию о студенте: Ф.И.О., номер зачетки, год окончания школы, номер школы. Получить в файле Ф.И.О. и номер зачетки тех студентов, которые окончили школу с номером N.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define IN_FILENAME "E:\\VS3\\data_in.txt"
#define OUT_FILENAME "E:\\VS3\\data_out.txt"
typedef struct {
  char firstname[50];
  char secondname[50];
  char thirdname[50];
  int zachetka;
  int year;
  int num_school;
} student;
void main()
{
// 2 файла вводим в оборот (исходный и результативный)
    FILE *f,*f2;
    student students[100];
    int i,n,count = 0;
// вводим год окончания школы
    scanf("%d",&n);
while(!feof(f)){
//считываем инфомарцию с исходного файла/Ф.И.О., № зачётки, год оконч.школы, № школы/
        fscanf(f,"%s %s %s %d %d %d",
        &students[count].firstname,
        &students[count].secondname,
        &students[count].thirdname,
        &students[count].zachetka,
        &students[count].year,
        &students[count].num_school);
        count++;
    }
    fclose(f);
    printf("Spisok students:\n");
    for(i=0;i<count;i++){
        if (students[i].num_school==n){
// выводим на экран отсортированный список студентов
printf("%s %s %s %d\n",&students[i].firstname,&students[i].secondname,&students[i].thirdname,&students[i].zachetka);
// записываем результат фильтрации по школе в результативный файл
fprintf(f2,"%s %s %s %d\n",&students[i].firstname,&students[i].secondname,&students[i].thirdname,&students[i].zachetka);
        }
    }
    fclose(f2);
getch();
}
Задание 2 Оптимизировать
В каждой задаче осуществить вывод на экран содержимого полученного типизированного файла в виде таблицы.
В текстовом файле содержится информация о читателях библиотеки. Каждая строка файла содержит следующую информацию о читателе: Ф.И.О., номер читательского билета, год выдачи билета. Получить в типизированном файле Ф.И.О. и номер читательского билета, кому был выдан билет в К-ом году.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define IN_FILENAME "H:\\VS4\\data_in.txt"
#define OUT_FILENAME "H:\\VS4\\data_out.txt"
typedef struct {
  char firstname[50];
  char secondname[50];
  char thirdname[50];
  int num_4it;
  int year;
} student;
void main()
{
// 2 файла вводим в оборот (исходный и результативный)
FILE *f,*f2;
student students[100];
int i,n,count = 0;
// вводим год выдачи чит.билета
    scanf("%d",&n);
while(!feof(f))
{
//считываем инфомарцию с исходного файла/Ф.И.О., № чит.билета, год чит.билета/
        fscanf(f,"%s %s %s %d %d",
                &students[count].firstname,
        &students[count].secondname,
        &students[count].thirdname,
        &students[count].num_4it,
        &students[count].year);
        count++;
}
    fclose(f);
    printf("Spisok students:\n");
    for(i=0;i<count;i++){
        if (students[i].num_4it==n){
// выводим на экран отсортированный список студентов/ %v-вертик.табуляция %t-горизонт.табул %n-на новую строку переход
printf("\v \t %s \v \t %s \v \t %s \v \t%d\n",&students[i].firstname,&students[i].secondname,&students[i].thirdname,&students[i].num_4it);
// записываем результат фильтрации по году в результативный файл
fprintf(f2,"\v \t %s\t \v %s\t \v %s\t \v %d\n \v",&students[i].firstname,&students[i].secondname,&students[i].thirdname,&students[i].num_4it);
        }
    }
    fclose(f2);
getch();
}
Задание 3

В данной программе вы вводим год и получаем кол-во дней в нем.
Пример нахождения :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/**
 * возвращает 1 если год высокосный
 * 0 если не высокосный
 *
 * высокосные года те что делятся на четыере
 * кроме тех что делятся на сто и не делятся на четыреста
 */
int isV(int y){
  if (y%4==0){
    if ((y%100==0) && (y%400!=0)){
      return 0;
    }
    else {
      return 1;
    }
  }
  else {
    return 0;
  }
}
 
/**
 * функция вычисляет количество дней в месяце
 *
 */
int daycount(int m,int y){
  switch(m){
  case 1:  //январь
  return 31;
  case 2:  //февраль
  if (isV(y)==0)
    return 28;
  else 
    return 29;
  case 3:  //март
  return 31;
  case 4:  //апрель
  return 30;
  case 5:  //май
  return 31;
  case 6:  //июнь
  return 30;
  case 7:  //июль
  return 31;
  case 8:  //август
  return 31;
  case 9:  //сентябрь
  return 30;
  case 10: //октябрь
  return 31;
  case 11: //ноябрь
  return 30;
  case 12: //декабрь
  return 31;
  }
}
 
 
/**
 * главная функция программы
 *
 */
void main(){
  //нечальные значения календаря
  //первое число певого года первого месяца бы понедельник
  int y=1;
  int m=1;
  int d=1;
  int w=1;
 
 
  int y1; //год для вывода на экран
 
  int i; //вспомогательный счетчик
 
  printf("Enter year\n");
  scanf("%d",&y1); //вводим данные
 
 
  if(isV==0){
      printf("%d", 365);
  }
  else {
      printf("%d", 366);    
  }
  printf("\nPress any kay to continue");
  getch();
}
Прошу помочь сделать задание по аналогии приведённой выше.
Календарь
При решении задач этого раздела принять во внимание, что в современном (григорианском) календаре каждый год, номер которого делится на 4, является високосным, за исключением тех номеров, которые делятся на 100 и не делятся на 400.
Для создания универсального календаря, охватывающего все годы, можно использовать непосредственный подсчет, основанный на том, что 1 января 1 года нашей эры было понедельником.
Даны натуральные числа a1,b1,c1,a2,b2,c2, которые указывают две даты (число, месяц, год). Вычислить количество дней, прошедших между двумя этими датами;

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2009, 11:41
Ответы с готовыми решениями:

Вопрос по структурам в Си
Здравствуйте. Интерисует следующий вопрос по структурам. Имеется некая структура: struct...

Вопрос по структурам
Всем доброго дня. Возникло парочку вопросов по изучению С++ подскажите если не сложно. Купил...

вопрос по структурам
Задача.На основе данных входного файла составить список студентов,включающий фамилию,факультет,...

Вопрос по структурам
Насколько я знаю можно заполнить структуру &quot;наложив её на память&quot;, например struct A { int a;...

1
0 / 0 / 0
Регистрация: 24.12.2009
Сообщений: 3
29.12.2009, 00:09 2
хелп!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2009, 00:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

вопрос по структурам
Я начал писать программу на следующию задачу Описать структуру с именем STUDENT, содержащую...

небольшой вопрос по структурам
Плиз, подскажите как присвоить значение переменной(index) элементу массива структуры(avto.chet)....

Вопрос по массивам.
В массиве определить среднее арифметическое элементов принадлежащих отрезку . Подправьте пожалуйста...

Вопрос по массивам.
Есть массив типа запись. В этой записи есть текстовое поле, содержащее ФИО. Помогите отсортировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.