Предишната тема :: Следващата тема |
Автор |
Съобщение |
tron Начинаещ
Регистриран на: 28 Dec 2005 Мнения: 45
|
Пуснато на: Mon Jun 05, 2006 4:19 pm Заглавие: C++ |
|
|
Tova e zada4ata:
Дадени са два едномерни масива А (а1, а2,...,аn) и В (b1, b2,...,bn) с брой елементи n. Да се формира нов масив С с 2n на брой елементи, образувани по следния начин:
а1, b1, а2, b2...,аn , bn
Сортирайте новополучения масив във възходящ ред.
Re6enie: Az q re6avam kato priemam,4e dvata masiva sa podredeni po vazhodq6t red, no mislq 4e e gre6no. Eto i programata:
#include <iostream.h>
#include <iomanip.h>
int main ()
{
int a[50];
cout << "n=";
int n;
cin >> n;
if (!cin)
{
cout <<"Error.Bad input!\n";
return 1;
}
if (n<1 || n>50)
{
cout << "Incorrect input!\n";
return 1;
}
int i;
for (i=0; i<=n-1; i++)
{
cout << "a["<<i<<"]=";
cin >> a[i]; //vavejdane na rastq6tite stoinosti na masiva a
}
int b[50];
for (i=0; i<=n-1; i++)
{
cout << "b["<<i<<"]=";
cin >> b[i]; //vavejdane na rastq6tite stoinosti na masiva b
}
int p1=0;//ykazatel kam na4aloto na masiva a
int p2=0;//ykazatel kam na4aloto na masiva b
int c[100];
int p3=-1;//ykazatel kam na4aloto na masiva c
while (p1<=n-1 && p2<=n-1)
if (a[p1]<=b[p2])
{
p3++; c[p3]=a[p1]; p1++;
}
else
{
p3++;c[p3]=b[p2]; p2++;
}
if (p1>n-1)
for (i=p2; i<=n-1; i++)
{
p3++; c[p3]=b[i];}
else
for (i=p1;i<=n-1; i++)
{
p3++;c[p3]=a[i];} //izvejdane na masiva c
for (i=0; i<=p3; i++)
cout << setw(10)<< c[i];
cout <<"\n";
return 0;
}
6te bada blagodaren ako nqkoi mi pomogne, no da ne se promenq programata, a da se vmakne nqkoi modul.
Blagodarq predvaritelno |
|
Върнете се в началото |
|
|
Реклама
|
Пуснато на: Заглавие: Реклама |
|
|
|
|
Върнете се в началото |
|
|
InsaniaC Начинаещ
Регистриран на: 05 Jan 2008 Мнения: 1
|
Пуснато на: Tue May 20, 2008 10:12 pm Заглавие: Uaaa heeeeelp |
|
|
uaaaa mn sum zle sus c++ hora tr mi pomo6t za kursovata i tr da q predam utre ako nqkoi izob6to mu se zanimava tolko kusno :
V main() ot klaviaturata se vyvejdat dve kvadratni matrici 2x2. V druga funkciq se iz4islqva proizvedenieto na matricite i rezultatyt se pe4ata v main() |
|
Върнете се в началото |
|
|
martosss VIP Gold
Регистриран на: 17 Mar 2007 Мнения: 3937 Местожителство: Somewhere over the rainbow гласове: 213
|
Пуснато на: Wed May 21, 2008 2:40 pm Заглавие: |
|
|
е ми то си има методи за подреждане на масивите бре, човек, според мен първо слепваш масивите и после ги подреждаш по големина, като това става по следния начин- ето за подреждането какво се прави... само че сега излизам, след като се върна ще го направя.. те са два метода - на мехурчето и на пряката селекция.. първото е взимаш първия елемент и го сравняваш със всички останали, като ако има по-голям от него елемент той става първи, после втория елемент... и така докато ги подредиш... после ще го напиша не е сложно - два вложени цикъла и си готов |
|
Върнете се в началото |
|
|
me4o Начинаещ
Регистриран на: 12 Apr 2007 Мнения: 34
|
Пуснато на: Wed May 21, 2008 3:22 pm Заглавие: |
|
|
Може да направиш две неща едновремено(слепването на двата масива в един и сортирането) като си реализираш merge-sort |
|
Върнете се в началото |
|
|
martosss VIP Gold
Регистриран на: 17 Mar 2007 Мнения: 3937 Местожителство: Somewhere over the rainbow гласове: 213
|
Пуснато на: Wed May 21, 2008 4:40 pm Заглавие: |
|
|
Това не знам какво значи, но ще ти кажа как се подреждат във възходящ ( низходящ ред)
примерно имаш масив a[n]
правиш следното:
Код: | double pom;
for(int i=0;i<n;i++)//преглежда всички елементи от 1 до 30
for(int j=i;j<n;j++)//това е брояч за втория елемент, той се сравнява с първия
{ if (a[i]>a[j])//разменя стойностите на i-тия и j-тия елемент
{pom=a[i];
a[i]=a[j];
a[j]=pom;
}
}
|
След като си слепил двата масива прилагаш това за полученият и той се подрежда по възходящ ред това се нарича метод на пряката селекция, при който всеки със останалите се подрежда има и метод на мехурчето, който сравнява съседни елементи и в крайна сметка последния елемент се подрежда, този метод изглежда така:
имаш масив a[n];
Код: | double pom;
for(int i=0;i<n;i++)// преравя всички елементи
for(int j=i+1<n-i;j++)// сравнява всеки два съседни до края
{ if(a[j]>a[j+1])
{ pom=a[j+1];
a[j+1]=a[j];
a[j]=pom;
}
}
|
|
|
Върнете се в началото |
|
|
violeta_dencheva Начинаещ
Регистриран на: 10 Sep 2008 Мнения: 2
|
Пуснато на: Wed Sep 10, 2008 10:25 pm Заглавие: Speshno imam nujda ot pomosht |
|
|
Zdraveiite na 18 imam izpit po C++ i trqbva da predam kursova zadacha,no mnogo se zatrudnqvam v reshenieto Да се състави програма за създаване на огледален образ на двоично дървоam ili Да се състави програма, която реализира събиране и изваждане на “дълги” числа.Mnogo shte sam vi blagodarna |
|
Върнете се в началото |
|
|
v1rusman Напреднал
Регистриран на: 18 Jul 2007 Мнения: 318
гласове: 10
|
Пуснато на: Wed Sep 10, 2008 10:28 pm Заглавие: |
|
|
Ако искаш утре ще ти напиша подсказка как да напишеш това с "дълги"-те числа. По принцип не давам готов код, защото много хора чакат наготово, но не си мисли, че няма да ти помогна, доколкото е възможно все пак.
Пример: 12931924319249129412491249 - 124912091290410924120948102412940.
Ето сега: Идеята е да запазваш всяка въведена цифра като елемент на масив.
Код: | //...
char s[101];
int a[100];
cin >> s;
in n = strlen(s);
int i = n;
while(j <= n )
{
a[j] = s[i]-'0';i--;j++;
}
|
Относно това как се събират - създаваш си трети масив (първият е за първото число, а вторият за второто), който да е равен на сбора, като извършваш действията, както ги правиш на ръка. Това означава, че започваш от последния елемент на първия масив, събираш го с последния елемент на втория и резултата го записваш в третия, като трябва да си въведеш променлива, която да оказва дали сборът е по-голям от 10. Ако например се получи 9+8=17, то в поредния елемент от масива трябва да се запише цифрата 7, а не числото 17.
За да ти работи правилно програмата, трябва след образуването на първите два масива, всички останали стойности да се нулират. |
|
Върнете се в началото |
|
|
violeta_dencheva Начинаещ
Регистриран на: 10 Sep 2008 Мнения: 2
|
Пуснато на: Thu Sep 11, 2008 12:21 pm Заглавие: mersi |
|
|
Mersi mnogo ama nemoga da razbera kak da si go izpisha cqloto tova neshto za realiziraneto i izvajdaneto na dalgi chisla.Probvam a nemoga da izmislq nishto!Molq vi pomognete |
|
Върнете се в началото |
|
|
KosSiO Начинаещ
Регистриран на: 23 Sep 2008 Мнения: 2
|
Пуснато на: Sun Nov 16, 2008 10:42 pm Заглавие: |
|
|
Код: |
#include <iostream>
#include <vector>
using namespace std;
int main()
{
unsigned int n;
cin >> n;
if(n <= 0)return -1;
vector<double> v(n);
vector<double> v1(n);
for(unsigned int i = 0 ; i < 2*n ; i++){if(i < n)cin >> v[i];else cin >> v1[i-n];}
for(unsigned int i = 0 ; i < n ; i++)v.push_back(v1[i]);
cout << endl;
//тая грозория можеш да си я спестиш с #include <algorithm> и на мястото надраскаш
// sort(v.begin() , v.end());
for(unsigned int i = 0 ; i < n ; i++)
for(unsigned int j = 0 ; j < n ; j++)
if(v[i] > v[j]){v[i] = v[i] + v[j];v[j] = v[i] - v[j];v[i] = v[i] - v[j];};
for(unsigned int i = 0 ; i < 2*n; i++)cout << v[i] << endl;
system("PAUSE");
return 0;
}
|
Какво имаш в предвид "дълги числа" !? аз направих примера за реални числа . Най-голямото число(стандартно) в С++ което можеш да запишеш в стандартен тип е 2^32 ако си напишеш шаблон може и повече ...
(има библотеки които са направени за записване на големи числа WinNTL е такава чичо гугъл знае) |
|
Върнете се в началото |
|
|
miss_Eli Начинаещ
Регистриран на: 02 Dec 2008 Мнения: 1
|
Пуснато на: Tue Dec 02, 2008 10:19 am Заглавие: Моля помогнете. СПЕШНО! |
|
|
В двумерен масив да се въведат стойности на цели числа -1; 0 или 1.Да се изведе броя на -1; 0 или 1. |
|
Върнете се в началото |
|
|
kalinky Начинаещ
Регистриран на: 17 Feb 2008 Мнения: 3
|
Пуснато на: Tue Dec 02, 2008 5:56 pm Заглавие: |
|
|
Имам нужда от помощ! Ако някой може да ми помогне със следната програма на C,НЕКА ПИШЕ!
Да се напише програма на C,която описва структура за клиент на банка с полета:уникален код(буква и цифри),трите имена,сума,брой месеци,през които сумата е стояла в банката.
Програмата да е организирана с меню и да реализира(чрез функции):
-Въвеждане на данните от файл;
-Извеждане на данните във файл;
-Извеждане на данните от екран;
-Изчисляване и извеждане на на общата сума от олихвените влогове на всички клиенти;
-Изтриване на всички клиенти,които имат суми под посочена стойност. |
|
Върнете се в началото |
|
|
ferry2 Напреднал
Регистриран на: 10 Dec 2007 Мнения: 442 Местожителство: гр.Пловдив гласове: 24
|
Пуснато на: Fri Dec 05, 2008 9:35 pm Заглавие: |
|
|
Днеска се мъчих да направя една програма на С++ ама нещо не се получава! Ето я задачата: да се напише програма реализираща въвеждането на цените на 50 стоки, цените по-високи от 100лв да ги намали с 5% и след това да изведе сумата на всички цени на стоките!
Ето какво направих аз
Код: | #include <iostream.h>
int main()
{
double a[50];
for(int i=0;i<50;i++)
{
cout<<"Please enter the prices:"<<endl;
cin>>a[i];
if(!cin)
{
cout<<"Error!Bad input!"<<endl;
return 1;
}
if (a[i]<=0)
{
cout<<"Error!Bad input!"<<endl;
return 1;
}
for( i=0;i<50;i++)
{
double st=a[i];
double sum=0,sum2=0;
if(st >= 100)
{
st=st-(st*(5/100));
sum+=st;
cout<<"Stoynosta s namalenieto e:"<<st<<endl;
}
else if(st<100)
{
sum+=sum2;
cout<<"Stoynosta bez namalenieto e :"<<sum2<<endl;
}
}
}
|
|
|
Върнете се в началото |
|
|
NoThanks Гост
|
Пуснато на: Fri Dec 05, 2008 9:44 pm Заглавие: |
|
|
Ами нормално. Не е добре да извеждаш каквото и да било в цикъл, в който се прави и друго нещо. +тва тва присвояването със st е напълно излишно. Можеш директно да оперираш с a[i] и тн. Новите стойности ги извеждаш в нов цикъл. добре е да сложиш и 1 system("pause"); за да ти се задържи екрана |
|
Върнете се в началото |
|
|
КММ1 Начинаещ
Регистриран на: 04 Jan 2009 Мнения: 6 Местожителство: г.Враца
|
Пуснато на: Sun Jan 04, 2009 4:08 pm Заглавие: |
|
|
Здравейте приятели,имам нуйда от помощ!Немога да направя една задачка на C++.
А сам го закасал!Моля за помощ.
Ето я и задачката.
В магазин за строителни материали е въведена автоматизирана обработка на
операциите по доставака и продажба на материалите.Информацията е записана в файл,
като за всеки материал са въведени следните данни:
-код на материала - 8-цифрово цяло число:
-наименование на материала - символен низ до 20 символа:
-налично количество:
-еденична мярка:
-минимално необходимо количесво:
-максимало допустимо количесво:
-цена на едро:
-цена на дребно:
-дата на последната доставка:
Да се състави програма,която:
1:Да извежда справка за наличните материали по зададен код или наименование.
2:Да извежда справка за доставени след определена дата материали по зададен код
или наименование.
Това е приятели,моля за помощ. |
|
Върнете се в началото |
|
|
|