IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> удаление ел-та из масива; бинарный файл, с/с++
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


1.Удалить из масива элементы, индект которых кратен двум, и вывести на экран оставшиеся...
как правильно записать условие? чтоб удаляло числа кратные 2-м?..
Код

void krat(apteka* stdar[])
{

//вывод эл-ов на экран
     printf(" # name     amount  price  weight \n");
     for (int i=0; i<MAX; i++)
     {
         stdar[i]->printstud();
    }

void delobject(apteka* stdar[]) // удаление одного ел-та
{
     int n;
     printf("What object do you want to delete?\n");
     scanf("%d", &n);
     delete stdar[n-1];
     stdar[n-1]=stdar[MAX-1];
     stdar[MAX-1]->number=n;
     MAX--;
     printf("Deleted Complete!\n");

}


2. Записать в бинарный файл 10 обьектов класса, прочитать, вывести данные и получить размер файла в байтах. Я если чесно не нашла, описание бинарных файлов на си...>.< Разве что в них пишется fread, fwrite, а размер?..
с обычным файлом функции чтения и записи выглядят так, хотя чтение немного... эм... не работает...
Код


void Read()
{     file=NULL;
     int Number=0;
     char Name0[25];
     int Amount0;
     float Price0,Weight0;
     char filepath[100];
     printf("Please, input the full file-path:\n");
     scanf("%s", filepath);
     file=fopen(filepath, "r");  
     if (file==NULL) {printf("False file-path! Please, rewrite!\n");}
     else {

          while (!(feof(file))) {      
            
               fscanf(file, "%s %d %f %f", Name0, &Amount0, &Price0, &Weight0);
               Add(Name0, Amount0, Price0, Weight0);
               Number++;
          }
     printf("Complete! %d Object's added!\n", Number);
     fclose(file);
     }
}


void Write()
{     file=NULL;
     int Number=0;
     char filepath[100];
     printf("Please, input the full file-path for writing:\n");
     scanf("%s", filepath);
     file=fopen(filepath, "w");
     if (file==NULL) {printf("False file-path! Please, rewrite!\n");}
     else {
          for (int i=0; i<MAXLEN; i++) {
              
               fprintf(file, "%s %3d %.2f %.2f\n", stdar[i]->Name, stdar[i]->Amount, stdar[i]->Price, stdar[i]->Weight);
               Number++;
          }
     printf("Complete! %d Object's added\n", Number);
     fclose(file);
     }
}
void initialize(apteka* stdar[]) //инициализация 10 обьектов...
{    
     stdar[0] = new apteka(1,"Analgin", 12, 75, 180);
     stdar[1] = new apteka(2,"Noshpa", 2, 60, 285);
     stdar[2] = new apteka(3,"Phalimint",3, 20, 176);
     stdar[3] = new apteka(4,"Aspirin", 6, 18, 187);
     stdar[4] = new apteka(5,"Solpadein",10, 37, 300);
     stdar[5] = new apteka(6,"Tabletki", 21, 48, 179);
     stdar[6] = new apteka(7,"Nazalvan",14,  67, 475);
     stdar[7] = new apteka(8,"Vitamihi", 7, 54, 107);
     stdar[8] = new apteka(9,"Zelenka",13, 19, 171);
     stdar[9] = new apteka(10,"Plastir",9,  76, 220);
      printf("Database initialized successfully\n");
}


Сообщение отредактировано: Jerry -


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Jerry, чтобы правильно удалить все элементы с четными индексами, надо идти по массиву от конца в начало, иначе (если пойдешь с начала массива) ты собьешь индексацию:

1, 2, 3, 4, 5, 6, 7, 8
Удаляешь 2,
1, 3, 4, 5, 6, 7, 8
blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


о, вот =)
Код
void krat(apteka* stdar[])
{
    {
     printf(" # name     amount  price  weight \n");
     for (int i=0; i<MAX; i+=2)
     {
         stdar[i]->printstud();
     }
}
}


щас, еще попробую бинарные файлы...

Сообщение отредактировано: Jerry -


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


нашла пример записи и чтения в/с бинарного файла... но что-то не выходит...
Код


void Read()
{    
     size_t res;
     double filepath[100];
     printf("Please, input the full file-path:\n"); /
     scanf("%s", filepath);
     file=fopen(filepath, "rb");
     if (file == 0) {
    perror("Ошибка");
    exit(1);  
}

res = fread(filepath, sizeof(double), 100, file);

}
   fclose(file);

     }

void Write()
{    
     int Number=0;
     double filepath[100];
     printf("Please, input the full file-path for writing:\n");
     scanf("%s", filepath);
     file=fopen(filepath, "wb");
     if (file == 0) {
     perror("Ошибка");
    exit(1);  
}
       for (int i=0; i<MAXLEN; i++) {
             // вот тут что надо писать в скобках для записи сруткуры?
             res= fwrite(filepath, "%s %3d %.2f %.2f\n", stdar[i]->Name, stdar[i]->Amount, stdar[i]->Price, stdar[i]->Weight,file);
             Number++;
          }
     printf("Complete! %d Object's added\n", Number);
     fclose(file);
     }
}


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






res = fwrite(&s, sizeof(s), 1, f);

где s - переменная (структура), которую пишем в файл, f - файл, куда пишем ...

А пример - бред какой-то smile.gif записывать имя файла в массив double-ов ... blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Женский

Репутация: -  0  +


так должно быть? ибо оно что-то не запускется...
Код

//stdar - указательна структуру
//FILE* file;

void Read(Apteka* stdar[])
{    
     file=NULL;
     int i;
     size_t res;
     char filepath[100];
     printf("Please, input the full file-path:\n");
     scanf("%s", filepath);
     file=fopen(filepath, "rb"); /
     if (file==NULL) {printf("False file-path! Please, rewrite!\n");}
     else {

          while (!(feof(file))) {
res = fread(&stdar[i], sizeof(stdar[i]), 1, file);

}
   fclose(file);

     }


void Write(Apteka* stdar[])
{    
     file=NULL;
     int i;
     size_t res;
     char filepath[100];
     printf("Please, input the full file-path for writing:\n");
     scanf("%s", filepath);
     file=fopen(filepath, "wb");
     if (file==NULL) {printf("False file-path! Please, rewrite!\n");}
     else {

          while (!(feof(file)))
{
res = fwrite(&stdar[i], sizeof(stdar[i]), 1, file);
}
     fclose(file);
    
}


--------------------
Zettai Unmei Mokushiroku
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 20.04.2021 16:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name