Просмотр полной версии : Вопросы по С++
Помогите проинициализировать массив. Дан одномерный массив:
const int n=37;
double u[n];
Его нужно проинициализировать 37-ю элементами, которые лежат в множестве 0<=x<=36 c шагом 10 и где n-ый элемент массива будет равен: Xn*57.295779.
Помогите проинициализировать массив. Дан одномерный массив:
const int n=37;
double u[n];
Его нужно проинициализировать 37-ю элементами, которые лежат в множестве 0<=x<=36 c шагом 10 и где n-ый элемент массива будет равен: Xn*57.295779.
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
main(){
int j,k;
const int n=37;
double u[n];
randomize();
for (j=0;j<=n-1;j++)
u[j]=random(37);
u[n-1]*=57.295779;
for (k=0;k<=n-1;k++)
printf(" %f",u[k]);
getch();
}
!!!!может шаг=1?
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
main(){
int j,k;
const int n=37;
double u[n];
randomize();
for (int j=0;j<n-1;j++)
u[j]=random(37)*.1;//чтоб числа были десятичные
u[n-1]=57.295779;
for (int k=0;k<=n-1;k++)
cout<<u[k]<<" ";
getch();
}
Нет, шаг 10-ть, элементы должны быть расположены так: 0*57.295779 , 10*57.295779 , 20*57.295779 , … , 360*57.295779. Т.е получаем разбиение окружности по 10 градусов и переведённое в радианы.
Теперь насчёт твоего варианта: зачем делать глобальное объявление переменных внутри функции, если ты объявляешь их в цикле? Надо оставить что-то одно, напр. глобальное объявление. :)
И в конечном итоге результат всё равно ошибочный выводиться.
набивал быстро вот и не парился особо, а так:
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
main(){
int j,k;
const int n=37;
double u[n];
for (j=0;j<=n-1;j++)
u[j]=j*10*57.295779;
for (k=0;k<=n-1;k++)
printf(" %f",u[k]);
getch();
}
Новый вопрос. Есть две функции, одна возвращает определенное значение в другой вызывается первая и потом используется возвращаемое значение в теле функции. Так вот, на этот возвращаемый аргумент из первой функции ругается компилятор. Его что нужно объявлять в круглых скобках (…)? Хотя вроде бы это ошибочно, да и внутри второй функции его объявление тоже ничего не даст…
double f1() {return FI;} и вторая double f2(){double f1(); …=…FI;}
Где инициализация переменной FI в функции f1()? Что по твоему должна вернуть функция?
P.S.:А ещё желательно писать ошибку выдаваемую компилятором.
Где инициализация переменной FI в функции f1()? Что по твоему должна вернуть функция?Да FI проинициализирована в первой функции. Не в этом вопрос, я упрощаю задачу, что бы не обсуждать какие-то побочные вещи…
"Упрощать сложно". В данном случае ты только усложнил задачу. Где полный код и ошибка компилятора?
Novosel2000
14.12.2006, 21:02
double f1() {return FI;} и вторая double f2(){double f1(); …=…FI;}
Ты во второй функции определил переменную через пурвую функцию?
Чес говоря с программигном я давно не сталкивался, но чес слово не понятно - где ошибка...
см. Palmer' а
//---------------------------------------------------------------------------
double gen(){
double FI_grad;
double FI_rad;
randomize();
FI_grad=random(361);
FI_rad=FI_grad*0.0174;
return FI_rad;
}
//---------------------------------------------------------------------------
double method(){
double xk1=-2.0;
double xk2=6.0;
double H=1.0;
double x1;
double x2;
for ( ;; ){
double gen();
x1=xk1+H*cos(FI_rad); <- тут ругаеться на неопознание FI_rad
xk1=x1;
x2=xk2+H*sin(FI_rad);
xk2=x2;
cout<<x1;
cout<<x2;
}
}
Novosel2000
14.12.2006, 21:31
А попробуй
...
double FI_rad;
FI_rad=gen();
...
А попробуй
...
double FI_rad;
FI_rad=gen();
...
Подозреваю, что такое прокатит, но это не то что нужно. Так FI_rad будет создаваться в method() но не будет иметь никакого отношения к gen()
Novosel2000
14.12.2006, 21:42
В mehtod() будет выделена ячейка памяти под именем FI_rad и в нее будет помещено значени, которое будет вычесленов gen()
В mehtod() будет выделена ячейка памяти под именем FI_rad и в нее будет помещено значени, которое будет вычесленов gen()Компиляторы не ругаются, но cout тоже не работает. А что если FI_rad глобально объявить?
Novosel2000
14.12.2006, 22:01
Могешь объявить глобально, при этом возвращать из gen() ничего не надо.
А при чем тут cout?
Могешь объявить глобально, при этом возвращать из gen() ничего не надо.
А при чем тут cout?
Спасибо за помощь. А cout я к тому, что результат, я все равно не считал. Но это уже офтопик.
И у меня вопросик по Си...
Что не правильно?
#include <stdio.h>
main()
{
int k,i,n;
float y[10],x[10];
float h, S,a,b;
printf("введите интервал [a,b]\n");
scanf("%d%d",&a,&b);
n=10;
k=4;
h=(b-a)/n;
for (i=0; i<=n;i++)
{
x[i]=a+i*h;
y[i]=x[i]*x[i];
};
S=y[0]-y[n];
for (i=1; i<=n;i++)
{
S=S+k*y[i];
k=6-k;
};
S=S*h/3;
printf("Интеграл равен ",S);
}
Для for ( ) после { } ; не ставиться вроде. . Компилятор должен выдавать ошибку на наличие лишних ;
нет, здесь все правильно. компилятор ошибок не выдает. программа просто не считает. :(
Я в саму задачу не вникаю, смотрю по коду.
S=S+k*y[i] Вот это, довольно таки интересный момент. Если y этой i-ый вектор, т.е вектор размерности i. То результат S никак не может быть числовой константой. Должно быть нечто вроде S[i], как то так. Потому что при действиях ( +, -, *, = ) с матрицами/векторами, результат всегда вектор/матрица.
И тут же. k типа int, а S типа float. Не совпадение типов данных, надо приведение типов писать. Или все делать одним типом float кроме i. Хотя для математики, тип float плох у него точность 3-и или 2-а знака после запятой, лучше double использовать.
Почему? S – это сумма. Поочередно прибавляем к ней разные значения у. Я, по крайне мере, это так читаю. :sm_cry:
Почему? S – это сумма. Поочередно прибавляем к ней разные значения у. Я, по крайне мере, это так читаю. :sm_cry:
А может быть и так, действительно. Я в задание не вникаю, смотрю что написано. :)
Я переделал, код по-своему. Вроде площадь считается..., и не отрицательная и разная при разных приделах.
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
main()
{
int i;
int n=10;
double k=4.0;
double y[10],x[10];
double h, S,a,b;
cout<<"Enter [a,b]:\n";
cin>>a>>b;
h=(b-a)/n;
for (i=0; i<=n;i++)
{
x[i]=a+i*h;
y[i]=x[i]*x[i];
}
S=y[0]-y[n];
for (i=1; i<=n;i++)
{
S=S+k*y[i];
k=6-k;
}
S=S*h/3;
cout<<"S:"<<S<<endl;;
getch();
}
Novosel2000
15.12.2006, 19:26
нет, здесь все правильно. компилятор ошибок не выдает. программа просто не считает. :(
Что есть "не считает"?
Трейс делал?
И у меня вопросик по Си...
Что не правильно?
#include <stdio.h>
main()
А здесь не все бибилотеки подключены, вот и не идёт программка :)
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot