Регистрирайте сеРегистрирайте се

C++


 
   Форум за математика Форуми -> Информатика/Компютри
Предишната тема :: Следващата тема  
Автор Съобщение
tron
Начинаещ


Регистриран на: 28 Dec 2005
Мнения: 45

Репутация: 17.5Репутация: 17.5

МнениеПуснато на: 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
Репутация: 424.2Репутация: 424.2
гласове: 213

МнениеПуснато на: Wed May 21, 2008 2:40 pm    Заглавие:

е ми то си има методи за подреждане на масивите бре, човек, според мен първо слепваш масивите и после ги подреждаш по големина, като това става по следния начин- ето за подреждането какво се прави... само че сега излизам, след като се върна ще го направя.. те са два метода - на мехурчето и на пряката селекция.. първото е взимаш първия елемент и го сравняваш със всички останали, като ако има по-голям от него елемент той става първи, после втория елемент... и така докато ги подредиш... после ще го напиша не е сложно - два вложени цикъла и си готов Wink
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
me4o
Начинаещ


Регистриран на: 12 Apr 2007
Мнения: 34

Репутация: 6.3Репутация: 6.3Репутация: 6.3Репутация: 6.3Репутация: 6.3Репутация: 6.3

МнениеПуснато на: Wed May 21, 2008 3:22 pm    Заглавие:

Може да направиш две неща едновремено(слепването на двата масива в един и сортирането) като си реализираш merge-sort Wink
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
martosss
VIP Gold


Регистриран на: 17 Mar 2007
Мнения: 3937
Местожителство: Somewhere over the rainbow
Репутация: 424.2Репутация: 424.2
гласове: 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;
  }
}

След като си слепил двата масива прилагаш това за полученият и той се подрежда по възходящ ред Wink това се нарича метод на пряката селекция, при който всеки със останалите се подрежда Wink има и метод на мехурчето, който сравнява съседни елементи и в крайна сметка последния елемент се подрежда, този метод изглежда така:
имаш масив 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 Embarassed
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
v1rusman
Напреднал


Регистриран на: 18 Jul 2007
Мнения: 318

Репутация: 39.5Репутация: 39.5Репутация: 39.5Репутация: 39.5
гласове: 10

МнениеПуснато на: Wed Sep 10, 2008 10:28 pm    Заглавие:

Ако искаш утре ще ти напиша подсказка как да напишеш това с "дълги"-те числа. По принцип не давам готов код, защото много хора чакат наготово, но не си мисли, че няма да ти помогна, доколкото е възможно все пак.

Пример: 12931924319249129412491249 - 124912091290410924120948102412940. Wink

Ето сега: Идеята е да запазваш всяка въведена цифра като елемент на масив.

Код:
//...
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 Crying or Very sad
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
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

Репутация: 2.6Репутация: 2.6

МнениеПуснато на: Tue Dec 02, 2008 5:56 pm    Заглавие:

Имам нужда от помощ! Confused Ако някой може да ми помогне със следната програма на C,НЕКА ПИШЕ!

Да се напише програма на C,която описва структура за клиент на банка с полета:уникален код(буква и цифри),трите имена,сума,брой месеци,през които сумата е стояла в банката.
Програмата да е организирана с меню и да реализира(чрез функции):
-Въвеждане на данните от файл;
-Извеждане на данните във файл;
-Извеждане на данните от екран;
-Изчисляване и извеждане на на общата сума от олихвените влогове на всички клиенти;
-Изтриване на всички клиенти,които имат суми под посочена стойност.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
ferry2
Напреднал


Регистриран на: 10 Dec 2007
Мнения: 442
Местожителство: гр.Пловдив
Репутация: 55.9
гласове: 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"); за да ти се задържи екрана Wink
Върнете се в началото
КММ1
Начинаещ


Регистриран на: 04 Jan 2009
Мнения: 6
Местожителство: г.Враца

МнениеПуснато на: Sun Jan 04, 2009 4:08 pm    Заглавие:

Здравейте приятели,имам нуйда от помощ!Немога да направя една задачка на C++.
А сам го закасал!Моля за помощ.
Ето я и задачката.

В магазин за строителни материали е въведена автоматизирана обработка на
операциите по доставака и продажба на материалите.Информацията е записана в файл,
като за всеки материал са въведени следните данни:
-код на материала - 8-цифрово цяло число:
-наименование на материала - символен низ до 20 символа:
-налично количество:
-еденична мярка:
-минимално необходимо количесво:
-максимало допустимо количесво:
-цена на едро:
-цена на дребно:
-дата на последната доставка:
Да се състави програма,която:
1:Да извежда справка за наличните материали по зададен код или наименование.
2:Да извежда справка за доставени след определена дата материали по зададен код
или наименование.


Това е приятели,моля за помощ.
Върнете се в началото
Вижте профила на потребителя Изпратете лично съобщение
Покажи мнения от преди:   
   Форум за математика Форуми -> Информатика/Компютри Часовете са според зоната GMT + 2 Часа
Страница 1 от 1

 
Идете на:  
Не Можете да пускате нови теми
Не Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети
Може да прикачвате файлове
Може да сваляте файлове от този форум
Copyright © 2005-2021 math10.com.