Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нахождение определителя матрицы через рекурсию http://www.cyberforum.ru/cpp-beginners/thread17838.html
Помогите, пожалуйста, реализовать на с программу нахождения определителя матрицы.
C++ Сортировка Помогите дописать 2 функции. Первая: Сортировка двумерной матрици по строкам. Тоесть было: 1 2 3 4 5 7 Вторая: Сортировка столбцов двумерного массива за суммой значений елементов в столбце.... http://www.cyberforum.ru/cpp-beginners/thread17828.html
Задача на двумерный массив C++
Для заданной матрицы 8х8 найти К, что К-я строка матрицы совпадает с К-ым столбцом. Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.(желательно с защитой "от...
C++ Товарищи, мне уже надоела запись "void main()"
http://www.research.att.com/~bs/bs_faq2.html#void-main Прочитайте пожалуйста. Может усвоите для себя что-либо. И перестанете наконец писать "void main()" Для тех, кому лень идти по ссылке вот...
C++ Рекурсивная функция и массив... http://www.cyberforum.ru/cpp-beginners/thread17820.html
Меняю вопрос объясните как работать с таким вот массивом: #include<stdio.h> #include<iomanip.h> #include<conio.h> #include<stdlib.h>
C++ Как построить гистограмму???? как вот эту вещь //отображаем данные графически //1. определяем окно для вывода и очищаем его CWnd* pWndSort = GetDlgItem(IDC_OUT2); //2. определяем области rSort для вывода CRect rSort;... подробнее

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

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

09.12.2008, 13:05. Просмотров 2130. Ответов 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);}
    }
  }
}
Помогите плиз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.