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

Считать массив структур из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить без pow http://www.cyberforum.ru/cpp-beginners/thread668693.html
Если можно,решите кодом.
C++ Не используя стандартные функции (за исключением abs), вычислить сумму первых n членов ряда Не используя стандартные функции (за исключением abs), вычислить сумму первых n членов ряда: через printf, scanf Входные данные В одной строке через пробел два натуральных числа n и a (0 < n, a ≤ 1000) Выходные данные Сумма n членов ряда точностью до шести знаков после запятой. Пример входных данных: 2 2 http://www.cyberforum.ru/cpp-beginners/thread668689.html
Тип возвращаемого значения C++
Здравствуйте! Подскажите, пожалуйста, почему при нахождении арифметического выражения, функция main должна возвращать значение типа int, а не double, как у меня в программе? #include "iostream" #include "conio.h" #include "locale.h" #include <math.h> using namespace std; double main() //главная функция
C++ Составить программу – генератор простых чисел, в основу положить формулу 2x2 + 29 при 0<=x<=28.
Помогите решить задачу в С++ Составить программу – генератор простых чисел, в основу положить формулу 2x2 + 29 при 0<=x<=28.
C++ Не могу посчитать сумму между первым и последним отрицательным! http://www.cyberforum.ru/cpp-beginners/thread668651.html
а также нужно переобразовать масив таким образом что бы сначала рассполагались елементы модуль которых не перевышает 1 а потом все остальные!!!! пожалуйста помогите !!!! #include <stdio.h> #include <stdlib.h> #include <iostream> #include <cmath> int main() { const int n=10; double mas,Sum=0;
C++ Вычислить и вывести на экран в виде таблицы значения функции Никак не могу разобраться с условиями (как операции сделать поразрядными и что вообще имеется ввиду) и где ошибки . Помогите пожалуйста #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main(int argc, char* argv) { setlocale(LC_ALL,"RUSSIAN"); float m,xn,xk,dx,x,a,b,c,F; подробнее

Показать сообщение отдельно
nikola_omsk
3 / 3 / 0
Регистрация: 27.05.2011
Сообщений: 73
12.10.2012, 00:30  [ТС]     Считать массив структур из файла
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
36
37
38
39
40
41
int main(void)
{
move_t* array = new move_t[SIZE];
std::ifstream input("my_file.txt", std::ios::binary);
input.read(reinterpret_cast<char*>(array), SIZE*sizeof(array[0]));
input.close();
 
    int menu, found;
    char buf[BUF_LEN], *p;
 
 
    while ( 1 ){
        menu = menuMsg();
        switch ( menu ){
            case 1 :
                prnArray(move_t, SIZE); //error: expected primary-expression before ',' token|
                break;
            case 2 :
                printf("Title: ");
                if ( !fgets(buf, BUF_LEN, stdin) )
                    exit(1);
                if ( p = strrchr(buf, '\n') )
                    *p = '\0';
                if ( !*buf )
                    break;
                if ( ( found = searchByTitle(buf, move_t, SIZE) ) == SIZE ) //error: expected primary-expression before ',' token|
                    printf("***Not found!\n");
                else
                    prnArray(&move_t[found],1); //error: expected primary-expression before '[' token|
                break;
 
 
            case 0 :
                exit(0);
            default :
                printf("Wrong menu index!\n");
        }
    }
 
    exit(0);
}
с чтением вроде норм...если не сложно...подскажите где ошибся...
никогда не работал с бинарными файлами...как его задавать?

Добавлено через 5 минут
заменил на array в функциях...ошибка исчезла

Добавлено через 16 минут
как создать пример файла для этой программы
C++ (Qt)
1
2
3
4
5
6
  
   char title[BUF_LEN];
    char director[BUF_LEN];
    int year;
    double cost;
    double income;
хотя бы чтобы там было 3 таких структуры с разными значениями

Добавлено через 2 часа 15 минут
решил все таки текстовым...всем спасибо...больше не будет прог на си++...
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
#define BUF_LEN 64
#define SEP "----------------------------------------------------------------------"
using namespace std;
typedef struct MOVE {
    char title[20];
    char director[20];
    int year;
    int cost;
    int income;
} move_t;
 
/* возвращает индекс в массиве или size, если не найдено */
size_t searchByTitle(const char *title, const move_t *arr, size_t size){
    size_t i;
    for ( i = 0; i < size && strcmp(title, arr[i].title); ++i )
        ;
    return i;
}
 
 
void prnArray(const move_t *arr, size_t size){
    size_t i;
    printf("\n%s\nName               Sport                YEAR   COST Kol\n%s\n", SEP, SEP);
    for ( i = 0; i < size; ++i )
        printf("%-20s%-20s%-6d%-6.1d%-8.1d\n", arr[i].title, arr[i].director, arr[i].year, arr[i].cost, arr[i].income);
    printf("%s\n", SEP);
}
 
int menuMsg(){
    int ret;
    printf("\nChoice one:\n1 - Show all\n2 - Find by title\n0  - exit\n> ");
    if ( scanf("%d%*c", &ret) != 1 )
        return -1;
    return ret;
}
 
#define SIZE 3
move_t* array = new move_t[SIZE];
 
 
int main(void){
 
 
   FILE *f=fopen("1.txt", "r+"); //Создаем файл
   for  (int i=0;i<SIZE;++i)
   {fscanf(f, "%s",&(array[i].title ));
fscanf(f, "%s", &(array[i].director));
fscanf(f, "%d", &(array[i].income));
fscanf(f, "%d", &(array[i].cost));
fscanf(f, "%d", &(array[i].year));
 
 
 
   }
    int menu, found;
    char buf[BUF_LEN], *p;
    double lr, hr;
 
    while ( 1 ){
        menu = menuMsg();
        switch ( menu ){
            case 1 :
                prnArray(array, SIZE);
                break;
            case 2 :
                printf("Title: ");
                if ( !fgets(buf, BUF_LEN, stdin) )
                    exit(1);
                if ( p = strrchr(buf, '\n') )
                    *p = '\0';
                if ( !*buf )
                    break;
                if ( ( found = searchByTitle(buf, array, SIZE) ) == SIZE )
                    printf("***Not found!\n");
                else
                    prnArray(&array[found], 1);
                break;
 
 
            case 0 :
                exit(0);
            default :
                printf("Wrong menu index!\n");
        }
    }
    delete[]array;
 
    exit(0);
}
 
Текущее время: 21:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru