![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Jerry |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 46 Пол: Женский Репутация: ![]() ![]() ![]() |
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 - 25.11.2006 22:37 -------------------- Zettai Unmei Mokushiroku
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Jerry, чтобы правильно удалить все элементы с четными индексами, надо идти по массиву от конца в начало, иначе (если пойдешь с начала массива) ты собьешь индексацию:
1, 2, 3, 4, 5, 6, 7, 8 Удаляешь 2, 1, 3, 4, 5, 6, 7, 8 ![]() |
Jerry |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 46 Пол: Женский Репутация: ![]() ![]() ![]() |
о, вот =)
Код void krat(apteka* stdar[]) { { printf(" # name amount price weight \n"); for (int i=0; i<MAX; i+=2) { stdar[i]->printstud(); } } } щас, еще попробую бинарные файлы... Сообщение отредактировано: Jerry - 26.11.2006 16:06 -------------------- Zettai Unmei Mokushiroku
|
Jerry |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 46 Пол: Женский Репутация: ![]() ![]() ![]() |
нашла пример записи и чтения в/с бинарного файла... но что-то не выходит...
Код 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
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
res = fwrite(&s, sizeof(s), 1, f); где s - переменная (структура), которую пишем в файл, f - файл, куда пишем ... А пример - бред какой-то ![]() ![]() |
Jerry |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 46 Пол: Женский Репутация: ![]() ![]() ![]() |
так должно быть? ибо оно что-то не запускется...
Код //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
|
![]() ![]() |
![]() |
Текстовая версия | 2.08.2025 8:16 |