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

Массив структук. гдето косячина - C++

Восстановить пароль Регистрация
 
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
28.09.2013, 22:11     Массив структук. гдето косячина #1
пытаюсь заполнить элемент массива, но почемуто ругается "начальника". где я напартачил? сам не вижу(
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct person {
    char lastname[50];
    char name[20];
    double height;
    double weight;
};
    
void main() {
    int size=10;
    person *arr=new person[size];
    arr[0]= { "Ivanov","Ivan",1.85, 77.7}; //ругается на открытие фигурной скобки "expected expression"
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 22:11     Массив структук. гдето косячина
Посмотрите здесь:

C++ Задать массив вещественных чисел и вставить в исходный массив число
C++ с клавиатуры ввести массив,во второй массив записать нечетные элементы из первого
C++ задача записать в массив отрицательные элементы матрицы в массив и вывести их
Дан массив А(4,4). Сформировать массив В(4) из среднеарифметических значений элементов в каждой строке. C++
C++ Массив: сформировать массив C[12] так, чтобы элементы располагались следующим образом: A(1) B(1) A(2) B(2)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
28.09.2013, 22:15     Массив структук. гдето косячина #2
Цитата Сообщение от newb_programmer Посмотреть сообщение
arr[0]= { "Ivanov","Ivan",1.85, 77.7};
такую штуку с фигурными скобками можно делать только в момент инициализации
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
28.09.2013, 23:37  [ТС]     Массив структук. гдето косячина #3
тогда такой вопрос-можно ли сделать одну функцию для поиска/сортировки по разным полям?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.09.2013, 23:59     Массив структук. гдето косячина #4
Можно. Передавать в функцию номер нужного поля.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
29.09.2013, 00:17  [ТС]     Массив структук. гдето косячина #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Можно. Передавать в функцию номер нужного поля.
ну это вообще замечательно=) только вот у меня не получается, как обычно. приведу пример:
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
struct person {
    char lastname[50];
    char name[20];
    double height;
    double weight;
};
void find(arr,str,size,field);
void main() {
    const int size=3;
    person arr[size]={{"asdasd","asdasdas",20,20},
    {"asdasd","asdasdas",20,20},
    {"asdasd","asdasdas",20,20}};
    gets(str);
    find(arr,str,size,0) //0-номер поля (с нуля  начинаються?)
}
 
void find(arr,str,size,field) {
    for (int i=0;i<size;i++) {
         if (strcmp(arr[i].field,str) ) 
               cout<<"Yes";
         else
               cout<<"No";
    }
}
мне пишет что нету такого поля "field" в структуре person...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.09.2013, 00:22     Массив структук. гдето косячина #6
Цитата Сообщение от newb_programmer Посмотреть сообщение
мне пишет что нету такого поля "field" в структуре person...
Что-то мало пишет, должен больше...
Миниатюры
Массив структук. гдето косячина  
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
29.09.2013, 00:32  [ТС]     Массив структук. гдето косячина #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Что-то мало пишет, должен больше...
да я тут прям набрасывал...примерный код. вот убрал все ошибки кроме поля, я просто думал, что я неправильно пытаюсь к нему получить доступ, так сказать в корне неправильно!) и до сих пор так думаю
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
#include <iostream>
using namespace std;
struct person {
    char lastname[50];
    char name[20];
    double height;
    double weight;
};
void find(person*,char*,int,int);
void main() {
    const int size=3;
    person arr[size]={{"asdasd","asdasdas",20,20},
    {"asdasd","asdasdas",20,20},
    {"asdasd","asdasdas",20,20}};
    char str[20];
    gets(str);
    find(arr,str,size,0); //0-номер поля (с нуля  начинаються?)
}
 
void find(person* arr,char* str,int size, int field) {
    for (int i=0;i<size;i++) {
         if (strcmp(arr[i].field,str) )  //class "person" has no member "field"
               cout<<"Yes";
         else
               cout<<"No";
    }
}
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
29.09.2013, 00:39     Массив структук. гдето косячина #8
Цитата Сообщение от newb_programmer Посмотреть сообщение
мне пишет что нету такого поля "field" в структуре person...
Может быть, потому что такого поля на самом деле.. нет?
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
29.09.2013, 00:47  [ТС]     Массив структук. гдето косячина #9
Цитата Сообщение от newb_programmer Посмотреть сообщение
тогда такой вопрос-можно ли сделать одну функцию для поиска/сортировки по разным полям?
Цитата Сообщение от alsav22 Посмотреть сообщение
Можно. Передавать в функцию номер нужного поля.
Цитата Сообщение от castaway Посмотреть сообщение
Может быть, потому что такого поля на самом деле.. нет?
конечно нету никакого поля field, я пытаюсь разобраться как подставить номер поля в функцию, если такое возможно
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
29.09.2013, 00:53     Массив структук. гдето косячина #10
Цитата Сообщение от newb_programmer Посмотреть сообщение
я пытаюсь разобраться как подставить номер поля в функцию, если такое возможно
Номер какого-такого поля? Ты о чем? У тебя нет поля field в структуре, об это тебе говорит компилятор, что ты не можешь понять?
В языке С++ нет оператора field.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2013, 01:35     Массив структук. гдето косячина
Еще ссылки по теме:

C++ Массив: Переместить в массив Y все числа, дробная часть которых больше 5.
C++ Дан массив. Записать во второй массив все элементы, не совпадающие с минимальным
Сжать массив, выбросив из него отрицательные элементы - массив становится пустым C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.09.2013, 01:35     Массив структук. гдето косячина #11
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
struct person 
{
    char lastname[50];
    char name[20];
    double height;
    double weight;
};
 
void find(person arr[], int size, char field, double d, const char *str); // field - символ поля структуры ('l', 'n', 'h', 'w')
 
int main() 
{
    setlocale(0, "");
    
    const int size = 3;
    person arr[size] = {{"asdasd", "asdasdas",  20, 20},
                       {"asdasd", "asdasdas" , 20, 20},
                       {"asdasd", "asdasdas",  20, 20} };
    char str[50] = "\0";
    double d = 0;
    
    printf("Input lastname: ");
    gets(str);
    
    find(arr, size, 'l', d, str); 
    
    printf("Input height: ");
    scanf("%lf", &d);
    find(arr, size, 'h', d, str);
 
    getch();
    return 0;
}
 
void find(person arr[], int size, char field, 
          double d, const char *str) 
{
    int number = 0;
    for (int i = 0; i < size; i++) 
    {
        if (field == 'l')
        {
            if (!strcmp(arr[i].lastname, str))
                 ++number;
        }
        
        if (field == 'n')
        {
            if (!strcmp(arr[i].name, str))
                 ++number;
        }
        
        if (field == 'h')
        {
            if (arr[i].height == d)
                 ++number;
        }
                
        if (field == 'w')
        {
            if (arr[i].weight == d)
                 ++number;
        }
    }
    if (number == 0) cout << "No" << endl;
    else 
    {
        cout << "Yes, " << "number = " << number << ": ";
        if (field == 'l' || field == 'n') cout << str << endl;
        if (field == 'h' || field == 'w') cout << d << endl;
    }
}
Yandex
Объявления
29.09.2013, 01:35     Массив структук. гдето косячина
Ответ Создать тему
Опции темы

Текущее время: 10:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru