Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 02.12.2017
Сообщений: 21
1

Переделайте Программу из С++ на язык СИ

04.02.2018, 18:18. Показов 860. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <cstddef>
#include <iostream>
 
size_t unique(int* a, size_t n) {
  size_t j = 0;  
  for(size_t i = 1; i < n; ++i) {
    if((a[j] != 0) || (a[i] != 0)) {
      ++j;
      a[j] = a[i];
    }    
  }  
  return j + 1;
}
 
void write_arr(const int* a, size_t n) {
  for(size_t i = 0; i < n; ++i)
    std::cout << ' ' << a[i];
  std::cout << '\n';
}
 
int main() {    
  int a[] = {1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0};
  size_t n = sizeof(a) / sizeof(*a);
  
  write_arr(a, n);
  n = unique(a, n);
  write_arr(a, n);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2018, 18:18
Ответы с готовыми решениями:

Переделайте пожалуйста готовую программу с С++ на язык Паскаль!
помогите с реализацией алгоритма сжатия Хаффмана. // ConsoleApplication6.cpp: определяет точку...

переделайте программу в подпрограмный
Помогите плиз переделайте программу из линейной в подпрограмный с использованием процедур и...

Переделайте пожалуйста данную программу
Переделайте пожалуйста данную программу из линейной в подпрограмный с использованием процедур и...

Переделайте программу в виде функции СИ
Нужно эту программу сделать у виде функции Это условие : Вычислить сумму четных элементов,...

9
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
04.02.2018, 18:25 2
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
#include <stdio.h>
 
size_t unique(int* a, size_t n) {
    size_t j = 0;
    for (size_t i = 1; i < n; ++i) {
        if ((a[j] != 0) || (a[i] != 0)) {
            ++j;
            a[j] = a[i];
        }
    }
    return j + 1;
}
 
void write_arr(const int* a, size_t n) {
    for (size_t i = 0; i < n; ++i)
        printf(" %i", a[i]);
    putchar('\n');
}
 
int main(void) {
    int a[] = { 1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0 };
    size_t n = sizeof(a) / sizeof(*a);
 
    write_arr(a, n);
    n = unique(a, n);
    write_arr(a, n);
 
    return 0;
}
0
1 / 1 / 0
Регистрация: 02.12.2017
Сообщений: 21
04.02.2018, 19:18  [ТС] 3
Извините,а можете ее написать типо по стандартному,без этих (write_arr,size_t)я просто не знаю что это
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
04.02.2018, 19:23 4
Цитата Сообщение от Yura_Khomitsky Посмотреть сообщение
без этих (write_arr,size_t)
size_t - является целочисленным беззнаковым типом, который входит в стандарт Си. Ну если так не хочется его использовать, то замените везде, где он встречается, на unsigned int.
А функцию write_arr вы же сами определили в 15 строке, эта функция является частью вашего кода
0
13 / 13 / 9
Регистрация: 28.07.2017
Сообщений: 103
04.02.2018, 19:25 5
Yura_Khomitsky,
Цитата Сообщение от Yura_Khomitsky Посмотреть сообщение
Извините,а можете ее написать типо по стандартному,без этих (write_arr,size_t)я просто не знаю что это
write_arr - это имя функции. Его можно изменить.
size_t - Тип данных size_t целочисленный беззнаковый тип данных, возвращаемый оператором sizeof. Определен в заголовочном файле <cstdio>.
В библиотеке <cstdio>, size_t используется как тип данных некоторых параметров в функциях fread, fwrite и setvbuf. В случае функций FREAD и FWRITE, size_t тип данных возвращаемого значения.
Во всех случаях он используется как тип данных для представления количества байтов буфера или строки.
http://cppstudio.com/post/1276/
0
1 / 1 / 0
Регистрация: 02.12.2017
Сообщений: 21
04.02.2018, 19:59  [ТС] 6
Эта программа это же одномерный массив?

Добавлено через 3 минуты
Можете пояснить 6 строку.И 22 для чего там делить?
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
04.02.2018, 20:11 7
Цитата Сообщение от Yura_Khomitsky Посмотреть сообщение
Эта программа это же одномерный массив?
Не понял вопроса. Имеете ввиду, что данная программа работает с одномерным массивом? Да, а именно с целочисленным одномерным массивом a объявленным в 21 строке.

Добавлено через 10 минут
Цитата Сообщение от Yura_Khomitsky Посмотреть сообщение
Можете пояснить 6 строку.И 22 для чего там делить?
в 6 строке условие, которое выполняется, если элементы массива под индексом j или i (под номером который берётся из переменных j и i, счёт ведётся с 0) не равны нулю.

А в 22 строке высчитывается количество элементов в массиве: размер в байтах, который занимает целиком весь массив a делится на размер в байтах, который занимает только один элемент из массива (в данном случае размер у типа int).
0
1 / 1 / 0
Регистрация: 02.12.2017
Сообщений: 21
04.02.2018, 21:11  [ТС] 8
Просто,я учусь на втором курсе,и не знаю поверят ли мне что я мог так,х хотелось чтобы написали по простому если вам не трудно.Типо оголосить массив,переменные, цикл ,условие и вывести массив,буду благодарен очень
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
04.02.2018, 21:26 9
Yura_Khomitsky, так кудаж проще-то
У вас код и так содержит самый минимум для своей задачи. Или вы боитесь функций?
Ну вот, переделал без функций:
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
#include <stdio.h>
 
int main(void) {
 
    int a[16] = { 1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,0 };
    unsigned int i = 0, j = 0;
 
    for (i = 0; i < 16; ++i)
        printf(" %i", a[i]);
    putchar('\n');
 
    for (i = 1; i < 16; ++i) {
        if ((a[j] != 0) || (a[i] != 0)) {
            ++j;
            a[j] = a[i];
        }
    }
 
    for (i = 0; i <= j; ++i)
        printf(" %i", a[i]);
    putchar('\n');
 
    return 0;
}
0
1 / 1 / 0
Регистрация: 02.12.2017
Сообщений: 21
04.02.2018, 22:04  [ТС] 10
Спасибо вам огромное.Вы самый добрый человек!
0
04.02.2018, 22:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.02.2018, 22:04
Помогаю со студенческими работами здесь

Переделайте программу под фукции
В этой программе сделайте пожалуйста ввод ,сложение ,вывод через функцию var s1, s2, s3, c:...

Переделайте программу с Turbo Pascal на С# или С++
function g(a,b:real):real; begin g:=(a*a+b*2)/(a*2+3*a*b+3*b*b+4); end; var s,t,rez:real;...

переделайте пожалуйста программу с Паскаля в билдер
Дан целочисельный массив из n элементов.В конец записи каждого элемента,которые больше числа...

Переделайте эту программу через функцию
type letters = array of integer; var a: letters; i, max: char; begin randomize; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru