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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
#1

Заполнение трехмерного массива - C++

18.05.2012, 20:02. Просмотров 1364. Ответов 20
Метки нет (Все метки)

Есть программа которая считает расстояние скоростного пути.. и если машина находится близко к впереди идущей машине, то программа нам об этом сообщает.. так же как и о том что можно подъехать поближе к этой машине.. задается скорость автомобиля в м/с и расстояние до впереди идущего автомобиля в метрах. Программа продолжает работать до того пока скорость не будет равна 0 м/с.

нужна помощь..
что нужно добавить, и куда, в этой программе, чтобы десять последних запросов на расчет тормозного пути записывался в трехмерный массив, к которому надо обратиться через указатель. И этот массив с расчетами записать на диск в текстовом виде.. ( хотя последнее и так думаю догадаюсь как сделать)
просто не могу понять как заполнять массив, а тем более трехмерный запросами.


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
//#include <stdio>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <iostream>
#include <clocale>
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
    setlocale(LC_ALL, "rus");
    double v=0, s=0, k=0;
    do
    {
    printf("Введите скорость автомобиля, м/с: ");
    cin>>v; //считываем скорость, введённую пользователем
    printf("Введите расстояние между автомобилями, м: ");
    cin>>s; //считываем расстояние между машинами
    printf("Введите коэффициент трения:\n1. Гололед.\n2. Снег.\n3. Мокрый асфальт.\n4. Сухой асфальт.\n");
 
    char a;
    int i=0;
    while(i == 0)
    {
        a=getch();
        switch(a)
        {
            case '1': k=0.1; printf("\nВыбран гололед. Коэффициент трения=%.1f", k); i=1; break;        
            case '2': k=0.2; printf("\nВыбран снег. Коэффициент трения=%.1f", k); i=1; break;       
            case '3': k=0.4; printf("\nВыбран мокрый асфальт. Коэффициент трения=%.1f", k); i=1; break;     
            case '4': k=0.7; printf("\nВыбран сухой асфальт. Коэффициент трения=%.1f", k); i=1; break;      
            default: printf("\nНеправельный выбор. Пожалуйста попробуйте еще раз."); break;     
        }
    }
    //cin>>k; //считываем коэффициент дороги
    double resd=v*v/(2*k*9.81); //высчитываем тормозной путь
    printf("\n");
    if ( v == 0)
    {
        printf("Вы стоите. Ваша скорость 0 м/с.\n");
    }
    else
    {
    if (abs(resd-s) < 0.01) //если расстояния почти равны, то советуем оставить всё как есть
    {
        printf("Вам нужно сохранять скорость на этом уровне. Не едьте быстрее или медленнее.\n");
    }
    else
    {
        if (resd < s) //если дистанция больше, чем тормозной путь, то можно ускориться
        {
            printf("Вы можете ехать быстрее. Расстояние достаточное между автомобилями.\n");
        }
        if (resd > s) //если дистанция меньше тормозного пути, то стоит замедлиться
        {
            printf("Вы должны замедлиться. Ваше расстояние слишком маленькое между автомобилями.\n");
        }
    }
    }
    }while(v != 0); // диалог с пользователем бесконечным до ввода скорости 0 м/с
    getch();
    getch();
}
Добавлено через 1 час 9 минут
апаимся)

Добавлено через 1 час 0 минут
апаемся

Добавлено через 8 часов 57 минут
апаемся

Добавлено через 2 часа 26 минут
апики

Добавлено через 1 час 33 минуты
апчхи

Добавлено через 4 часа 33 минуты
и еще раз

Добавлено через 56 минут
пурум
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2012, 20:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение трехмерного массива (C++):

Заполнение трехмерного массива - C++
Помогите с заполнением трехмерного массива, мне нужно чтобы он заполнился по порядку от 0 до 60. #include &lt;stdio.h&gt; #include &lt;malloc.h&gt;...

Ручное заполнение трехмерного массива - C++
Доброго времени суток. Пишу лексический анализатор , и в базе данных стандартных типов анализатора (заголовочный файл) мне нужно объявить...

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

Выделить память для трехмерного массива и изменить индексы начального элемента массива - C++
Выделить память для трехмерного массива а. Изменить индексы начального элемента массива на . Протестировать программу

Сортировка трехмерного массива - C++
Не могу понять, как (за приемлемое время - не более 300мс) отсортировать трехмерный массив на 500^3 элементов (куб). Сортировка должна...

Сортировка трехмерного массива - C++
Выполнить сортировку трехмерного массива методом вставки, пызырька!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
18.05.2012, 20:26 #2
А что собственно в этом массиве хранится? Да зачем его вообще использовать?
0
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
18.05.2012, 20:31  [ТС] #3
сам не пойму.. чего храниться вообще не представляю.. надо просто туда записать 10 последних запросов. я так понял в виде запроса можно сделать скорость м/с которую вначале вводим v
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
18.05.2012, 20:35 #4
сам не пойму..
Ну когда разберетесь пишите...

А вообще лучше организовать массив структур, а не трехмерный массив( как я предпологаю )
0
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
18.05.2012, 20:50  [ТС] #5
Цитата Сообщение от Avazart Посмотреть сообщение
Ну когда разберетесь пишите...

А вообще лучше организовать массив структур, а не трехмерный массив( как я предпологаю )
надо в массив записать 10 последних введенных скоростей которые вводим.
а массив структур может быть трехмерным?
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
18.05.2012, 20:52 #6
а массив структур может быть трехмерным?
Может, но зачем?
0
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
18.05.2012, 21:01  [ТС] #7
В задание так сказано.
А вообще и одномерный сойдет, главное чтобы с указателями был. Думаю в 3х мерный смогу переделать.
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
18.05.2012, 21:33 #8
Ну как то так:
C++
1
2
3
4
5
6
7
8
9
10
double V[10];
int index=0;
//...
printf("Введите скорость автомобиля, м/с: ");
cin>>v; //считываем скорость, введённую пользователем
   V[index]=v;
   index++;
printf("Введите расстояние между автомобилями, м: ");
cin>>s; //считываем расстояние между машинами
//...
0
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
18.05.2012, 22:51  [ТС] #9
Спасибо. А как его теперь вывести?
Пробую так, но он выводит не введенный v, а 0-ли может быть пустые ячейки памяти.
C++
1
2
3
4
5
    for (int i = 0; i < index; i++)
{
printf("Скорость %d м/с",v);
printf("\n");
}
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
18.05.2012, 22:58 #10
C++
1
for (int i=0; i<index; i++)  printf("Скорость %d м/с\n",&V[i]);
0
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
18.05.2012, 23:06  [ТС] #11
выводит большие числа и после каждого повтора прибавляет по 8
Скорость 1439880 м/с
Скорость 1439888 м/с
Скорость 1439896 м/с
Скорость 1439904 м/с
Скорость 1439912 м/с
Скорость 1439920 м/с
Скорость 1439928 м/с
Скорость 1439936 м/с
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
18.05.2012, 23:08 #12
А так
C++
1
for (int i=0; i<index; i++) std::cout<<"Скорость " <<V[i]<<std::endl;
Наверное без &
C++
1
for (int i=0; i<index; i++)  printf("Скорость %d м/с\n",V[i]);
1
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
18.05.2012, 23:20  [ТС] #13
Да, супер. А как вывести только последние 10 записей? а то так выводит, там где 0.4 это вводится что-то не тою
Скорость 3
Скорость 4
Скорость 4
Скорость 4
Скорость 34
Скорость 4
Скорость 4
Скорость 3
Скорость 4
Скорость 34
Скорость 4
Скорость 0.4
Скорость 4
Скорость 30
Скорость 4

Добавлено через 2 минуты
вот этот так работает,
C++
1
for (int i=0; i<index; i++) std::cout<<"Скорость " <<V[i]<<std::endl;
а это нули выдает
C++
1
for (int i=0; i<index; i++)  printf("Скорость %d м/с\n",V[i]);
0
Avazart
Эксперт С++
7191 / 5365 / 280
Регистрация: 10.12.2010
Сообщений: 23,674
Записей в блоге: 17
18.05.2012, 23:40 #14
Ну посути он выводит первые 10 элементов, и если введено больше выводит мусор

По этому надо сделать что то вроде
C++
1
2
3
4
5
6
7
8
9
10
11
int size=0;
//....
cout<<"Введите скорость автомобиля, м/с: "<<endl;
cin>>v; //считываем скорость, введённую пользователем
if(index<10){ V[index]=v; index++;}
else (index=0; V[index]=v; index++;}
size=(size>index)?size:index;
cout<<"Введите расстояние между автомобилями, м: "<<endl;
cin>>s; //считываем расстояние между машинами
//....
for (int i=0; i<size; i++) std::cout<<"Скорость " <<V[i]<<std::endl;
Либо использовать std::list или std::deque вместо массива что бы сохранять относительный порядок
1
4uLABEK
2 / 2 / 0
Регистрация: 30.09.2011
Сообщений: 37
19.05.2012, 00:46  [ТС] #15
Все работает, спасибо) теперь еще один вопрос)
вот мы вводим первые 10 запросов, получаем
Скорость 1
Скорость 2
Скорость 3
Скорость 4
Скорость 5
Скорость 6
Скорость 7
Скорость 8
Скорость 9
Скорость 10

потом вводим 11й и 12й он начинает с начала
Скорость 11
Скорость 12
Скорость 3
Скорость 4
Скорость 5
Скорость 6
Скорость 7
Скорость 8
Скорость 9
Скорость 10

как его организовать чтобы вывести 10 последних.. я так понял правильно чтобы вывилось он после 10 введенных должен смещать массив на 1


Скорость 3
Скорость 4
Скорость 5
Скорость 6
Скорость 7
Скорость 8
Скорость 9
Скорость 10
Скорость 11
Скорость 12
чтобы вот такой результат получался
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2012, 00:46
Привет! Вот еще темы с ответами:

Сумма элементов трехмерного массива - C++
Имеется трехмерный массив из 3-ех слоев по 3Х3 элемента в каждом слое, в первом слое все элементы единицы, во втором слое - двойки, в...

Заполнить срез трехмерного массива - C++
Добрый день. Нужно заполнить срез 3д матрицы (см. вложения, там есть картинка). Все подготовительные этапы по вводу самого массива и...

Заполнить диагональ трехмерного массива - C++
#include &lt;iostream&gt; using namespace std; class Arrtridimensional {//Объявили класс public: static const int x = 5, y = 5, z = 5; ...

Считывание из файла трехмерного массива и запись - C++
Доброго времени суток, прошу помочь в следующем. :) Собственно вот создание трехмерного массива int c = 2; int a = 3; int b = 2;...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.05.2012, 00:46
Ответ Создать тему
Опции темы

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