Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Перевод из С++ в Си - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Классы, поинтеры и вызов функций http://www.cyberforum.ru/cpp-beginners/thread1311873.html
Всем пользователям форума привет, Помогите разобраться, что делают функции и последовательность вызова, как начинающему С++ программисту важно, чтоб вы помогли сначала объяснить как можно простыми...
C++ Ошибка при работе с функцией strlen #include <iostream> #include <cstring> using namespace std; int main(){ string a; int i,j; cout<<"Vvedite stroky \n"; cin>>a; http://www.cyberforum.ru/cpp-beginners/thread1311872.html
Проверить истинность утверждений C++
Данные цели числа b1 , b2 , ... , b10 - выяснить : а) верно , что сумма тех из них , которые больше 20. превышает 100; б) Верно ли, что сумма тех из них , которые меньше 50 , есть четное число .
Ввод чисел через функцию C++
Всем привет, подскажите как модифицировать код, чтобы числа вводились через вывоз функции? #include <iostream> #include <windows.h> using namespace std; float unitprice_circle(int...
C++ Данные цели числа b1 , b2 , . , b10 - выяснить http://www.cyberforum.ru/cpp-beginners/thread1311809.html
Данные цели числа b1 , b2 , ... , b10 - выяснить : а) верно , что сумма тех из них , которые больше 20. превышает 100; б) Верно ли, что сумма тех из них , которые меньше 50 , есть четное число .
C++ Настроить Codeblocks Гуру, помогите новичку! Раньше кодил под Win-консоль в блокноте и запускал компиляцию BAT-ником... Тепреть пробую перейти на Codeblocks! И немного запутался... 1) Можно ли создать нечто вроде... подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3826 / 2084 / 532
Регистрация: 18.10.2014
Сообщений: 3,699
26.11.2014, 21:07
Цитата Сообщение от stasonio Посмотреть сообщение
Как ее написать в Си обычном?
Вот буквальный перевод вашей программы, без исправления ошибок, но с небольшими стилистическими изменениями. В частности, ваш код неправильно обрабатывает ошибки выделения памяти - если память не была успешно выделена, он выдает сообщение об ошибке, но потом тупо продолжает работать с невыделенной памятью. Я сохранил это поведение и в моем варианте.

Т.е. ошибки подобного рода надо еще дополнительно исправлять.

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
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
 
typedef struct Node
{
  char *word;
  int count;
  struct Node *next;
} Node;
 
Node *CreateList(Node *node, char *inword)
{
  if (node == NULL)
  {
    node = malloc(sizeof *node);
    if (node == NULL)
      printf("Error allocating memory.\n");
 
    node->word = malloc(strlen(inword) + 1);
    if (node->word == NULL)
      printf("Error allocating memory.\n");
 
    strcpy(node->word, inword);
    node->count = 1;
    node->next = NULL;
  }
  else if (strcmp(inword, node->word) == 0)
    node->count++;
  else
    node->next = CreateList(node->next, inword);
 
  return node;
}
 
int ShowList(Node * node)
{
  if (node != NULL)
  {
    printf("%s %d\n", node->word, node->count);
    ShowList(node->next);
  }
  return 0;
}
 
void DeleteList(Node *node)
{
  if (node != NULL)
  {
    DeleteList(node->next);
    free(node->word);
    free(node);
  }
}
 
int main()
{
  char str[] = "privet vot eto stroka stas kak dela stas stroka vot";
  char *word;
  Node* pnode = NULL;
 
  word = strtok(str, " ,.!?()");
  while (word != NULL)
  {
    pnode = CreateList(pnode, word);
    word = strtok(NULL, " ,.!?()");
  }
 
  ShowList(pnode);
  DeleteList(pnode);
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru