PDA

View Full Version : Масиви



aguilera
10-28-2010, 20:03
Здравейте... първо искам да отбележа,че съм много зле с информатиката в училище, учителката ни дава да правим някакви програми и задачи за програмисти, абе ужас... и още от миналата година започнаха да затъват нещата... тая година е още по- зле... моляяя ви, помогнете ми с тея масиви, защото ми е трудно да схвана принципа :)

GregoryHouse
10-28-2010, 20:09
http://www.bulgarian-offers.com/property/real_estate/bg/combined/l/bg/t/_%22%D0%93%D0%BE%D1%80%D1%81%D0%BA%D0%B8%22+_%22%D 0%BC%D0%B0%D1%81%D0%B8%D0%B2%22+_%22%D0%B3%D0%BE%D 1%80%D0%B0%22/d/sale/st/combined/lf/0/slt/town/pg/1/

Eто ти за масиви.

aguilera
10-28-2010, 20:15
Имам в предвид масиви в c++ .

GregoryHouse
10-28-2010, 20:24
:-D Това вече е друго :)

Foreverbg
10-28-2010, 21:32
:-D Това вече е друго :)
Кво са правиш на интересен?!

Кажи какво точно не разбираш от масивите и ще се опитам да ти го обясня.

Nam3less3
10-28-2010, 23:26
Поредица от елементи с индекс.
Примерно int masiv[5] декларира масив с 6 целочислени елемента, а индекса почва от 0.
int masiv[0]=3; така на първия елемент дадохме стойност 3;
int masiv[5]=7; така на последния елемент дадохме стойност 7;

int masiv[128];
int i;
for(i=0;i<128;i++)
Така се обхожда масива, вече питай за повече подробности ако искаш, че не ми се пише ся.

kisscho
10-29-2010, 13:51
Поредица от елементи с индекс.
Примерно
int masiv[5] декларира масив с 6 целочислени елемента, а индекса почва от 0.

int masiv[0]=3; така на първия елемент дадохме стойност 3;

int masiv[5]=7; така на последния елемент дадохме стойност 7;


int masiv[128];
int i;
for(i=0;i<128;i++)
Така се обхожда масива, вече питай за повече подробности ако искаш, че не ми се пише ся.

Целия C++ знаеш?

Nam3less3
10-29-2010, 14:28
Поредица от елементи с индекс.
Примерно
int masiv[5] декларира масив с 6 целочислени елемента, а индекса почва от 0.

int masiv[0]=3; така на първия елемент дадохме стойност 3;

int masiv[5]=7; така на последния елемент дадохме стойност 7;


int masiv[128];
int i;
for(i=0;i<128;i++)
Така се обхожда масива, вече питай за повече подробности ако искаш, че не ми се пише ся.

Целия C++ знаеш?От игла до конец, от алфата до омегата :D
Не всъщност основните неща и малко обектно, но скоро не съм писал програми и не помня точно нещата.

kisscho
10-29-2010, 14:42
Поредица от елементи с индекс.
Примерно
int masiv[5] декларира масив с 6 целочислени елемента, а индекса почва от 0.

int masiv[0]=3; така на първия елемент дадохме стойност 3;

int masiv[5]=7; така на последния елемент дадохме стойност 7;


int masiv[128];
int i;
for(i=0;i<128;i++)
Така се обхожда масива, вече питай за повече подробности ако искаш, че не ми се пише ся.

Целия C++ знаеш?От игла до конец, от алфата до омегата :D
Не всъщност основните неща и малко обектно, но скоро не съм писал програми и не помня точно нещата.

а можеш ли да пишеш пргра ( чат ) която да се върже към сайта ми?

Nam3less3
10-29-2010, 14:49
а можеш ли да пишеш пргра ( чат ) която да се върже към сайта ми?Ами не, трябва ми още опит и време преди да мога да направя подобна програма.

aguilera
10-29-2010, 21:13
Така... мерси много на тези,които се захванахте с проблема ми... Първо това int masiv[128];int i;for(i=0;i<128;i++) 128 е някакво свободно избрано число, нали така? Заедно със зададените ст-ти 3 и 7. Второ, ето например имам една такава задача...
ЗАД. Дадени са числови масиви А[10] и B[10] с реални числа. Да се състави програма тип "Меню", която дава възможност да се избере пресмятането на елементите на нов масив по една от формулите:
C[i]=A[i]+B[i]
C[i]=A[i]*B[i]
C[i]=A[i]-B[i]
C[i]=A[i]/B[i]

И доколкото разбрах трябва да използвам switch... :(
Добре,ето докъде стигнах(макар да знам, че е грешно)...

{int A[10],i;
cin>>i;
switch(A)
{ case '+':cout<<C[i]=A[i]+B[i]<<endl;break;
case '*':cout<<C[i]=A[i]*B[i]<<endl;break;
case'-': cout<<C[i]=A[i]-B[i]<<endl;break;
case'/':if(B[i]==0)cout<<"Delenie na nula";
else cout<<C[i]=A[i]/B[i] <<endl;break;

ПОМОЩ!!! :(

Foreverbg
10-29-2010, 22:13
Това switch изобщо не ти е нужно може с if да се напише всичко.
char c;
int i,a[16],b[16],c[16];//хубаво е броя на елементите да е степен на двойката
for(i=1;i<=10;i++)//пускаме цикъл с който ще обхождаме 3те масива едновременно
{
cin>>c;//въвеждаме чар за операцията която ще извършваме и правим проверка за знака
if(c=='+') // ако въведения знак е плюс събираме a[i] и b[i] в c[i];
c[i]=a[i]+b[i];// правим събирането
if(c=='-') // ако въведения знак е минус изваждаме
c[i]=a[i]-b[i]; // изваждаме
if(c=='*') //ако въведения знак е умножение умножаваме
c[i]=a[i]*b[i]; // правим умножението
if(c=='/') // ако въведения знак е деление
if(a[i]==0||b[i]==0) c[i]=0; //като се дели на 0 в с++ програмата ще крашне затова правим тази проверка
else c[i]=a[i]/b[i];
}

Ами това ти е програмата, ако нещо не разбираш питай.

lmao
10-30-2010, 09:03
щом е меню трябва да се използва switch заедно с едиn do while цикъл, за да се извиква това меню и всичко да е направено идеално.

do{
cout << "Menu\n";
cout << "1. sybirane\n";
cout << "2. izvajdane\n";
cout << "3. delenie\n";
cout << "4. umnojenie\n";
cout << "0. EXIT\n";
cout << "Vyvedete vashiqt izbor SEGA - ";
cin >> choice;
switch(choice)
{
case 1:{
break;
}
case 2:{
break;
}
case 3:{
break;
}
case 4:{
break;
}
default:
{
break;
}

}}
while(choice!=0);

и сега в различните случаи, слагаш съответните пресмятания
горе долу си се ориентирала, пробвай сега да попълниш празните места, да видим какво ще измислиш :D
ако не става, давай да видим пак :)

aguilera
10-30-2010, 09:15
Ами, в условието пише,че масивите са с реални числа, това означава ли, че трябва да използвам double? И това char за какво се използваше?... даскалката каза да използваме switch, но щом може и с if, супер( поне това, което бях написала вярно ли е?Ако нещо г-жата се заеде...)

Ето една др.задача...
ЗАД2 Да се намерят всички елементи на масив от цели числа, които лежат в интервала (А,В) и се делят на Р. Числата А,В и Р се въвеждат от клавиатурата.

aguilera
10-30-2010, 09:22
do{A[10],B[10],C[10],i,n;
cout << "Menu\n";
cout << "1. sabirane \n";
cout << "2. izvajdane\n";
cout << "3. delenie\n";
cout << "4. umnojenie\n";
cout << "0. EXIT\n";
cout << "Vyvedete vashiqt izbor SEGA - ";
cin >> choice;
switch(choice)
{
case 1:{
break;
}
case 2:{
break;
}
case 3:{
break;
}
case 4:{
break;
}
default:
{
break;
}

}}
while(choice!=0);

Аааа... до никъде не стигнах :D ужас

lmao
10-30-2010, 09:25
дай някакъв скайп, че така няма да се разберем

Foreverbg
10-30-2010, 14:11
Абе това switch е пълна пародия... С ифове се пише много разбираемо,лесно и кратко.
Масивите се декларират като глобални не в цикъла.
int a[128],b[128],c[128],i=1;
char c;
while(1)
{
cin>>c;
if(c=='.') break; //ако въведем "точка" програмата спира
if(c=='+') c[i]=a[i]+b[i];
if(c=='-') c[i]=a[i]-b[i];
if(c=='*') c[i]=a[i]*b[i];
if(c=='/') c[i]=a[i]/b[i];
i++;
}

ей тва ти е решението с ифове.

втората става с обхождане на числата от a до b и проверка дали числото се дели на p. Пробвай да я напишеш и ако не стане дай сорса да видя.

aguilera
10-30-2010, 14:22
Първо искам страшно много да благодаря на Imao :smt115

Та ето 2рата задача...пак да благодаря на Imao...

{
int A[10],i ;
for (i =0;i<10;i++) cin>> A[i];
cin>>x>>y>>p;
cout<<x<<endl;
cout<<y<<endl;
cout<<p<<endl;
for(i=0;i<10;i++){if ((A[i]>x) && (A[i]<y) && (A[i]%p=0)) cout<<A[i]<<endl;
}

}

Foreverbg
10-30-2010, 14:54
Няма смисъл да въртиш цикала от 0 до 10 а просто от x до y;
{
int A[10],x,y,p,i;
for (i =0;i<10;i++) cin>> A[i];
cin>>x>>y>>p;
for(i=x;i<=y;i++)
if(A[i]%p==0) cout<<A[i]<<" ";
cout<<endl;
}

aguilera
10-30-2010, 15:00
Супер :)

Почнах и др задача...
ЗАД3. Даден е масив с 10 елемента. Да се намери максималния измежду елементите с четен индекс и минималния измежду елементите с нечетен индекс.

И стигнах до някъде, но това с четните и нечетни индекси нещо не знам как да го направя...

{
int A[10],i,n, max, min,,k,p;
for (i =0;i<n;i++) cin>> A[i];
max= A[0], min=A[0];
for(i=1;i<n; i++)
{if(A[i]>max){max=A[i];k=i;}
if(A[i]<min){min=A[i]; p=i}}

Foreverbg
10-30-2010, 15:59
Значи първо трябва да дадеш стойност на n, в случая 10. При въвеждането почваш от 1 до n не от 0 до n-1; Във основния цикъл трябва да се направи проверка за индекса дали е четен или нечетен и ако е четен правиш проверка за максималното число, ако е нечетен за минималното. Пробвай това да напишеш и прати пак сорс ако не успееш.

aguilera
10-30-2010, 16:28
{
int A[10],i,n, max, min;
cin>>n;
for (i =0;i<n;i++) cin>> A[i];
{if (i%2=0) cout<< max= A[0];
if (i%2!=0) cout<< min= A[0];
}

Foreverbg
10-30-2010, 16:59
{
int A[10],i,n, max, min;
cin>>n;
for (i =1;i<=n;i++) cin>> A[i];
max=A[1];
min=A[1];
for(i=1;i<=n;i++)
{
if (i%2==0) if(A[i]>max) max=A[i];
if (i%2!=0) if(A[i]<min) min=A[i];
}

aguilera
10-30-2010, 17:17
Мерси много!!!

aguilera
10-30-2010, 17:23
Има една задача:
ЗАД. Да се въведе масив от 9 цели числа. Да се изведе нов масив, съдържащ индексите на елементите,равни на най-малкия елемент на вектора.
Какво общо има вектор със задача за масиви?

Foreverbg
10-30-2010, 17:45
В С++ вектора е нещо подобно на масив. Ама надали сте стигнали до вектор...

aguilera
10-30-2010, 18:37
Сега като се разрових видях, че задачата е за курсова работа. :o
А иначе как ще стане задачата? Като другите ли?

Foreverbg
10-30-2010, 18:51
Ами намира се най-малкото число във вектора. След което се обхожда масива и ако срещнеш число равно на минималното от вектора, слагаш индекса му в новия масив и така...

aguilera
11-02-2010, 12:27
Здравейте! Пак съм аз...
сега се пробвах с една нова задача...
ЗАД.Да се състави програма, която от първата половина на елементите на масив намира максималния елемент, а от втората половина- минималния.
Пак стигам до никъде...
{
int A[25], max,min,i,n;
cin>>n;
for(i=0;i<n;i++)cin>>A[i];
max=A[0], min= A[0];
for(i=1;i<n,i++)
{if(A[i]>max){max= A[i];}

K_O_L_E_V
11-02-2010, 12:44
#include<iostream>
#include<cmath>
using namespace std;
int main()
{ int n,i;
double max,min,a[10],sr;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
sr=n/2;
sr=floor(sr);
max=a[0];
min=a[0];
for(i=0;i<sr;i++)
if(a[i]>max)max=a[i];
for(i=sr;i<n;i++)
if(a[i]<min)min=a[i];
cout<<"Maximalen element ot 1-va polovina: "<<max<<endl;
cout<<"Minimalen element ot 2-ra polovina: "<<min<<endl;
system("pause");
return 0;
}

Ето я задачата :P Ако има нещо неясно питай ;)
Ето и линк към pastebin. (http://pastebin.com/FWgnExBT)

aguilera
11-02-2010, 12:51
Хехе... мерси за бързия отговор! :grin:

А какво ще кажеш за тези...
Зад.4 Даден е масивът A[N]. Преобразувайте го като умножите всеки елемент с индекса му.

Зад.5 Дадени са масивите A[N] и B[N]. Образувайте масива C по следния начин: C[i]= A[i]*B[i] при A[i]≠0 и B[i]≠0 и C[i]=1 при A[i]=0 или B[i]=0

K_O_L_E_V
11-02-2010, 13:00
Дай си скайпа на PM и ще ти ги напиша.

aguilera
11-02-2010, 15:28
някой има ли представа как трябва да стане тази програма...

ЗАД5. Да се състави програма, която пресмята Min(a[2],a[4]...a[2n])+Max(a[1],a[3]...a[2n-1]) , където a[2n] е едномерен масив от реални числа.

ПОМОЩ!!!

K_O_L_E_V
11-02-2010, 18:06
Имам някаква бегла представа ама.....

dimitar_ak
11-04-2010, 08:27
Защо не напишеш цялото условие на задачата?

aguilera
11-04-2010, 13:23
Еми, то си е цялото :wink:

lmao
11-04-2010, 13:38
Min(a[2],a[4]...a[2n]) това означава, да се намери минималният елемент от изброените ли?
и да се събере максималният от другите

aguilera
11-06-2010, 18:36
Нямам представа... в оригиналното условие също го пише така с многоточие...

lmao
11-06-2010, 21:07
Да се състави програма, която пресмята Min(a[2],a[4]...a[2n])+Max(a[1],a[3]...a[2n-1]) , където a[2n] е едномерен масив от реални числа.

min=a[2];
max=a[1];
for(i=1;i<2n;i++)
{
if (i%2=0) { if (a[i]<min) min=a[i]; }
else { if (a[i]>max) max=a[i]; }
}
sumaa = min + max;

aguilera
11-07-2010, 14:32
Мерси много на всички!!! Изкарах 5 на контролното! Можеше и повече, но съм много доволна... аз иначе ще продължа да се опитвам и с други задачи и ще ги пускам тук... мерси отново!!!

FlowerPower
11-07-2010, 16:09
Хора, извинявайте че пиша в тази тема. Аз уча масиви с език Pascal.
И нещо не вдявам. За домашно имаме задачата:
Дефинирайте масив с 30 елемента. В него запиши средно дневните температури за ноември, т.е. за 30 дни в диапазона [-2,10].

Значи трябва да използвам генератор на случайни числа?

Аз се опитах да напиша програмката,но ... :neutral:

program zadmasiv1;
uses wincrt;const N=30;
var Day:array[1..N] of real;
I:byte;Sr:real;
begin
Sr:=0;
for I:=1 to N do
begin
write('Vuvedi sredna dnevna temperatura',I,'den');
readln(Day[I]);
Sr:=Sr+Day[I]
end;
тук би трябвало също да напиша нещо?
end.

FlowerPower
11-07-2010, 16:18
моля ви 8-)

K_O_L_E_V
11-07-2010, 16:20
Паскал ? Как може да учите Паскал. Този забравен език, все едно да учите латински :D

FlowerPower
11-07-2010, 16:36
съгласна съм!
Но милото ми училище не е.

Foreverbg
11-07-2010, 16:57
Едва ли ще се намери някой да ти помогне. Както казаха по-горе тва е вече неизползваем език.

lmao
11-07-2010, 19:34
малко по-късно ще ти напиша как става, че играем диабло в момента :D

lmao
11-07-2010, 19:56
program zadmasiv1;
uses wincrt;const N=30;
var Day:array[1..N] of real;
I:byte;Sr:real;
begin
Sr:=0;
for I:=1 to N do
begin
randomize;
Day[i]:=random(12)-2;
end;
end.
така всеки ден има произволна температура между -2 и 10 градуса

aguilera
11-09-2010, 18:58
Пак съм аз и имам следните задачи...

ЗАД1. Даден е масив от символи. Да се напише програма, която извежда отначало всички символи, които са цифри, след това всички символи, които са малки латински букви и накрая всички останали символи от масива, запазвайки реда в масива.

ЗАД2. Програма, която въвежда цяло положително число и извежда:
а) представянето му в двоична бройна система
б) представянето му в осмична бройна система
в) представянето му в 16-чна бройна система

Та, ето какво направих на 1вата...

int i;
char c, A[c];
cin>>c;
for (i=0; i<c; i++)
if (c>= '0' && c<= '9') cout<< "cifri";
for (i=0; i<c; i++)
if (c>= 'a' && c<= 'z') cout<< "mdlki ldtindki bukvi";
else cout<< "Drug simvol";

А втората не се сещам как може да стане...