Форум: Форум C++Разное
Новые темы: 00
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: База Данных
 
 автор: Dolly   (15.04.2009 в 23:17)   письмо автору
 
 

Помогите понять в чем ошибка! Ошибка в функции void searching(void)
#include <stdio.h>
#include <string.h>
struct computers
{
int id;
char surname_owner[6];
int number_of_processors;
char type_of_processors[100];
int size_memory;
char type_of_video_controller[100];
int size_of_video_buffer;
char type_of_hard_disk[100];
int number_of_hard_disk;
char capacity_of_hard_disk[100];
int number_of_integrated_controller;
int number_of_outside_device;
char operational_system[100];
}row[100];
// Прототипы
char menu (void);
void add_row (void);
void view_row (void);
void searching(void);

int main()
{
bool f_do = true;
while (f_do)
{
char number = menu();
switch (number)
{
case '1': add_row(); break;
case '2': view_row (); break;
case '3': searching(); break;
default: f_do = false; break;
}
}
return 0;
}

// Функция меню - возвращает пукт меню
char menu (void)
{
char number;
printf("\t\tMENU\n");
printf(" \tPrint 1 for adding row\n");
printf(" \tPrint 2 for showing\n");
printf(" \tPrint 3 for searching \n");
printf(" \tPrintf 4 for exit\n");
scanf("\t\t%c", &number);
return number;
}

// Функция для добавления записей
void add_row (void)
{
<...>
}

void view_row (void)
{
<...>
}

void searching(void)
{
FILE *file;
int count, i, markers[100];
int count1, l, markers1[100];
FILE *file1;
file1 = fopen("KRI.txt","wb");
// Открываем файл
file = fopen("KRII.txt", "rb");


// Считываем содержимое файла в массив row
for(i = 0; i < 100; i++)
{
// Считываем строчку
count = fscanf(file, "%i %s %i %s %i %s %i %s %i %s %i %i %s\n", &row[i].id, &row[i].surname_owner, &row[i].number_of_processors, &row[i].type_of_processors, &row[i].size_memory, &row[i].type_of_video_controller, &row[i].size_of_video_buffer, &row[i].type_of_hard_disk, &row[i].number_of_hard_disk, &row[i].capacity_of_hard_disk, &row[i].number_of_integrated_controller, &row[i].number_of_outside_device, &row[i].operational_system);

// Если количество считанных элементов не совпадает с нужным для одной записи - прекращаем чтение
if(count != 13)
break;

// Устанавливаем маркер обработанности в нуль
markers[i] = 0;
}

// Закрываем файл - он нам больше не понадобится
fclose(file);

// Проверяем записи на совпадение фамилий
for(int j = 0; j < i; j++) // Для каждой записи
if(markers[j] == 0) // Если запись не обработана
{
// Устанавливаем маркер наличия однофамильцев для текущей записи в нуль
count = 0;

for(int k = j + 1; k < i; k++) // Для всех записей после текущей обрабатываемой
if((markers[k] == 0) && (strcmp(row[j].surname_owner, row[k].surname_owner) == 0))
// Если запись ещё не обработана и фамилия совпадает с фамилией в текущей обрабатываемой записи
{
// Устанавливаем маркер обработанности для этой записи
markers[k] = 1;

// Устанавливаем маркер наличия однофамильцев
count = 1;
/* if(strcmp(row[j].type_of_processors, row[k].type_of_processors) == 0)
{
if(strcmp(row[j].type_of_processors, row[k].type_of_processors) == 0)
{
printf("%s %s %s\n",row[j].surname_owner, row[j].type_of_processors, row[j].type_of_video_controller);
}
}
*/
fprintf(file1, "%s %s %s\n", row[k].surname_owner, row[k].type_of_processors, row[k].type_of_video_controller);
//printf("%s %s %s\n", row[k].surname_owner, row[k].type_of_processors, row[k].type_of_video_controller);
}

// Если для текущей записи найдены однофамильцы - выводим эту запись на экран
if(count == 1)
fprintf(file1, "%s %s %s\n", row[j].surname_owner, row[j].type_of_processors, row[j].type_of_video_controller);
//printf("%s %s %s\n", row[j].surname_owner, row[j].type_of_processors, row[j].type_of_video_controller);
}

fclose(file1);
file1 = fopen("KRI.txt", "rb");
for(l = 0; l < 100; l++)
{
count1 = fscanf(file1, "%s %s %s\n", row[l].surname_owner, row[l].type_of_processors, row[l].type_of_video_controller);
if(count1 != 13)
break;
markers1[l] = 0;

}
fclose(file1);
for(int p = 0; p < l; p++)
if(markers1[p] == 0)
{
count1 = 0;
for(int d = p + 1; d < l; d++)
if((markers1[d] == 0) && (strcmp(row[p].type_of_processors, row[d].type_of_processors) == 0))
{
markers1[d] = 1;
count1 = 1;
printf("%s %s", row[d].surname_owner, row[d].type_of_processors);
}
}
if(count1 == 1)
printf("%s %s\n", row[p].surname_owner, row[p].type_of_processors);

}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования