Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Informatica / Cost Uniform : Noiembrie 05, 2009, 19:59:14
Cod:
#include <iostream>
#include <conio.h>
using namespace std;


void main (void)
{
int a[20][20],trecut[20],Cost[20][20],n,i,j,u,pc,y, m,e1,e2,x,sol[20];
cout<<"numarul de noduri: ";
cin>>n;
cout<<"numarul de muchii: ";
cin>>m;
for (i=1;i<=n;i++)
 for (j=1;j<=n;j++)
   a[i][j]=0;
for (i=1;i<=m;i++)
 {
   cout<<"Muchia "<<i<<":\n";
   cout<<"e1=";
   cin>>e1;
   cout<<"e2=";
   cin>>e2;
   a[e1][e2]=a[e2][e1]=1;
 }

    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
 {   cout<<"Cost["<<i<<"]["<<j<<"]=";
 cin>>Cost[i][j];}

for (i=1;i<=n;i++)
 trecut[i]=0;
cout<<"Nodul initial: ";
cin>>x;
cout<<"Nodul cautat: ";
cin>>y;
pc=1;
u=1;
sol[1]=x;
trecut[x]=1;

while (u < n && !trecut[y])
 {
   for (i=1;i<=n;i++)
     if (a[sol[pc]][i] && !trecut[i])
 {
   u++;
   sol[u]=i;
   trecut[i]=1;
 }
   pc++;
 }
cout<<"Parcurgerea BFS:";
for (i=1;i<=n;i++)
cout<<sol[i]<<',';
cout<<'\b';
getche();
}
[code/]


Am nevoie sa modific algoritmul de mai sus(care reprezinta parcurgerea in latime) astfel incat sa calculez drumul de cost uniform de la un nod initial la un nod cautat.
Deci eu introduc de la tastatura nodul de plecare si nodul la care trebuie sa ajung(ceea ce am realizat deja) si mai am nevoie de o matrice a costurilor care contine costul drumurilor (costul fiecarei muchii de la un nod la altul) (cred ca si asta am realizat corect)
Am nevoie de o continuare..astfel incat sa imi afiseze drumul parcurs si costul acestuia!

Help!
2  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Problema Drumuri C++ : Octombrie 21, 2009, 18:32:11
Adauga  la conditia
Cod:
 u < n && !trecut[y]
Cat timp u < n si nu am trecut de y atunci continua Very Happy



si cum introduc nodul cautat....?
Trebuie sa introduc si nodul de plecare si nodul la care trebuie sa ajung(nodul cautat)...iar atunci cand am ajuns la nodul cautat trebuie sa afisez prin ce noduri am trecut pana atunci


dupa cout<<"nodul initial: ";
       cin>>x;

scriu cout<<"nodul cautat: "
       cin>>y;

Deci conditia de oprire este ajungerea la nodul cautat...si afisarea celorlalte noduri prin care am trecut! si atat
3  infoarena - concursuri, probleme, evaluator, articole / Informatica / Problema Drumuri C++ : Octombrie 21, 2009, 18:01:11
Am nevoie sa modific urmatorul cod  (care reprezinta parcurgerea in latime a unui graf)  astfel incat inainte sa imi afizeze drumul (adica parcurgerea propriu-zisa) sa pot introduce in afara de nodul de pornire  si un nod cautat!

Deci eu trebuie sa plec de la nodul X si sa ajung  la Y...iar cand ajung la Y...sa ma opresc si sa afisez drumul parcurs!

Cod:
#include <iostream.h>
#include <conio.h>
void main (void)
{
int a[20][20],trecut[20],n,i,j,u,pc, m,e1,e2,x,sol[20];
cout<<"numarul de noduri: ";
cin>>n;
cout<<"numarul de muchii: ";
cin>>m;
for (i=1;i<=n;i++)
 for (j=1;j<=n;j++)
   a[i][j]=0;
for (i=1;i<=m;i++)
 {
   cout<<"Muchia "<<i<<":\n";
   cout<<"e1=";
   cin>>e1;
   cout<<"e2=";
   cin>>e2;
   a[e1][e2]=a[e2][e1]=1;
 }
for (i=1;i<=n;i++)
 trecut[i]=0;
cout<<"Nodul initial: ";
cin>>x;
pc=1;
u=1;
sol[1]=x;
trecut[x]=1;
while (u<n)
 {
   for (i=1;i<=n;i++)
     if (a[sol[pc]][i] && !trecut[i])
 {
   u++;
   sol[u]=i;
   trecut[i]=1;
 }
   pc++;
 }
cout<<"Parcurgerea BFS:";
for (i=1;i<=n;i++)
cout<<sol[i]<<',';
cout<<'\b';
getche();
}




Variabilele utilizate Ä«n programul C++  

a - matricea de adiacenţă asociată grafului;

trecut -vector īn care se trec īn ordine nodurile”parcurse”;

n - numărul de noduri din graf;

m - numărul de muchii din graf;

e1,e2 - extremităţile muchiilor;

i,j - contori;

x – nodul din care se „pleacă”;

u - variabilă (contor) ce ţine evidenţa numărului de noduri vizitate;

pc - nodul ai cărui vecini īi căutăm;

sol - vectorul rezultat īn urma parcurgerii (conţine nodurile īn ordinea vizitării lor).
 
4  infoarena - concursuri, probleme, evaluator, articole / Informatica / Suma a 2 grafuri : Mai 21, 2009, 21:21:29
am vrea sa stiu si eu cum continui urmatorul algoritm  ca sa pot face suma a doua grafuri

Cod:
//Suma a 2 grafuri
#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
int g1[20][20],g2[20],sumagraf[20],n,m,i,j,;
int citire1()
{
 int i,j;
 cout<<"Numarul de noduri ale grafului neorientat G1 este: ";
 cin>>n;
 cout<<"Matricea de adiacenta este:"<<endl;
 for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
       cin>>g1[i][j];
 return 0;
}
int citire2()
{
 int i,j;
 cout<<"Numarul de noduri ale grafului neorientat G2 este: ";
 cin>>m;
 cout<<"Matricea de adiacenta este:"<<endl;
 for(i=1;i<=m;i++)
    for(j=1;j<=m;j++)
       cin>>g2[i][j];
 return 0;
}

Editat de admin: Foloseste tagul "code" cand postezi surse
5  infoarena - concursuri, probleme, evaluator, articole / Teme / Liber de Patrate! : Ianuarie 19, 2009, 21:18:37
Fie  n un numar liber de patrate(n<>0,n=p1p2...pk). Pentru n>=2, multimea divizorilor sai notata cu B, este latice boole unde:
d1^d1=(d1,d2), di V d2=[d1,d2] si d=n/n, oricare ar fi d,d1,d2 din B.
Sa se afiseze multimea B, sa se scrie complementii elementelor multimii B in vectorul C si pentru fiecare pereche de elemente din B, sa se scrie in matricele B, respectiv M, infimum si supremum corespunzator!



As avea nevoie de un algoritm in C++  ....multumesc anticipat!
6  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Probleme Grele : Ianuarie 19, 2009, 14:05:36
Nu ai gresit, in enunt era mentionat ca a, b, c sunt prime.


Mie imi trebuie un algoritm in C++...si nu stiu cum sa il fac!



Iar la problema 2 am modificat enuntul...poate intelegeti acum despre ce este vorba  Sad  !
7  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Răspuns: Enunt greu : Ianuarie 09, 2009, 00:00:58
Daca am inteles bine ce vrei tu sa zici:

Cod:

inline double f(int x){
return sqrt ( abs(x - 1) * abs(x + 1) * abs(x + 1) * abs(x + 1));
}

double solve(int N,int x[]){
int i = 1;
double  S = 0;

while (i <= N){
S += x[i] * f(i ++);
}
return S;
}



multumesc mult pentru indicatie!
8  infoarena - concursuri, probleme, evaluator, articole / Informatica / Enunt greu : Ianuarie 06, 2009, 22:53:31
Sa se scrie o fuctie care sa calculeze suma ponderata a n numere reale
 x(cu sageata in cap)=f1x1+...+fnxn

f1 sunt factori de pondere
0 <=f1<1    si  f1+f2+f3+……+fn=1
Prototipul functiei va fi media (x,f,n) unde n este dimensiunea vectorilor x si f. Functia se va scrie utilizand instructiunea while.




f(x)=radical din |x-1||x+1|³  pe intervalul [-4,5] cu pasul 0,45



Dak se poate as dori niste indicatii deoarece nu am idee cum sa fac aceasta problema.Multumesc!
9  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Răspuns: Probleme Grele : Decembrie 16, 2008, 23:26:59
Nu posta in mai multe locuri! Daca vrea lumea sa te ajute, o va face aici.

Problemele cu care ai de a face se rezolva cu principiul includerii si excluderii.

1. Numarul de numere <= N, divizibile cu x, este N/x. Tu vrei sa afli reuniunea a trei astfel de multimi si, aplicand principiul includerii si al excluderii, obtii raspunsul: N/a + N/b + N/c - N/(a*b) - N/(a*c) - N/(b*c) + N/(a*b*c).

2. Despre a doua problema as zice ca nu e completa. Pentru a defini infimum si supremum, trebuie sa ai, mai intai, o relatie de ordine. Incearca sa te gandesti singur la problema asta, eu sunt sigur ca are de a face ca idee cu problema precedenta.

mersi pt ajutor.
Problema 2 asa a fost enuntata....nu mai am nicio indicatie Sad
10  infoarena - concursuri, probleme, evaluator, articole / Teme / Răspuns: Probleme Grele : Decembrie 16, 2008, 22:14:30
la prima problema... se da n un numar natural nenul sau un sir de n numere naturale nenule?
la a doua problema nu am inteles mai deloc... prea multe prescurtari pentru mine  Tongue, daca ai putea da un edit si sa scrii complet si corect problema?...

gata..Very Happy am corectat

Pentru n numere naturale,,,,deci mai multe numere ,nu unul singur
11  infoarena - concursuri, probleme, evaluator, articole / Teme / Probleme Grele : Decembrie 16, 2008, 00:45:24


2.   Fie  n un numar liber de patrate(n<>0,n=p1p2...pk). Pentru n>=2, multimea divizorilor sai notata cu B, este latice boole unde:
d1^d1=(d1,d2), di V d2=[d1,d2] si d=n/n, oricare ar fi d,d1,d2 din B.



 d'oh! d'oh! d'oh!  As avea nevoie sa stiu si eu rezolvarea  deoarce nu o sa intru la examen daca nu prezint problemela asta. Sunt in mare dilema deoarece problema  este foarte grea. Va rog sa ma ajutati si pe mine.Multumesc anticipat!
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines