Форум программистов, компьютерный форум CyberForum.ru

Функции и файлы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Минимальный элемент матрицы заменить суммой положительных элементов этого же столбца http://www.cyberforum.ru/cpp-beginners/thread205328.html
Задана матрица А(n,m), в каждом столбце которой минимальный элемент необходимо заменить суммой положительных элементов этого же столбца. Помогите решить!!!!
C++ строки С++ Когда в С++ так создаеш строку #include <iostream> #include <string> using namespace std; void main() { string s; } как можно работать с ее индексами и еще в паскале есть такая функция insert('a',s,i) есть ли ее аналог в С++? http://www.cyberforum.ru/cpp-beginners/thread205327.html
C++ Списки/C++
Пытаюсь написать программу по заданию Предметный указатель организован как линейный список. Каждая ком-понента указателя содержит слово и номера страниц, на которых это слово встречается. Количество номеров страниц, относящихся к одному слову, от одного до десяти. Составить программу, которая обеспечива-ет: • начальное формирование предметного указателя; • вывод предметного указателя; • вывод...
считывание строки cin.getline() C++
То место, где нужно вводить фамилию, не работает, точнее, его просто пропускает :/ какие варианты решения проблемы подскажете? #include <iostream> #include <stdio.h> #include <conio.h> using namespace std; int kol;
C++ Найти наибольшую общую подпоследовательность двух последовательностей http://www.cyberforum.ru/cpp-beginners/thread205290.html
Задача об отыскании наибольшей общей подпоследовательности (динамическое программирование). Даны две последовательности символов (строки), необходимо найти их наибольшую общую подпоследовательности, т.е. такую последовательность символов, которая бы входила в качестве подпоследовательности в обе исходные последовательности и была бы максимальной длины. Говорят, что последовательность s является...
C++ hеlp одномерные массивы Помогите плизз если не трудно 1.дана последовательность из N чисел. Найти сумму первой и последней положительных элементов. 2.дана последовательность из N целых чисел. Найти значение минимального четного элемента и его местоположение. 3.дана неупорядоченная последовательность вещественных чисел. Упорядочить по возрастанию методом выбора. 4.дана последовательность целых чисел А1, А2, ... ,... подробнее

Показать сообщение отдельно
ilshat92
1 / 1 / 0
Регистрация: 06.01.2010
Сообщений: 37
07.12.2010, 15:16     Функции и файлы
Для хранения данных о цветных планшетных сканерах описать структуру вида: struct scan_info{
char model[25]; // наименование модели
int price; // цена
Double x_size; // горизонтальный размер области сканирования
Double y_size; // вертикальный размер области сканирования
int optr; // оптическое разрешение
int grey; // число градаций серого
};
Написать функцию, которая запрашивает количество сканеров, информация о которых будет вводиться, динамически выделяет память под массив структур со¬ответствующего размера и заполняет его данными в режиме диалога (с клавиату¬ры). При этом имя сканера может содержать пробелы.
Написать функцию, которая записывает данный массив в создаваемый бинар¬ный файл. Если цепа сканера меньше 200, то данные об этом сканере в файл не записываются. Информация об остальных сканерах помещается в бинарный файл, причем сначала пишутся данные о всех сканерах, имя которых начинается с заглавной буквы, а затем — с прописной.
Структура файла: в первых четырех байтах размещается значение типа long, опре¬деляющее количество сделанных в файл записей; далее без пропусков размеща¬ются записи о сканерах.
Привести пример программы, создающей файл с данными о сканерах и осущест¬вляющий вывод на дисплей данных о требуемой записи (либо всех, либо по но¬меру).
Все необходимые данные для функций должны передаваться им в качестве пара¬метров. Использование глобальных переменных в функциях не допускается.

вот программа эта, но там есть ошибки, помогите исправить
#include <fstream>
#include <iostream>
using namespace std;

#pragma pack(push,1)

struct scan_info
{
char model[25]; // наименование модели

int price; //цена
double x_size; //горизонтальный размер области сканирования
double y_size; //вертикальный размер области сканирования

int optr; //оптическое разрешение
int gray; //число градаций серого
};

#pragma pack(pop)

//сохраняет массив записей
int save_info(const char* file,const scan_info* info,unsigned long count)
{
unsigned long real_count =0;
for (unsigned int k=0; k < count ;++k)
if (info[k].price >= 200 && isalpha(info[k].model[0])) real_count++;
if (real_count == 0)
return -1;

ofstream o_file(file,ios::binary);
if (o_file.fail())
return -1;
o_file.write((char*)&real_count,sizeof(long));

//для проверки на большую и маленькую букву
char chrs[2][2] = {'A','Z','a','z'};

for (int j=0; j <2; ++j)
{
for (unsigned long i=0; i<count; ++i)
{
if (info[i].model[0] >= chrs[j][0] && info[i].model[0] <= chrs[j][1]
&& info[i].price >= 200)
{
o_file.write((char*)&info[i],sizeof(scan_info));
if (o_file.fail())
{
o_file.close();
return -1;
}
}
}
}

o_file.close();
return 0;
}

//загружает массив
unsigned long load_info(const char* file,scan_info*& info)
{
ifstream i_file(file,ios::binary);
if (i_file.fail())
return 0;

unsigned long count = 0;
i_file.read((char*)&count,sizeof(long));

try {
info = new scan_info[count];
} catch (std::bad_alloc)
{
i_file.close();
return 0;
}

for (unsigned long i=0; i < count; ++i)
{
i_file.read((char*)&info[i],sizeof(scan_info));
if (i_file.eof() && i <count-1)
{
i_file.close();
delete [] info;

return 0;
}
}

i_file.close();
return count;
}

//получает значение переменной (проверяет ввод на ошибки)
template <class T> inline void
input_var(const char* desc,T& dst)
{
do
{
cout << desc;
cin.sync(); cin.clear();

} while ((cin >> dst).fail() || cin.get() != 10);
}

//запрашивает значения записей
unsigned long input(scan_info*& info_arr)
{
unsigned long count = 0;

cout << endl;
input_var("Count of records:",count);
try {
info_arr = new scan_info[count];
} catch (std::bad_alloc)
{
return 0;
}

for (unsigned long i=0; i < count; ++i)
{
cout << endl << "Record number "<< i+1 << endl;

cout << "Model:"; cin.getline(info_arr[i].model,24,'');
input_var("Price:", info_arr[i].price);
input_var("X-size:", info_arr[i].x_size);
input_var("Y-size:", info_arr[i].y_size);
input_var("Optical resolution:",info_arr[i].optr);
input_var("Shade of gray:", info_arr[i].gray);
}

return count;
}

//выводит на экран одну запись
void print_one(const scan_info* info,unsigned long n)
{
cout <<endl << "Number:" << n + 1 << endl;
cout << "----------------------------" << endl;

cout << "Model:";
cout << info[n].model << endl;

cout << "Price:";
cout << info[n].price<< endl;

cout << "X-size:";
cout << info[n].x_size<< endl;

cout << "Y-size:";
cout << info[n].y_size<< endl;

cout << "Optical resolution:";
cout << info[n].optr<< endl;

cout << "Gray scale:";
cout << info[n].gray<< endl;
cout << "----------------------------" << endl;

}

//выводит все записи
void print_all(const scan_info* records,unsigned long count)
{
for (unsigned long i=0; i < count ;++i)
print_one(records,i);
}


int main()
{
scan_info* records = 0; char file[25]; unsigned long count = 0;
cin.tie(&cout);

//first menu
while (count == 0)
{
cout << "1.Input records" << endl
<< "2.Load from file" << endl
<< "3.Exit" << endl;

cin.clear();
char ch = cin.get(); cin.get(); ////remove 0x0a

switch (ch)
{
case '1':
count = input(records);
if (count == 0)
cout << "Error, too many records" << endl << endl;
break;
case '2':
input_var("File:",file);
count = load_info(file,records);
if (count == 0)
cout << "Error reading file" << endl <<endl;
break;
case '3':
exit(0);
default:
cout << "Incorrect input" << endl << endl;
break;
}
}

unsigned long rec_number = -1;
//second menu
while (true)
{
cout << endl << endl
<< "1.Show record" << endl
<< "2.Show all" << endl
<< "3.Save to file" << endl
<< "4.Exit" << endl;

cin.clear();
char ch = cin.get(); cin.get(); ////remove 0x0a
switch (ch)
{
case '1':
input_var("Record number:",rec_number);
if (--rec_number < count)
print_one(records,rec_number);
else
cout << "Out of range" << endl;
break;

case '2':
print_all(records,count);
break;
case '3':
input_var("File:",file);
if (save_info(file,records,count))
cout << "Error writing file" << endl <<endl;

break;
case '4':
exit(0);
default:
cout << "Incorrect input" << endl;
break;
}
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru