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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2014, 20:09   #1
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию ПОстроение графа по заданным вершинам

По заданным параметрам a,b,c,d ввести граф(список рёбер) использующие следующие правила
h={14,если d mod 3=0; 13,если d mod 3=1; 15,если d mod 3=2;}

Программа вводит вершины a,b,c,d и получает n(список вершин) и количество рёбер.
(i,j) Э x a*i+b*j/c mod d=<1 (буква э - это значит принадлежит)

Я просто застрял на выводе списков вершин и количестве рёбер.
То есть я правила описал в условном операторе,открыл циклы и уже по заданной формуле считаю и тогда лишь вывожу.

Как вы поняли код не рабочий.Вот что сам сделал точнее попытался сделать.

Код:

Код:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    int a,b,c,d,n,x,i,j;
    cout<<"Введите параметры";
    cin>>a>>b>>c>>d;
    if 
        d mod 3=0 then 14
    else
    if d mod 3=1 then 13
    else
    if d mod 3=2 then 15
 for (i=1;i<10;i++) do
    for (j=1;j<10;j++) do
    if x=a*i+b*i/c mod d=<1
        then
        cout<<"Граф:"<<x;
    return 0;
}
Otar4ik вне форума Ответить с цитированием
Старый 10.09.2014, 11:06   #2
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Ругается на a,b,c,d,n которые в скобках,но убрать их не получается так как в главной программе я хочу вывести их результаты,которые я считаю в процедуре mnreber.
и такой вид ошибки в строках 12 и 25 - write: вероятно, инициализатор, использующий стиль функции, является определением функции.

Но если я например удалю из скобок буквы a,b,c,d,n то программа компилируется но не работает уже на вводе.


Код:
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdlib.h>

using namespace std;

void write(a,b,c,d,n)
{
	if (d % 3 == 0)
    n = 14;
  else
  if (d % 3 == 1) 
    n = 13;
  else
  if (d % 3 == 2)
    n = 15;
  cout<<"Количество вершин = " <<n;
}

void mnreber(a,b,c,d,n)
{
 int i, j, f;
  double k;

  for (i = 0 ;i<n;i++){
    for (j = 0;j<n;j++){
      k = ((a * i) + (b * j)) / c;
      f = floor(k);
      if (f % d<= 1) 
	  {
        cout<<i<<' '<<j;
	  }
      else
      cout<<"Пусто!";
}
}
}


int _tmain(int argc, _TCHAR* argv[])
{	
  setlocale(LC_ALL,"Russian");
  int a,b,c,d,n;
  cout<<"Введите значения параметров";
  cout<<'a = ';
  cin>>a;
  cout<<'b = ';
  cin>>b;
  cout<<'c = ';
  cin>>c;
  cout<<'d = ';
  cin>>d;
  write(a,b,c,d,n);
  mnreber(a,b,c,d,n);
  system("pause");
	return 0;
}

Последний раз редактировалось Otar4ik; 10.09.2014 в 11:17.
Otar4ik вне форума Ответить с цитированием
Старый 10.09.2014, 12:45   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Я ничего не понял.
Цитата:
По заданным параметрам a,b,c,d ввести граф(список рёбер) использующие следующие правила
h={14,если d mod 3=0; 13,если d mod 3=1; 15,если d mod 3=2;}
что такое h. Очевидно, h может принимать значения 13, 14 или 15, но как оно связано с графом?
Дальше вы пишите, что a, b, c и d - это вершины, но как можно брать остаток от деления вершины? - что это за хитрая операция?
Дальше вы пишите про то, что n - это количество вершин, которое программа как-то вычисляет из параметров, но как она это делает?

Задание нормально напиши короче. И не забудь указать что такое "построение графа" -в твоем коде я не вижу ни малейшего намека на графы.
rrrFer вне форума Ответить с цитированием
Старый 10.09.2014, 14:50   #4
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Задание такое,как написали в тетрадь так и я пишу..

И мне дали код на Pascal ABC.Net(по этому заданию и он работает) и я его переделал на С++ и он не запускается,а если убрать буквы из скобок объявленных в void то запускается но не даёт ввести значения.

Код:
program laba1;

var
  a, b, c, d, n: integer;

procedure writ(var a, b, c, d, n: integer);
begin
  if (d mod 3) = 0 then
    n := 14
  else
  if (d mod 3) = 1 then
    n := 13
  else
  if (d mod 3) = 2 then
    n := 15;
  writeln('Количество вершин = ', n);
end;

procedure mnreber(a, b, c, d, n: integer);
var
  i, j, f: integer;
  k: real;
begin
  for i := 0 to n do
  begin
    for j := 0 to n do
    begin
      k := ((a * i) + (b * j)) / c;
      f := round(k);
      if ((f mod d) <= 1) then
      begin
        writeln(i, ' ,', j);
      end
      else
      writeln('Пусто!');
    end;
  end;
end;

begin
  writeln('Введите значения параметров');
  write('A = ');
  readln(a);
  write('B = ');
  readln(b);
  write('C = ');
  readln(c);
  write('D = ');
  readln(d);
  writ(a, b, c, d, n);
  mnreber(a, b, c, d, n);
end.
то что сверху это я переделывал на С++)))

Последний раз редактировалось Otar4ik; 10.09.2014 в 16:00.
Otar4ik вне форума Ответить с цитированием
Старый 10.09.2014, 20:22   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Кривой код какой-то (на паскале тоже).

Ну попробуй
Код:
void mnreber(int a,int b,int c,int d,int n)
Я не вникал. ИМХО этот код с задачей никак не связан.
rrrFer вне форума Ответить с цитированием
Старый 11.09.2014, 04:02   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

Код на паскале ошибочный синтаксически.

Код:
program laba1;

var
  a, b, c, d, n: integer;

function writ(var a, b, c, d: integer):integer;
begin
  if (d mod 3) = 0 then
    n := 14;
  else
  if (d mod 3) = 1 then
    n := 13;
  else
  if (d mod 3) = 2 then
    n := 15;
  writeln('Количество вершин = ', n);
  writ:=n;
end;

procedure mnreber(a, b, c, d, n: integer);
var
  i, j, f: integer;
  k: real;
begin
  for i := 0 to n do
  begin
    for j := 0 to n do
    begin
      k := ((a * i) + (b * j)) / c;
      f := round(k);
      if ((f mod d) <= 1) then
      begin
        writeln(i, ' ,', j);
      end
      else
      writeln('Пусто!');
    end;
  end;
end;

begin
  writeln('Введите значения параметров');
  write('A = ');
  readln(a);
  write('B = ');
  readln(b);
  write('C = ');
  readln(c);
  write('D = ');
  readln(d);
  n:=(a, b, c, d);
  mnreber(a, b, c, d, n);
end.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 11.09.2014, 21:47   #7
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию

Спасибо тему можете закрывать.
Исправил в плюсах.Завтра на проверку несу
Otar4ik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение графа !! drylozav Помощь студентам 0 06.10.2010 01:23
Построение графа nissa Помощь студентам 0 08.05.2010 00:57
Построение графа транзакций. Alex_sim Общие вопросы .NET 7 29.04.2010 21:58
Построение и иследование графа Сашf Общие вопросы Delphi 1 17.05.2009 17:35