Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Rina7
1 / 1 / 0
Регистрация: 20.05.2015
Сообщений: 18
1

Структура Автомобиль. Что не так?

26.05.2015, 21:40. Просмотров 364. Ответов 3
Метки нет (Все метки)

Вроде работает, сортирует, вот только выдает что-то странное. Нормальная марка всегда только у 2 машины, как и число. а вот у первой постоянно выдает: НННННННН. и с числами совершенно не то. Помогите разобраться, что не так.



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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
struct car{
    char name[50]; // название марки машины
    int top; // расход топлива
    int bak; // емкость топливного бака
    int S; // путь
 
    void Input(car &cars);  //Функция ввода данных в структуру 
    car *Next;
};
 
car* new_car(int);
void calc(car*, int);
void sort(car*, int);
void print(car*, int);
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int N;
    car *cars;
    cout << "Колличество машин: ";
    cin >> N;
 
    cars = new_car(N);
    calc(cars, N);
    sort(cars, N);
    print(cars, N);
 
    return 0;
}
 
car* new_car(int N){
    car *cars = new car[N];
    setlocale(LC_ALL, "Russian");
 
    for (int i = 1; i <= N; i++){
 
        cin.ignore();
        cout << "Введите марку машины[" << i << "]: ";
        cin.getline(cars[i].name, 50);
 
        cout << "Введите расход топлива: ";
        cin >> cars[i].top;
        cout << "Введите емкость бака: ";
        cin >> cars[i].bak;
        return;
    }
    
}
       
    void calc(car *cars, int N){
        
        for (int i = 0; i < N; i++){
            cars[i].S = 0;
            cars[i].S += (cars[i].bak / cars[i].top) * 100;
            
            }
        }
    void sort(car *cars, int N){
        car tmp;
 
        for (int i = 0; i < N; i++){
            if (cars[i].S < cars[i + 1].S){
                tmp = cars[i];
                cars[i] = cars[i + 1];
                cars[i + 1] = tmp;
            }
        }
 
    }
        void print(car *cars, int N){
 
            setlocale(LC_ALL, "Russian");
 
            cin.ignore();
            cout << "\nРезультаты:\n";
            for (int i = 1; i <= N; i++){
 
                cout << "\nИмя: " << cars[i].name << "\n " <<"Пройденный путь: " << cars[i].S << endl;
            }
        }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2015, 21:40
Ответы с готовыми решениями:

Структура «Автомобиль»
С полями «Автомобиль»: производитель; цвет; серийный номер; регистрационный...

Создать иерархии наследования: автомобиль - легковой автомобиль, грузовой автомобиль – внедорожник
Создать иерархии наследования: автомобиль - легковой автомобиль, грузовой...

Ошибка в программе. Структура "Автомобиль"
Нуждаюсь в помощи. Сделал программу, но есть проблема с поиском. Задание:...

Структура "Автомобиль". Контейнер "Рынок б/у автомобилей"
Как реализовать такую структуру? 1. Найти иномарки стоимостью до 300тыс....

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int...

3
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
26.05.2015, 21:52 2
Функция new_car что возвращает?
0
zss
Модератор
Эксперт С++
7457 / 6834 / 4316
Регистрация: 18.12.2011
Сообщений: 18,076
Завершенные тесты: 1
26.05.2015, 21:55 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
car* new_car(int N){
    car *cars = new car[N];
    setlocale(LC_ALL, "Russian");
 
    for (int i =0; i < N; i++){
 
        cin.ignore();
        cout << "Введите марку машины[" << i << "]: ";
        cin.getline(cars[i].name, 50);
 
        cout << "Введите расход топлива: ";
        cin >> cars[i].top;
        cout << "Введите емкость бака: ";
        cin >> cars[i].bak;
    }
    return cars;
 
}
int main()
{
    setlocale(LC_ALL, "Russian");
 
    cout << "Колличество машин: ";
    int N;cin >> N;
 
    car* cars = new_car(N);
    calc(cars, N);
    sort(cars, N);
    print(cars, N);
    delete[] cars;
    return 0;
}
0
Rina7
1 / 1 / 0
Регистрация: 20.05.2015
Сообщений: 18
26.05.2015, 23:27  [ТС] 4
Изменил. Все равно у первой машины какая-то ерунда выводится. и числа не те, и имя "ээээээ"
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2015, 23:27

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но...

Что-то не то с Майкрсофт визуал студио 2010 или я что-то не так делаю
Дело в том что при запуске вот этой программы: #include &lt;iostream&gt; using...

Что в программе делает так, что процессор грузится на 100%?
Я не очень разбираюсь в С++, поэтому прошу вашей подсказки по поводу нагрузки...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru