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

Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае - C++

Восстановить пароль Регистрация
 
naaduu
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 26
19.11.2012, 15:40     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #1
Условие задачи: переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае.
Исходные данные: А[8], В[8]
Примечание: вычисление длины вектора оформить в виде функции.

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
#include <math.h>
 #include <stdlib.h>
 #include <stdio.h>
 int random(int a, int b) {
 return (rand()%(b-a+1)+a);  }
 int main(int argc, char *argv[]) {
 int r,i;
 int a[8], b[8];
 double l1,l2;
 srand((size_t)(time(NULL)));
 for (i=0; i<8;i++) {
 a[i] = random(0,10);
 b[i] = random(0,10);}
 i=0;
 l1=0;
 l2=0;
 for (i=0;i<8;i++) {
 l1=l1+a[i]*a[i];
 l2=l2+b[i]*b[i]; } 
 l1 = sqrt(l1);
 l2 = sqrt(l2); printf("1=%f, 2=%f",l1,l2);
 if (l1>l2) {
 r=1;  }
 else {
 r=0;  }
 printf(“\nr=%d”,r);
 system(“pause”);
 return 0;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2012, 15:40     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Посмотрите здесь:

C++ Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае.
Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае. C++
C++ Символьной переменной L присвоить значение true, если отрицательная компонента вектора C встретится не позднее, чем у векторов A и B
Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет C++
C++ name[name.size()] должен выдать наибольшее значение вектора, выдает ноль в любом случае.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
19.11.2012, 15:44     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #2
надо подключить #include <ctime>


C++
1
2
printf(“\nr=%d”,r);
system(“pause”);
Вот в этих 2 строках неверные кавычки
naaduu
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 26
19.11.2012, 23:15  [ТС]     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #3
посмотрите пожалуйста еще раз, мне вот преподаватель говорил что здесь я не учла примечание, что вычисление длины вектора оформить в виде функции. а как это сделать я не знаю.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
19.11.2012, 23:48     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #4
Цитата Сообщение от naaduu Посмотреть сообщение
посмотрите пожалуйста еще раз, мне вот преподаватель говорил что здесь я не учла примечание, что вычисление длины вектора оформить в виде функции. а как это сделать я не знаю.
В чем проблема, вынесите в функцию весь код, который связан с вычислением длины и оформить в виде функции так же как оформлена у вас функция random.
naaduu
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 26
20.11.2012, 23:16  [ТС]     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #5
и как это будет выглядеть? (а то я вообще не соображаю в этих программах)
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
20.11.2012, 23:51     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #6
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
#include <math.h>
#include <ctime>
 #include <stdlib.h>
 #include <stdio.h>
 int random(int a, int b) {
 return (rand()%(b-a+1)+a);  }
  double dlina(int *a);
 int main(int argc, char *argv[]) {
 int r,i;
 int a[8], b[8];
 double l1,l2;
 srand((size_t)(time(NULL)));
 for (i=0; i<8;i++) {
 a[i] = random(0,10);
 b[i] = random(0,10);}
 
 l1 = dlina(a);
 l2 = dlina(b); 
 printf("1=%f, 2=%f",l1,l2);
 if (l1>l2) {
 r=1;  }
 else {
 r=0;  }
 printf("\nr=%d",r);
 system("pause");
 return 0;
 }
 
 double dlina(int *a)
 {
     double l1=0;
 for (int i=0;i<8;i++) {
 l1=l1+a[i]*a[i]; }
 return sqrt(l1);
 
 }
CyberKatze
1 / 1 / 0
Регистрация: 20.11.2012
Сообщений: 6
21.11.2012, 01:18     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #7
c 14 по 21 строчку что-то мне вообще непонятно, что происходит и зачем? если сверху стоит другое задание....

а проблема в том, что теряется массив при передаче в функцию. в фунцию передается массив как указатель, поэтому его длину проблематично утвердить...

например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define MAX_LENGTH_VEKTOR 10
 int getVekLength(const int* vektor, int len){
    return sizeof(vektor)/len ;
 }
 int main(int argc, char *argv[]) {
 int a[MAX_LENGTH_VEKTOR];
 
 for (i=0; i<MAX_LENGTH_VEKTOR;i++) {
    a[i]=rand();
 }
 
 
 printf("\n test length vektor 'a' = %d",sizeof(a)/sizeof(int));
 printf("\n length vektor 'a' = %d",getVekLength(a,sizeof(int)));
---

test length vektor 'a' = 10
length vektor 'a' = 1

тестовая длина показывает правильный размер вектора
а вот вектор через функцию показывает неправильное значение



вот и нужно думать, как получуть длину вектора в функции.........

Добавлено через 2 минуты
Цитата Сообщение от NeonLost Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
 double dlina(int *a)
 {
     double l1=0;
 for (int i=0;i<8;i++) {
 l1=l1+a[i]*a[i]; }
 return sqrt(l1);
 
 }
не знаю что при такой форме вы пытаетесь доказать ))))) но ответ у меня выходит такой:


test2 length vektor 'a' = 791801027
test length vektor 'a' = 10
length vektor 'a' = 1
length vektor 'b' = 1



i a[i] b[i]
0 5300 8651
1 1317 14502
2 19753 27518
3 528 6678
4 28033 21692
5 7880 5337
6 31670 23266
7 30022 25814
8 26275 2482
9 6480 27011
C++
1
2
3
4
 printf("\n test2 length vektor 'a' = %d",dlina(a));
 printf("\n test length vektor 'a' = %d",sizeof(a)/sizeof(int));
 printf("\n length vektor 'a' = %d",getVekLength(a,sizeof(int)));
 printf("\n length vektor 'b' = %d\n\n\n\n",getVekLength(b,sizeof(b[0])));
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
21.11.2012, 17:26     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #8
я не понял, что тебе не нравится?..я не переписывал код, я просто добавил функцию, которая выполняет исходный захардкоденный код...)
CyberKatze
1 / 1 / 0
Регистрация: 20.11.2012
Сообщений: 6
22.11.2012, 23:57     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #9
Цитата Сообщение от NeonLost Посмотреть сообщение
я не понял, что тебе не нравится?..я не переписывал код, я просто добавил функцию, которая выполняет исходный захардкоденный код...)

a длину вектора так можно получить????

C++
1
2
3
4
5
6
7
8
double dlina(int *a)
 {
     double l1=0;
 for (int i=0;i<8;i++) {
 l1=l1+a[i]*a[i]; }
 return sqrt(l1);
 
 }
сам пробовал сделать? прежде чем непонятный кусок кода с сумой квадратов,который ну уж никак длину вектора не вычисляет, скинуть в функцию и говорить что написал ответ на поставленный вопрос?!


длину вектора получить через фунцию невозможно, т/к нет доступа ко всей памяти в которой хранится массив. а имея на руках только указатель на первый элемент массива, получить всю длину невозможно!

как выход из ситуации делать обеъкт ARRAY, у которого есть метод length() и по нему делать return/значение в функции!


если я в чем то не прав, прошу иправить/поправить!!!

решение поставленной задачи хотелось бы увидеть, если оно есть!

Спасибо!
naaduu
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 26
23.11.2012, 10:17  [ТС]     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #10
я вчера сдала работу. там все было правильно
CyberKatze
1 / 1 / 0
Регистрация: 20.11.2012
Сообщений: 6
23.11.2012, 16:07     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #11
Цитата Сообщение от naaduu Посмотреть сообщение
я вчера сдала работу. там все было правильно

И Вы хотите сказать, что ваш код для проверки длины вектора правилен?????
naaduu
0 / 0 / 0
Регистрация: 27.01.2012
Сообщений: 26
23.11.2012, 17:29  [ТС]     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #12
да вот то что мне NeonLost переделал код, это оказалось правильным
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
23.11.2012, 18:05     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #13
Цитата Сообщение от CyberKatze Посмотреть сообщение
И Вы хотите сказать, что ваш код для проверки длины вектора правилен?????
зачем проверять, если он заранее известен и меняться не собирается?..)
CyberKatze
1 / 1 / 0
Регистрация: 20.11.2012
Сообщений: 6
23.11.2012, 19:08     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #14
Цитата Сообщение от NeonLost Посмотреть сообщение
зачем проверять, если он заранее известен и меняться не собирается?..)

тогда обратный вопрос:
1. зачем его тогда вычислять если он не меняется?!
2. почему я могу в главной программе длину вектора получить. а из функции нет??


функция длина считает непонятное... ибо в нем уже есть цикл i=0..8, что уже опровергает само задание по поиску длины вектора через функцию!

или я не прав?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 22:23     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Еще ссылки по теме:

Массив: Переменной Х присвоить 1, если элементы массива упорядочены по возрастанию, 0 - в противном случае. C++
C++ Составить линейную программу,печатающую значение true , если указанное высказывание является истинным,и false в противном случае
C++ Программа, печатающая значение true, если указанное высказывание является истинным, и false в противном случае

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

Или воспользуйтесь поиском по форуму:
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
23.11.2012, 22:23     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае #15
мы вычисляем длину вектора, а ты нам говоришь про размерность матрицы(надеюсь ты понял)
2.потому что это тебе не java в функцию с массивом 2 параметром размер нужно указывать, либо использовать STL или свой говнокод
Yandex
Объявления
23.11.2012, 22:23     Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Ответ Создать тему
Опции темы

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