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

Задача на структуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Олимпиадная задача - движение фишки http://www.cyberforum.ru/cpp-beginners/thread698167.html
Есть вот такая задача: /*Фишка может двигаться по полю длины N только вперед. Длина хода фишки не более K. Найти число различных путей, по которым фишка может пройти поле от начала до конца. Пример. N=3, K=2 Возможные пути: 1,1,1 1,2
C++ Ввести с консоли число в 16-ричной системе счисления, преобразовать его в битовое поле за счёт использования объединения Задание:Разработать битовое поле, описывающее состояния элементов прибора. Ввести с консоли число в 16-ричной системе счисления, преобразовать его в битовое поле за счёт использования объединения. Вывести на консоль состояния элементов прибора, соответствующие состоянию битов во введённом числе. Варианты приборов и их элементов: ADSL модем. Элементы: DSL вкл/выкл, PPP вкл/выкл, Link вкл/выкл ... http://www.cyberforum.ru/cpp-beginners/thread698165.html
Как зациклить и выйти в любой момент C++
#include "stdafx.h" #include "iostream" #include "math.h" #include "conio.h" #include "time.h" using namespace std; int _tmain(int argc, _TCHAR* argv)
Вывод сочетания шаров C++
Имеется задача: есть четыре шара пронумерованных 0, 1, 2, 3; вывести все сочетания шаров из 4 по 3 с возвратом и с учётом порядка. Если использовать такое решение (псевдокод): for (int i= 0; i++; i< 4 ) for (int j= 0; j++; j< 4 ) for (int k= 0; k++; k< 4 ) { printf ("%d %d %d\n", i, j, k); printf ("______________________\n"); } То вывод будет:
C++ Проверка при помощи вложенных блоков try http://www.cyberforum.ru/cpp-beginners/thread698129.html
Посчитать уравнение ( у=log4(x2-4)+1/x)при вводе х с клавиатуры, но должны выполнятся условия: 1. выражение считается в отдельной функции; 2. корректность ввода должна проверятся при помощи механизма перехвата исключений; 3. при выполнении обеспечить двухуровневую проверку двумя способами: -при помощи вложенных блоков try ; -путем перехвата исключений в основной программе и в функции что...
C++ Запись строки в конец файла всем привет. подскажите пожалуйста, почему не работает этот код #include <iostream> #include <fstream> using namespace std; int main() { ifstream myfile; подробнее

Показать сообщение отдельно
ChuckNorris
2 / 2 / 0
Регистрация: 25.10.2012
Сообщений: 42
15.11.2012, 02:18     Задача на структуры
Мне нужно решить одну задачу, написал код все работает нормально кроме одной функции.

Вот задание:

Описать структуру с именем ITINERARY, которая содержит следующие поля:
 FIRST - название начального пункта маршрута;
 FINAL - название конечного пункта маршрута;
 NUM - номер маршрута.
 DISTANCE - расстояние в километрах.

Написать программу, которая отдельными функциями выполняет следующие действия:

 ввода с клавиатуры данных в массив ROUT, ​​состоящей из N переменных типа
ITINERARY;
 упорядочение записей по убыванию расстояния в километрах;
 вывода на экран информации о маршруте, номер которого введен с клавиатуры;
если таких маршрутов нет, то вывести соответствующее сообщение.


Вот код к задаче:

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
const int n=3;
const int N=3;
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <locale.h>
using namespace std;
 
 
struct  ITINERARY
{
    char FIRST[10];
    char FINAL[10];
    int NUM;
    float DISTANCE;
};
 
 
void INP(ITINERARY[]);
void vpor(ITINERARY[]);
void OUT(ITINERARY[]);
 
 
 
int main ()
 
{   setlocale(LC_ALL,"Russian");
    ITINERARY ROUT[N];
    INP(ROUT);
   vpor(ROUT);
    OUT(ROUT);
    return 0;
}
 
 
 
void INP (ITINERARY ROUT[N]){
    int p=0;
for (int i=0;i<n;i++){
    
cout<<"номер маршрута: ";
cin>>ROUT[i].NUM;
 
cout<<"Введите название начального пункта маршрута: ";
cin>>ROUT[i].FIRST;
 
cout<<"Введите название конечного пункта маршрута: ";
cin>>ROUT[i].FINAL;
 
cout<<"Введите расстояние в километрах между пунктами: ";
cin>>ROUT[i].DISTANCE;
cout<<endl;
 
 
}
}
 
 
 
void vpor (ITINERARY ROUT[N]){
    int M;
    for(int i=0;i<N;i++) 
      for(int j=0;j<(N-i-1);j++)  
           if(ROUT[j].DISTANCE < ROUT[j+1].DISTANCE){           
              M = ROUT[j].DISTANCE;
              ROUT[j].DISTANCE = ROUT[j+1].DISTANCE;
              ROUT[j+1].DISTANCE = M; 
           }
    for(int k=0;k<N;k++)
    cout<< ROUT[k].DISTANCE;
}
 
 
 
 
void OUT (ITINERARY ROUT[N]){
    int r;
    cout << "Введите номер маршрута о котором хотите узнать информацию: ";
    cin>> r;
 
    
    cout << "Информация:\n";
    
        cout<< ROUT[r-1].FIRST<<'\t' <<ROUT[r-1].FINAL << '\t' <<ROUT[r-1].DISTANCE;
        
}
Все работает нормально кроме функции которая должна упорядочивать записи по убыванию расстояния в километрах;

Вот кусок который не работает корректно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
void vpor (ITINERARY ROUT[N]){
    int M;
    for(int i=0;i<N;i++) 
      for(int j=0;j<(N-i-1);j++)  
           if(ROUT[j].DISTANCE < ROUT[j+1].DISTANCE){           
              M = ROUT[j].DISTANCE;
              ROUT[j].DISTANCE = ROUT[j+1].DISTANCE;
              ROUT[j+1].DISTANCE = M; 
           }
    for(int k=0;k<N;k++)
    cout<< ROUT[k].DISTANCE;
}
Проблема в том что когда ета функция работает то следующая функция которая должна выводить информацию о номере маршрута которого мы ввели, выводит эту информацию некорректно. А если удалить функцию vpor(ROUT); из программы тогда все выводится нормально. Я знаю что ошибка где-то в этой функции vpor(ROUT)



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