Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2012, 13:56   #1
severest
Пользователь
 
Регистрация: 18.04.2011
Сообщений: 32
По умолчанию С++ (рекурсия)

Код:
/* программа должна вывести:
"******
******
******"
а выводит: "*****"
*/
#include <iostream>
using namespace std;
void writeLine(char, int);
void writeBlock(char,int,int)

int main()
{
   writeBlock('*',6,3);
   return 0;
}

void writeLine(char a, int f)
{
   if (f==1)
       cout << a;
   else
   {
       cout << a;
       writeLine(a, f-1);
   }
}

void writeBlock(char a,int n,int m)
{
   if m==1
       writeLine(a, n);
   else
   {
       writeLine(a, n);
       writeBlock(a,n,m-1);
   
       cout << "\n";
       
   }
}
severest вне форума Ответить с цитированием
Старый 30.06.2012, 14:30   #2
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Код:
#include <iostream>
using namespace std;
void writeLine(char, int);
void writeBlock(char,int,int);

int main()
{
   writeBlock('*',6,3);
   return 0;
}

void writeLine(char a, int f)
{
   if (f==1)
       cout << a;
   else
   {
       cout << a;
       writeLine(a, f-1);
   }
}

void writeBlock(char a,int n,int m)
{
   if( m==1)
       writeLine(a, n);
   else
   {
       writeLine(a, n);
       
   
       cout << "\n";
       writeBlock(a,n,m-1);
   }
}
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 30.06.2012, 14:35   #3
severest
Пользователь
 
Регистрация: 18.04.2011
Сообщений: 32
По умолчанию

все равно только одну строку выводит
severest вне форума Ответить с цитированием
Старый 30.06.2012, 14:48   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

В качестве предположения
Код:
       writeLine(a, n);
       cout << "\r\n";
       writeBlock(a,n,m-1);
eoln вне форума Ответить с цитированием
Старый 30.06.2012, 15:20   #5
severest
Пользователь
 
Регистрация: 18.04.2011
Сообщений: 32
По умолчанию

не работает все равно
severest вне форума Ответить с цитированием
Старый 30.06.2012, 16:02   #6
severest
Пользователь
 
Регистрация: 18.04.2011
Сообщений: 32
По умолчанию

вот так работает
почему визуал C++ express 2010, говорит, что проект устарел?
как сделать, чтоб программа не закрывалась сразу?

Код:
#include <iostream>
using namespace std;
void writeLine(char, int);
void writeBlock(char,int,int);

int main()
{
	int j=0;

	
   writeBlock('*',6,3);
	cin >> j;
   return 0;
}


void writeLine(char a, int f)
{
   if (f==1)
   { cout << a;
    cout << "\n";}
   else
   {
       cout << a;
       writeLine(a, f-1);
   }
}

void writeBlock(char a,int n,int m)
{
   if (m==1)
       writeLine(a, n);
   else
   {
       writeLine(a, n);
       writeBlock(a,n,m-1);
   
    
       
   }
}
severest вне форума Ответить с цитированием
Старый 30.06.2012, 19:38   #7
LancX
Пользователь
 
Аватар для LancX
 
Регистрация: 30.04.2012
Сообщений: 52
По умолчанию

Цитата:
Сообщение от severest Посмотреть сообщение
вот так работает
как сделать, чтоб программа не закрывалась сразу?
Ты хочешь создать .exe файл?
При любом расчете, число, правильность которого для всех очевидна, становится источником ошибок.
LancX вне форума Ответить с цитированием
Старый 30.06.2012, 19:41   #8
severest
Пользователь
 
Регистрация: 18.04.2011
Сообщений: 32
По умолчанию

Цитата:
Сообщение от LancX Посмотреть сообщение
Ты хочешь создать .exe файл?
Можно и .exe, а какие еще можно создать?
severest вне форума Ответить с цитированием
Старый 30.06.2012, 19:59   #9
LancX
Пользователь
 
Аватар для LancX
 
Регистрация: 30.04.2012
Сообщений: 52
По умолчанию

Цитата:
Сообщение от severest Посмотреть сообщение
Можно и .exe, а какие еще можно создать?
Или проект или .exe. Студия не закрывает консоль после выполнения кода, а вот .exe закрывает, поэтому нужно дописать код, который будет держать консоль, пока пользователь "что-то" не сделает.

#include <conio.h>//Необходимая библиотека
Допиши в конце программы, пока не нажмешь Enter программа не закроется.
Код:
cout<<"Press \"Enter\" to exit"<<endl;
	if(_getch()==13)
	return;
При любом расчете, число, правильность которого для всех очевидна, становится источником ошибок.
LancX вне форума Ответить с цитированием
Старый 30.06.2012, 20:10   #10
LancX
Пользователь
 
Аватар для LancX
 
Регистрация: 30.04.2012
Сообщений: 52
По умолчанию

Поправил)
Код:
#include <iostream>
#include <conio.h>
using namespace std;

void writeBlock(char,int,int);

int main()
{
	writeBlock('*',6,4);

	cout<<endl<<"Press \"Enter\" to exit"<<endl;
	if(_getch()==13)
		return 0;
}


void writeBlock(char a,int n,int m)
{
	if(m==0)
		return;
		
		for(int i=0;i<n;i++)
			cout<<a<<" ";
		cout<<endl;
       writeBlock(a,n,m-1);
}
При любом расчете, число, правильность которого для всех очевидна, становится источником ошибок.
LancX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия (С) rublyabachka Помощь студентам 1 15.12.2011 02:11
рекурсия sergi Помощь студентам 4 25.02.2011 10:49
рекурсия qwerty98765 Помощь студентам 1 10.04.2010 15:22
рекурсия misha25525 Помощь студентам 4 25.03.2010 18:57