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

  • Автор темы Автор темы European
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
здравствуйте!!!
я студнтка 1го курса....тут нам задали лабораторную....

======Телефонный справочник. Объявить структуру “Абонент”: с полями “Фамилия И.О.”, “должность”, “номер тел”, “Адрес”. Формировать записи об абонентах и сохранять в файле, дописывая в конец. Предусмотреть чтение этого файла и поиск по фамилии или по номеру телефона. Заполнить файл 15 конкретными записями. ======

подскажите пожалуйста как это делать....
заранее брагодарна=)
 
Привет всем, я первокурсник и только начал изучать С++. Очень нада на сегодня сделать одну задачку:


Так вот:
Заданна не пустая последовательность слов из латинских букв. Последним символом этой последовательности есть точка. Словами называются группы символов, которые разделенные одним или несколькими пробелами и не содержат пробелов внутри себя. Определить количество слов, которые не содержат заданной буквы.

Помогите если не сложно. Можно писать на мыло: alex.pryadka@gmail.com Буду очень благодарен :)

ДА и у меня задача должна быть выполненна с учетом принципа модульності. То есть главная функция (main) должны содержать лишь вызовы функций, которые выполняют: введение информации, ее обработку и вывод результатов. Единый допустимый образ передачи параметров - через список параметров функции.
 
Народ слушайте, чёт я туплю,почему второй strtok не работает?
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include<iostream.h>
int main()
{
char a[255],*p;			 
int k=0;
gets(a);											 //считываем в массив а текст
p = strtok(a," ,:.\n");						//ставим указатель на первое слово
k=strlen(p);
while(p = strtok(NULL," ,:.\n"))//запустим цикл для проверки остальных слов (пока слова
{												  //есть strtok не будет возвращать 0 и цикл будет выполняться
if(strlen(p)<k)				 //если длина слова меньше то:
{
k=strlen(p);				 //в k записываем длину нашего слова
}

}
p = strtok(a," ,:.\n");				 //ставим указатель на первое слово
cout<<strlen(p)<<" ";
if (strlen(p)==k)
{
cout<<p<<" ";
}
while(p = strtok(NULL," ,:.\n"))//запустим цикл для проверки остальных слов (пока слова
{ cout<<strlen(p)<<" ";											//есть strtok не будет возвращать 0 и цикл будет выполняться
if (strlen(p)==k)
{
cout<<p<<" ";
}
}
getch();
return 0;
}
(вообще надо вывести самые короткие слова)
 
да)прикольный код, так сразу и не переделаешь)я пока до такого не дорос)
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
int main(){
char a[255],b[255],w[20];
int m,t,j,i;
gets(a);
for(i=j=0;a[i];i++)
{
t=0;m=50;
while(a[i]&&isalpha(a[i]))	//буква
w[t++]=a[i++];		//слово в w
if(!a[i]) i--; // на один влево
w[t]=0;	 //первый w =0
if(t<m)
{
for(j=0,m=t;w[j];j++)
b[j]=w[j];
b[j]=0;
continue;	//повторяем while 
}
if(m&&t==m)
{
b[j]=32;
for(t=0;w[t];t++)
b[++j]=w[t];
b[++j]=0;
}
}
cout<<b<<endl;
getch();
return 0;
}
а что за проверка на букву:isalpha(a)?ето функция стандартная?
 
xVeteRx
while(p = strtok(NULL," ,:.\n")) почему тут 1 ровно только?????
xVeteRx continue; ужасна лучше юзать флаги пока циклы просты легко определить что и как а если они сложны и в большой программе с кучей функций continue; принесёт большую головную боль.и isalpha(); есть такая функция расшифровываеться is alphabetical, т.е являеться ли буквой символ погляди в MSDN)так же есть isalnum(); is alphabetical number, т.е являеться символ буквой или цифрой)
у меня помоему гораздо короче получилось
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
char string[100],Array[10][100];
char *point;
int i=0,minLength;
char seporator[]=" ,.//";
gets(string);
point=strtok(string,seporator);
minLength=strlen(point);
while(point!=NULL)
{
strcpy(Array[i],point);
if(strlen(point)<minLength)
minLength=strlen(point);
i++;
point=strtok(NULL,seporator);
}
for(int j=0;j<=i;j++)
if(strlen(Array[j])==minLength)
puts(Array[j]);
_getch();
return 0;
}
 
Разработать программу, осуществляющую оценку физического, эмоционального и интеллектуального состояния человека на основании гипотезы о биоритме. Считать, что начиная со дня рождения, состояние человека изменяется по синусоидальному закону с периодом, соответственно, 23 дня, 28 дней и 33 дня. Процедура должна осуществлять рас-чет синусоидальной функции для заданной текущей календарной даты, даты рождения и для каждого из значений периодов.

Нужно решить в среде Visual C++ 6.
 
Ребята!Вся надежда на вас!я не прошу написать мне прогу,я даже почти уверен что написал ее правильно!но она по какой то причине выдает неправильные значения!


Задача. НАписать программу реализующую решение систем линейных уравнений с помощью модифицированных жордановых исключений(2й способ)


Код:
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<conio.h>
#include<fstream>
#include<math.h>
//#include<strlen.h>
#include<stdio.h>
#include<time.h>
using namespace std;
int i,j,s_t,s_o,st,z_s=0;
int qqq,www;
double **matrix,**matr;
int k,l;
void ydalenie()
{


for(int y_i=0;y_i<s_o;y_i++)
{
matrix[y_i][k]=0;
}

}
void vivod()
{//вывод матрицы

for (int v_i=0;v_i<s_o;v_i++)
{cout<< endl;
for (int v_j=0;v_j<s_t;v_j++)
{
cout<<matrix[v_i][v_j]<< "	";
}}
cout<< endl;


}





void umnog()
{
for(int u_i=0;u_i<s_o;u_i++)
for(int u_j=0;u_j<s_t;u_j++)
if(u_i!=k && u_j!=l)
{
matrix[u_i][u_j]=(matrix[u_i][u_j]*matrix[k][l])-(matrix[k][u_j]*matrix[u_i][l]);
}

for (int d_i=0;d_i<s_o;d_i++)

for (int d_j=0;d_j<s_t;d_j++)

matrix[d_i][d_j]=((matrix[d_i][d_j])/(matrix[k][l]));


}

void raz()
{
for(int q=0;q<s_t;q++)
{qqq=l=z_s;
www=k=q;
if (matrix[z_s][q]!= 0)
{
break;
}}

//cout<<" razrechayhiy element "<<matrix[l][k]<<endl;

}





void main()
{


cout<<"vveditee stroku ";

cin>>s_o;

cout<<" vvedite stolbec ";
cin>>s_t;

////// выделение памяти под матрицу 
matrix = new double * [s_o];
for(i=0;i<s_o;i++)
{
matrix[i] = new double[s_t];
}

cout<<"zapoln"<<endl;

//////заполнение матриці
for (i=0;i<s_o;i++)
for (j=0;j<s_t;j++)
{
cin >>matrix[i][j];
}




for (int mega=0;mega<s_t;mega++)
{vivod();
raz();
cout<<" razrechayhiy element "<<matrix[l][k]<<endl;

umnog();

//del();
ydalenie();
vivod();
//s_t--;
z_s++;

}
}


понимаете ли в чем дело,решение слау этим методом проходит путем удаления столбцов пока не останется один,я просчитую матрицу 3 на 4,тоесть решение находится в три шага,но так выходит что первый шаг правильно считает,второй до третьей строки тоже правильно,а дальше оно считает правильно,,но не делит на разрешающий елемент как того требует метод жордана.Кто в курсе в чем беда помогите плиз!!
 
diden прошу выложите код в нормальном виде,с отступами )ужасный какой то код((((и напишите коментарии к каждой функции что функция делает)
 
Приветствую всех!
Есть одна задача. Привожу условие:
Создать класс для хранения календарных дат. Обеспечить возможность работы с датами в различных форматах, изменения даты на заданное количество дней. Перегрузить операцию «–» для нахождения разности дат и операции сравнения. Для класса определить оператор <<. Стандартные функции и типы С для работы с датами не использовать. В дополнение к этому нужно еще сделать шаблон класса.
Программка почти готова, но есть проблемы с шаблоном класса. Вот что компилятор выдает:
[C++ Error] template_date.cpp(23): E2080 'data<VType>::operator <<(ostream &,data<VType> &)' must be declared with one parameter
Я никак не могу сделать шаблон для перегруженных операторов, для класса и методов по идее все правильно сделал (поправьте, если ошибаюсь).
P.S. Исходики в прикрепленном файле.
 

Вложения

  • data.rar
    data.rar
    1,5 КБ · Просмотры: 169
  • data.rar
    data.rar
    1,9 КБ · Просмотры: 155
Преветсвую всех!!!
у меня возникла небольшая проблемка, просьба помоч кто сможет.



/* подключаем библиотеки */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

#define FALSE 0
#define TRUE 1
#define FILENAMESIZE 256

/* ключевое слово для определения типа */
typedef
/* определяем структуру list */
struct list {
char src[FILENAMESIZE];
char dst[FILENAMESIZE];
/* указатель на следующий элемент структуры */
struct list *next;
}
/* название типа данных для структуры LISTFILE */
LISTFILE;

/* операция копирование файлов */
int copyfile(const char *dst, const char *src)
{
FILE *in, *out;
int c;
if ((in = fopen (src, "rb")) == NULL){
printf("Error open src file %s\n", src);
return FALSE;
}
if ((out = fopen (dst, "wb")) == NULL){
printf("Error open dst file %s\n", dst);
fclose(out);
return FALSE;
}

while (!feof(in)){
c = fgetc(in);
if (feof(in)) break;
fputc(c, out);
}

fclose(in);
fclose(out);
return TRUE;
}

int is_dir(const char *name)
{
/* атрибуты файла */
DWORD att;
att = GetFileAttributes(name);
if (att == 0xFFFFFFFF) return FALSE;
if (att & FILE_ATTRIBUTE_DIRECTORY) return TRUE;
return FALSE;
}

/* проверка корректности дирриктории */
/* входные данные */
/* dst - то куда копируем src */
/* src - копируемый */
/* выходные данные */
/* нет */
/* возвращаемое значение */
/* нет */
void correct_dirpath(char *dst, const char *src)
{
int i;
for (i = 0; src != 0; i++) dst = src;
for (i--;dst == '\\' || dst == '/'; i--);
dst[++i] = '\\';
dst[++i] = '\\';
dst[++i] = 0;
}

/* заполнение дирриктории */
/* входные данные */
/* from */
/* to */
/**/
LISTFILE * make_list_dd(LISTFILE *f, char *from, char *to)
{
LISTFILE *t;
HANDLE find;
WIN32_FIND_DATA finddata;
char tmp[FILENAMESIZE];

correct_dirpath(tmp, from);
strcpy(from, tmp);
sprintf(tmp, "%s\\*", tmp);
find = FindFirstFile(tmp, &finddata);
if (!find) return f;

do {
sprintf(tmp, "%s%s", from, finddata.cFileName);
if (!is_dir(tmp)) {
t = (LISTFILE *)malloc(sizeof(LISTFILE));
t->next = f;
strcpy(t->src, tmp);
sprintf(tmp, "%s%s", to, finddata.cFileName);
strcpy(t->dst, tmp);
f = t;
}
if (!FindNextFile(find, &finddata)) break;
} while(TRUE);
FindClose(find);
return f;
}

/* основная функция */
/* входные данные */
/* argc - количество параметров командной строки */
/* argv - параметры командной строки */
/* выходные данные */
/* нет */
/* возвращаемое значение */
/* нет */
void main (int argc, char *argv[])
{
LISTFILE *f = NULL, *t = NULL;
char tmp[FILENAMESIZE];

if (argc < 3) {
printf("Count of argument is wrong!\n");
return;
}

/* если argv[1] и argv[2] оба являются диррикторией */
if (is_dir(argv[1]) && is_dir(argv[2])) {
printf("Copy file from dir %s to dir %s\n", argv[1], argv[2]);
correct_dirpath(tmp, argv[2]);
f = make_list_dd(f, argv[1], tmp);
/* если argv[1] является диррикторией а argv[2] не является диррикторией */
} else if (is_dir(argv[1])) {
printf("Copy file from dir %s to file %s is not valid\n", argv[1], argv[2]);
/* если argv[2] является диррикторией а argv[1] не является диррикторией */
} else if (is_dir(argv[2])) {
printf("Copy file from %s to dir %s\n", argv[1], argv[2]);
f = (LISTFILE *)malloc(sizeof(LISTFILE));
f->next = NULL;
strcpy(f->src, argv[1]);
correct_dirpath(tmp, argv[2]);
sprintf(tmp, "%s%s",tmp, argv[1]);
strcpy(f->dst, tmp);
/* если argv[1] и argv[2] оба являются файлами */
} else {
printf("Copy file from %s to file %s\n", argv[1], argv[2]);
f = (LISTFILE *)malloc(sizeof(LISTFILE));
f->next = NULL;
strcpy(f->src, argv[1]);
strcpy(f->dst, argv[2]);
}

for (t = f; t != NULL; t = t->next) {
if (copyfile(t->dst, t->src)) printf("Copy file %s to %s is complited!\n", t->src, t->dst);
}

while (f) {
t = f;
f = t->next;
free(t);
}
}


по данной программе нужно составить блок схему помогите пожайлуста.
 
Доброго времени суток всем. Помогите с задачками.

  • Отформатировать текст,находящийся в файле,следующим образом:каждое предложение должно иметь свой порядковый номер;начинаться с красной строки.
  • Дана последовательность чисел а1,а2,...,аn.выяснить будет ли она возрастающей.

Заранее спасибо :)
 
Помогите решить задачи на C++ срочно нужно знакомому...
 
Всем привет! пожалуста помогите сделать лабу...

1. Разработать классы - объекты на заданную тему (предок и потомок). Написать основную (демонстрационную) программу, которая демонстрирует использование всех полей и методов.
2. оформить программу как трифайловый проект:
- главная программа; - header файл с заголовками классов; - одноименный файл с реализацией методов.
Поля: текст, длинна; Конструктор: образовывает переменную (умолчание пустую строку), выводит сообщение о создании шаблона и самой строки.
Деструктор: выводит сообщение об уничтожении шаблона.
Методы: значение полей (читать - изменить) , вывести строку на экран, конструктор, который образует строку как повторение некоторого символа несколько раз (напр."ррррр"), ...
Развитие темы: конструкторы которые образуют строку как конкатенацию двох других как подстроку другй строки,.. Перегрузка ++а или а++ прибавление пробелов слева или справа
 
Такая задача: Есть три программы,из них нужно сделать одну с собственным интерфейсом.Подскажите, с чего начать и какими программами пользоваться лучше?
 
Добрый вечер! Не могли бы Вы помочь дописать программу? Задание такое:

По заданной логической формуле построить эквивалентную логическую формулу, в которой знак отрицания встречается только перед переменными.
Указания. Воспользоваться эквивалентными преобразованиями
NOT NOT переменная ? переменная
NOT(формула1 OR формула2) ? NOT (формула1 ) AND NOT(формула2)
NOT(формула1 AND формула2) ? NOT (формула1 ) OR NOT(формула2)

Программа сделана в виде работы со строкой путём проверки, удаления, замены и перемещения символов...



Код:
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
#define N 100

void main()
{
char func[50];
cout<<"vvedite funkciu"<<endl;
gets(func);
int n=strlen(func);

//проверка допустимых символов. мы используем в качестве переменных a,b,c
//и операции: отрицание(!), конъюнкция (&), дизъюнкция (v)

for (int i=0;i<n;i++)
{
{
if(func[i]!='('&func[i]!=')'&func[i]!='!'&func[i]!='v'&func[i]!='&'&func[i]!='a'&func[i]!='b'&func[i]!='c')
{
cout<<"func error"<<endl;
return;
}
}
}

//проверка правильности расположения символов

int mas1[N]; int mas2[N];
for(int i=0;i<n;i++)
{ 
mas1[i]=0; mas2[i]=0;
}

for (int i=0;i<n;i++)
{
if(func[i]=='(')
{
if(i!=0)
{
if (func[i-1]!='&'&func[i-1]!='v'&func[i-1]!='!'&func[i-1]!=')'&func[i-1]!='(')
{
cout<<"func error"<<endl;
return;
}
}
if(i!=n-1&i!=n-2)
{
if (func[i+1]!='a'&func[i+1]!='b'&func[i+1]!='c'&func[i+1]!='!'&func[i+1]!='(')
{
cout<<"func error"<<endl;
return;
}
}

if(i==n-1&i==n-2)
{
cout<<"func error"<<endl;
return;
}
}

if (func[i]==')')
{
if(i!=0&i!=1)
{
if(func[i-1]!='a'&func[i-1]!='b'&func[i-1]!='c'&func[i-1]!=')')
{
cout<<"func error"<<endl;
return;
}
}
if(i!=n-1)
{
if(func[i+1]!='&'&func[i+1]!='v'&func[i+1]!=')')
{
cout<<"func error"<<endl;
return;
}
}
if(i==0&i==1)
{
cout<<"func error"<<endl;
return;
}
}

if(func[i]=='!')
{
if(i!=0)
{
if(func[i-1]!='('&func[i-1]!='!'&func[i-1]!='v'&func[i-1]!='&')
{
cout<<"func error"<<endl;
return;
}
}
if(i!=n-1)
{
if(func[i+1]!='a'&func[i+1]!='b'&func[i+1]!='c'&func[i+1]!='('&func[i+1]!='!')
{
cout<<"func error"<<endl;
return;
}
}
if(i==n-1)
{
cout<<"func error"<<endl;
return;
}
}

if(func[i]=='v'||func[i]=='&')
{
if(i!=0)
{
if(func[i-1]!=')'&func[i-1]!='a'&func[i-1]!='b'&func[i-1]!='c')
{
cout<<"func error"<<endl;
return;
}
}
if(i!=n-1)
{
if(func[i+1]!='a'&func[i+1]!='b'&func[i+1]!='c'&func[i+1]!='('&func[i+1]!='!')
{
cout<<"func error"<<endl;
return;
}
}
if(i==0||i==n-1)
{
cout<<"func error"<<endl;
return;
}
}

if(func[i]=='a'||func[i]=='b'||func[i]=='c')
{
if(i!=0)
{
if(func[i-1]!='('&func[i-1]!='!'&func[i-1]!='v'&func[i-1]!='&')
{
cout<<"func error"<<endl;
return;
}
}
if(i!=n-1)
{
if(func[i+1]!=')'&func[i+1]!='v'&func[i+1]!='&')
{
cout<<"func error"<<endl;
return;
}
}
}

if(func[i]=='(')
{
mas1[i]++;
}
if(func[i]==')')
{
mas2[i]++;
}
}

int s1;int s2; s1=0; s2=0;

for(int i=0;i<n;i++)
{
s1+=mas1[i];
s2+=mas2[i];
}
if(s1!=s2)
{
cout<<"func error"<<endl;
return;
}

//начало преобразования. 
//если перед отрицанием стоит ещё одно отрицание, то их просто убираем. 
//если перед отрицанием стоит открывающаяся скобка, то определяем выражение в скобках и раскрываем по закону де моргана.
//но каким образом это сделать?... 


for(int i=0;i<n-1;i++)
{
if(func[i]=='!')
{
if(func[i+1]=='!')
{
.......
 
Здравствуйте
Сочту за великое дело помочь человеку, который не умеет работать со стеками.
Описать класс, реализующий стек. Написать программу, использующую этот класс для отыскания прохода по лабиринту.
Лабиринт представляется в виде матрицы, состоящей из квадратов. Каждый квадрат либо открыт, либо закрыт. Вход в закрытый квадрат запрещен. Если квадрат открыт, то вход в него возможен со стороны, но не с угла. Каждый квадрат определяется его координатами в матрице. После отыскания прохода программа печатает найденный путь в виде координат квадратов.

не могу исправить ошибку. Пожалйста, проверьте шибку, а если можете предложить более рациональные варианты - буду примного благодарен)

/*Основной файл main.cpp*/

#include "stack.h"

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

/*
* Перечисление field - поле лабиринта
*/
enum field
{
f_free = ' ', //free space
f_wall = '#', //wall
f_exit = 'E', //exit
f_entr = 'S', //start
};


/* Функция print_position
* Выводит текущую позицию в лабиринте
*/
void print_position(const vector<vector<char> >& labirint,const pair<int,int>& pos)
{
system("cls");
for (size_t i=0; i<labirint.size(); ++i)
{
for (size_t j=0; j<labirint.size(); ++j)
{
cout << ( (i==pos.first && j==pos.second)?
(char)0x15: labirint[j]);
}
cout <<'
';
}
cout << "Press any key"; cin.get();
}

/* Функция find_way - находит путь в лабиринте
*
*/
bool find_way(const vector<vector<char> >& labirint,
stack <pair<int,int> >& way)
{
pair<int,int> p_curr = way.pop_front();

//проверяем текущую клетку
switch (labirint[p_curr.first][p_curr.second])
{
case f_exit: way.push_front(p_curr); return true;
break;
case f_wall: way.push_front(p_curr); return false;
break;
default:
break;
}

//выводим текущую позицию решения
// print_position(labirint,p_curr);

//пытаемся шагнуть дальше
pair<int,int> p_prev,p_next;
if (way.empty())
{
p_prev = make_pair<int,int>(-10,-10);
way.push_front(p_curr);
}
else
{
p_prev = way.pop_front();

way.push_front(p_prev);
way.push_front(p_curr);
}

//перебираем возможные ходы
for (int dx = -1; dx <= 1; dx++)
for (int dy = -1; dy <= 1; dy++)
{
//определяем следующую клетку
if (!dx && !dy || dx && dy) continue;
else
p_next = make_pair(p_curr.first +dx,p_curr.second +dy);

if (p_next != p_prev &&
p_next.first >=0 && (unsigned)p_next.first <labirint.size() &&
p_next.second>=0 && (unsigned)p_next.second<labirint[0].size())
{
way.push_front(p_next);
if (find_way(labirint,way)) return true;
else
way.pop_front();
}
}

return false;
}

/* Entry point
*
*/
void main()
{
const char *labirint[] =
{
"##############",
"# E",
"# #### #######",
"# # #",
"############ #",
"#S #",
"##############",
};

//здесь будет храниться путь
stack<pair<int,int> > way;

//заполняем матрицу лабиринта
vector <vector<char> > labirint_v(sizeof(labirint)/sizeof(char*));
for (size_t i=0; i<sizeof(labirint)/sizeof(char*); ++i)
{
size_t length = strlen(labirint);
labirint_v.resize(length);
for (size_t j=0; j<length; ++j)
{
if ( (labirint_v[j] = labirint[j]) == f_entr && way.empty())
//точка старта
way.push_front(make_pair(i,j));
}
}

//ищем решение
if (find_way(labirint_v,way))
{
//переворачиваем путь
stack<pair<int,int> > way_inversed;
while (!way.empty())
way_inversed.push_front(way.pop_front());

//печатаем путь
while (!way_inversed.empty())
print_position(labirint_v,way_inversed.pop_front());
}
else
cout << "Way doesn't exist" << endl;
}


/* Класс stack - файл stack.h
*
*/

template <class Ty>
class stack
{
private:
class stack_node
{
Ty data;
stack_node* next;

public:
stack_node(stack_node* _next)
:next(_next) {}

friend class stack;
};

stack_node* first;

public:
stack()
:first(0) {}

~stack()
{
clear();
}

public:
void push_front(const Ty& val)
{
first = new stack_node(first);
first->data = val;
}

Ty pop_front()
{
Ty tmp_val = first->data;

stack_node* to_del = first;
first = first->next;
delete to_del;

return tmp_val;
}

bool empty() const
{
return (first == 0);
}

void clear()
{
stack_node* to_del;
for (stack_node* curr = first;curr;)
{
to_del = curr; curr = curr->next;
delete to_del;
}
}
};
 
Здравствуйте
Сочту за великое дело помочь человеку, который не умеет работать со стеками.

void main()
{
const char *labirint[] =
{
"##############",
"# E",
"# #### #######",
"# # #",
"############ #",
"#S #",
"##############",
};

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

А вообще у любого лабиринта есть такая штука - если идти все время по правой стенке то прийдешь к выходу ... можешь учесть этот момент в программе
 
Хай .

Есть одна проблемка ...

Как правильно организовать ввод-вывод данных ...

чёто не получаеться ...

#include <iostream>
#include <map>
#include <string>
#include <algorithm>

using namespace std ;

const int n = 2 ;

typedef map<string , int> StringIntMap ;

void AddData(StringIntMap database) ;

void printElem(StringIntMap &database) ;

int main() {

StringIntMap database ;

AddData(database) ;

printElem(database) ;

return 0 ;
}

void AddData(StringIntMap database) {
int population ;
string country ;
int i = 0 ;
while(cout << "Input country : " , cin.get() , getline(cin , country) , i != n) {
cout << "Input population : " ;
cin >> population ;
database[country] = population ;
i++ ;
}
}

void printElem(StringIntMap &database) {
StringIntMap::iterator pos ;
cout << "--------------Database--------------" << endl << "Country | Population " << endl ;
for(pos = database.begin() ; pos != database.end() ; ++pos) {
cout << pos->first << " " << pos->second << endl ;
}
}


// Зарание спс =)
 
Доброе время суток.
Дано окно и слово. Нужно окно перемещать по вертикали, а текст по горизонтали. Конечно же с применением switch.
P.S. Хотя бы пару строк перемещения :rolleyes:
Спасибо.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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