|
if you know the logic can you elaborate.
please
|
|
|
|
|
Like I said, the logic is in the code. You need to study the code and the comments to understand the logic.
|
|
|
|
|
You are not rebuilding the array to match what it would look like after all the rotations. You are looking at a single index in the array. The logic applies to what is the effect of a rotation to that index alone - not the whole array.
Socialism is the Axe Body Spray of political ideologies: It never does what it claims to do, but people too young to know better keep buying it anyway. (Glenn Reynolds)
|
|
|
|
|
hello i want basics of c programming language
|
|
|
|
|
|
|
I need to read/write small chunks of data over an unreliable communication link in an embedded system. When I was student I learned about interleavers/deinterleavers, Viterbi-encoding, Reed Solomon-encoding, etc, but that was a million years ago so I'm sure there's something better out there today. I would prefer something that is available in open source C-code and my data is not streaming so it doesn't need to support on-the-fly operations, it just need to be able to encode/decode packets of arbitrary sizes. Can someone please recommend something?
|
|
|
|
|
The old modem protocols XModem, YModem and Zmodem are designed for what you are doing they send packets with CRC checks and packets are accept or reject which causes the packet to be resent. You can net search for the code.
A simple XModem send routine looks like this which should give you an understanding of what it does
Send data of a fixed packet size, send the CRC for the packet .. wait for ACK or NAK. Resend packet on NAK.
simple xmodem/ymodem implementation in C · GitHub[^]
A full Zmodem with both send and receive implementation is more complex but once you understand the simple xmodem it should make sense. The greater complexity is because the transfer packet size auto adjusts, as you get more packet rejects it sends smaller and smaller packets. If you are getting transmission errors you don't want to waste time sending large packets over and over, expect an error and send small packets. The smaller packets means there is a lot of packet acknowledges going on but that is faster than resending large packets.
pkg-sbbs/zmodem.c at master · ftnapps/pkg-sbbs · GitHub[^]
ZMODEM - Wikipedia[^]
Ethernet protocols extend beyond that in that they allow and expect the packets to arrive out of order. The X/Y/Z modem protocols are strictly packets in order processes which is what you said was okay.
In vino veritas
modified 5-Aug-18 20:39pm.
|
|
|
|
|
A little while ago, I paid a visit to the official documentation page that covers the LTCG linkage editor command line switch, at /LTCG (Link-time Code Generation) | Microsoft Docs, which spears to me to give misleading information about where the option is set in Visual Studio. Being the good citizen that I am, I wrote it up, which gave rise to Setting LTCG in Visual Studio 2017 · Issue #376 · MicrosoftDocs/cpp-docs · GitHub. Upon visiting the generated issue page on GitHub, I added a picture of the property page where I found and set the option, to expedite linking of the release build of a project that imports a module that was compiled with the /GL switch, so that it can be used with P/Invoke.
This is not my first exposure to commenting on Microsoft documentation, and I am delighted to see this direct feedback channel. I wish there had been such a direct channel when I discovered a bug in the COBOL compiler for the IBM System/34, way back in 1980. I reported that bug, but it required writing and sending a full-blown business letter, via the United States Postal Service, and the attendant delays and labor on the IBM end of the connection.
I was further gratified to discover that, since I have an active GitHub account, I could augment the textual comment that caused the issue to be opened with a picture of my screen, captured courtesy of the ALT-Print Screen keyboard shortcut and the built-in Paint program. Yes, I still use Paint, more often than you might think.
Since I assume that adding such detail to the issue is available to me because I have an active GitHub account, I'd say this is ample reason for any serious developer to have one, even if you don't have any repositories, although I opened it because I have a handful of them.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
Hey guys!
I have the following code and I can't seem to find a way to query my previous query because $row['name']; is not working... Here is part of my code:
<?php
$id = $_GET['id'];
if ($id) {
$sql = "SELECT * FROM forum_sub_cats WHERE id = ?;";
if(!mysqli_stmt_prepare($stmt, $sql)) {
echo "SQL error";
} else {
mysqli_stmt_bind_param($stmt, "i", $id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$resultCheck = mysqli_num_rows($result);
$admin_user_level = $admin_user_level + '1';
if ($resultCheck < 1) {
echo "The forum you are trying to create a topic on, does not exist\n";
} else {
$row1 = mysqli_fetch_assoc($result);
if ($row1['admin'] == 1 && $admin_user_level == 0) {
echo "You are not an administrator, therefore you cannot post on this forum!\n";
} else {
if (!$_POST['submit']) {
echo "<table border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n";
echo "<form method=\"POST\" action=\"./forum_main.php?act=create&id=".$id."\">\n";
echo "<tr><td>Form Sub Category</td><td><select name=\"cat\">\n";
$sql2 = "SELECT * FROM forum_cats WHERE admin < ?;";
if(!mysqli_stmt_prepare($stmt, $sql2)) {
echo "SQL error";
} else {
mysqli_stmt_bind_param($stmt, "i", $admin_user_level);
mysqli_stmt_execute($stmt);
$result2 = mysqli_stmt_get_result($stmt);
while ($row = mysqli_fetch_assoc($result2)) {
$row = $row['id'];
$sql3 = "SELECT * FROM forum_sub_cats WHERE cid = ?;";
if(!mysqli_stmt_prepare($stmt, $sql3)) {
echo "SQL error";
} else {
mysqli_stmt_bind_param($stmt, "i", $row);
mysqli_stmt_execute($stmt);
$result3 = mysqli_stmt_get_result($stmt);
echo "<option value=\"0\">".$row['name']."</option>\n";
while ($row2 = mysqli_fetch_assoc($result3)) {
$selected = ($row2['id'] == $id) ? "SELECTED": "";
echo "<option value=\"".$row2['id']."\"".$selected."> ".$row2['name']."</option>\n";
}
|
|
|
|
|
unfortunately your code nothing to do with C/C++/MFC...
Maybe you will try to ask to some more appropriate forum?
|
|
|
|
|
Try to write a small program.almost forgot task sync concept, need some help.
task1:
if (cx == True)
{
do task1();
cx = False;
}
task2:
if (cx == False)
{
do task2();
cx = True;
}
Is possible the 2 tasks step in a deadlock situation?
Thanks
|
|
|
|
|
|
can you explain a little more ? thanks
|
|
|
|
|
|
Why the above code could be deadlock. thanks
|
|
|
|
|
Because they are both using the same variable without checking that it is free to update. Follow the link in my response and read about thread synchronisation.
|
|
|
|
|
So use While(cx != True) ; similar code could resolve it?
|
|
|
|
|
Possibly, but threads do not always behave the way you expect.
|
|
|
|
|
Sure, the code is embedded software code, no OS, so, do you think there is a better way to implement the condition variable?
|
|
|
|
|
That's a whole new question.
|
|
|
|
|
Hey Guys,
I'm writing an application in C++ that needs to write shared memory to windows and I've hit a stumbling block.
Even though I'm not getting any error messages (I've stepped through with the debugger) it would appear nothing is writing to shared memory. Here is the code that writes the shared memory,
void Write_Physics(PhysicsStruct *s_physics)
{
TCHAR szName[] = TEXT("Local\\physics");
hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(PhysicsStruct), szName);
if (!hMapFile)
{
return;
}
mapFileBuffer = (unsigned char*)MapViewOfFile(m_physics.hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(PhysicsStruct));
if (!mapFileBuffer)
{
return;
}
CopyMemory(mapFileBuffer,s_physics,sizeof(PhysicsStruct));
UnmapViewOfFile(m_physics.mapFileBuffer);
CloseHandle(m_physics.hMapFile);
}
My difficulty is that when I try another process to read the shared memory nothing is happening. For completeness here is the code that reads the structure from the shared memory,
void Read_Physics(PhysicsStruct *s_physics)
{
TCHAR szName[] = TEXT("Local\\physics");
hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(PhysicsStruct), szName);
if (!m_physics.hMapFile)
{
return;
}
mapFileBuffer = (unsigned char*)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, sizeof(PhysicsStruct));
if (!mapFileBuffer)
{
return;
}
s_physics = (PhysicsStruct*)mapFileBuffer;
UnmapViewOfFile(mapFileBuffer);
CloseHandle(hMapFile);
}
If anyone has any suggestions it would be greatly appreciated. What the problem resembles is like trying to write something to file and forgetting the fprintf or file write commands.
Thanks in advance guys.
|
|
|
|
|
Where is hMapFile declared?
void Read_Physics(PhysicsStruct *s_physics)
{
TCHAR szName[] = TEXT("Local\\physics");
here >>>> hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(PhysicsStruct), szName);
if (!m_physics.hMapFile)
{
return;
}
mapFileBuffer = (unsigned char*)MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, sizeof(PhysicsStruct));
if (!mapFileBuffer)
{
return;
}
s_physics = (PhysicsStruct*)mapFileBuffer;
UnmapViewOfFile(mapFileBuffer);
CloseHandle(hMapFile);
}
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
There is another problem with the code for the Read function:
You're passing the pointer s_physics by value. This is not going to do what you want. You need to pass the pointer's address.
You would do that like so:
void Read_Physics(PhysicsStruct **s_physics)
Then inside the function:
*s_physics = (PhysicsStruct*)mapFileBuffer;
And the read function would be called thusly:
Read_Physics(&s_physics);
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|
|
Richard,
Many thanks for answering. My apologies I wrote this as pseudo code to try and save time. The declarations for those are,
HANDLE hmapFile;
unsigned char *mapFileBuffer;
They are at the beginning of each function. The joys of doing this at 1:00am!
Copy you on the declaration of the read function - leave that with me to sort out.
Apart from this is there any other reason you can see for this and particular the write function not working?
Many thanks in advance.
|
|
|
|
|