Студентам с лабораторными сюда (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 20 Jun 2007.

Thread Status:
Not open for further replies.
  1. SS_47

    SS_47 Member

    Joined:
    5 Apr 2012
    Messages:
    18
    Likes Received:
    5
    Reputations:
    7
    давно я не имел дела с чистым СИ.
    Code:
    #include <stdio.h>
    
    void CheckShoe(struct Shoe shoes[], char* article);
    void PrintFemaleShoes(struct Shoe shoes[]);
    
    struct Shoe
    {
    	char* article;
    	char* name;
    	int count;
    	int price;
    };
    
    int main()
    {
    	int size;
    	struct Shoe shoes[5];
    	shoes[0].article = "Dart0";
    	shoes[0].count = 10;
    	shoes[0].name = "Dname0";
    	shoes[0].price = 15;
    	shoes[1].article = "Dart1";
    	shoes[1].count = 10;
    	shoes[1].name = "Dname1";
    	shoes[1].price = 15;
    	shoes[2].article = "Mart2";
    	shoes[2].count = 10;
    	shoes[2].name = "Mname2";
    	shoes[2].price = 15;
    	shoes[3].article = "Dart3";
    	shoes[3].count = 10;
    	shoes[3].name = "Dname3";
    	shoes[3].price = 15;
    	shoes[4].article = "Part4";
    	shoes[4].count = 10;
    	shoes[4].name = "Pname4";
    	shoes[4].price = 15;
    
    	size = sizeof(shoes)/sizeof(shoes[0]);
    	
    	PrintFemaleShoes(shoes, size);
    	CheckShoe(shoes, "Part4",size);
    	
    	getchar();
    	return 0;
    }
    
    void CheckShoe(struct Shoe shoes[], char* article, int size)
    {
    	int i;
    	for(i = 0; i < size; i++)
    	{
    		if(shoes[i].article == article)
    		{
    			printf("we have it! %s - %d units\n", shoes[i].name,shoes[i].count);
    			break;
    		}
    	}
    }
    
    void PrintFemaleShoes(struct Shoe shoes[], int size)
    {	
    	int i;	
    	for(i = 0; i < size; i++)
    	{
    		if(shoes[i].article[0] == 'D')
    			printf("%s - %d units\n", shoes[i].name,shoes[i].count);
    	}
    }
    
    
    как-то так
     
  2. Константин92

    Joined:
    13 Apr 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Лаба! Помогите кто может пожалуйста

    В visual studio c++
    Представить заданную дробь в виде десятичной дроби (N является входным параметром).

    1
    --------------------------
    1
    1 + -------------------
    1
    2 + ----------------
    ...........
    1
    (N-1) + -------
    N


    Извините, дроби он тут не хочет нормально записывать!Так что Там где 1 и N, Они должны быть где дробь так и 1!

    Заранее огромное спасибо!
     
  3. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Можно как то более грамотно изложить, что требуется?
    Я так понимаю, что пользователь должен будет ввести обыкновенну дробь, типа: 1 1/4 после чего её нужно будет выдать в такой форме: 1,25
    Я правильно понял задание?
     
  4. cipa21

    cipa21 Elder - Старейшина

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    Ну что-то в этом роде:
    Code:
    #include <iostream>
    
    using namespace std;
    
    struct STUDENT
    {
    	char fio[50];
    	int Ngroup;
    	int evaluation[5];
    };
    
    void sort(STUDENT *stud, int Nstruct)
    {
    	for(int i = 0; i < Nstruct-1; i++)
    		for(int j = i + 1; j < Nstruct; j++)
    			if(strcmp(stud[i].fio, stud[j].fio) > 0)
    			{
    				STUDENT temp = stud[i];
    				stud[i] = stud[j];
    				stud[j] = temp;
    			}
    }
    
    void print_all(STUDENT *stud, int Nstruct)
    {
    	for(int i = 0; i < Nstruct; i++)
    	{
    		cout<<"Student #"<<i+1<<endl;
    		cout<<"FIO: "<<stud[i].fio<<endl;
    		cout<<"# group: "<<stud[i].Ngroup<<endl;
    		cout<<"Evaluation: ";
    		for(int j = 0; j < sizeof(stud[i].evaluation)/sizeof(int); j++)
    			cout<<stud[i].evaluation[j]<<"\t";
    		cout<<endl;
    			
    	}
    }
    
    void print_only_two(STUDENT *stud, int Nstruct)
    {
    	int temp = 0;
    	for(int i = 0; i < Nstruct; i++)
    	{
    		for(int j = 0; j < sizeof(stud[i].evaluation)/sizeof(int); j++)
    			if(stud[i].evaluation[j] == 2)
    			{
    				cout<<"Student #"<<i+1<<endl;
    				cout<<"FIO: "<<stud[i].fio<<endl;
    				cout<<"# group: "<<stud[i].Ngroup<<endl;
    				cout<<"Evaluation: ";
    				for(int k = 0; k < sizeof(stud[i].evaluation)/sizeof(int); k++)
    					cout<<stud[i].evaluation[k]<<"\t";
    				cout<<endl;
    				temp = 1;
    				break;
    			}
    	}
    	if(temp == 0) cout<<"Students with an evaluation 2 not found!"<<endl;
    }
    
    void main() 
    {
    	const int Nstruct = 10;
    	STUDENT stud[Nstruct] = {"",0,0};
    	int a = 0;							//	счетчик количества заполненных структур
    	char add ='y';						//	переменная, указывает, продолжать заполнение структур или перкратить.
    	while(a != Nstruct && add == 'y')
    	{
    		cout<<"Student #"<<a+1<<"\nFIO: ";
    		do{gets(stud[a].fio);}while(strlen(stud[a].fio)<1);
    		cout<<"# group: "; cin>>stud[a].Ngroup;
    		for(int i=0;i<5;i++)
    		{
    			cout<<"Evaluation "<<i+1<<": ";
    			cin>>stud[a].evaluation[i];
    		}
    		a++;
    		cout<<"\nAdd a new student(y/n): ?";
    		do{cin>>add;}while(!(add == 'y' || add == 'n'));
    	}
    
    	sort(stud, a);				//	вторым параметром передаем реальное количество заполненных структур
    
    	print_all(stud, a);			//	печать всех студентов
    
    	print_only_two(stud, a);	//	печать студентов только с оценкой "2"
    }
    
     
  5. Xak93

    Xak93 New Member

    Joined:
    9 Apr 2010
    Messages:
    85
    Likes Received:
    2
    Reputations:
    0
    Прошу помощи в лабе на Си ( без плюсов):


    Задать значения вещественным элементам матриц
    А = {аij} и Q = {qij}, где i = 0, 1, 2,..., 6; j = 0, 1, 2,..., 4 и сформировать массивы B и R, состоящие из минимальных элементов столбцов матриц A и Q соответственно.

    PS. За предыдущую спасибо)
     
  6. Нагибай

    Нагибай New Member

    Joined:
    24 Oct 2011
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Привет всем,завтра зачет :D нужно написать граф редактор,создал 2 форму для того что бы на ней менять толщину pеn,налепил ScrollBox1 и Paintbox1
    Вопрос
    Как сделать так что бы на Image1 показывало текущюю толщину.
    Заранее благодарю за ответ
     
  7. Jesus

    Jesus New Member

    Joined:
    18 Apr 2012
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Помогите пожалуйста:) можно создать индексированый список в паскале, который имеет 9 элементов. Спасибо.
     
  8. stempid

    stempid Banned

    Joined:
    12 Apr 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Снова вынужден обратиться за помощью , помогите решить хотя бы одну из задач на С++:

    1) Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, ССаr и CShip. Классы должны иметь возможность задавать и получать коорди¬наты, параметры средств передвижения (цена, скорость, год выпуска). Для само¬лета должна быть определена высота, для самолета и корабля – количество пас¬сажиров. Для корабля – порт приписки. Написать программу, создающую список объектов этих классов в динамической памяти. Программа должна содержать меню, позволяющее осуществить провер¬ку всех методов классов.


    2) Построить систему классов для описания плоских геометрических фигур: круг, квадрат, прямоугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол. Написать программу, демонстрирующую работу с этими классами. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов .

    P.S. Отдельное спасибо Cipa21 за решение задачи о студентах.
     
  9. Константин92

    Joined:
    13 Apr 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0

    А да вы совершенно правы )) (типа: 1 1/4 после чего её нужно будет выдать в такой форме: 1,25)
     
  10. KL1CK3R

    KL1CK3R New Member

    Joined:
    16 Jun 2011
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Люди, выручайте кто может, в универе сдаем лабы по С++, но я его не знаю, знаю С#, вот я выполнил 5 работ на шарпе. Помогите кому не трудно перевести с шарпа на плюсы, задачи начального уровня (чуть ли не на демонстрацию): классы, структуры, циклы и массивы. Выполнил на шарпе, всё рабочее, необходимо только перевести! Кому не сложно (для вас займёт буквально 5-10 минут) помогите пожалуйста!
     
  11. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Можно например так:

    Code:
    
    
    int main(int argc, char* argv[])
    {     
    int ganz = 0;
    int chislitel = 0;
    int snamenatel = 0;
    double result = 0.0;
    printf("%f", result);
    printf ("Vvedite zeluju 4ast drobi chislo : ");
    scanf ("%d", &ganz);
    printf("\nVvedite 4islitel: ");
    scanf("%d", &chislitel);
    printf("\nVvedite snamenatil: ");
    scanf("%d", &snamenatel);
    result = (double)(ganz*snamenatel+chislitel)/snamenatel;
    printf("Desjytichnaja drob ravna: %.4f",result);
    getchar();
    getchar();
    }
    
     
  12. cipa21

    cipa21 Elder - Старейшина

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    Выкладывай/вылаживай ....
     
  13. KL1CK3R

    KL1CK3R New Member

    Joined:
    16 Jun 2011
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Вобщем вот на шарпе лабы
    Не удивляйтесь выбору элементов для суммирования, так сказанно в условии.

    следующая

    3-ая

    4-ая
    [i][i][i][i][i][i]
    Только никак не усложняйте(лабы для универа, поэтому исключения рассматривать не надо), надо как есть, только перевести! Заранее благодарю![/i][/i][/i][/i][/i][/i]
     
    #3993 KL1CK3R, 25 Apr 2012
    Last edited: 25 Apr 2012
  14. cipa21

    cipa21 Elder - Старейшина

    Joined:
    9 Apr 2009
    Messages:
    548
    Likes Received:
    146
    Reputations:
    30
    Вот держи пока первую...
    Code:
    #include <windows.h>
    #include <iostream>
    #include <time.h>
    
    using namespace std;
    
    void main() 
    {
    	const int rows = 8;
    	const int cols = 8;
    	int summa = 0;
    	int mass[rows][cols];
    	srand(time(0));
    	for (int i = 0; i < rows; i++)
    		for (int j = 0; j < cols; j++)
    		{
    			mass[i][j] = rand()%3+1;
    		}
    	for (int i = 0; i < rows; i++)
    		{
    			for (int j = 0; j < cols; j++)
    				cout<<mass[i][j]<<" ";
    			cout<<endl;
    		}
    	int col = cols;
    	int p = 0;
    	cout<<endl;
    	for (int i = 0; i < 4; i++)
    	{
    		for (int j = p; j < col; j++)
    		{
    			summa = summa + mass[j][i];
    		}
    		p++;
    		col--;
    	}
    	cout<<"Summa elementov = "<<summa;
    }
    

    Вот вторая:
    Code:
    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    bool GorS(char c)
    {
    	char *glasnie = "УуЕеАаОоЭэЯяИиЮю";
    	if (strchr(glasnie,c))
    		return true;
    	else return false;
    }
    
    int CountGletters(char * str)
    {
    	char * glasnie = "УуЕеАаОоЭэЯяИиЮю";
    	int amount = 0;
    	for (int i = 0; i < strlen(str); i++)
    	{
    		if(strchr(glasnie,str[i]))
    			amount++;
    	}
    	return amount;
    }
    
    void main() 
    {
    	SetConsoleOutputCP(1251);
    	SetConsoleCP(1251);
    	cout<<"Введите букву: ";
    	char bukva;
    	cin>>bukva;
    	bool flag = GorS(bukva);
    	if (flag == true)
    		cout<<"Вы ввели гласную букву"<<endl;
    	else cout<<"Вы ввели согласную букву"<<endl;
    		
    	cout<<"Подсчёт гласных букв в строке"<<endl;
    	cout<<"Введите строку: ";
    	char stroka[100]={0};
    	do{gets(stroka);} while (strlen(stroka)<1);		//	тут я задал првоерку ввода, в c++ gets иногда пропускается.
    	cout<<"В введённой строке "<< CountGletters(stroka) <<" гласных букв"<<endl;
    	
    }
    
    третья(swith я заменил на if , т.к. switch и строки понятия не совместимые):
    Code:
    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    struct VideoRecords
    {
    	int KodZapisi;
    	char Zhanr[50];
    	char Rezhiser[50];
    	char GlavniyGeroi[50];
    	char TipNositelya[50];
    	char DataZapisi[50];
    };
    
    void main() 
    {
    	SetConsoleOutputCP(1251);
    	SetConsoleCP(1251);
    	VideoRecords video[10];
    	bool quit = false;
    	int i = 0;
    	do 
    	{
    		char operation[10];
    		cout<<"Выберите действие!\nДля добавления записи введите 'Add', для выхода введите 'Quit', для просмотра записей введите 'Show'";
    		do{ gets(operation); }while( strlen(operation)<1 );
    		if ( strcmp(operation, "Add") == false)		//	функция strcmp() регистрозависимая, если сравнивать "Add" и "add" то вернет true
    		{
    			cout<<"Введите код записи: ";
    			cin>>video[i].KodZapisi;
    			cout<<"Введите Жанр: ";
    			do{gets(video[i].Zhanr);} while(strlen(video[i].Zhanr)<1);
    			cout<<"Введите Режисёра: ";
    			do{gets(video[i].Rezhiser);} while(strlen(video[i].Rezhiser)<1);
    			cout<<"Введите Главного героя: ";
    			do{gets(video[i].GlavniyGeroi);} while(strlen(video[i].GlavniyGeroi)<1);
    			cout<<"Введите Тип носителя: ";
    			do{gets(video[i].TipNositelya);} while(strlen(video[i].TipNositelya)<1);
    			cout<<"Введите Дату записи: ";
    			do{gets(video[i].DataZapisi);} while(strlen(video[i].DataZapisi)<1);
    			i++;
    		}
    		else if ( strcmp(operation, "Show") == false)
    		{
    			for (int j = 0; j < i; j++)
    			{
    				if (video[j].KodZapisi != 0)
    				{
    					cout<<"Код записи: " << video[j].KodZapisi << endl;
    					cout<<"Жанр: " << video[j].Zhanr << endl;
    					cout<<"Режисёр: " << video[j].Rezhiser << endl;
    					cout<<"Главный герой: " << video[j].GlavniyGeroi << endl;
    					cout<<"Тип носителя: " << video[j].TipNositelya << endl;
    					cout<<"Дата записи: " << video[j].DataZapisi << endl << endl;
    				}
    			}
    		}
    		else if ( strcmp(operation, "Quit") == false)
    		{
    			quit = true;  // можно заменить на exit(0); и в (!quit) поставь единицу и инициализацию переменной quit вообще сотри
    		}
    	}
    	while (!quit);
    }
    
    И последнее, четвертое задание. В самом низу, там где поиск по номеру поезда, допущена была ошибка, я исправил, создав переменную ok_train
    Code:
    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    class TRAIN
    {
    public:
    	char Punkt[50];
    	int Number;
    	char Time[50];
    };
    void main() 
    {
    	SetConsoleOutputCP(1251);
    	SetConsoleCP(1251);
    	const int Ntrains = 8;
    	TRAIN train[Ntrains];
    	cout<<"Заполните информацией о 8 поездах массив поездов"<<endl;
    	for (int i = 0; i < Ntrains; i++)
    	{
    		cout<<"Введите пункт назначения: ";
    		do{gets(train[i].Punkt);}while(strlen(train[i].Punkt)<1);
    		cout<<"Введите номер поезда: ";
    		cin>>train[i].Number;
    		cout<<"Введите время отправления: ";
    		do{gets(train[i].Time);}while(strlen(train[i].Time)<1);
    	}
    	cout<<endl;
    	cout<<"После сортировки";
    	int tempNumber;
    	char tempPunkt[50];
    	char tempTime[50];
    	for (int i = 0; i < Ntrains - 1; i++)
    	{
    		for (int j = i + 1; j < Ntrains; j++)
    		{
    			if (train[i].Number > train[j].Number)
    			{
    				/*TRAIN temp = train[i];		//	советую все что ниже заменить на ЭТО и тогда все три переменные(tempNumber, tempPunkt, tempTime) объявленные выше, можно удалить!
    				train[i] = train[j];
    				train[j] = temp;*/
    
    				tempNumber = train[i].Number;
    				strcpy(tempPunkt, train[i].Punkt);
    				strcpy(tempTime, train[i].Time);
    
    				train[i].Number = train[j].Number;
    				strcpy(train[i].Punkt, train[j].Punkt);
    				strcpy(train[i].Time, train[j].Time);
    
    				strcpy(train[j].Punkt, tempPunkt);
    				strcpy(train[j].Time, tempTime);
    				train[j].Number = tempNumber;
    			}
    		}
    	}
    
    	for (int i = 0; i < Ntrains; i++)
    	{
    		cout<<"Пункт назначения: " << train[i].Punkt << endl;
    		cout<<"Номер поезда: " << train[i].Number << endl;
    		cout<<"Время отправления: " << train[i].Time << endl;
    	}
    
    	cout<<"Введите номер поезда, который вас интересует: ";
    	int x;
    	cin>>x;
    	int ok_train = 0;
    	for (int i = 0; i < Ntrains; i++)
    	{
    		if (train[i].Number == x)
    		{
    			cout<<"Пункт назначения: " << train[i].Punkt << endl;
    			cout<<"Номер поезда: " << train[i].Number << endl;
    			cout<<"Время отправления: " << train[i].Time << endl << endl;
    			ok_train = 1;
    		}
    	}
    	if(ok_train == 0)
    		cout<<"Поезда с таким номер не существует!";
    }
    
     
    #3994 cipa21, 26 Apr 2012
    Last edited: 26 Apr 2012
  15. Константин92

    Joined:
    13 Apr 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    чет она работать не хочет ))
     
  16. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Библиотеки подключил?
    #include <stdio.h>
    #include <stdlib.h>

    И что не работает? Конкретики не хватает.
     
  17. citrucc

    citrucc New Member

    Joined:
    6 Apr 2012
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    VC++ .NET поиск и выделение строки в DataGreadView

    Добрый день

    Подскажите пожалуйста как организовать выделение найденной строки красным цветом в DataGreadView сам поиск работает но цветом не выделяет

    Code:
    bool searchflag = false;
                if (rbName->Checked)
                 {
                     for (int i = 0; i < dgv1->RowCount-1; i++)
                     
                     {
                         String^ dgv1_string = Convert::ToString(dgv1->Rows[i]->Cells[0]->Value);
                         String^ txtboxToDelete_string = txtToDelete->Text;
     
                         if (dgv1_string->Contains(txtboxToDelete_string))
                         {
                             searchflag = true;
                             dgv1->Rows[i]->Cells[0]->Style->BackColor.Red; // Вот в этой строке происходит выделение почему не выделяет?
                             
                         }
                     }
                     if (!searchflag) MessageBox::Show("Нечего не найдена", "", MessageBoxButtons::OK);
                     
                 }
     
    #3997 citrucc, 29 Apr 2012
    Last edited: 29 Apr 2012
  18. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1

    Может так попробывать:
    Code:
    dgv1->Rows[i]->Cells[0]->Style->BackColor = Color.red;
    
    
    Вот тут можно посмотреть
     
  19. citrucc

    citrucc New Member

    Joined:
    6 Apr 2012
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0

    это на C# а на С++ будет вот так

    Code:
    dgv1->Rows[i]->Cells[0]->Style->BackColor = Color::Red;
    всёравно спасибо за подсказку

    Но вот опять появился вопрос теперь этот поиск я попытался засунуть во 2 форму и там выдало кучу ошибок. Как мне сделать тот же самый скрипт но из фторой форма при учёте что DataGreadView находится в 1 форме
     
  20. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Я не совсем уловил суть вопроса, ты имеешь ввиду, из другого окна вызвать метод находящийся и принадлежащий к другому классу?
     
Thread Status:
Not open for further replies.