Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Помощ за задачи на C/C++ (merged)

Featured Replies

Задача 1: Даден е едномерен числов масив А с К елемента, К=15 зареден със случайни числа в диапазон от 0 до 50. Съставете нов масив Б чиито елементи са само нечетните по стойност елементи от масива А. Задача 2: Даден е двумерен числов масив В с К реда и L стълба - K=4 L=5. Намерете и отпечатайте сумaтa на положителните елементи. Някаква идея как могат да се направят ?

  • Отговори 941
  • Прегледи 234,7k
  • Създадено
  • Последен отговор

Задача 1:

#include <iostream>
#include <ctime>

using namespace std;

#define K 15


void main() {

	srand(time(NULL));

	int A[K], B[K], counter = 0;
	

	cout<<"\nArray of random integers in range 0-50:\n\n";

	for(int i = 0; i < K; i++) {

		A[i] = rand() % 51;

		if( A[i] % 2 ) {

			B[counter] = A[i];
			
			counter++; 
		}

		cout<<A[i]<<" "; 
	}


	if(!counter) {

		cout<<"\n\n\nThere are no odd integers !\n\n\n"; 

		system("pause");

		exit(0); 
	}
	

	cout<<"\n\n\nArray of odd integers only:\n\n";

	for(i = 0; i < counter; i++)

		cout<<B[i]<<" ";


	cout<<endl<<endl<<endl;

}

Задача 2:

#include <iostream>

using namespace std;

#define K 4
#define L 5


void main() {

	int B[K][L], i, j, sum = 0;
	

	cout<<"\nArray B:\n\n\n";

	for(i = 0; i < K; i++) {

		for(j = 0; j < L; j++) {

			if(j%2) 
				
				B[i][j] = - (i + j);

			else B[i][j] = i + j;
		
			cout<<B[i][j]<<"  "; 
		} 

		cout<<endl<<endl; 
	}


	for(i = 0; i < K; i++)

		for(j = 0; j < L; j++)

			if(B[i][j] > 0)

				sum += B[i][j];


	cout<<"\n\nSum of positive integers: "<<sum;

	cout<<endl<<endl<<endl;

}

Редактирано от myd (преглед на промените)

А това на C или на C++ е ? using namespace std; - това .. какво е ? Можеш ли на C да го направиш ?

На C задача 1 ще изглежда така:

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

#define K 15

void main() {

	srand(time(NULL));

	int A[K], B[K], counter = 0;
	
	printf("\nArray of random integers in range 0-50:\n\n");

	for(int i = 0; i < K; i++) {

		A[i] = rand() % 51;

		if( A[i] % 2 ) {

			B[counter] = A[i];
			
			counter++; 
		}

		printf("%d ",A[i]); 
	}


	if(!counter) {

		printf("\n\n\nThere are no odd integers !\n\n\n"); 

		exit(1);
	}
	

	printf("\n\n\nArray of odd integers only:\n\n");

	for(i = 0; i < counter; i++)

		printf("%d ",B[i]);

	printf("\n\n\n");
}

Задача 2:

#include "stdio.h"

#define K 4
#define L 5

void main() {

	int B[K][L], i, j, sum = 0;
	
	printf("\nArray B:\n\n\n");

	for(i = 0; i < K; i++) {

		for(j = 0; j < L; j++) {

			if(j%2) 
				
				B[i][j] = - (i + j);

			else B[i][j] = i + j;
		
			printf("%d ", B[i][j]); 
		} 

		printf("\n\n"); 
	}


	for(i = 0; i < K; i++)

		for(j = 0; j < L; j++)

			if(B[i][j] > 0)

				sum += B[i][j];


	printf("\n\nSum of positive integers: %d", sum);

	printf("\n\n\n");

}

Редактирано от myd (преглед на промените)

Здравейте. Имам проблем с 2 задачи на С++. 1: Да се въведат два масива от 8 и 7 елемента - цели числа. Да се изведат всички елементи, които се срещат и в двата масива на една и съща позиция. 2:Да се състави програма, която проверява дали дадено цяло положително число, въведено от клавиатурата, е просто, т.е. се дели без остатък единствено на себе си и на 1. Ще съм благодарен ако някой може да ми помогне :)

Задача 1:

#include <iostream>

#define A 8
#define B 7

using namespace std;

void main() {

	int array[A], array2[B];


	cout<<"\nEnter elements of first array:\n\n";

	for(int i = 0; i < A; i++) {

		cout<<"Enter element "<<i+1<<": ";

		cin>>array[i];
	}


	cout<<"\n\nEnter elements of second array:\n\n";

	for(i = 0; i < B; i++) {

		cout<<"Enter element "<<i+1<<": ";

		cin>>array2[i];
	}


	cout<<endl<<endl;	 

	for(i = 0; i < B; i++)

		if(array[i] == array2[i])

			cout<<"\nElement "<<array[i]<<" at position "<<i+1<<" in both arrays.\n";

}

Задача 2:

#include <iostream>

using namespace std;


void main() {

	int buf, flag = 0, number;


	cout<<"\nVavedi 4islo: ";

	cin>>number;
	 

	for(int i = 2; i <= (number / 2); i++)

		if( !(number % i) ) {

			buf = i;

			flag = 1;

			break; 
		}


	if(flag) cout<<"\n\n4isloto "<<number<<" se deli na "<<i<<endl<<endl<<endl;

	else cout<<"\n\n4isloto "<<number<<" e prosto !\n\n\n";

}

Редактирано от myd (преглед на промените)

А на теб работят ли ти, че на мен ми изкарва грешка и на двете програми на едно и също място - там на "void main() ". На 6-ти ред се пада.

със int main () стана, но ми изкарва грешка на 16 ред - for (i = 0; i < B; i++) на първата задача: " C:\Documents and Settings\xxx\Desktop\Untitled3.cpp name lookup of `i' changed for new ISO `for' scoping "

Да се състави функция, която връща квадратен корен от дадено число, ако то е положително или нула и числото на квадрат, ако то е отрицателно.

Това ми е задача за домашна работа, която си нямам на идея как да стане Публикувано изображение

Редактирано от M1st3r_X (преглед на промените)

със int main () стана, но ми изкарва грешка на 16 ред - for (i = 0; i < B; i++) на първата задача

На 16-ти ред може да не му харесва декларацията на променливата i вътре във for-a.

Декларирай я в началото заедно с масивите:

int array[A], array2[B], i;

	cout<<"\nEnter elements of first array:\n\n";

	for(i = 0; i < A; i++) ...

Редактирано от myd (преглед на промените)

Ще съм ви много благодарна, ако отделите малко време да ми кажете къде греша:

Задачата е да се корегира задача за речник, така че:

КЗ4. Да се реализират следните изменения

1.работата на програмата да се управлява чрез меню в следния вид

а)входен файл

б)изходен файл

-нов

-добавяне

в)сортиране

-азбучен ред

-честота на срещане

-дължина на думата

г)запис

Написала съм това:

#include<stdio.h>
#include<string.h>


int main()
{

char izbor;
FILE *f1, *f2;
char filename[14], filetwo[14], duma[50]="", ch;
unsigned int br=0, a=0, b=0, c=0;
do 
{
		printf("1. Входящ файл");
		printf("2. Изходящ файл");
		printf("3. Изход");
		printf("Вашият избор е:"); 
		izbor=getche();
		swith (izbor);
		{
			case '1': 
				{ 

				

				  printf("\nEnter source file: "); /* иска името на входящ файл */
				  gets(filename);
				  if( (f1 = fopen(filename,"rt")) == NULL)
					{ printf("\nFile can't be opened!");
					  return 1;
					}
				}
						break;

			case '2':
				{
	
				  printf("\nEnter target file: "); /* иска името на изходящ файл */
				  gets(filetwo);
				  if( (f2 = fopen(filetwo,"wt")) == NULL)
					{ printf("\nFile can't be opened!");
					  return 1;
					}
					
				}
						break;

			case '3':printf("Вие избрахте изход");
						break;
		}
	while (izbor!='4');
}

Използвам Visual C++ 6.0, Но ми дава следната грешка:error C2046: illegal case

fatal error C1004: unexpected end of file found

Вярно, преди 5-6 години съм писала на С, ама чак пак толкова да съм забравила..... Публикувано изображение

Редактирано от Roli (преглед на промените)

#include <iostream>

#define A 8

#define B 7

using namespace std;

int main()

{

int array[A], array2, i;

cout<<"\nEnter elements of first array:\n\n";

for(int i = 0; i < A; i++) {

cout<<"Enter element "<<i+1<<": ";

cin>>array;

}

cout<<"\n\nEnter elements of second array:\n\n";

for(i = 0; i < A; i++)

{

cout<<"Enter element "<<i+1<<": ";

cin>>array2;

}

cout<<endl<<endl;

for(i = 0; i < A; i++)

if(array == array2)

cout<<"\nElement "<<array<<" at position "<<i+1<<" in both arrays.\n";

system("pause");

return 0;

}

Ето я програмата. Готова е. Благодаря на всички, които помогнаха!

Редактирано от M1st3r_X (преглед на промените)

Помогнете с малко source code да реша следната задача za C++/G++ под linux или dev C++ под windows

Публикувано изображение

Това по долу е hint за решението на Exercise P14.1 помогнете да решим и Exercise P14.1 моля ви много ми е спешно

http://www.horstmann.com/bigcpp/solutions/ch14/ExP14_1.cpp

#include <string>

using namespace std;

/**

Reverse a sentence.

*/

class Sentence

{

public:

/**

Creates a Sentence object.

@param aPhrase a sentence to reverse.

*/

Sentence(string aPhrase);

/**

Reverses this sentence.

@return the reversed sentence

*/

string reverse();

private:

string phrase;

};

Sentence::Sentence(string aPhrase)

{

phrase = aPhrase;

}

string Sentence::reverse()

{

if (phrase != "")

{

string c = phrase.substr(0, 1);

string rest = phrase.substr(1, phrase.length() - 1);

Sentence tailSentence(rest);

phrase = tailSentence.reverse() + c;

}

return phrase;

}

int main()

{

Sentence greeting("Hello!");

cout << greeting.reverse() << "\n";

return 0;

}

Редактирано от mibit (преглед на промените)

Zdr, Desi ste ti pratq edno primerno re6enie na C/C++, koeto napravih; dano da ti svar6i rabota; pri men raboti idealno // author: Dimitar Atanasov Staykov // Card.h #ifndef CARD_H_ #define CARD_H_ #include <string> using std::string; #include <iostream> using std::ostream; #include <iomanip> using std::setfill; using std::setw; class Card{ friend ostream& operator<<(ostream& os, const Card& card) { os << "|" << setfill(' ') << setw(7) << std::left << string(card.m_pcDelegateNumber) << "|" << setfill(' ') << setw(11) << std::left << string(card.m_pcArriveDate) << "|" << setfill(' ') << setw(11) << std::left << string(card.m_pcLeaveDate) << "|\n" << std::right << "|" << std::setfill('-') << setw(7+11+11+4) << "|\n"; return os; } // делегатски номер (6 знака), дата на престигане, дата на отпътуване public: /** delegate number */ char m_pcDelegateNumber[7]; /** date of arrive */ char m_pcArriveDate[11]; /** date of leave */ char m_pcLeaveDate[11]; Card() { memset(m_pcDelegateNumber, '\0', sizeof(m_pcDelegateNumber)); memset(m_pcArriveDate, '\0', sizeof(m_pcArriveDate)); memset(m_pcLeaveDate, '\0', sizeof(m_pcLeaveDate)); } ~Card() {} }; #endif /*CARD_H_*/ // author Dimitar Atanasov Staykov // class Conference // Conferemce.h #ifndef CONFERENCE_H_ #define CONFERENCE_H_ #include <vector> using std::vector; #include <fstream> #include "Delegate.h" #include "Hotel.h" #include "Card.h" class Conference { public: vector<Delegate> m_vDelegates; vector<Hotel> m_vHotels; vector<Card> m_vCards; public: Conference() { ResetConference(); } /*Conference(const Conference& c){ // copy constructor this->delegate = c.delegate; this->hotel = c.hotel; this->card = c.card; for(size_t i=0; i<m_vDelegates.size(); i++){ m_vDelegates.at(i) = c.m_vDelegates.at(i); m_vHotels.at(i) = c.m_vHotels.at(i); m_vCards.at(i) = c.m_vCards.at(i); } }*/ ~Conference() {} void ResetDelegates() { this->m_vDelegates.clear(); } void ResetHotels() { this->m_vHotels.clear(); } void ResetCards() { this->m_vCards.clear(); } void ResetConference() { ResetDelegates(); ResetHotels(); ResetCards(); } //////////////////////// bool IsEmpty() { if(this->m_vDelegates.empty() || this->m_vHotels.empty() || this->m_vCards.empty()) return true; return false; } //////////// DELEGATES /////////////////// /** add a delegate */ void AddDelegate(Delegate delegate) { m_vDelegates.push_back(delegate); } /** displays list of delegates */ void DisplayDelegates() const { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); if(this->m_vDelegates.empty()){ std::cout << "Empty list of delegates!" << std::endl; return; } std::cout << "\n"; std::cout << "Delegates:\n"; std::cout << "the number of delegates is: " << m_vDelegates.size() << "\n"; std::cout << std::right << "|" << setfill('-') << setw(31+11+21+10+4+1) << "|\n"; std::cout << "|" << setfill(' ') << std::setw(31) << std::left <<"Delegate's name" << "|" << setfill(' ') << setw(11) << std::left << "PIN" << "|" << setfill(' ') << setw(21) << std::left << "Town" << "|" << setfill(' ') << setw(10) << std::left << "Road costs" << "|\n" << std::right << "|" << setfill('-') << setw(31+11+21+10+4+1) << "|\n"; for(size_t i=0; i<m_vDelegates.size(); i++){ std::cout << m_vDelegates.at(i); } } /** Prints the list of delegates to a text file */ void PrintDelegatesToTextFile(std::ofstream& ofs) { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); if(this->m_vDelegates.empty()){ std::cout << "Empty list of delegates!" << std::endl; return; } ofs << "\n"; ofs << "Delegates:\n"; ofs << "the number of delegates is: " << m_vDelegates.size() << "\n"; ofs << std::right << "|" << setfill('-') << setw(31+11+21+10+4+1) << "|\n"; ofs << "|" << setfill(' ') << std::setw(31) << std::left <<"Delegate's name" << "|" << setfill(' ') << setw(11) << std::left << "PIN" << "|" << setfill(' ') << setw(21) << std::left << "Town" << "|" << setfill(' ') << setw(10) << std::left << "Road costs" << "|\n" << std::right << "|" << setfill('-') << setw(31+11+21+10+4+1) << "|\n"; for(size_t i=0; i<m_vDelegates.size(); i++){ ofs << m_vDelegates.at(i); } } ///////////// HOTELS /////////////// /** add a hotel */ void AddHotel(Hotel hotel) { m_vHotels.push_back(hotel); } /** displays list of hotels */ void DisplayHotels() const { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); if(this->m_vHotels.empty()){ std::cout << "Empty list of hotels!" << std::endl; return; } std::cout << "\n"; std::cout << "Hotels:\n"; std::cout << std::right << "|" << setfill('-') << setw(21+10+10+4) << "|\n"; std::cout << "|" << setfill(' ') << std::setw(21) << std::left <<"Hotel name" << "|" << setfill(' ') << setw(10) << std::left << "Room" << "|" << setfill(' ') << setw(10) << std::left << "Price" << "|\n" << std::right << "|" << setfill('-') << setw(21+10+10+4) << "|\n"; for(size_t i=0; i<m_vHotels.size(); i++){ std::cout << m_vHotels.at(i); } } /** Prints the list of hotels to a text file */ void PrintHotelsToTextFile(std::ofstream& ofs) { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); if(this->m_vHotels.empty()){ std::cout << "Empty list of hotels!" << std::endl; return; } ofs << "\n"; ofs << "Hotels:\n"; ofs << std::right << "|" << setfill('-') << setw(21+10+10+4) << "|\n"; ofs << "|" << setfill(' ') << std::setw(21) << std::left <<"Hotel name" << "|" << setfill(' ') << setw(10) << std::left << "Room" << "|" << setfill(' ') << setw(10) << std::left << "Price" << "|\n" << std::right << "|" << setfill('-') << setw(21+10+10+4) << "|\n"; for(size_t i=0; i<m_vHotels.size(); i++){ ofs << m_vHotels.at(i); } } /////////////// CARDS //////////////////// /** add a card */ void AddCard(Card card) { m_vCards.push_back(card); } /** displays list of hotels */ void DisplayCards() const { if(this->m_vCards.empty()){ std::cout << "Empty list of Cards!" << std::endl; return; } std::cout << "\n"; std::cout << "Cards:\n"; std::cout << std::right << "|" << setfill('-') << setw(7+11+11+4) << "|\n"; std::cout << "|" << setfill(' ') << std::setw(7) << std::left <<"Number" << "|" << setfill(' ') << setw(11) << std::left << "Arrive on" << "|" << setfill(' ') << setw(11) << std::left << "Leave on" << "|\n" << std::right << "|" << setfill('-') << setw(7+11+11+4) << "|\n"; for(size_t i=0; i<m_vCards.size(); i++){ std::cout << m_vCards.at(i); } } /** Prints the list of Cards to a text file */ void PrintCardsToTextFile(std::ofstream& ofs) { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); if(this->m_vCards.empty()){ std::cout << "Empty list of Cards!" << std::endl; return; } ofs << "\n"; ofs << "Cards:\n"; ofs << std::right << "|" << setfill('-') << setw(7+11+11+4) << "|\n"; ofs << "|" << setfill(' ') << std::setw(7) << std::left <<"Number" << "|" << setfill(' ') << setw(11) << std::left << "Arrive on" << "|" << setfill(' ') << setw(11) << std::left << "Leave on" << "|\n" << std::right << "|" << setfill('-') << setw(7+11+11+4) << "|\n"; for(size_t i=0; i<m_vCards.size(); i++){ ofs << m_vCards.at(i); } } /** Prints delegate's data by given room and hotel */ void PrintDelegateDataByGivenRoomAndHotel(unsigned room, char* hotelName) { assert(m_vDelegates.size() == m_vHotels.size() && m_vHotels.size() == m_vCards.size()); if(m_vHotels.empty()){ std::cout << "Empty list!\n"; return; } Conference co; co.ResetConference(); for(unsigned i=0; i<m_vHotels.size(); i++){ if(strncmp(m_vHotels.at(i).m_pcName, hotelName, strlen(m_vHotels.at(i).m_pcName)) == 0 && m_vHotels.at(i).m_uRoomNumber == room){ co.AddDelegate(m_vDelegates.at(i)); co.AddHotel(m_vHotels.at(i)); co.AddCard(m_vCards.at(i)); } } if(co.m_vDelegates.size() == 0){ std::cout << "No matching records!\n"; return; } // prints the results std::cout << "The delegates data by given room and hotel is:\n"; for(unsigned i=0; i<co.m_vDelegates.size(); i++){ co.DisplayDelegates(); co.DisplayHotels(); co.DisplayCards(); } std::cout << "\n"; } /** Print male delegate by PIN - if the nineth digit is even -> male; odd->female*/ void PrintMaleDelegateByPIN(char* PIN) { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); assert(strlen(PIN) == 10); if((PIN[8]-'0')%2 != 0){ std::cout << "Entered PIN is female!\n\n"; return; } unsigned count = 0; for(unsigned i=0; i<m_vDelegates.size(); i++){ if(strncmp(m_vDelegates.at(i).m_pcPIN, PIN, strlen(m_vDelegates.at(i).m_pcPIN)) == 0){ ++count; } } if(count == 0){ std::cout << "No matching records!\n\n"; return; } else{ std::cout << "The delegate data is:\n"; for(unsigned i=0; i<m_vDelegates.size(); i++){ if(strncmp(m_vDelegates.at(i).m_pcPIN, PIN, strlen(m_vDelegates.at(i).m_pcPIN)) == 0){ std::cout << "Delegate:\n" << m_vDelegates.at(i); std::cout << "Hotel:\n" << m_vHotels.at(i); std::cout << "Card:\n" << m_vCards.at(i); //break; } } } std::cout << "\n"; } /** Create a binary file that contains hotels data, if price is greater than 100 lv */ void PrintPrice100ToBinaryFile(std::ofstream& ofs) { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); if(!(this->IsEmpty())){ for(unsigned i=0; i<m_vHotels.size(); i++){ if(m_vHotels.at(i).m_fPrice > (float)100){ ofs.write(reinterpret_cast<const char*>(&(m_vHotels.at(i))), sizeof(Hotel)); } } } std::cout << "Done!\n"; } /** Create a text file that contains male delegates' data by given town and hotel */ void PrintMaleDelegatesDataByGivenTownAndHotel(std::ofstream& ofs, char* town, char* hotel) { assert((this->m_vDelegates.size() == this->m_vHotels.size()) && (this->m_vHotels.size() == this->m_vCards.size())); Conference co; co.ResetConference(); if(!(this->IsEmpty())){ for(unsigned i=0; i<m_vDelegates.size(); i++){ if(((m_vDelegates.at(i).m_pcPIN[8]-'0')%2 ==0) && // male (strncmp(m_vDelegates.at(i).m_pcTown, town, strlen(m_vDelegates.at(i).m_pcTown)) == 0) && (strncmp(m_vHotels.at(i).m_pcName, hotel, strlen(m_vHotels.at(i).m_pcName)) == 0)){ co.AddDelegate(m_vDelegates.at(i)); co.AddHotel(m_vHotels.at(i)); co.AddCard(m_vCards.at(i)); } } } if(co.IsEmpty()){ std::cout << "No matching records!\n"; return; } else{ co.PrintDelegatesToTextFile(ofs); co.PrintHotelsToTextFile(ofs); co.PrintCardsToTextFile(ofs); } std::cout << std::endl; } }; #endif /*CONFERENCE_H_*/ // author Dimitar Atanasov Staykov // Delegate.h // class Delegate #ifndef DELEGATE_H_ #define DELEGATE_H_ #include <string> using std::string; #include <iostream> using std::ostream; #include <iomanip> using std::setfill; using std::setw; class Delegate{ /** overloaded ostream << operator */ friend ostream& operator<<(ostream& os, const Delegate& delegate) { os << "|" << setfill(' ') << setw(31) << std::left << string(delegate.m_pcName) << "|" << setfill(' ') << setw(11) << std::left << string(delegate.m_pcPIN) << "|" << setfill(' ') << setw(21) << std::left << string(delegate.m_pcTown) << "|" << setfill(' ') << setw(10) << std::left << delegate.m_fRoadCosts << "|\n" << "|" << std::right << "" << std::setfill('-') << setw(31+11+21+10+4+1) << "|\n"; return os; } // име, ЕГН, населено място, пътни разходи public: /** name */ char m_pcName[31]; /** Personal Identification Number */ char m_pcPIN[11]; /** town */ char m_pcTown[21]; /** road costs */ float m_fRoadCosts; public: Delegate() { memset(m_pcName, '\0', sizeof(m_pcName)); memset(m_pcPIN, '\0', sizeof(m_pcPIN)); memset(m_pcName, '\0', sizeof(m_pcTown)); m_fRoadCosts = 0; } ~Delegate() {} }; #endif /*DELEGATE_H_*/ // author Dimitar Atanasov Staykov // Hotel.h #ifndef HOTEL_H_ #define HOTEL_H_ #include <string> using std::string; #include <iostream> using std::ostream; #include <iomanip> using std::setfill; using std::setw; class Hotel{ friend ostream& operator<<(ostream& os, const Hotel& hotel) { os << "|" << setfill(' ') << setw(21) << std::left << string(hotel.m_pcName) << "|" << setfill(' ') << setw(10) << std::left << hotel.m_uRoomNumber << "|" << setfill(' ') << setw(10) << std::left << hotel.m_fPrice << "|\n" << std::right << "|" << std::setfill('-') << setw(21+10+10+4) << "|\n"; return os; } // име на хотела, номер на стаята, цена на нощувката public: /** name of the hotel */ char m_pcName[21]; /** room number */ unsigned m_uRoomNumber; /** hotel price */ float m_fPrice; Hotel() { memset(m_pcName, '\0', sizeof(m_pcName)); m_uRoomNumber = 0; m_fPrice = 0; } ~Hotel() {} }; #endif /*HOTEL_H_*/ // main.cpp /* Група делегати на национална конференция (име, ЕГН, населено място, пътни разходи) са настанени * в няколко хотела (име на хотела, номер на стаята, цена на нощувката). Всеки делегат получава делегатска * карта с вписани: делегатски номер (6 знака), датана престигане, дата на отпътуване. Данните за делегатите се * съхраняват в двоичен файл. * Да се състави програма, която изпълнява следните операции, избрани от меню: * добавя към файла данните на нов делегат, дегегатската му карта и хотела, в който е настанен; * извежда всички въведени данни на екрана и в текстов файл чрез една и съща член-функция; * извежда данните на делегат, настанен в определена стая на посочен хотел; * извежда данните за делегат мъж със зададено ЕГН; * създава двоичен файл с данните на хотелите, в които са настанени делегатите, заплатили за нощувка нас 100лв; * създава тестов файл с данните за делегатите мъже от посочено населено място, пребивавали в посочен хотел. * */ // author Dimitar Atanasov Staykov // #include "stdafx.h" #include <cassert> #include "Conference.h" /** updates the contents from the binary file */ void UpdateFromBinaryFile(std::ifstream& ifs, Delegate&d, Hotel& h, Card& c, Conference& conf) { /*if(!ifs.is_open()){ std::cerr << "Input file doesn't exists!\n"; return; }*/ // get the size of the input file size_t length = 0; ifs.seekg (0, std::ios::end); length = ifs.tellg(); ifs.seekg (0, std::ios::beg); size_t total_size = 0; total_size = sizeof(Delegate)+sizeof(Hotel)+sizeof(Card); if(length > 0){ assert(length % total_size == 0); // must the size of the Conference.dat file to be multiple of total_size conf.ResetConference(); while(ifs && !ifs.eof()){ ifs.read(reinterpret_cast<char*>(&d), sizeof(Delegate)); conf.AddDelegate(d); ifs.read(reinterpret_cast<char*>(&h), sizeof(Hotel)); conf.AddHotel(h); ifs.read(reinterpret_cast<char*>(&c), sizeof(Card)); conf.AddCard©; } // Erase the last element of each vector conf.m_vDelegates.erase(conf.m_vDelegates.begin()+conf.m_vDelegates.size()-1); conf.m_vHotels.erase(conf.m_vHotels.begin()+conf.m_vHotels.size()-1); conf.m_vCards.erase(conf.m_vCards.begin()+conf.m_vCards.size()-1); } } /** add delegate, hotel, and card information; then writes the result to the file */ int AddDelegate(Delegate& d, Hotel& h, Card& c) { // Delegate //name std::cout << "Delegate\n"; char delegateName[31]; std::cout << "Enter delegate's name: "; std::cin >> delegateName; delegateName[30] = '\0'; strncpy(d.m_pcName, delegateName, 30); d.m_pcName[30] = '\0';// strncpy doesn't NUL-terminate the destination string //PIN char PIN[11]; std::cout << "Enter delegate's PIN: "; std::cin >> PIN; PIN[10] = '\0'; strncpy(d.m_pcPIN, PIN, 10); d.m_pcPIN[10] = '\0'; //town char town[21]; std::cout << "Enter delegate's town: "; std::cin >> town; town[20] = '\0'; strncpy(d.m_pcTown, town, 20); d.m_pcTown[20] = '\0'; // road costs float roadCosts = 0; std::cout << "Enter delegate's road costs: "; std::cin >> roadCosts; d.m_fRoadCosts = roadCosts; // Hotel std::cout << "\nHotel\n"; // name char hotelName[21]; std::cout << "Enter hotel name: "; std::cin >> hotelName; hotelName[20] = '\0'; strncpy(h.m_pcName, hotelName, 20); h.m_pcName[20] = '\0'; // room number unsigned roomNumber = 0; std::cout << "Enter room number: "; std::cin >> roomNumber; h.m_uRoomNumber = roomNumber; // price float price = 0; std::cout << "Enter price: "; std::cin >> price; h.m_fPrice = price; // Card std::cout << "\nCard\n"; // number char number[7]; std::cout << "Enter card number: "; std::cin >> number; number[6] = '\0'; strncpy(c.m_pcDelegateNumber, number, 6); c.m_pcDelegateNumber[6] = '\0'; // arrive date char arriveDate[11]; std::cout << "Enter date of arrive: "; std::cin >> arriveDate; arriveDate[10] = '\0'; strncpy(c.m_pcArriveDate, arriveDate, 10); c.m_pcArriveDate[10] = '\0'; // leave date char leaveDate[11]; std::cout << "Enter date of leave: "; std::cin >> leaveDate; leaveDate[10] = '\0'; strncpy(c.m_pcLeaveDate, leaveDate, 10); c.m_pcLeaveDate[10] = '\0'; // write to binary file std::ofstream ofs("Conference.dat", std::ios::binary | std::ios::app); if(!ofs.is_open()){ std::cerr << "Error opening outputfile\n"; return -1; } ofs.write(reinterpret_cast<const char*>(&d), sizeof(Delegate)); // delegate ofs.write(reinterpret_cast<const char*>(&h), sizeof(Hotel)); // hotel ofs.write(reinterpret_cast<const char*>(&c), sizeof(Card)); // card //ofs.seekp(std::ios::end); ofs.close(); return 0; // on success returns 0 } /** Prints all delegates to the console and a text file */ void PrintDelegates(Conference& conf) { if(!conf.IsEmpty()){ // prints result to the console conf.DisplayDelegates(); conf.DisplayHotels(); conf.DisplayCards(); // Prints the result to a text file - all data is printed to same text file std::ofstream ofs("Delegates.txt"); if(!ofs.is_open()){ std::cerr << "Error openenig output text file!\n"; } conf.PrintDelegatesToTextFile(ofs); conf.PrintHotelsToTextFile(ofs); conf.PrintCardsToTextFile(ofs); ofs.close(); std::cout << "\n"; } else{ std::cout << "Empty list!\n"; return; } } int main(int argc, char** argv) { Conference conference; conference.ResetConference(); Delegate delegate; Hotel hotel; Card card; bool bShowMainMenu = true; // a flag that controls showing of the menu bool bShowHint = false; // a flag that controls showing of hint unsigned menu = 0; system("cls"); // clears the screen do{ std::ifstream ifs("Conference.dat", std::ios::binary); if(!ifs.is_open()){ std::cerr << "Error opening file!\n" << "Now it will be created\n"; ifs.close(); std::ofstream("Conference.dat", std::ios::binary | std::ios::app); ifs.open("Conference.dat", std::ios::binary); if(!ifs.is_open()){ std::cerr << "File could not be created!\n" << "Will now exit!\n"; return -1; } std::cout << "Empty list!\n"; //return -1; } UpdateFromBinaryFile(ifs, delegate, hotel, card, conference); ifs.close(); //system("cls"); if(bShowMainMenu){ bShowHint = false; std::cout << "****** MENU ******\n"; std::cout << "0. Terminate the program!\n"; std::cout << "1. Write to file new delegate's information!\n"; std::cout << "2. Prints all delegates data to the screen and text file!\n"; std::cout << "3. Prints the delegate's data accommodated at a given room of a given Hotel!\n"; std::cout << "4. Prints the male delegate's data by a given PIN!\n"; std::cout << "5. Create a binary file that contains hotels data, if price is greater than 100 lv!\n"; std::cout << "6. Create a text file that contains male delegates' data by given town and hotel!\n"; std::cout << "7. Delete the contents of the main binary file!\n"; } if(bShowHint){ std::cout << "Type a number 0-6 to execute a menucommand or type 8 to display main menu!\n"; } std::cout << "\n"; std::cin >> menu; switch(menu){ case 1:{ system("cls"); AddDelegate(delegate, hotel, card); bShowMainMenu = false; bShowHint = true; } break; case 2:{ system("cls"); PrintDelegates(conference); bShowMainMenu = false; bShowHint = true; } break; case 3:{ system("cls"); if(conference.m_vHotels.empty()){ std::cout << "Empty list!\n\n"; break; } char hotelName[21]; unsigned room = 0; std:: cout << "Enter a name of the hotel: "; std::cin >> hotelName; hotelName[20] = '\0'; std::cout << "Enter a room number: "; std::cin >> room; conference.PrintDelegateDataByGivenRoomAndHotel(room, hotelName); std::cout << "\n"; bShowMainMenu = false; bShowHint = true; } break; case 4:{ system("cls"); if(conference.m_vDelegates.empty()){ std::cout << "Empty list!\n\n"; break; } char PIN[11]; std::cout << "Enter PIN: "; std::cin >> PIN; PIN[10] = '\0'; conference.PrintMaleDelegateByPIN(PIN); bShowMainMenu = false; bShowHint = true; } break; case 5:{ if(conference.IsEmpty()){ std::cout << "Empty list!\n\n"; break; } system("cls"); std::ofstream out("Price100.dat", std::ios::binary); if(!out.is_open()){ std::cerr << "Error opening output file!\n"; break; } conference.PrintPrice100ToBinaryFile(out); out.close(); // test results /*Hotel hotel_; std::ifstream ifs_test("Price100.dat", std::ios::binary); if(!ifs_test.is_open()){ std::cerr << "Error open input file!\n"; break; } size_t file_length = 0; ifs_test.seekg(0, std::ios::end); file_length = ifs_test.tellg(); ifs_test.seekg(std::ios::beg); if(file_length == 0){ std::cout << "No matching records!\n"; break; } if(file_length > 0) assert((file_length % (sizeof(Hotel))) == 0); while(ifs_test && !ifs_test.eof()){ ifs_test.read(reinterpret_cast<char*>(&hotel_), sizeof(Hotel)); std::cout << hotel_; } ifs_test.close(); std::cout << "\n";*/ bShowMainMenu = false; bShowHint = true; } break; case 6:{ system("cls"); char town[21]; std::cout << "Enter a town: "; std::cin >> town; town[20] = '\0'; char hotelName[21]; std::cout << "Enter a hotel name: "; std::cin >> hotelName; hotelName[20] = '\0'; std::ofstream ofs("MaleByTownAndHotel.txt"); if(!ofs.is_open()){ std::cerr << "Error opening output file!\n"; break; } conference.PrintMaleDelegatesDataByGivenTownAndHotel(ofs, town, hotelName); ofs.close(); bShowMainMenu = false; bShowHint = true; } break; case 7:{ system("cls"); std::ofstream("Conference.dat", std::ios::binary); conference.ResetConference(); std::cout << "Done!\n"; bShowHint = true; bShowMainMenu = false; } break; case 8:{ system("cls"); bShowHint = false; bShowMainMenu = true; } break; default: if(menu<0 && menu>8) continue; } } while(menu != 0); system("cls"); std::cout << "Terminated!\n\n"; return 0; }

Здравейте, значи имам следния проблем.Трябва да направя една програма на С++ за понеделник, но изпитвам затруднение понеже до сега не съм програмирал на този език.Прочетох един учебник и успях да схвана основните алгуритми и методи за направата на програмата, но ми е трудно да разбера Класовете, член функции и член данни. Питах се дали може някой тук да ми обясни основно за какво иде реч.Благодаря ви предварително. Ето и условието на задачата. Задание: Дефинирайте клас ред от фактура с данни: номер, артикул, единична цена, брой.Дефинирайте за него подходящите get и set методи. Дефинирайте конструктор по подразбиране. Дефинирайте клас фактура с необходимите get и set методи, конструктор. Дефинирайте методи за добавяне на ред на фактурата, изтриване на ред по посочен артикул. Дефинирайте метод за пресмятане на общата стойност на фактурата с ДДС. Да се предефинира операцията << за извеждане на информацията на екрана. Данните да се съхраняват във файл.

Привет!

Срещам проблеми с една задачка на С.

Да се разработи меню-програма, която да осигури обработване на данните на студентите в едно учебно заведение. Програмата да има следната функционалност:

¨ За всеки студент да се пазят следните данни:

o име, презиме, фамилия (до 20 символа всяко, кирилица и латиница)

o факултетен номер (2 букви и 5 цифри след тях)

o факултет

o ЕГН

o номер на курса, в който са в дадения момент

o по 10 оценки за всяка от завършилите години от следването

¨ Да се добавят данните на нов студент (може да се запише не само в 1 курс): да се избира дали да е само отпред или да е в подреден вид по имена.

- Да се изтрива студент по зададен факултетен номер

¨ Изписване на информация за студент, зададен по факултетен номер (включително средния му успех до този момент от следването).

¨ Да се четат данните на студентите от текстов или от двоичен файл (задава се при извършване на съответната обработка).

¨ Да се записват данните в текстов или в двоичен файл (задава се при извършване на съответната обработка).

¨ Да се намерят студентите с най-висок или най-нисък (задава се при извършване на съответната обработка) среден успех от следването до този момент.

¨ Да се намерят предметите с най-висок или най-нисък (задава се при извършване на съответната обработка) среден успех от явилите се на този изпит (ако студент не се е явявал на изпита, за оценка да се пише 0).

¨ Да се сортират студентите по успех. Ако двама студенти имат еднакъв успех да се подреждат по лексикографски признак. Резултатите да се записват във файл, задаван от потребителя.

¨ Да се сортират студентите по име. Ако двама студента имат едно и също име да се подредят по факултетен номер.

Трябва ми за сряда... Затова, който може да помогне, ще съм много благодарен!

Поздрави!

Имате ли някакво понятие как да стане : Да се намери броят елементи на числов масив с 20 елемента, които са по-големи от зададено число, въведено от клавиатурата.

удвоени нечетни са тези които при деление на 4 дават остатък 2. отест обхождаш масива и ако това условие е изпълнено отпечатваш

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

Имате ли някакво понятие как да стане : Да се намери броят елементи на числов масив с 20 елемента, които са по-големи от зададено число, въведено от клавиатурата.

#include <iostream>

using namespace std;

double a[21],n;

int br=0;

int main ()

{

cout<<"vavedete 20 4isla"<<endl;

for (int i=0;i<20;i++)

cin>>a;

cout<<"vavedete n:";

cin>>n;

for (int i=0;i<20;i++)

if (a>n)

{br++;

cout<<a<<" ";

}

cout<<endl<<"broqt na 4islata e "<<br;

return 0;

}

Редактирано от kai_99 (преглед на промените)

Имам още един наложителен проблем:

Използвайки метода на разполовяването намерете един реален корен на

f ( x)=X2(квадрат)−cos(x)

Какво е метод на разполовяването

Това намерих за тоя метод, но не мога да се справя. Предварително благодаря!

Ако е възможно някой да ми реши следната задача, ще съм му доста благодарен. Да се въведе от клавиатурата низ с дължина по малка от 1000 символа. Иска се да се провери, колко пъти в низа се среща името "Петя". И в края на програмата да се изведе броят. Дадоха ми насоки да ползвам някаква функция strstr() от библиотека string.h, че спестявала доста писане, но не съм много на ТИ с тия задачи.

Ако е възможно някой да ми реши следната задача, ще съм му доста благодарен.

Да се въведе от клавиатурата низ с дължина по малка от 1000 символа.

Иска се да се провери, колко пъти в низа се среща името "Петя".

И в края на програмата да се изведе броят.

Дадоха ми насоки да ползвам някаква функция strstr() от библиотека string.h, че спестявала доста писане, но не съм много на ТИ с тия задачи.

Very Very LAME ама какво да се прави. И аз тепърва се уча. Публикувано изображение

#include <iostream>
#include <string>
using namespace std;

#define MAX 1000

struct Size{ int A; }size;

void Find(string A)
{
	int i,how=0;
	char* a=new char[size.A];
	for(i=0;i<size.A;i++)
	{
		a[i]=A.at(i);
		if(i<=3 && a[i]=='q' && a[i-1]=='t' && a[i-2]=='e' && a[i-3]=='P') how++;
		if(size.A==5 && a[i]==' ' && a[i-1]=='q' && a[i-2]=='t' && a[i-3]=='e' && a[i-4]=='P')how++;
		if(size.A>5 && a[i]==' ' && a[i-1]=='q' && a[i-2]=='t' && a[i-3]=='e' && a[i-4]=='P'
			   && a[i-5]==' ') how++;
		if(i==size.A-1 && a[i]=='q' && a[i-1]=='t' && a[i-2]=='e' && a[i-3]=='P'
		   && a[i-4]==' ') how++;
	}
	cout << how << endl;
	delete []a;
}


int main()
{
	string A;
	getline(cin,A);
		if(A.size()>MAX) return 0;
	size.A=(A.size());
	Find(A);

	return 0;
}

Редактирано от Progres (преглед на промените)

Някой може ли да ми помогне с една задачка на C++... Тя е следната : " Използвайки метода на разполовяването намерете един реален корен на f (x)=x(на степен 4)−2" Благодаря много предварително !!!

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    26%
    Дарени 256.00 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.