Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   перевести из Pascal в C++ (http://forum.oszone.net/showthread.php?t=272866)

Ластик 26-11-2013 23:38 2262119

перевести из Pascal в C++
 
Помогите, пожалуйста, перевести из Pascal в C++
Прошлую ночь решала задачи в Паскале, решила, сегодня это же нужно в С++. Тут я вообще ничего не понимаю
Вот задачи! Буду благодарна! (Хоть парочку, сама то и не одной не сделала в С++)

Код:

Program nastya;
uses crt;
var A,B: integer;
C:real;
begin
write('Число А: '); readln(A);
write('Число B: '); readln(B);
while B<>0 do begin
C:=A/B;
writeln ©;
readln
end;
while B=0 do
writeln ('Ошибка');
readln
end.


Код:

Program nastya;
uses crt;
var A:integer;
begin
write('Введите число от 0 до 4: '); readln(A);
case A of
0 : writeln('Ноль');
1 : writeln('Один');
2 : writeln('Два');
3 : writeln('Три');
4 : writeln('Четыре');
end;
while A<0 do
writeln ('Ошибка');
readln;
while A>4 do
writeln ('Ошибка');
readln
end.

Код:

Program stepen;
uses crt;
var A,B:real;
N:integer;
begin
write('Введите число A: '); readln(A);
write('Введите степень N(целое положительное число): '); readln(N);
B:=Exp(Ln(A)*N);
writeln(B);
readln
end.

Код:

Program massiv;
uses crt;
const M=10;
N=10;
var
matrix:array[1..M,1..N] of integer;
k, i, j, p, sum: longint;
begin
p:=1;
write('Введите число k: '); readln(k);
for i:= 1 to N do
begin
for j:= 1 to M do
begin
matrix[i,j]:=random(10);
write(matrix[i,j]:5);
if j = k then begin inc(sum, matrix[i,j]); p := p * matrix[i,j]; end;
end;
writeln;
end;
writeln;
writeln('Произведение ',k,' столбца : ',p);
end.


torauma 27-11-2013 09:16 2262262

Третья:
Код:

#include <iostream>
#include <math.h>

using namespace std;

int main()
{
        float A,B;
        int N;
        cout << "Введите число A: ";
        cin >> A;
        cout << "Введите степень N(целое положительное число): ";
        cin >> N;
        B = exp(log(A) * N);
        cout << B << endl;
        return 0;
}

Четвертая:
Код:

#include <iostream>
#include <iomanip>
#include <time.h>

using namespace std;

int main()
{
        const int M = 10, N = 10;
        srand(time(NULL));
        int matrix[M][N];
        long k, i, j, p, sum;
        p = 1;
        cout << "Введите число k: ";
        cin >> k;
        for (i = 0; i < N; i++)
        {
                for (j = 0; j < M; j++)
                {
                        matrix[i][j] = rand() % 10;
                        cout << setw(5) << matrix[i][j];
                        if (j + 1 == k)
                        {
                                sum += matrix[i][j];
                                p *= matrix[i][j];
                        }
                }
                cout << endl;
        }
        cout << endl << "Произведение " << k << " столбца : "  << p << endl;
        return 0;
}

У вас в четвертой задаче допущен недочет: функция random будет при каждом запуске выдавать одни и те же числа. Разберитесь что такое randomize и для чего оно нужно.

В первых двух задачах бесконечные циклы. Исправьте на Паскале, тогда и с переводом поможем.

Ластик 27-11-2013 12:13 2262323

Спасибо Вам! очень помогли! :) Учту все Ваши комментарии)))))))))))

Drongo 27-11-2013 14:42 2262418

Вторая.

Немного не уверен в правильности перевода readln
И ещё почему циклы проверки введённых значений у вас какие-то странные? У вас при любом числе кроме нуля будет ошибка. И лучше два while соединить в один через логическое И, либо сделать условие (A != 0) // А не равно нулю
Код:

#include <iostream>
using namespace std;

int main()
{
  int A;
  cout << "Введите число от 0 до 4: " << endl;
  cin >> A;

  switch(A){
      case 0:
        cout << "Ноль" << endl;
        break;
      case 1:
        cout << "Один" << endl;
        break;
      case 2:
        cout << "Два" << endl;
        break;
      case 3:
        cout << "Три" << endl;
        break;
      case 4:
        cout << "Четыре" << endl;
        break;
      default:
        cout << "Ошибка ввода" << endl;
        break;
    }
  while(A < 0){
      cout << "Ошибка" << endl;
      cin >> A;
    }
  while(A > 0){
      cout << "Ошибка" << endl;
      cin >> A;
    }

  cin >> A;

        return 0;
}


Ластик 27-11-2013 20:35 2262699

Спасибо. поняла где ошибка, А должно быть больше 4х. )))))))))))))))))))))))))))))))))
while(A > 4)
Еще раз спасибо!!!!!

а в первой я так и не поняла где ошибка. все работает. проверяла)))
Единственное тут программа выдала символ на сочетание букв
Код:

while B<>0 do begin
C:=A/B;
writeln ©;
readln

а должно быть
Код:

while B<>0 do begin
C:=A/B;
writeln (С);
readln


Drongo 27-11-2013 21:28 2262735

Цитата:

Цитата Ластик
Единственное тут программа выдала символ на сочетание букв »

А я гадал-гадал, что это за конструкция такая...

Код в ворде набираете?

torauma 27-11-2013 21:40 2262742

Цитата:

Цитата Ластик
а в первой я так и не поняла где ошибка. все работает. »

Формулировку задачи напишите. Может и правда все правильно, но очень в этом сомневаюсь.
Цитата:

Цитата Ластик
Код:
while B<>0 do begin
C:=A/B;
writeln (С);
readln »

Мне одному кажется, что в теле этого цикла не меняется B и, соответственно, цикл является бесконечным? То же самое могу спросить про все циклы while в первых двух задачах. И еще не понятно зачем использовать while там, где логичнее if?

Ластик 27-11-2013 21:47 2262746

Вот задание на 1 задачу.
Введите 2 числа, А и В. Если В не равно 0, то А разделить на В, иначе выдать "Ошибка"

Drongo, Я просто скопировала для распечатки в ворд, и от туда сюда скопировала, вот и получился символ :)

torauma, я делала с if, но что то не получилось. Нашла похожую задачу в интернете, сделала по аналогии. Проверила - работает :) Вот такой из меня программист.
Вот задание на 1 задачу.
Введите 2 числа, А и В. Если В не равно 0, то А разделить на В, иначе выдать "Ошибка"

torauma 27-11-2013 22:26 2262772

Цитата:

Цитата Ластик
Проверила - работает »

Вот не верю что эта программа нормально завершилась.
Цитата:

Цитата Ластик
я делала с if, но что то не получилось. »

Разбираться нужно почему не получилось. Условный оператор - одна из самых простых и часто используемых конструкций.

Ластик 27-11-2013 22:58 2262796

Код:

Program nastya;
uses crt;
var A,B: integer;
C:real;
begin
write('Число А: '); readln(A);
write('Число B: '); readln(B);
if  B<>0 then
begin
C:=A/B;
writeln (C);
readln
end
else B=0
writeln ('Ошибка');
readln
end.

Программы нет, проверить не могу. Такой вид будет?)

yurfed 27-11-2013 23:56 2262831

Цитата:

Цитата Ластик
Такой вид будет?) »

Такой, если тоже не ошибаюсь :) Забыл уже всё :)
Код:

Program nastya;
uses crt;
var A,B: integer;
C:real;
begin
  write('Число А: '); readln(A);
  write('Число B: '); readln(B);
 if B<>0 then
  begin
    C:=A/B;
    writeln (C);
    readln
 else B=0
  writeln ('Ошибка');
  readln
  end;
end.


torauma 28-11-2013 09:54 2262936

Вот подправил:
Код:

Program nastya;
uses crt;
var A,B: integer;
C:real;
begin
write('Число А: '); readln(A);
write('Число B: '); readln(B);
if B<>0 then
  begin
  C:=A/B;
  writeln (C);
  end
else
  begin
  writeln ('Ошибка');
  end;
readln; //лучше использовать readkey
end.

Обратите внимание, что readln останавливает программу до тех пор, пока не будет нажата клавиша "ввод", а readkey отреагирует на нажатие любой клавиши.

Вариант с проверкой в цикле:
Код:

Program nastya;
uses crt;
var A,B: integer;
C:real;
begin
write('Число А: '); readln(A);
write('Число B: '); readln(B);
while B = 0 do
begin
    writeln ('Ошибка');
    write('Число B: '); readln(B);
end;
C:=A/B;
writeln (C);
readkey;
end.

Тепрь на C++:
if:
Код:

#include <iostream>

using namespace std;

int main()
{
        int A,B;
        float C;
        cout << "Число A: ";
        cin >> A;
        cout << "Число B: ";
        cin >> B;
        if (B != 0)
        {
                C = A / B;
                cout << C << endl;
        }
        else
        {
                cout << "Ошибка" << endl;
        }
        return 0;
}

while:
Код:

#include <iostream>

using namespace std;

int main()
{
        int A,B;
        float C;
        cout << "Число A: ";
        cin >> A;
        cout << "Число B: ";
        cin >> B;
        while (B == 0)
        {
                cout << "Ошибка" << endl;
                cout << "Число B: ";
                cin >> B;
        }
        C = A / B;
        cout << C << endl;
        return 0;
}


Ластик 28-11-2013 15:20 2263119

Ребята, вы такие молодцы! Спасибо вам большое!!!!!!!!!! Ответили быстро и помогли!
:up: Будущая пятерка ваша!)))))))))))))))))))


Время: 22:41.

Время: 22:41.
© OSzone.net 2001-