давно я не имел дела с чистым СИ. 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); } } как-то так
Лаба! Помогите кто может пожалуйста В visual studio c++ Представить заданную дробь в виде десятичной дроби (N является входным параметром). 1 -------------------------- 1 1 + ------------------- 1 2 + ---------------- ........... 1 (N-1) + ------- N Извините, дроби он тут не хочет нормально записывать!Так что Там где 1 и N, Они должны быть где дробь так и 1! Заранее огромное спасибо!
Можно как то более грамотно изложить, что требуется? Я так понимаю, что пользователь должен будет ввести обыкновенну дробь, типа: 1 1/4 после чего её нужно будет выдать в такой форме: 1,25 Я правильно понял задание?
Ну что-то в этом роде: 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" }
Прошу помощи в лабе на Си ( без плюсов): Задать значения вещественным элементам матриц А = {аij} и Q = {qij}, где i = 0, 1, 2,..., 6; j = 0, 1, 2,..., 4 и сформировать массивы B и R, состоящие из минимальных элементов столбцов матриц A и Q соответственно. PS. За предыдущую спасибо)
Привет всем,завтра зачет нужно написать граф редактор,создал 2 форму для того что бы на ней менять толщину pеn,налепил ScrollBox1 и Paintbox1 Вопрос Как сделать так что бы на Image1 показывало текущюю толщину. Заранее благодарю за ответ
Помогите пожалуйста можно создать индексированый список в паскале, который имеет 9 элементов. Спасибо.
Снова вынужден обратиться за помощью , помогите решить хотя бы одну из задач на С++: 1) Создать абстрактный класс CVehicle. На его основе реализовать классы CPlane, ССаr и CShip. Классы должны иметь возможность задавать и получать коорди¬наты, параметры средств передвижения (цена, скорость, год выпуска). Для само¬лета должна быть определена высота, для самолета и корабля – количество пас¬сажиров. Для корабля – порт приписки. Написать программу, создающую список объектов этих классов в динамической памяти. Программа должна содержать меню, позволяющее осуществить провер¬ку всех методов классов. 2) Построить систему классов для описания плоских геометрических фигур: круг, квадрат, прямоугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол. Написать программу, демонстрирующую работу с этими классами. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов . P.S. Отдельное спасибо Cipa21 за решение задачи о студентах.
Люди, выручайте кто может, в универе сдаем лабы по С++, но я его не знаю, знаю С#, вот я выполнил 5 работ на шарпе. Помогите кому не трудно перевести с шарпа на плюсы, задачи начального уровня (чуть ли не на демонстрацию): классы, структуры, циклы и массивы. Выполнил на шарпе, всё рабочее, необходимо только перевести! Кому не сложно (для вас займёт буквально 5-10 минут) помогите пожалуйста!
Можно например так: 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(); }
Вобщем вот на шарпе лабы Не удивляйтесь выбору элементов для суммирования, так сказанно в условии. следующая 3-ая 4-ая [i][i][i][i][i][i] Только никак не усложняйте(лабы для универа, поэтому исключения рассматривать не надо), надо как есть, только перевести! Заранее благодарю![/i][/i][/i][/i][/i][/i]
Вот держи пока первую... 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<<"Поезда с таким номер не существует!"; }
Библиотеки подключил? #include <stdio.h> #include <stdlib.h> И что не работает? Конкретики не хватает.
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); }
Может так попробывать: Code: dgv1->Rows[i]->Cells[0]->Style->BackColor = Color.red; Вот тут можно посмотреть
это на C# а на С++ будет вот так Code: dgv1->Rows[i]->Cells[0]->Style->BackColor = Color::Red; всёравно спасибо за подсказку Но вот опять появился вопрос теперь этот поиск я попытался засунуть во 2 форму и там выдало кучу ошибок. Как мне сделать тот же самый скрипт но из фторой форма при учёте что DataGreadView находится в 1 форме
Я не совсем уловил суть вопроса, ты имеешь ввиду, из другого окна вызвать метод находящийся и принадлежащий к другому классу?