- Форум
- По малко от всичко
- Информационни технологии
- C++ 2 задачи
Здравейте ще може ли да ми помогнете за задачи 1 и 5 http://picbg.net/img.php?file=445cf15f46687dfb.JPG
зад.5
#include<iostream>
using namespace std;
int main()
{int a[100],n,i,s=0;
cout<<"vuvedete broq na studentite"<<endl;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;i++)
s=s+a[i];
for(i=0;i<n;i++)
cout<<a[i]<<";";
cout<<s/n;
cin>>i;
return 0;
}
Зад. 1 също не е трудна, но рекурентната формула не ми е позната, а нямам време да я търси, но задачата ще е подобна на горната, като сумата която трябва да се пресмята ще е s=(тук самата рекурентна формула) виждам, че има и коренуване, оператора за коренуване е sqrt(), ако това те затруднява !
това кеоти си пратил като въведа число и нататък нищо не става
Последно редактирано от vanio_93 : 11-23-2012 на 16:57
Това мисля че трябва да е за пета задача обаче ми дава 3 грешки на един от редовете и не мога да разбера къде бъркамКод:#include <cstdlib> #include <iostream> #include<cmath> #include<string> using namespace std; void uspeh (int array[], int m) { int i; for (i=0; i<m; i++) { cout<<array[i]<<"; "; } double sum = 0; for (i=0; i<m; i++) { sum = sum + array[i]; } cout<<"\n \n Middle: "<< double(sum / m)<<". \n \n"; } int main(int argc, char *argv[]) { int m; // count of the students cout<<"Enter m. \n \n"; cin>>m; cout<<"\n \n"; int n = m; int array[n]; int i; for (i=0; i<n; i++) { cout<<i+1<<" mark: \n"; cin>>array[i]; cout<<"\n \n"; } uspeh(array, n); cout<<"\n \n"; system("PAUSE"); return EXIT_SUCCESS; }
На този ред int array[n]; ми дава 3 грeшки : error C2057: expected constant expression , error C2466: cannot allocate an array of constant size 0 , error C2133: 'array' : unknown size
Не може n-то в int array[n] да е променлива, трябва да е константа или направо int array[512] да речем, после int n, cin>>n;(не трябва да въвеждаш повече от 512 в случая) и така.
01001000011000010110100001100001001000000111000001 1100100
11001010110001101100001011010110110000100100000011 1001101100101
Демек как тряба да стане кода?
The elements field within brackets [] which represents the number of elements the array is going to hold, must be a constant value, since arrays are blocks of non-dynamic memory whose size must be determined before execution. In order to create arrays with a variable length dynamic memory is needed
01001000011000010110100001100001001000000111000001 1100100
11001010110001101100001011010110110000100100000011 1001101100101
Зависи от компилатора. По стандарта е грешно да се декларира така и Nam3less3 е прав. Този начин декларира масива в статичната памет и е нужно да е определен размера по време на компилация (за да може да се изгради стековата рамка на функцията). За да стане с произволен размер на данните трябва да се дефинира в динамичната памет:
int* array = new int[n];
След това работиш с array и накрая на програмата трябва да освободиш заделената памет с:
delete [] array;
Последно редактирано от Chacho : 11-27-2012 на 11:33
Има 10 вида хора. Тези, които могат да четат двоичен код и тези, които не могат.
Don't hate the hacker,
hate the code!
Taка ли?
Защо никой не ми го е споменавал и никога не са ми правили проблем :Д :Д :Д
int n;
cin>>n;
int array[n];
e напълно валидна част от код в С99
Don't hate the hacker,
hate the code!