Форум программистов, компьютерный форум CyberForum.ru

Динамическая память - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание электронных часов в графическом режиме Borland C++ http://www.cyberforum.ru/cpp-beginners/thread17425.html
Как создать электронные часы в графическом режиме Borland C++ ?
C++ Определить процент элементов с неотрицательными значениями в одномерном массиве В общем я на первом курсе и в програминге практически не разбираюсь. Пытался выполнить задание, но ничего не получилось. Если знаете, помогите пожалуйста. Заранее спасибо. Задание такое: определить процент эелеметнов а(с индексом i внизу) с неотрицательными значениями в исходном одномерноем массиве а. Ограничения (1<=i<=imax; imax<=10) Вводимые величины - imax, массив а Выводимые велечины -... http://www.cyberforum.ru/cpp-beginners/thread17422.html
Сохранение всех входящих лексем(строк) в порядке поступления C++
:help: Уже ни первый день бьюсь над ошибкой в подпрограмме транслятора? :wall: Цель подпрограммы: сохранение всех входящих лексем(строк) в порядке поступления. Описание: в динамическом массиве сохраняются только ранее неизвестные лексем. А порядок поступления обеспечивает массив указателей, ссылаясь на динамический массив. Реализация: struct entry { char importance; }; struct entry...
C++ Комментарии к Системе счисления
Кто может напишите комментарии к проге,просто по отдельности нет смысла спрашивать потому что очень много что не понятна! Из 2-ой в 10-ую и обратно #include<iostream.h> #include<math.h> #include<conio.h> #include<stdlib.h> #include<stdio.h> #include<string.h> void main(void)
C++ Как создавать, записывать в файл http://www.cyberforum.ru/cpp-beginners/thread17212.html
Добрый вечер!:) Подскажите пожалуйста, как создавать, записывать в файл, ввод имён файлов с клавиатуры, читение данных из файла. Если можно с примерами:).
C++ Разбить текстовый файл на страницы Мне было задано 3 задачи две я решил, а вот одну не могу помогите пожалуйста. Постановка задачи: Я должен откыть текстовый файл, потом внести окраничения на количество строк в файле и программа должна разбить открытый файл на страници , чтобы на странице было столько строчек сколькоя задал, и разбивать до тех пор пока не кончится файл.Помогите подробнее

Показать сообщение отдельно
blackw00d
0 / 0 / 0
Регистрация: 29.09.2008
Сообщений: 8

Динамическая память - C++

09.12.2008, 13:05. Просмотров 2095. Ответов 4
Метки (Все метки)

Народ, если кому не сложно помогите переделать вот эту программу со структурами
нужно сделать так чтобы для хранения данных она использовала динамическую память вот программа:


Код
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

struct event{
  char name[10];
  int year;
  int month;
  int day;
  int hn;
  int mn;
  int hk;
  int mk;
};

struct event s[25];
int n;

void input(struct event *a){
  printf("vvedite meropriatie: ");
  scanf("%s",&a->name);
  printf("vvedite deni: ");
  scanf("%i",&a->day);
  printf("vvedite mecyz: ");
  scanf("%i",&a->month);
  printf("vvedite god: ");
  scanf("%i",&a->year);
  printf("vvedite chas nachala: ");
  scanf("%i",&a->hn);
  printf("vvedite minuty nachala: ");
  scanf("%i",&a->mn);
  printf("vvedite chas konca: ");
  scanf("%i",&a->hk);
  printf("vvedite minuty konca: ");
  scanf("%i",&a->mk);
  printf("\n");
}

void output(struct event *a){
  printf("%s\t%i\t%i\t%i\t%i\t%i\t%i\t%i\n",(*a).name,(*a).day,(*a).month,(*a).year,(*a).hn,(*a).mn,(*a).hk,(*a).mk);
}


int vvod(struct event *a,int f){
struct event t;
int i,j,k,l;

  printf("\n1 - Cozdati novuy zapisi\n");
  printf("2 - Obnovit suchestvuuchuu\n");
  scanf("%i",&j);
  if (j==1){
    do{
      clrscr();
      printf("vvedite kol-vo meropriatiy(<25): \n\n");
      scanf("%i",&f);
    }while ((f<1) && (f>25));
    for(i=0;i<f;i++)
    input(&a[i]);
  }
  if (j==2){
    printf("\n1 - dobavit zapis\n");
    printf("\n2 - udaliti zapis\n");
    scanf("%i",&k);
    if (k==1){
      input(&a[f]);
      f++;
    }
    if (k==2){
      printf("nomer zapisi");
      scanf("%i",&l);
      for(i=l-1;i<f-1;i++){
	t=a[i];
	a[i]=a[i+1];
	a[i+1]=t;
      }
      f--;
    }
  }
  return f;
}

void vyvod(struct event *a,int f){
int i;

  printf("meropriatie\tdata\t      vremy nachala\tvremy konca\n\n");
  for(i=0;i<f;i++)
    output(&a[i]);
  getch();
}


void sortvn(struct event *a,int f){
int i,j;
struct event t;

  for(i=0;i<f-1;i++){
    for(j=i+1;j<f;j++){
      if ((a[i].hn>a[j].hn) || ((a[i].mn>a[j].mn) && (a[i].hn==a[j].hn))){
	t=a[i];
	a[i]=a[j];
	a[j]=t;
      }
    }
  }
}

void sortvk(struct event *a,int f){
int i,j;
struct event t;

  for(i=0;i<f-1;i++){
    for(j=i+1;j<f;j++){
      if ((a[i].hk>a[j].hk) || ((a[i].mk>a[j].mk) && (a[i].hk==a[j].hk))){
	t=a[i];
	a[i]=a[j];
	a[j]=t;
      }
    }
  }
}

void peresek(struct event *a,int f){
int i,j;

  printf("\nperesekauchiesia zapisi\n");
  for(i=0;i<f-1;i++){
    for(j=i+1;j<f;j++){
      if ((a[i].name==a[j].name) || (a[i].year==a[j].year) || (a[i].month==a[j].month) || (a[i].day==a[j].day) || (a[i].hn==a[j].hn) || (a[i].mn==a[j].mn) || (a[i].hk==a[j].hk) || (a[i].mk==a[j].mk)){
	output(&a[i]);
	output(&a[j]);
	printf("\n");
      }
    }
  }
  getch();
}

void maxtime(struct event *a,int f){
int i,j,s,d;
long int max,maxi;
struct event t;

  for(i=0;i<f-1;i++){
    for(j=i+1;j<f;j++){
      if ((a[i].year>a[j].year) || ((a[i].year==a[j].year) && (a[i].month>a[j].month)) || ((a[i].year==a[j].year) && (a[i].month==a[j].month) && (a[i].day>a[j].day))){
	t=a[i];
	a[i]=a[j];
	a[j]=t;
      }
    }
  }
  max=0;
  s=i;
  d=i;
  for(i=0;i<f-1;i++){
    for(j=i+1;j<f;j++){
      maxi=(a[j].year-a[i].year)*8760l+(a[j].month-a[i].month)*744l+(a[j].day-a[i].day);
      if (max<maxi){
	max=maxi;
	s=i;
	d=j;
      }
    }
  }
  output(&a[s]);
  output(&a[d]);
  printf("%i chas(ov)",abs(max));
  getch();
}

void in_file(struct event *a)
{
FILE *f;
char fn[50];
char *c;
int i;
  printf("vvedite imy file ");
  scanf("%s",fn);
  f=fopen(fn,"wb");
  if (!f)
    printf("Oshibka otkritiya faila %s\n",fn);
  else{
    rewind(f);
    c=(char *)a;
    for(i=0;i<sizeof(s);i++)
      putc(*c++,f);
  }
  fclose(f);
}

int from_file(struct event *a)
{
FILE *f;
char fn[50];
char *c;
int i;
  printf("vvedite imy file ");
  scanf("%s",fn);
  f=fopen(fn,"rb");
  if (!f){
    printf("Oshibka otkritiya faila %s\n",fn);
    getch();
  }else{
    c=(char *)a;
    for(i=0;i<sizeof(s);i++){
      if((*c=getc(f))!=EOF) c++;
      else fclose(f);
    }
  }

  for(i=0,n=0;i<25;i++){
    if (strlen(a[i].name)!=0 && a[i].year!=0 && a[i].month!=0 && a[i].day!=0 && a[i].hn!=0 && a[i].hk!=0 && a[i].mn!=0 && a[i].mk!=0){
    n++;
    }
  }
  return n;
}

void main(void){
int v;

  while(1){
    clrscr();
    printf("\n1. vvod dannih\n");
    printf("2. sortirovka po vremeny nachala\n");
    printf("3. sortirovka po vremeny okonchania\n");
    printf("4. poisk perekryvauchihsy zapisei\n");
    printf("5. poisk max nezanytogo promegutka vremeni\n");
    printf("6. vyvod dannih\n");
    printf("7. zapis v file\n");
    printf("8. chtenie U3 file\n");
    printf("9. VIHOD\n");
    printf("\n viberete deistvie:");
    scanf("%i",&v);
    switch (v){
      case 1:{n=vvod(s,n);break;}
      case 2:{sortvn(s,n);break;}
      case 3:{sortvk(s,n);break;}
      case 4:{peresek(s,n);break;}
      case 5:{maxtime(s,n);break;}
      case 6:{vyvod(s,n);break;};
      case 7:{in_file(s);break;};
      case 8:{from_file(s);break;};
      case 9:{exit(1);}
    }
  }
}
Помогите плиз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru