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

Пройденный роботом путь - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Передача двумерного массива указателей в функцию http://www.cyberforum.ru/cpp-beginners/thread73306.html
Всем здравствуйте! Мне необходимо создать что-то вроде справочной системы по операторам языка С++. Теорию я храню в таком виде: //Арифметические операторы char * Arf = { "+", "Сложение", "-", "Вычитание, а также унарный минус", "*", "Умножение", "/", "Деление", "%", "Деление по модулю", "--", "Декремент",
C++ Разработать программу работы с двусвязным списком Разработать программу работы с двусвязным списком. Програма длжна реализовать сл. процедуры, вызываемые из меню: -построение списка очередей -добавление элемента в указаную очередб -удаление э-та из указаной очереди -вывод указаной очереди. В данную задачу ваще не втыкаю)в доп. литератуте нечево не магу найти, помогите пожалучто если можете... http://www.cyberforum.ru/cpp-beginners/thread73296.html
C++ Матрица и её единичные элементы
Не могу понять как написать програму помогите пожалусто. Дана квадратная матрица, найти номер строки матрицы, в которой больше всего единичных элементов(и реализовать в програме указатели). Надеюсь на вас)
Массив и его элементы C++
Преобразовать массив так, чтобы элементы массива поменялись местами (первый с последним, второй с предпоследним и т.д.). Помогите пожалусто решить задачу с применением указателей ну не как не получается.
C++ Сортировка и поиск http://www.cyberforum.ru/cpp-beginners/thread73288.html
Доброго всем времени суток, прошу помочь Вас решить мне простенькую задачку, у меня она чёт то не получается. Вот её условие: "Найти в отсортированном в порядке возрастания элементов массив. Вставить в этот массив новый элемент, не нарушая сортировки.
C++ Ввод/вывод и обработка изображения Доброго времени суток. Помогите, пожалуйста. Поставили задачу взять 2 кадра (2 изображения формата BMP или JPG) и вычесть одно из друго. Работаю Visual Studio 2008 на С/С++. Весьма никчемный из меня программист. Подскажите, - какие библиотеки дописывать под #include <iostream> - какие функции использовать для вызова изображения (+ формат указания пути к файлу в теле функции) - какие... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
23.12.2009, 06:16     Пройденный роботом путь
Вот исправленный код:
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
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <time.h>
#include <iostream>
#include <math.h> 
int n1[255], n2 [255], c; //Г‡Г*Г¤Г*ГҐГ¬ äâГ* Г¬Г*Г±Г±ГЁГўГ*, Гў êîòîðûå Гў Г¤Г*ëüГ*åéøåì Г§Г*ïèñûâГ*ГҐГ¬ îáîðîòû ëåâîãî(n1) ГЁ ГЇГ*ðâîãî (n2) êîëåñ
int i=0, k, N;
double S1, S2, S, d;
const long double PI = 3.1415926;
 
 
int main(void)
{
FILE *fin; //Îáúÿâëÿåì ГґГ*éë 'in'   
d=0.2; //ÄèГ*ìåòð êîëåñ
k=0;
c=0;                                            
 
 
if ( ( fin = fopen("in.txt", "r"))== NULL )     //ÏðîâåðêГ* ГґГ*éëГ*
        printf("Can't open input file!\n");
 
 while (( c= getc(fin)) !='\n') //Г–ГЁГЄГ« ГўГ»Г*ïîëГ*ГїГҐГІГ±Гї, ïîêГ* Г*ГҐ Г*Г*ГІГЄГ*åìñÿ Г*Г* Г*îâóþ ñòðî÷êó
   { 
   fscanf(fin, "%d", &n1[i]);      //Ñ÷èòûâГ*ГҐГІГ±Гї öèôðГ* ГЁГ§ ïåðâîé ñòðîêè Гў ГґГ*éëå Гў Г¬Г*Г±Г±ГЁГў
   i++; 
   }
        k=i; //ÏðèñâГ*ГҐГўГ*ГҐГ¬ ïåðåìåГ*Г*îé k Г§Г*Г*Г·ГҐГ*ГЁГҐ i? ïîëó÷åГ*Г*îå Г*Г* âûõîäå ГЁГ§ öèêëГ* (÷òîáû âûâåñòè âðåìÿ äâèæåГ*ГЁГї)
        i=0; //ГЋГЎГ*óëÿåì i, ÷òîáû âîéòè ГўГ® âòîðîé öèêë
        
   while ((c = getc(fin)) != EOF) //ГЂГ*Г*ëîãèГ*ûé öèêë äëÿ âòîðîé ñòðîêè
      { 
      fscanf(fin, "%d", &n2[i]);                   
 
      i++;
      }     
        
            S = 0; //ГЋГЎГ*óëÿåì ïåðåìåГ*Г*ûå
            S1 = 0;
            S2 = 0;
 
            for (i=0; i<k; i++) //Г–ГЁГЄГ«, âû÷èñëÿþùèé ГЇГіГІГј, ïðîéäåГ*Г*ûé ðîáîòîì
 
                 {
                      S1 =  PI*d*n1[i]; //ГЏГіГІГј, ïðîéäåГ*Г*ûé ëåâûé êîëåñîì
                      S2 = PI*d*n2[i]; //ГЏГіГІГј, ïðîéäåГ*Г*ûé ГЇГ°Г*âûéì êîëåñîì
                      S += fabs((S1) + (S2))/2; //ГЋГЎГ№ГЁГ© ГЇГіГІГј, êîòîðûé ГЁ òðåáóåòñÿ Г*Г*éòè
                 }
 
 
printf("S=%1.5f", S); //Âûâîä ïóòè
printf("\n");
system ("PAUSE");
return 0;
}
Но вот эта формула:
C
1
 S += fabs((S1) + (S2))/2;
не правильная. Она подходит только для случаев, если два колеса равномерно вращались (в одну и туже сторону или разные). Для остальных случаев она считает неверно. Например: 1 колесо совершило сколько-то оборотов и проехало 4 метра (S1=4), 2 колесо стояло на месте (S2=0). По этой формуле получим что робот передвинулся на 2 метра, хотя на самом деле должно получится 0.
Лучше тогда уж воспользоваться вариантом, который предлагал manfeese. Т.е. в файле храняться данные в виде пар чисел, каждое из которых 0, 1 или -1 и которые показывают, состояние колес за дискретный промежуток времени.
 
Текущее время: 01:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru