forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Пробелы (http://forum.boolean.name/showthread.php?t=12989)

impersonalis 23.07.2010 00:26

Ответ: Пробелы
 
тебе дать адеквтаный код или я ещё должен думать за ВашихАвторитетов? *импер_заводится*

.Squid 23.07.2010 00:42

Ответ: Пробелы
 
Тренер по С++.
- А нам тренер сказал делать 5 подходов по 10 Александреску в день.

ЗЫ. Прислушайся к Имперу. Перечитывай его сообщения пока не поймешь.

impersonalis 23.07.2010 02:04

Ответ: Пробелы
 
Вообще, задача о перестановках несолкько усложняет реализацию. Нам необходимо забраковывать сочетания с одинаковыми цифрами в числе (типа 001 010 100). Можно конечно сгенерить все состояния слова и отсеять лишние - но это ппц костыль.
Есть один вариант на примете - но хотелсоь бы его подшлифовать. Кстати, вот весь код (помимо генрации), сделанный по моим советам.
Код:

#include<iostream.h>
#include<string.h>
#include<iomanip.h>
#include<malloc.h>
#include<conio.h>


int fact(int a){
        if(a<=1)return 1;
        int s=1;
        for(int i=2;i<=a;i++){
                s*=i;
        }
        return s;
}

void main(){
        cin>>resetiosflags(ios::skipws);
        int act_indx=0;
        int i,j,k;
        int sz;
        char *s=new char[1];
        char b;
        int N,P;
        while(true){
                cin>>b;
                if(b==10){break;}
                s[act_indx]=b;
                act_indx++;
                s=(char*)realloc(s,act_indx+1);
        }
        cout<<"input - ok\n";
        for(i=0;i<act_indx;i++){
                cout<<s[i];
        }
        cout<<endl;
        sz=act_indx;
        for(i=0;i<sz-1;i++){
                b=s[i];
                for(j=i+1;j<sz;j++){
                        if(b==s[j]){
                                for(k=j;k<sz-1;k++){
                                        s[k]=s[k+1];
                                }
                                sz--;
                                j--;
                        }
                }
        }
        cout<<"compress ok\n";
        for(i=0;i<sz;i++){
                cout<<s[i];
        }
        cout<<endl;
        N=sz;
        P=fact(N);
        cout<<"total="<<P<<endl;
        char *W=new char[N];
        //
//---------------- =((
        //
        delete[]s;
        delete[]W;
       

        getch();
}

комменатриев нет - это плохо
имена переменных - неинутивны
код слабо фоматирован - жуть
нет всяческих обёрточек-контейнеров типа CString - олд_скуловое перевыделение рулит
привычные манипуляторы потока - чсв овер9к

den 23.07.2010 16:37

Ответ: Пробелы
 
Проболжаем тему ламерских вопросов:
Код:

#include <iostream>
using namespace std;
int dx[]={0,1,0,-1};
int dy[]={-1,0,1,0};
char m[100][100];
int w,h;
int f()
{
        int n=0;
        for(int i=0;i<w;i++)
        {
                for(int j=0;j<h;j++)
                {
                        if(m[i][j]=='*')
                        {
                                        for(int k=0;k<4;k++)
                                        {
                                                if(i+dx[k]>=0 && i+dx[k]<w && j+dy[k]>=0 && j+dy[k]<h)
                                                        m[i+dx[k]][j+dy[k]]='*';
                                        }
                        }
                }
        }
        for(int i=0;i<w;i++)
        {
                for(int j=0;j<h;j++)
                {
                        if(m[i][j]=='.') n++;
                }
        }
        return n;
        f();
}
void main()
{
        int mm=0,xod=0;
        cin>>w>>h;
        for(int i=0;i<w;i++)
        {
                for(int j=0;j<h;j++)
                {
                        cin>>m[i][j];
                }
        }
        for(int i=0;i<w;i++)
        {
                for(int j=0;j<h;j++)
                {
                        if(m[i][j]=='.') mm++;
                }
        }
        while(mm!=0)
        {
                mm=f();
                xod++;
        }
                cout<<xod;
}

Почему когда "*" в верхнем и/или левом ряду/столбце прога выдает ''1" ??


Часовой пояс GMT +4, время: 02:11.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot