Problem sus ohliuv:))
11 отговора
591 прегледа
Problem sus ohliuv:))
Imam edna zada4ka:
Ohliuv do N, v slu4aia N=3, izmislil sum algoritum, teoriti4no e veren no na praktika
neshte da ba4ka, stignal sum do momenta v koito mi iskarva uglite na kvadrata pri st-st 3 ama pri druga st-st zaciklq...
1 2 3
8 9 4
7 6 5
#include <stdio.h>
void main()
{
int mas[100][100];
int a,inda,indb,q,u,z,l,n,c,vektor;
printf("vavedi n=="); scanf("%d",&n); //tuka znam 4e trqbva dainitializiram masiva
inda=1; indb=1; vektor=1; // oba4e i kato go initializiram pak 4ushka..
//znam 4e akoda ima i nqkoi neto4nosti
//i promenlivite sa dosta, no dori i super
// iz4isten pak nevurvi i zaciklq pri n!=3
//na4alo na switch!
beg:switch(vektor)
{
case 1:
{//---->
for(a=inda;a<=n;a++)
{
mas[indb][a]=mas[indb][a-1]+1;
if(mas[indb][a+1]!=0 || mas[indb][a]==n)
{
inda=a;
vektor=2;
goto beg;}
}
}
case 2:
{//posoka nadolu
for(q=indb;q<=n;q++)
{
mas[q][inda]=mas[q-1][inda]+1;
if(mas[q+1][inda]!=0 || mas[q][inda]==(2*n-1))
{indb=q;
vektor=3;
goto beg;}
}
}
case 3:
{//posoka <----
for(c=inda;c>=1;c--)
{
mas[indb][c]=mas[indb][c+1]+1;
if(mas[indb][c-1]!=0 || mas[indb][c]==(3*n-2))
{inda=c;
vektor=4;
goto beg;}
}
}
case 4:
{//posoka nagore
for(l=indb;l>=1;l--)
{
mas[l][inda]=mas[l+1][inda]+1;
if(mas[l-1][inda]!=0)
{
indb=l;
vektor=1;
goto beg;
}
}
}
for(z=1;z<=n;z++)
{
for(u=1;u<=n;u++)
{
printf("%d",mas[z][u]);
}
}
} }
Ohliuv do N, v slu4aia N=3, izmislil sum algoritum, teoriti4no e veren no na praktika
neshte da ba4ka, stignal sum do momenta v koito mi iskarva uglite na kvadrata pri st-st 3 ama pri druga st-st zaciklq...
1 2 3
8 9 4
7 6 5
#include <stdio.h>
void main()
{
int mas[100][100];
int a,inda,indb,q,u,z,l,n,c,vektor;
printf("vavedi n=="); scanf("%d",&n); //tuka znam 4e trqbva dainitializiram masiva
inda=1; indb=1; vektor=1; // oba4e i kato go initializiram pak 4ushka..
//znam 4e akoda ima i nqkoi neto4nosti
//i promenlivite sa dosta, no dori i super
// iz4isten pak nevurvi i zaciklq pri n!=3
//na4alo na switch!
beg:switch(vektor)
{
case 1:
{//---->
for(a=inda;a<=n;a++)
{
mas[indb][a]=mas[indb][a-1]+1;
if(mas[indb][a+1]!=0 || mas[indb][a]==n)
{
inda=a;
vektor=2;
goto beg;}
}
}
case 2:
{//posoka nadolu
for(q=indb;q<=n;q++)
{
mas[q][inda]=mas[q-1][inda]+1;
if(mas[q+1][inda]!=0 || mas[q][inda]==(2*n-1))
{indb=q;
vektor=3;
goto beg;}
}
}
case 3:
{//posoka <----
for(c=inda;c>=1;c--)
{
mas[indb][c]=mas[indb][c+1]+1;
if(mas[indb][c-1]!=0 || mas[indb][c]==(3*n-2))
{inda=c;
vektor=4;
goto beg;}
}
}
case 4:
{//posoka nagore
for(l=indb;l>=1;l--)
{
mas[l][inda]=mas[l+1][inda]+1;
if(mas[l-1][inda]!=0)
{
indb=l;
vektor=1;
goto beg;
}
}
}
for(z=1;z<=n;z++)
{
for(u=1;u<=n;u++)
{
printf("%d",mas[z][u]);
}
}
} }
Re: Problem sus ohliuv:))
Ти си охлюв:-) Не се програмира така - явно правиш първи опити. И като постваш код го слагай в таг 'пре'.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Re: Problem sus ohliuv:))
ne znam koy e ohlyuv, no s's sigurnost ne e toy :)
mnogo b'rza6 FOZI
zareji kompa, vzemi list i moliv i si na4ertay nyakolko kvadrat4eta s cifri za razli4no N
zabeleji kak go pravi6
napi6i algorit'ma
1. pi6a 1
2. m'rdam moliva nadyasno
...
opitay da nameri6 drug algorit'm
1. zap'lvam perimet'ra na kvadrata s cifri po 4asovnikovata strelka
2. namalyavam perimet'ra s 1
...
izmisli o6te algoritmi i izberi tozi deto nay-mnogo ti haresva
doopravi go
da ti e yasna vsyaka st'pka
da ima6 ideya kak bi ya prevel na C
zada4ata ve4e e po4ti re6ena
pisaneto na samata programa e bez zna4enie
ama ako ti e zabavno pusni PCto i davay ... :)
edin s'vet
dr'j programata maksimalno k'sa za da ti e cyalata pred o4ite
i maksimalno prosta za da ti e cyalata pred uma
uspeh
s pove4e humor mu e maykata
mnogo b'rza6 FOZI
zareji kompa, vzemi list i moliv i si na4ertay nyakolko kvadrat4eta s cifri za razli4no N
zabeleji kak go pravi6
napi6i algorit'ma
1. pi6a 1
2. m'rdam moliva nadyasno
...
opitay da nameri6 drug algorit'm
1. zap'lvam perimet'ra na kvadrata s cifri po 4asovnikovata strelka
2. namalyavam perimet'ra s 1
...
izmisli o6te algoritmi i izberi tozi deto nay-mnogo ti haresva
doopravi go
da ti e yasna vsyaka st'pka
da ima6 ideya kak bi ya prevel na C
zada4ata ve4e e po4ti re6ena
pisaneto na samata programa e bez zna4enie
ama ako ti e zabavno pusni PCto i davay ... :)
edin s'vet
dr'j programata maksimalno k'sa za da ti e cyalata pred o4ite
i maksimalno prosta za da ti e cyalata pred uma
uspeh
s pove4e humor mu e maykata
втора задача
Охлюв А тръгва от точка Б до точка В и по пътя си среша охлюв Г. Ако охлюв Д блъсне охлюв Е, а аз настъпя охлюв Ж, кой охлюв ще напише най-тъпия код по въпроса? 
--
The#Project - вече изцяло на български
--
The#Project - вече изцяло на български
ЕТО НАЙ-ТЪПИЯ КОД!!!!
#include "stdafx.h"
#include <stdio.h>
#include "windows.h"
#define n 4
char m[n][n];
void ohl(int x,int y){
if(m[x][y])return;
if(x>=n)return;
if(y>=n)return;
if(x<0)return;
if(y<0)return;
m[x][y]=1;
printf("x=%d y=%d\n",x,y);
ohl(x+1,y);
ohl(x,y+1);
ohl(x-1,y);
ohl(x,y-1);
}
int main(int argc, char* argv[])
{
ZeroMemory(m,n*n);
ohl(0,0);
return 0;
}
забележка: windows.h е за да бачка ZeroMemory
#include <stdio.h>
#include "windows.h"
#define n 4
char m[n][n];
void ohl(int x,int y){
if(m[x][y])return;
if(x>=n)return;
if(y>=n)return;
if(x<0)return;
if(y<0)return;
m[x][y]=1;
printf("x=%d y=%d\n",x,y);
ohl(x+1,y);
ohl(x,y+1);
ohl(x-1,y);
ohl(x,y-1);
}
int main(int argc, char* argv[])
{
ZeroMemory(m,n*n);
ohl(0,0);
return 0;
}
забележка: windows.h е за да бачка ZeroMemory
Susutoto bez rekursia i rabotesto i za N > 4
Tova otgore ne bachka za N > 4.
#include <stdio.h>
#include <memory.h>
#define N 4
char m[N][N];
int dirX [4] = { 1, 0, -1, 0 };
int dirY [4] = { 0, 1, 0, -1 };
void Move(int *x,int *y, int nDirection)
{
*x += dirX[nDirection];
*y += dirY[nDirection];
}
int IsOK(int x, int y, int nDirection)
{
Move(&x, &y, nDirection);
if( m[x][y] ) return 0;
if( x >= N ) return 0;
if( y >= N ) return 0;
if( x < 0 ) return 0;
if( y < 0 ) return 0;
return 1;
}
void main()
{
//Inicializirame promenlivite
int i = 0, x = 0, y = 0, nDirection = 0 ;
memset(m, 0, N*N);
//Pishem pyrvia element
m[x][y] = 1;
printf("x=%d y=%d\n", x, y);
//Vyrtim cikyl za vsichki ostanali
while ( i < N*N - 1 )
{
if ( IsOK(x, y, nDirection) )
{
Move(&x, &y, nDirection);
m[x][y] = 1;
printf("x=%d y=%d\n", x, y);
i++;
}
else
nDirection = (nDirection < 3 ? nDirection + 1 : 0);
}
}
#include <stdio.h>
#include <memory.h>
#define N 4
char m[N][N];
int dirX [4] = { 1, 0, -1, 0 };
int dirY [4] = { 0, 1, 0, -1 };
void Move(int *x,int *y, int nDirection)
{
*x += dirX[nDirection];
*y += dirY[nDirection];
}
int IsOK(int x, int y, int nDirection)
{
Move(&x, &y, nDirection);
if( m[x][y] ) return 0;
if( x >= N ) return 0;
if( y >= N ) return 0;
if( x < 0 ) return 0;
if( y < 0 ) return 0;
return 1;
}
void main()
{
//Inicializirame promenlivite
int i = 0, x = 0, y = 0, nDirection = 0 ;
memset(m, 0, N*N);
//Pishem pyrvia element
m[x][y] = 1;
printf("x=%d y=%d\n", x, y);
//Vyrtim cikyl za vsichki ostanali
while ( i < N*N - 1 )
{
if ( IsOK(x, y, nDirection) )
{
Move(&x, &y, nDirection);
m[x][y] = 1;
printf("x=%d y=%d\n", x, y);
i++;
}
else
nDirection = (nDirection < 3 ? nDirection + 1 : 0);
}
}
REVANGE
признавам резила си:(((((
дори за н=4 не работи:(((
но за да измия ника си от позора, предлагам следното решение (този път добре тествано) . няма памет, няма рекурсия и крайно неразбираемо:)))))
за да дам хинт на тези които искат все пак да го схванат - използва се мразената от всички дисциплина ЛААГ :)))))))
обръщам вниматие че първият член е извън квадрата, но така решението е по-естествено. който иска да го задогми нека сложи преди printf един if(c!=-1)
#include "stdafx.h"
#include <stdio.h>
#define n 5
int main(int argc, char* argv[])
{
int dx=1,dy=0,ex,ey,x=-1,y=0,N=n,c=-1;
for(int i=0;N>0;){
ex=x+N*dx;
ey=y+N*dy;
for(;(ex-x)*dx+(ey-y)*dy>0;x+=dx,y+=dy,c++)printf("%d x=%d y=%d\n",c,x,y);
i++;
if(i%2)N--;
int x1=-dy;dy=dx;dx=x1;
}
printf("%d x=%d y=%d\n",c,x,y);
return 0;
}
дори за н=4 не работи:(((
но за да измия ника си от позора, предлагам следното решение (този път добре тествано) . няма памет, няма рекурсия и крайно неразбираемо:)))))
за да дам хинт на тези които искат все пак да го схванат - използва се мразената от всички дисциплина ЛААГ :)))))))
обръщам вниматие че първият член е извън квадрата, но така решението е по-естествено. който иска да го задогми нека сложи преди printf един if(c!=-1)
#include "stdafx.h"
#include <stdio.h>
#define n 5
int main(int argc, char* argv[])
{
int dx=1,dy=0,ex,ey,x=-1,y=0,N=n,c=-1;
for(int i=0;N>0;){
ex=x+N*dx;
ey=y+N*dy;
for(;(ex-x)*dx+(ey-y)*dy>0;x+=dx,y+=dy,c++)printf("%d x=%d y=%d\n",c,x,y);
i++;
if(i%2)N--;
int x1=-dy;dy=dx;dx=x1;
}
printf("%d x=%d y=%d\n",c,x,y);
return 0;
}
Po wyprosa sus ohliuvite..
Hora, kolkoto i da sum na4inaesht v C++ pone sum se probval da napravq neshto,
mojebi ako si beh poigral oshte malko shteh da go napravq, както и да е..
Мисля че е хубаво да има и интересни задачки, мисля че тази е такава.
В крайна сметка стигнах до извода че повечето от вас са охлюви, щом ги мързи да си размърдат мозъците...
Определено се изявихте като остроумници, но не и като програмисти...
(Тва си е мое мнение...) Браво!
Хвала на такъви програмисти...
mojebi ako si beh poigral oshte malko shteh da go napravq, както и да е..
Мисля че е хубаво да има и интересни задачки, мисля че тази е такава.
В крайна сметка стигнах до извода че повечето от вас са охлюви, щом ги мързи да си размърдат мозъците...
Определено се изявихте като остроумници, но не и като програмисти...
(Тва си е мое мнение...) Браво!
Хвала на такъви програмисти...
Re: Po wyprosa sus ohliuvite..
ти сериозно ли очакваш някой да ти посочи бъга в програмата? аз дето съм ентусиаст и полвина не се навивам, та камо ли за останалите...
програмирането по-често е дебъгване , а не измисляне на алгоритми.
аз като примерен българин вместо работа ще ти дам акъл:
старай се програмата ти да е максимално линейна, с по-малко if. не ги слушай тия дето казват че goto било мръсна команда, е мръсничка е , ама ифа е по-коварен.
и вместо да чакаш някой наготово да ти каже къде си сбъркал пробвай следното: започни изпълнение на програмата стъпка по стъпка, като преди всяка стъпка предвиждаш какъв ще е резултата съгласно твоята представа. след това натискаш стъпка напред и гледаш дали съвпада. където не съвпадне гледаш защо.
и все пак имаше два работещи и един неработещ алгоритъм, така че не можеш да кажеш че "ни мързи да си размърдаме мозъците" :)))
програмирането по-често е дебъгване , а не измисляне на алгоритми.
аз като примерен българин вместо работа ще ти дам акъл:
старай се програмата ти да е максимално линейна, с по-малко if. не ги слушай тия дето казват че goto било мръсна команда, е мръсничка е , ама ифа е по-коварен.
и вместо да чакаш някой наготово да ти каже къде си сбъркал пробвай следното: започни изпълнение на програмата стъпка по стъпка, като преди всяка стъпка предвиждаш какъв ще е резултата съгласно твоята представа. след това натискаш стъпка напред и гледаш дали съвпада. където не съвпадне гледаш защо.
и все пак имаше два работещи и един неработещ алгоритъм, така че не можеш да кажеш че "ни мързи да си размърдаме мозъците" :)))
Teoria za pampersite
Pogledanoto ot drugata strana se vizda gore dolu slednata situacia - Znachi idva edin malyk ohluv s pulen pampers i pochva da reve.
Tuka sme profesionalisti po smeniane na pampersi vizdali kyde po-golemi i po-pulni i kato takiva niakoi nadceniavat ohliuvcheto pochvat da mu obiasniavat kak da si go smeni sam. Drugi kato mene i zaphod napravo havastat da go smeniat s nov. Malkia obache zapochva da protestira che negovia pampers, razbirash li, bil specialen i toi oste malko i stial da si go opravi. I ni reve kak da sme go poizmili malko i mozelo da go sushim sys sehoar posle. Sega triabva li da prodalzim da si gubim vremeto da mu obiasniavame, che kolkoto i da go miem i sushim vshe ste mu e mokro i ste mirishe.
Aman!
Tuka sme profesionalisti po smeniane na pampersi vizdali kyde po-golemi i po-pulni i kato takiva niakoi nadceniavat ohliuvcheto pochvat da mu obiasniavat kak da si go smeni sam. Drugi kato mene i zaphod napravo havastat da go smeniat s nov. Malkia obache zapochva da protestira che negovia pampers, razbirash li, bil specialen i toi oste malko i stial da si go opravi. I ni reve kak da sme go poizmili malko i mozelo da go sushim sys sehoar posle. Sega triabva li da prodalzim da si gubim vremeto da mu obiasniavame, che kolkoto i da go miem i sushim vshe ste mu e mokro i ste mirishe.
Aman!
Re: Teoria za pampersite
е, не го гърчи толкова, все пак много се радвам че някой отваря тема в която наистина става въпрос за програмиране, а не за проджект мениджъри(добре че си нямам такъв:). тебе не ти ли се е случвало на инат да търсиш не решение на алгоритъм, а защо твоят не работи? та нали ако се откажеш следващия подобен пак ще го сгрешиш по същия начин. та напълно го разбирам, само че ще трябва да се справи сам....
Мерси за разбирането:))
Мersi zaphod, mersi i na drugite:)).
Shte se opravq sam:) mersi za zuvetite i za ohliuvskite teorii:)))
Хов до ъоу до?
Shte se opravq sam:) mersi za zuvetite i za ohliuvskite teorii:)))
Хов до ъоу до?