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

Задача по структурам, прошу найти ошибку - C++

Восстановить пароль Регистрация
 
Vergilloo
 Аватар для Vergilloo
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 32
08.11.2012, 22:25     Задача по структурам, прошу найти ошибку #1
Программа должна делать следующее - пользователь вводит список спортсменов, а программа выводит на экран данные о тех, которые занимаются плаванием, а также срок их карьеры. Выполняется, вводятся данные, но вывода информации о "плавающих" нет. Как будто этот кусок программы просто игнорируется.
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
#include <iostream.h>
#include <conio.h>
void main()
{
struct sport
{
   char surname[15];
   char kind_of_sport[20];
   int age;
   int age_of_career;
};
sport test[10];
int n;
int i;
char sp[8];
sp=="swimming";
cout<<"Informaciu o skolkih sportsmenah va hotite vvesti?"<<endl;
cin>>n;
for (i=1;i<=n;i++)
{
   cout<<"Enter the surname"<<endl;
   cin>>test[i].surname;
   cout<<"Enter the kind of sport"<<endl;
   cin>>test[i].kind_of_sport;
   cout<<"Enter the age of sportsmen"<<endl;
   cin>>test[i].age;
   cout<<"Enter the age of career"<<endl;
   cin>>test[i].age_of_career;
   cout<<endl<<endl;
}
i=1;
for (i=1;i<=n;i++)
{
   if ((test[i].kind_of_sport)==sp)
{
cout<<"Eti sportsmeni zanimautsa plavaniem:"<<endl;
cout<<test[i].surname<<"  Srok="<<test[i].age_of_career<<" let"<<endl;
}
}
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2012, 22:25     Задача по структурам, прошу найти ошибку
Посмотрите здесь:

задача по структурам C++
C++ Сортировка массива. Прошу найти ошибку
C++ прошу помочь найти ошибку
C++ Прошу найти ошибку...
C++ Найти ошибку в кода. Задача на массив.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
08.11.2012, 22:42     Задача по структурам, прошу найти ошибку #2
Во-первых, никогда не пишите void main() а пишите int main().
В конце пронграммы после всех операторов желательно писать return 0;( в данном случае после getch(), который можно заменить на system("pause")).
Вы испоьзуете cin, cout,endl.А где обьявление пространства имен?Пишите либо в начале функции, либо глобально using namespace std;(а лучше перед каждым cin, cout,endl писать std:.
sp=="swimming";?Что за запись? Что за 2 знака =?нужен 1.
Ещё, вы обьявили массив структур из 10 элементов.И организуете цикл ввода через for.OK.Но у вас начинается ввод в массив с пункта 1 и заканчивается пунктом 10.В С++ нумерация массива идет от нуля и заканчивается Число-1.У вас первый элемент будет пустовать, а если захотите вести 10 структур, то будет выход за пределы массива.
И кстати, когда вы захотите присвоить массиву слово swimming, то у вас тоже получится переполнение массива(не хватает места в нем для хранения символа конца строки).используйте класс string вместо массивов или увеличьте размер массива.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.11.2012, 22:47     Задача по структурам, прошу найти ошибку #3
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
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
struct sport
{
    char surname[15];
    char kind_of_sport[20];
    int age;
    int age_of_career;
};
 
int main()
{
    int n;
    int i;
    char* sp = "swimming";
    cout<<"Informaciu o skolkih sportsmenah va hotite vvesti?"<<endl;
    cin>>n;
    cin.get();
    sport* test = new sport[n];
    for (i=0; i<n; i++)
    {
        cout<<"Enter the surname"<<endl;
        cin.getline(test[i].surname, 15);
        cout<<"Enter the kind of sport"<<endl;
        cin.getline(test[i].kind_of_sport, 20);
        cout<<"Enter the age of sportsmen"<<endl;
        cin>>test[i].age;
        cin.get();
        cout<<"Enter the age of career"<<endl;
        cin>>test[i].age_of_career;
        cin.get();
        cout<<endl<<endl;
    }
    for (i=0; i<n; i++)
    {
        if (strcmp((test[i].kind_of_sport), sp) == 0)
        {
            cout<<"Eti sportsmeni zanimautsa plavaniem:"<<endl;
            cout<<test[i].surname<<"  Srok="<<test[i].age_of_career<<" let"<<endl;
        }
    }
    system("pause");
    return 0;
}
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
08.11.2012, 22:54     Задача по структурам, прошу найти ошибку #4
а лучше вместо массивов символов юзайте string, и будет вам счастье.

И переписывайте код, пожалуйста.
Vergilloo
 Аватар для Vergilloo
0 / 0 / 0
Регистрация: 07.06.2012
Сообщений: 32
08.11.2012, 22:55  [ТС]     Задача по структурам, прошу найти ошибку #5
yuron_477, Спасибо большое, один вопрос - что выполняет строка "if (strcmp((test[i].kind_of_sport), sp) == 0)"?

Добавлено через 1 минуту
ZaMaZaN4iK, компилятор ругался, если ставить один знак равно вместо 2-х.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.11.2012, 22:57     Задача по структурам, прошу найти ошибку #6
Сравнивает строки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2012, 22:59     Задача по структурам, прошу найти ошибку
Еще ссылки по теме:

C++ прошу помощи, не могу найти ошибку
C++ прошу знатаков найти ошибку
C++ Задача по структурам, обнаружить ошибку

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

Или воспользуйтесь поиском по форуму:
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
08.11.2012, 22:59     Задача по структурам, прошу найти ошибку #7
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
#include <iostream>
#include <string>
 
struct sport
{
   std::string surname;
   std::string kind_of_sport;
   int age;
   int age_of_career;
};
 
int main()
{
    sport test[10];
    int n;
    std::string sp="swimming";
    std::cout<<"Informaciu o skolkih sportsmenah va hotite vvesti?"<<std::endl;
    std::cin>>n;
    for (int i=0;i<n;i++)
    {
        std::cout<<"Enter the surname"<<std::endl;
        std::cin>>test[i].surname;
        std::cout<<"Enter the kind of sport"<<std::endl;
        std::cin>>test[i].kind_of_sport;
        std::cout<<"Enter the age of sportsmen"<<std::endl;
        std::cin>>test[i].age;
        std::cout<<"Enter the age of career"<<std::endl;
        std::cin>>test[i].age_of_career;
        std::cout<<std::endl<<std::endl;
}
 
    for (int i=0;i<n;i++)
    {
        if ((test[i].kind_of_sport)==sp)
        {
            std::cout<<"Eti sportsmeni zanimautsa plavaniem:"<<std::endl;
            std::cout<<test[i].surname<<"  Srok="<<test[i].age_of_career<<" let"<<std::endl;
        }
    }
    system("pause");
    return 0;
}
Yandex
Объявления
08.11.2012, 22:59     Задача по структурам, прошу найти ошибку
Ответ Создать тему
Опции темы

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