Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rina7
1 / 1 / 0
Регистрация: 20.05.2015
Сообщений: 18
#1

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

26.05.2015, 21:40. Просмотров 306. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структура Автомобиль. Что не так? (C++):

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

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

Структура "Автомобиль". Контейнер "Рынок б/у автомобилей" - C++
Как реализовать такую структуру? 1. Найти иномарки стоимостью до 300тыс. руб. Предусмотреть в программе меню, позволяющее...

Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее? - C++
Вот код: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main(){ float a,c; char b; skip: ...

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

Что-то не то с Майкрсофт визуал студио 2010 или я что-то не так делаю - C++
Дело в том что при запуске вот этой программы: #include &lt;iostream&gt; using namespace std; int main () { for (int i=100; i&lt;=999;...

3
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
26.05.2015, 21:52 #2
Функция new_car что возвращает?
0
zss
Модератор
Эксперт С++
6693 / 6255 / 2084
Регистрация: 18.12.2011
Сообщений: 16,325
Завершенные тесты: 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
26.05.2015, 23:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2015, 23:27
Привет! Вот еще темы с ответами:

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

Список: Что не так с выводом списка, потому что выводится какой-то мусор? - C++
#include &lt;iostream&gt; using namespace std; struct point { int data;//информационное поле-это даннные объявленного или используемого...

Лучший интерактивный самоучитель с++, но так понравился, что думаю, а что если после python изучать с++? - C++
http://academy.cppstudio.com/courses/ 1.) поделитесь опытом после какого языка вы перешли на с++. 2.) Что вам нравится/не очень в языке...

Как сделать так,что бы при введение,например 0;0 выдавалось сообщение,что точка находится на границе? - C++
#include &lt;iostream&gt; using namespace std; int main(){ double x, y; int R=10 cout &lt;&lt; &quot;Введите x: &quot; &lt;&lt;...


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

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

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