importPackage(java.io);
importPackage(java.lang);
// your code goes here
// Solidity smart contract code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract RealEstate {
struct Property {
string name;
uint price;
address[] owners;
uint[] ownership;
}
mapping(uint => Property) public properties;
mapping(uint => mapping(address => uint)) public ownerships;
function createProperty(uint id, string memory name, uint price) public {
properties[id] = Property(name, price, new address[](0), new uint[](0));
}
function buyOwnership(uint id, uint percentage) public payable {
require(properties[id].price * percentage / 100 == msg.value, "Incorrect value sent");
require(percentage > 0 && percentage <= 100, "Invalid percentage");
uint ownership = properties[id].ownership.length;
properties[id].ownership.push(percentage);
properties[id].owners.push(msg.sender);
ownerships[id][msg.sender] = ownership;
}
function sellOwnership(uint id, uint percentage) public {
uint index = ownerships[id][msg.sender];
require(properties[id].ownership[index] == percentage, "Ownership percentage mismatch");
require(percentage > 0 && percentage <= 100, "Invalid percentage");
uint value = properties[id].price * percentage / 100;
properties[id].ownership[index] = 0;
ownerships[id][msg.sender] = 0;
properties[id].owners[index] = properties[id].owners[properties[id].owners.length - 1];
properties[id].owners.pop();
(bool success, ) = payable(msg.sender).call{value: value}("");
require(success, "Transfer failed.");
}
}
aW1wb3J0UGFja2FnZShqYXZhLmlvKTsKaW1wb3J0UGFja2FnZShqYXZhLmxhbmcpOwoKLy8geW91ciBjb2RlIGdvZXMgaGVyZQovLyBTb2xpZGl0eSBzbWFydCBjb250cmFjdCBjb2RlCi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKcHJhZ21hIHNvbGlkaXR5IF4wLjguMDsKCmNvbnRyYWN0IFJlYWxFc3RhdGUgewogICAgc3RydWN0IFByb3BlcnR5IHsKICAgICAgICBzdHJpbmcgbmFtZTsKICAgICAgICB1aW50IHByaWNlOwogICAgICAgIGFkZHJlc3NbXSBvd25lcnM7CiAgICAgICAgdWludFtdIG93bmVyc2hpcDsKICAgIH0KCiAgICBtYXBwaW5nKHVpbnQgPT4gUHJvcGVydHkpIHB1YmxpYyBwcm9wZXJ0aWVzOwogICAgbWFwcGluZyh1aW50ID0+IG1hcHBpbmcoYWRkcmVzcyA9PiB1aW50KSkgcHVibGljIG93bmVyc2hpcHM7CgogICAgZnVuY3Rpb24gY3JlYXRlUHJvcGVydHkodWludCBpZCwgc3RyaW5nIG1lbW9yeSBuYW1lLCB1aW50IHByaWNlKSBwdWJsaWMgewogICAgICAgIHByb3BlcnRpZXNbaWRdID0gUHJvcGVydHkobmFtZSwgcHJpY2UsIG5ldyBhZGRyZXNzW10oMCksIG5ldyB1aW50W10oMCkpOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1eU93bmVyc2hpcCh1aW50IGlkLCB1aW50IHBlcmNlbnRhZ2UpIHB1YmxpYyBwYXlhYmxlIHsKICAgICAgICByZXF1aXJlKHByb3BlcnRpZXNbaWRdLnByaWNlICogcGVyY2VudGFnZSAvIDEwMCA9PSBtc2cudmFsdWUsICJJbmNvcnJlY3QgdmFsdWUgc2VudCIpOwogICAgICAgIHJlcXVpcmUocGVyY2VudGFnZSA+IDAgJiYgcGVyY2VudGFnZSA8PSAxMDAsICJJbnZhbGlkIHBlcmNlbnRhZ2UiKTsKCiAgICAgICAgdWludCBvd25lcnNoaXAgPSBwcm9wZXJ0aWVzW2lkXS5vd25lcnNoaXAubGVuZ3RoOwogICAgICAgIHByb3BlcnRpZXNbaWRdLm93bmVyc2hpcC5wdXNoKHBlcmNlbnRhZ2UpOwogICAgICAgIHByb3BlcnRpZXNbaWRdLm93bmVycy5wdXNoKG1zZy5zZW5kZXIpOwogICAgICAgIG93bmVyc2hpcHNbaWRdW21zZy5zZW5kZXJdID0gb3duZXJzaGlwOwogICAgfQoKICAgIGZ1bmN0aW9uIHNlbGxPd25lcnNoaXAodWludCBpZCwgdWludCBwZXJjZW50YWdlKSBwdWJsaWMgewogICAgICAgIHVpbnQgaW5kZXggPSBvd25lcnNoaXBzW2lkXVttc2cuc2VuZGVyXTsKICAgICAgICByZXF1aXJlKHByb3BlcnRpZXNbaWRdLm93bmVyc2hpcFtpbmRleF0gPT0gcGVyY2VudGFnZSwgIk93bmVyc2hpcCBwZXJjZW50YWdlIG1pc21hdGNoIik7CiAgICAgICAgcmVxdWlyZShwZXJjZW50YWdlID4gMCAmJiBwZXJjZW50YWdlIDw9IDEwMCwgIkludmFsaWQgcGVyY2VudGFnZSIpOwoKICAgICAgICB1aW50IHZhbHVlID0gcHJvcGVydGllc1tpZF0ucHJpY2UgKiBwZXJjZW50YWdlIC8gMTAwOwogICAgICAgIHByb3BlcnRpZXNbaWRdLm93bmVyc2hpcFtpbmRleF0gPSAwOwogICAgICAgIG93bmVyc2hpcHNbaWRdW21zZy5zZW5kZXJdID0gMDsKICAgICAgICBwcm9wZXJ0aWVzW2lkXS5vd25lcnNbaW5kZXhdID0gcHJvcGVydGllc1tpZF0ub3duZXJzW3Byb3BlcnRpZXNbaWRdLm93bmVycy5sZW5ndGggLSAxXTsKICAgICAgICBwcm9wZXJ0aWVzW2lkXS5vd25lcnMucG9wKCk7CgogICAgICAgIChib29sIHN1Y2Nlc3MsICkgPSBwYXlhYmxlKG1zZy5zZW5kZXIpLmNhbGx7dmFsdWU6IHZhbHVlfSgiIik7CiAgICAgICAgcmVxdWlyZShzdWNjZXNzLCAiVHJhbnNmZXIgZmFpbGVkLiIpOwogICAgfQp9
js: "prog.js", line 7: missing ; before statement
js: pragma solidity ^0.8.0;
js: ...............^
js: "prog.js", line 9: missing ; before statement
js: contract RealEstate {
js: ...................^
js: "prog.js", line 10: missing ; before statement
js: struct Property {
js: ....................^
js: "prog.js", line 12: missing ; before statement
js: uint price;
js: ..................^
js: "prog.js", line 13: syntax error
js: address[] owners;
js: ................^
js: "prog.js", line 14: syntax error
js: uint[] ownership;
js: .............^
js: "prog.js", line 15: syntax error
js: }
js: ....^
js: "prog.js", line 17: missing ; before statement
js: mapping(uint => Property) public properties;
js: ....................................^
js: "prog.js", line 18: missing ; before statement
js: mapping(uint => mapping(address => uint)) public ownerships;
js: ....................................................^
js: "prog.js", line 20: missing ) after formal parameters
js: function createProperty(uint id, string memory name, uint price) public {
js: ...................................^
js: "prog.js", line 1: Compilation produced 10 syntax errors.