Решение лабораторных, контрольных и т.д. на С++

  • Автор темы Автор темы European
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
pererva
Люди! Помогите!
Есть 2 текстовых файла. Необходимо cмешать файлы через N строк (N вводится с клавиатуры)

вот если тебе нужно не смешать файлы, а смешать содержимое текстовых файлов, через Н строк.

то вопрос номер 2: как их смешивать?

а) на входе : задается количество строк Н, т.е. пример Н=5, берем 5 строк из 1 файла, берем 5 строк из 2 файла, потом 5 строк из первого? так?
и выводим на экран, или сохр в файл, или сохраняем в один из файлов 1,2?

А в противном случае - я не знаю :)
 
на входе : задается количество строк Н, т.е. пример Н=5, берем 5 строк из 1 файла, берем 5 строк из 2 файла, потом 5 строк из первого? так?
Да. и нужно сохранить в файл (1 или 2 - без разницы)
 
Здравствуйте. Вот написала одну программку(как ни странно, практически хорошо работающую :) ). Но вот есть одна маленькая проблемка. При повторном использовании функции введения с консоли она пропускает и не берет первую строку. Выход в принципе я нашла(если расскоментировать строку в addx то при первом использовании функции необходимо нажать enter а при последующих оно будет игнорировать именно эту строку и данные вводяться хорошо). Но вот в чем проблема как таковая я не поняла. Может кто нибудь на досуге вдруг захочет объяснить непонятливой студентке-первокурснице, какого рода полтергейст поселился в мей замечательной програмке? :) Буду очень благодарна.
Вот код.
[codebox]
# include <iostream>
#include <string>
using namespace std;
class List
{
public:
struct ListItem
{

string punkt;
int nomer;
string FIO;
int den;
int mesac;
int god;
ListItem *Next;
};

ListItem *First;
public:
List(){
First=NULL;
}
List(ListItem *a)
{
First=a;
}
ListItem* addx (ListItem *a)//добавление элемента в список из проги
{
ListItem * ref=new ListItem;
ref->den=a->den;
ref->god=a->god;
ref->mesac=a->mesac;
ref->nomer=a->nomer;
ref->punkt=a->punkt;
ref->FIO=a->FIO;
ref->Next=First;
First=ref;
return First;
}
ListItem* addx()//добавление элемента в список из консоли
{
ListItem * ref=new ListItem;
//string str;
getline(cin,str);
cout<<"\nВведите Фамилию и инициалы заказчика:\n";
getline(cin,str);
ref->FIO=str;
cout<<"\nВведите пункт назначения:\n";
getline(cin,str);
ref->punkt=str;
cout<<"\nВведите номе рейса:\n";
cin>>ref->nomer;
cout<<"\nВведите дату:\n\tдень:";
cin>>ref->den;
cout<<"\n\tмесяц:";
cin>>ref->mesac;
cout<<"\n\tгод:";
cin>>ref->god;
ref->Next=First;
First=ref;
return First;
}
void List::InsertFirst(ListItem *w)//вставить в начало списка
{
ListItem *a=new ListItem;
a->punkt=w->punkt;
a->nomer=w->nomer;
a->FIO=w->FIO;
a->mesac=w->mesac;
a->den=w->den;
a->god=w->god;
a->Next=First;
First=a;
}
void deleteThis (ListItem *a)//удаление определенного элемента
{
try
{
ListItem *A=new ListItem;
A=NULL;
ListItem *p=new ListItem;
ListItem *i=new ListItem;
p=First;
i=p->Next;
if((p->FIO==a->FIO)&&(p->nomer==a->nomer)&&(p->den==a->den)&&(p->mesac==a->mesac)&&(p->god==a->god))
{
First=First->Next;
delete p;
}
else
{
while (i!=NULL)
{
if((i->FIO==a->FIO)&&(i->nomer==a->nomer)&&(i->den==a->den)&&(i->mesac==a->mesac)&&(i->god==a->god))
A=p;

p=p->Next;
i=i->Next;

}
ListItem *tmp=A->Next;
if (tmp==NULL)
throw "Нет элемента, коиорый требуется удалить!\n";

A->Next=tmp->Next;
delete tmp;
}
}
catch (char*)
{cout<<"Нет элемента, который требуется удалить!\n";}
}
void PrintData(int d,int m,int g)//поиск элементов по дате
{
int c=0;
ListItem *q;
q=First;
if (q==NULL)
cout<<"Список пуст!\n";
else
while (q!=0)
{
if((q->den==d)&&(q->mesac==m)&&(q->god==g))
{
cout<<q->FIO<<endl<<q->punkt<<endl<<q->nomer<<endl<<q->den<<"."<<q->mesac<<"."<<q->god<<"\n********\n";
c++;
}
q=q->Next;
}
if(c==0)
{
cout<<"Такого элемента нет!\n";
}
}
void PrintList()//распечатка всех элементов
{

ListItem *p=First;
int n=1;
if(p==NULL)
cout<<"Лист пуст\n";
else
while(p)
{
cout<<n<<":"<<p->FIO<<endl<<p->punkt<<endl<<p->nomer<<endl<<p->den<<"."<<p->mesac<<"."<<p->god<<"\n********\n";
n++;
p=p->Next;
}
}
};
int main()
{
setlocale (LC_ALL,".1251");
List:: ListItem a={"Англия",876,"ТТТ",17,10,2010};
List::ListItem b={"Франция",123,"MMM",17,8,2009};
List:: ListItem *r,*y;
r=&a;
y=&b;
List t®;
List list1;
list1.PrintList();
list1.addx®;
list1.addx®;
list1.PrintList();
cout<<"Добавление элемента\n";
list1.addx(y);
list1.PrintList();
cout<<"Удаление элемента\n";
list1.deleteThis®;
list1.PrintList();
cout<<"Поиск элемента\n";
list1.PrintData(17,8,1990);
cout<<"**********************************\n";
t.PrintList();
list1.PrintList();
cout<<"***********NEW**********\n";
list1.addx();//добавляем в список данные сконсоли
list1.addx();
list1.PrintList();
return 0;
}
[/codebox]
Если кому-то интересно условие, то вот оно
[codebox]
Составить программу, которая содержит текущую информацию о заявках на авиабилеты.
Каждая заявка содержит:
• Пункт назначения;
• Номер рейса;
• Фамилию и инициалы пассажира;
• Желаемую дату вылета.
Программа должна обеспечивать:
• Хранение всех заявок;
• Добавление заявок в список;
• Удаление заявок;
• Вывод заявок по заданному номеру рейса и дате вылета;
• Вывод всех заявок.
Организовать ввод с консоли(можно на английском языке.
[/codebox]
 
rrrFer
Ну вообще то cin читает до первого пробела,а имя фамилия и отчество какраз через этот самый пробел и пишуться :) Ну а если в твоем исправленом варианте вводить через пробел, то получается еще хуже,чем было :)
И,кстати, что в моей было нен так тогда?
 
Lotti На первый взгля непонятно вобщем как твой код работает. Как возвращаешься к началу cписка?
ListItem *First; должен указывать всегда на cамый первый элемент списка, а тв его делаешьт указываюшим на текущий:
ref->Next=First;
First=ref;
Это лишнее. В addx делаешь так:
ListItem * ref->first = new ListItem;
ref = ref->first;
// и заполняешь
когда надо вернуться к началу делаешь так:
ref = first;

Но должен быть еще указатель который указывает всегда на конец списка.
ListItem *end;
Вот его надо всегда устонавливать на текущий элемент. Так:
Код:
ListItem *ref->First = new ListItem;
ref = ref->First;
...
End = ref;
 
Всем привет! Помогите с контрольными по С++, Я пока не совсем понимаю этот язык. Заранее Спасибо!
4.12 Написать программу, которая переводит время из ми-нут и секунд в секунды. Извне вводятся минуты и секунды. В программе предусмотреть проверку на правильность введенных данных (только положительные, кроме того число минут <=60 и число секунд <=60).
5.12 Написать программу, которая выводит таблицу квадра-тов первых пяти целых положительных нечетных чисел.
6.12 В приведённом ниже задании рассмотреть указанную по-следовательность в цикле и выйти из цикла, достигнув указанного условия с выдачей порядкового номера члена, при котором достигнуто условие. Если же за m оборотов цикла условие не достигнуто, напечатать об этом сообщение.
6.12.JPG
7.12 Дан массив из N элементов (целые числа). Опреде-лить сумму тех, которые нечетны и отрицательны.
8.12 Таблица футбольного чемпионата задана квадратной матрицей порядка n, в которой все элементы, принадлежа-щие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали, равен 2,1 или 0 (число очков, набранных в игре: 2 — выигрыш, 1 — ничья, 0 — про-игрыш).
Определить номера команд, прошедших чемпионат без поражений.
9.12 Написать функцию, которая вычисляет сопротивление цепи, состоящей из двух проводников. Параметрами ее яв-ляются значения сопротивлений, а также тип соединения — последовательное или параллельное (цифрами 1 или 2). Проверить ее в работе, написав программу с ее использо-ванием.
 
Titanic
У меня все работает, все ок, препод принял и не в том же суть!
Я же написала, в чем проблема!
Вы хотите сказать, что если это добавить, то не будет пропускат? Хм, что то я так и не понимаю почему у меня пропускало :D
 
Всем привет! Помогите с контрольными по С++, Я пока не совсем понимаю этот язык. Заранее Спасибо!
тебе именно на С++, с использованием класоов?
или можно просто на С?
под такие задачки классы не нужны, но если ради тренировки....
 
привет помогите пожалуйста вот с этим. В русском языке как, правило после букв Ж, Ч, Ш, Щ, пишется И, А, У, а не Ы, Я, Ю, (за исключением слов ЖЮРИ, БРОШЮРА, ПАРАШЮТ). Проверить заданный текст на соблюдение этого правила и исправить ошибки. При проверке регистр букв не учитывать. Слова, в которых были исправлены ошибки, вывести прописными буквами. В тексте в каждой строке слова разделены произвольным количеством проббелов. Пробелы могуст стоять перед первым словом и за последним. Исходный текст и полученные результаты должнв бвть в различных файлах. Решить задачу с помощью функций.

на с++
 
тебе именно на С++, с использованием класоов?
или можно просто на С?
под такие задачки классы не нужны, но если ради тренировки....
Мне на С++, Буду очень благодарен если можешь чем нить помоч :) И у меня есть вопрос, Не знаешь Есть ли такая прога что бы Блок-схемы о написанной программе делала, А то ни как самому не получаетсся сделать, Кроме 5_12-ой задачи.
 
Мне на С++, Буду очень благодарен если можешь чем нить помоч :) И у меня есть вопрос, Не знаешь Есть ли такая прога что бы Блок-схемы о написанной программе делала, А то ни как самому не получаетсся сделать, Кроме 5_12-ой задачи.
Тебе насколько срочно?
Насчет блок-схем - если хочешь хоть немного разобраться с программированием, стоит научиться рисовать их самому.
На такие мелкие программы на блок схему уходит больше труда, чем пользы, а вот на крупные проекты все совсем наоборот.
Я тоже забивал в свое время на составление блок - схем.....
Пока не попытался удержать в памяти схему работы СУБД, которую нам задали написать на С.
Короче, говори когда тебе они нужны, а то я до конца недели довольно-таки занят.


А ты на С их сделать можешь сам?
Если да, то рекомендации довольно простые, если нет, то сложнее.
 
Тебе насколько срочно?
Насчет блок-схем - если хочешь хоть немного разобраться с программированием, стоит научиться рисовать их самому.
На такие мелкие программы на блок схему уходит больше труда, чем пользы, а вот на крупные проекты все совсем наоборот.
Я тоже забивал в свое время на составление блок - схем.....
Пока не попытался удержать в памяти схему работы СУБД, которую нам задали написать на С.
Короче, говори когда тебе они нужны, а то я до конца недели довольно-таки занят.


А ты на С их сделать можешь сам?
Если да, то рекомендации довольно простые, если нет, то сложнее.
С первыми тремя я уже разобрался, А теперь мне нежны 6.12 и 7.12, В течении 2-х дней :) Хочется Четыре получить :)
 
Помогите пожалуйста решить задачу на С++, если сможет кто-нибудь.

Создать класс Студенты, имеющий данные о фамилии, имени, отчестве, группе, специальности студента. Определить конструктор без параметров, конструктор с тремя параметрами. Конструктор без параметров выделяет место для одного объекта и инициализирует его в ноль. Деструктор освобождает память. Определить методы доступа к данным класса, методы добавления и удаления студента из группы, функцию поиска по фамилии студента. Определить функцию печати. Проверить работу этого класса.

Заранее Спасибо!!!
 
Помогите если не трудно.Нужно найти самое длинное симметричное слово.
#include<iostream.h>
#include<conio.h>
int main()
{
char a[40],b[40];int i=0,k;int lenght=0,flag;
do
{

a=getche();
i++;
if (a[i-1]==13) break;
if (a[i-1]==23)
{
flag=1;
k=i;
i=0;
for (int j = 0; j <= k/2; j++)
{
if (a[j]!=a[k-j]) flag=0;
}
}
if (flag==1 && k>lenght)
{
lenght=k;
for (int j=0; j <= k; j++) b[j]=a[j];
}
}while(1);
cout<<endl;
for (i = 0; i <=lenght; i++) cout<<b;
getch();
return 0;
}
выдаёт билиберду какуюто то треугольник,а если много слов ввести то вообще финиш(( :wacko:
 
Есть программа которая разрезает картинку на 9ть частей в произвольном порядке (тоесть как несобраный пазл) нужно чтобі при правильном сборе картинки программа відавала сообщение: вы выиграли!
вот код который есть
Код:
#include <vcl.h>
#pragma hdrstop

#include "UMove.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int X0, Y0;
bool move = false;
TRect rec;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TImage * Pict = new TImage(Form1);
Pict->AutoSize = true;
/* В следующем операторе указано имя загружаемого файла */
Pict->Picture->LoadFromFile("CUS6.BMP");
Image1->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(0,0,Pict->Width / 3,Pict->Height / 3));
Image3->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(Pict->Width / 3,0,Pict->Width *2/ 3,Pict->Height / 3));
Image2->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(Pict->Width *2/ 3,0,Pict->Width,Pict->Height / 3));

Image5->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(0,Pict->Height / 3,Pict->Width / 3,Pict->Height *2/ 3));
Image4->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(Pict->Width / 3,Pict->Height / 3,Pict->Width *2/ 3,Pict->Height *2/ 3));
Image6->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(Pict->Width *2/ 3,Pict->Height / 3,Pict->Width,Pict->Height *2/ 3));

Image9->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(0,Pict->Height *2/ 3,Pict->Width / 3,Pict->Height));
Image7->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(Pict->Width / 3,Pict->Height *2/ 3,Pict->Width *2/ 3,Pict->Height));
Image8->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,
Rect(Pict->Width *2/ 3,Pict->Height *2/ 3,Pict->Width,Pict->Height));

+ код для каждого имейджа чтобы отдельные части можно было тягать по форме....
 
Разделитель пробел. Симметричное слово типо шалаш алла самас ...(поленом по умному) )не пойму в чём ошибка треугольник выводит и всё тут(
 
Ребят мне с моим С++ ктото может помочь?
 
Подскажите пжлст,где можно взять исходник самых примитивных пазлов под C++ builder???
 
rrrFer спасибо большое, работает вроде, только if (flag==1 && k>lenght) ==1 забыл, а так вроде всё отлично, только интересно почему у меня треугольник выводило, где-то в ифах накосячил?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!