Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 16.06.2015
Сообщений: 42

Переписать код с паскаля на c++

15.05.2018, 22:58. Показов 573. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Нужно решить трансп. задачу методом миним. элемента.
Есть готовый и рабочий код на Pascal ABC. Переписал его на С++, но он не работает, в определенном моменте просто зацикливается. Можете помочь найти ошибку, у самого не получается.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
program TZ_metod_min_elementa;
label goback, goback2;
var
       sumneed,sumzapas,sumpotr,min: real;
       kolvopost, kolvopotreb,i,j: integer;
       price, potracheno: array[1..10,1..10] of real;
       zapas, need: array[1..10] of real;
 begin
       writeln('Введите кол-во ПО(пунктов отправки, поставщиков(<=10):');
       readln(kolvopost);
       writeln('Введите кол-во ПН(пунктов назначения, потребителей(<=10):');
       readln(kolvopotreb);
  goback:
        sumneed:=0;
        sumzapas:=0;
   for i:=1 to kolvopost do
   begin
        writeln('Введите запас поставщика ',i);
        readln(zapas[i]);
        sumzapas:=sumzapas+zapas[i];
    end;
    for j:=1 to kolvopotreb do
    begin
         writeln('Введите кол-во продукта, необходимое потребителю (спрос) ', j);
         readln(need[j]);
         sumneed:=sumneed+need[j];
    end;
    if sumneed<>sumzapas then
     begin
          writeln('Кол-во запаса продукта поставщика не равно кол-ву необходимому потребителям (их спросу). Пожалуйста, введите корректные данные');
          goto goback;
     end;
   for i:=1 to kolvopost do
   for j:=1 to kolvopotreb do
   begin
   writeln('Введите цену перевозки от поставщика '+ i +' потребителю ', j);
      readln(price[i,j]);
    end;
    goback2:
     min:=0;
       for i:=1 to kolvopost do
        for j:=1 to kolvopotreb do 
     min:=min+price[i,j];  
       for i:=1 to kolvopost do
       for j:=1 to kolvopotreb do
         begin
          if ((min>price[i,j]) and (price[i,j]<>0)) then
          min:=price[i,j];
         end;
      for i:=1 to kolvopost do
      for j:=1 to kolvopotreb do
         begin
          if ((min=price[i,j]) and (zapas[i]<>0) and (need[j]<>0)) then
            begin
             if zapas[i]>need[j] then
            begin 
             zapas[i]:=zapas[i]-need[j];
             potracheno[i,j]:=need[j]*price[i,j];
             need[j]:=0;
             price[i,j]:=0;
            end
     else if zapas[i]=need[j] then
             begin
              potracheno[i,j]:=need[j]*price[i,j];
              need[j]:=0;
              zapas[i]:=0;
              price[i,j]:=0;
             end
      else
            begin 
             need[j]:=need[j]-zapas[i];
             potracheno[i,j]:=zapas[i]*price[i,j];
             zapas[i]:=0;
             price[i,j]:=0;
            end
          end;
       if ((zapas[i]=0) or (need[j]=0)) then
          price[i,j]:=0;
         end;
           min:=0;
      for i:=1 to kolvopost do
      for j:=1 to kolvopotreb do
        begin
         min:=min+price[i,j];
        end;
      if min<>0 then
      goto goback2;
     sumpotr:=0;
      for i:=1 to kolvopost do
       begin
        for j:=1 to kolvopotreb do
         sumpotr:=sumpotr+potracheno[i,j];
          write(potracheno[i,j],' ');
         writeln;
        end;
     writeln('Суммарные затраты на доставку (перевозку)ресурсов (L)= ', sumpotr);
     end.
Код на с++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// MinElement.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int kolvopost, kolvopotreb, i, j;
float sumneed, sumzapas, sumpotr, min;
float price[10][10];
float potracheno[10][10];
float zapas[10];
float need[10];
 
int main()
{
    setlocale(LC_ALL, "Russian");
    cout << "Введите кол-во ПО поставщиков (<=10): ";
    cin >> kolvopost;
    cout << "Введите кол-во ПН поставщиков (<=10): ";
    cin >> kolvopotreb;
mayak:
sumneed = 0;
sumzapas = 0;
 
    for (i = 1; i <= kolvopost; i++) {
        cout << "Введите запас поставщика " << i <<": ";
        cin >> zapas[i];
        sumzapas = sumzapas + zapas[i];
    }
    for (j = 1; j <= kolvopost; j++) {
        cout << "Введите кол - во продукта, необходимое потребителю(спрос) " << j <<": ";
        cin >> need[j];
        sumneed = sumneed + need[j];
    }
 
    if (sumneed != sumzapas){
        cout << "'Кол-во запаса продукта поставщика не равно кол-ву необходимому потребителям (их спросу). Пожалуйста, введите корректные данные'" << "\n";
        goto mayak;
    }
 
    for (i=1; i<= kolvopost; i++){
        for (j = 1; j <= kolvopotreb; j++) {
            cout << "Введите цену перевозки от поставщика " << i << " к потребителю " << j << ": ";
            cin >> price[i][j];
        }
    }
mayak2:
min = 0;
    for (i = 1; i <= kolvopost; i++) {
        for (j = 1; j <= kolvopotreb; j++) {
            min = min + price[i][j];
        }
    }
 
    for (i = 1; i <= kolvopost; i++) {
        for (j = 1; j <= kolvopotreb; j++) {
            if ((min > price[i][j]) and (price[i][j] != 0)) {
                min = price[i][j];
            }
        }
    }
 
    for (i = 1; i <= kolvopost; i++) {
        for (j = 1; j <= kolvopotreb; j++) {
            if ((min = price[i][j]) and (zapas[i] != 0) and (need[j] != 0)) {
                if (zapas[i] > need[j]) {
                    zapas[i] = zapas[i] - need[j];
                    potracheno[i][j] = need[j] * price[i][j];
                    need[j] = 0;
                    price[i][j] = 0;
                }
                else if (zapas[i] = need[j]) {
                    potracheno[i][j] = need[j] * price[i][j];
                    need[j] = 0;
                    zapas[i] = 0;
                    price[i][j] = 0;
                }
                else {
                    need[j] = need[j] - zapas[i];
                    potracheno[i][j] = zapas[i] * price[i][j];
                    zapas[i] = 0;
                    price[i][j] = 0;
 
                }
                if ((zapas[i] = 0) or (need[j] = 0)) {
                    price[i][j] = 0;
                }
            }
        }
    }
 
    min = 0;
    for (i = 1; i <= kolvopost; i++) {
        for (j = 1; j <= kolvopotreb; j++) {
            min = min + price[i][j];
        }
    }
    if (min != 0) {
        goto mayak2;
    }
sumpotr = 0;
    for (i; i <= kolvopost; i++) {
        for (j; j <= kolvopotreb; j++) {
            sumpotr = sumpotr + potracheno[i][j];
            cout << potracheno[i][j] << "\n";
        }
    }
    cout << "Суммарные затраты на доставку (перевозку)ресурсов (L)= " << sumpotr;
    return 0;
}
Данные для проверки в закрепе
Ответ: 10050
Миниатюры
Переписать код с паскаля на c++  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.05.2018, 22:58
Ответы с готовыми решениями:

Переписать код с Паскаля на С++
Ни как не могу разобраться со строчным типом в С++ делаю проги в Borland С++ uses crt; const zn:string='0123456789ABCDEF';//цифры в...

Переписать из Паскаля в С++
Суть в том, что есть программы написанные на Паскале, их нужно написать на С++. а я вообще не дружу с этим языком. Дорогие умельцы, если не...

Переписать з паскаля на С
Нужно переписать две програми з Turbo pascal в Turbo C 1. Визначення, чи дорівнює сума цифр цілої частини дійсного числа сумі такої ж...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.05.2018, 22:58
Помогаю со студенческими работами здесь

Переписать с паскаля на С
Помогите переписать на язык С program tabul; uses crt,graph; const a1=6;b1=14;h1=0.25; label metka; var a,b,h,x1,y1:real; ...

Переписать из паскаля
Здравствуйте помогите пожалуйста переписать на с++:) var a,b:array of integer; n,i,c,d,mind:integer; begin read(n); for...

Переписать с Паскаля на С++
program ClassificationYard; const Nmax = 100; type TRailroadCars = (TypeA, TypeB); TArray = array of TRailroadCars; ...

Переписать с Паскаля в с++
Помогите пожалуйста - переделать программу на с++ с использованием структур - очень прошу всех откликнуться... type student=record ...

Переписать с Паскаля на C++
Все доброго времени суток. Нужно переписать программу с паскаля на плюсы. Смысл программы в том, что она расставляет скобки приоритета для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru