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

Срочно, функция ,переменные - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ составить прогу в с++ http://www.cyberforum.ru/cpp-beginners/thread149803.html
циклический алгоритм (цикл с постусловием). условие: для введеных с клавиатуры чисел найти сумму положительных кратных 3. при вводе отрицательного числа суммирование прекратить.
C++ Калькулятор в командной строке В командной строке заданы операнды и операция (+, -, *, /, %). Выполнить операцию, вывести результат. Например: в командной строке набираем c:\progra~1\borlandc\bin>task2.exe 9 / 3 результат выполнения: 9 / 3 = 3 Sps saranee)) http://www.cyberforum.ru/cpp-beginners/thread149797.html
C++ как переводится?
int **a=new*; если что R это число строк.
характеристики столбца!!!!! C++
Характеристиками столбца целочисленной матрицы назовем сумму модулей его отрицательных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с возрастанием характеристик. Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент. Вот прога сама: #include <iostream> #include <fstream> #include <math.h> #include <iomanip> using...
C++ Двунаправленный список http://www.cyberforum.ru/cpp-beginners/thread149756.html
Люди, объясните пжлст, что такое двунаправленный список?
C++ Двумерный массив с динамическим выделением памяти Помогите пожалуйста вставить вот в эту вот задачу динамическое выделение памяти: #include <iostream> using namespace std; int main() { const int n=2; int M; подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
27.06.2010, 15:25     Срочно, функция ,переменные
muxazila, честно не вникал, что там где у Вас происходит, но могу пару советов дать:
Всегда проверяйте, что возвращают функции ввода/вывода.
Цитата Сообщение от muxazila Посмотреть сообщение
C++
1
2
char name; 
fp=fopen(&name,"w+");
мало того, у Вас это всё во внешнем блоке происходит, что само по себе не комильфо, так ещё вместо имени передаётся указатель на неинициализированный участок памяти.
В функции чтения/записи нужно передавать указатель на данные, возможно с указанием количества данных, и указатель на открытый файл или имя файла, но при этом функция должна будет сама открыть файл, прочитать/записать данные и закрыть файл.
К тому же считается очень плохим стилем смешивать операторы ввода/вывода С (printf() scanf()) с операторами С++ (cin/cout)...
Опять же, если у Вас создаётся массив структур фиксированного размера, а данные в него читаются из файла, как должна вести себя программа, если данных в файле меньше/больше?
Ну и сам файл, содержащий данные фиксированного размера (в Вашем случае размер файла должен быть кратным размеру структуры), лучше делать двоичным, а не текстовым, так с ним работать будет легче.
В моём представлении это как-то так должно бы выглядеть:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
typedef struct BOOK {
  int code;
  char name[32];
// etc...
} book_t;
// выводит данные в файл, возвращает 0, если удачно
int data_to_file(const book_t * data, size_t count, const char * file_name){
  FILE * f;
  size_t writen;
  if ( ( f = fopen(file_name, "rb") ) == NULL ){
    fprintf(stderr, "Can't open file %s for input.\n", file_name);
    return -1;
  }
  writen = fwrite(data, sizeof(book_t), count, f);
  fclose(f);
  return count - writen;
}
 
// функции ввода, печати, etc...
 
// если уж делать фиксированного размера массив, то лучше так
#define BOOKS_COUNT 25 // хотя это и не правильно, размер должен быть динамически изменяемым
#define FILE_NAME "books.dat" // имя файла для чтения/записи
 
int main(void){
  book_t books[BOOKS_COUNT];
  // заполнить массив
  // и вывести в файл
  if ( data_to_file(books, BOOKS_COUNT, FILE_NAME) ){
    fprintf(stderr, "Error while saving data!\n");
    return 1;
  }
  // продолжение программы
  return 0;
}
Да, кстати: а с какой целью Вы после всеми закрывающими фигурными скобками точку с запятой ставите? Иногда оно бывает нужно, но увлекаться не стоит...

Добавлено через 1 минуту
time2die, да она у него закрыта - там после объявления структуры сразу массив из них создаётся:
Цитата Сообщение от time2die Посмотреть сообщение
}bibl[25];
просто из-за кривого форматирования не сразу разберёшься, что к чему
 
Текущее время: 11:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru