Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2015, 09:13   #1
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию Из обычного массива в динамический

Ребята может кто пожалуйста помочь , вот есть код : надо просто из обычного массива перевести все это дело в динамический (ну используя маллок , реаллок и т д ) . Может кто пожалуйста помочь ?




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

struct tov
{
	char *name;
	float c;
	float Array[100];
	char *kol;
} t1;

void input(); // создать новую дб
void print(); // посмотреть содержание бд
void app();  // добавить записи
void find(); // Искать по фамилии
void bay();

int main()
{

	char c;

    while (1)
	{
		puts("  1 – Novij fail(DB)");
		puts("  2 – Posmotret DB");
		puts("  3 – Dobavit apis");
		puts("  4 – Iskat po znaceniju (Familii)");
		puts("  0 – Exit");


        c=getch();
        switch(c)
		{
            case '1':input();break;
            case '2':print();break;
            case '3':app();break;
            case '4':find();break;
            case '0':return 0;
			default : puts(" Nepareizs rezims");
        }
	}
}

void input() // Sozdanije novoj BD
{
    char ch;
	FILE *tf;
	if ((tf=fopen("file1.dat","wb")) == NULL) // Atvert binaru failu priks ierakste
	{
		printf(" Error pri sozdanije novogo faila!\n");
        return;
    }

	printf("\nVvedite rabotnika \n");
    do
    {
		printf("\n Familija: ");
        scanf("%s",&t1.name);
		printf(" Nr: ");
        scanf("%f",&t1.c);
		printf(" Firma: ");
		scanf("%s",&t1.kol);
		fwrite(&t1,sizeof(t1),1,tf); //Vpisat v file 1 strukturu
		printf("\n Zakoncit rabotu?  y/n  ");
        ch=getch();
        printf("\n");
    }
    while (ch != 'y');
	fclose(tf);
	getchar();
}

void print() // Apskatit BD
{
    int i;
	FILE *tf;
	if ((tf=fopen("file1.dat","rb")) == NULL)  // Atvert binaru failu prieks lasisanai
	{
		printf(" Atversana faila ir kluda , prikss apskatisana faila !\n");
		return;
    }
    i=1;
	fread(&t1,sizeof(t1),1,tf); // Lasisana no faila vienai strikturai t1
	while (!feof(tf))
	{
		printf("\n  %dNr. \n Uzvards: %5s \n Numurs: %6.0f \n Firma: %s \n\n\n",i,t1.name,t1.c,t1.kol);
        fread(&t1,sizeof(t1),1,tf);
        i++;
	}
    fclose(tf);
}

void app() // Pievienot jaunu ierakstu
{
    char ch;
    FILE *tf;
    if ((tf=fopen("file1.dat","ab")) == NULL) // открытие бинарного файла для добавления
	{
		printf("   Atversana faila ir kluda , priks pievienosana jaunu ierakstu!\n");
		return;
	}

	printf("\n  Ievadiet darbinieka \n");
	do
    {
		printf("\n Uzvards: "); scanf("%s",&t1.name);
		printf(" Nr.: "); scanf("%f",&t1.c);
		printf(" Firma: "); scanf("%s",&t1.kol);
		fwrite(&t1,sizeof(t1),1,tf);
		printf(" Baidzat darbu?  y/n ");
		ch=getch();
		printf("\n");
	} while (ch != 'y');
	fclose(tf);
	getchar();
}

void find() // Meklesana
{
	char h, tov[10];
	long int i;
	FILE *tf;
	if ((tf=fopen("file1.dat","rb+")) == NULL) // Atversana binaru failu prieks  lasijumu un ierakstu
	{
		printf("   Atversana faila ir kluda !\n");
		return;
    }
	puts("Ievadiet Uzvardu: ");
    gets(tov);
	fread(&t1,sizeof(t1),1,tf);
    while (!feof(tf))
    {
        if (strcmp(t1.name,tov)==0)
        {
			printf(" \n Uzvards: %s \n Numurs: %6.0f \n Firma: %s \n\n\n",t1.name,t1.c,t1.kol);

			h=getch();
			if (h=='y')

			{
				i=sizeof(t1);
				fseek(tf,-i,SEEK_CUR);
				fwrite(&t1, sizeof(t1), 1, tf);
				fflush(tf);

			}

        }
		fread(&t1,sizeof(t1),1,tf);
	}
	fclose(tf);
    getchar();
}
orakul77 вне форума Ответить с цитированием
Старый 14.05.2015, 09:17   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И Т.д.? А STL подойдет? массив типа vector.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.05.2015, 14:38   #3
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию

ну надо переделать сделав динамический массив и еще мне сказали упростить программу просто по структурам как-то = если поможешь сделать , буду пзц как благодарен :D


вот еще раз само задание в общем :


Код:
Каждая структура состоит из минимум , 4 полей , некоторые из них могут быть даны . На момент сдачи в файле должно быть 5 записей . Должна быть возможность :
1)Если файл существует и не пустой , тогда прочитать данные из файла в динамический массив , но если файла не существует , создать его.
2)Добавить данные 
3)Искать по определенному принципу (в нашем случае по фамилиям водителей , которые водят конкретную машину в фирме )
4)Удалять записи 
5)Посмотреть базу данных 
6) Посмотреть индивидуальное задание
7)Сортировать записи по фамилиям
8)Кончая работу программы , изменения сохранить в файле .


И само задание : Найти всех водителей , которые водят (обслуживают ) конкретную машину фирмы .
orakul77 вне форума Ответить с цитированием
Старый 25.05.2015, 00:20   #4
orakul77
Пользователь
 
Регистрация: 17.04.2014
Сообщений: 42
По умолчанию

не кто вобщем не как не может помочь ?
orakul77 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать 2 массива вместе. Динамический и Статический lalka123 Общие вопросы Delphi 0 11.12.2014 15:37
из статического массива вывести элементы в динамический yana1213 Помощь студентам 2 20.05.2014 23:02
из обычного массива в динамический komjkee Паскаль, Turbo Pascal, PascalABC.NET 10 19.12.2013 09:36
Перепись положительных значений массива в динамический. reserved Общие вопросы C/C++ 4 10.06.2009 18:30
Замена статического массива на динамический Славный Общие вопросы Delphi 1 11.06.2008 00:19