Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » нужны задания практические по С

Ответить
Настройки темы
нужны задания практические по С

Аватара для bool

Старожил


Сообщения: 229
Благодарности: 9

Профиль | Отправить PM | Цитировать


Изменения
Автор: bool
Дата: 28-05-2007
вспоминаю и изучаю дальше - С, самостоятельно. Дайте какие нибудь задания пожалуйста, а лучше несколько по возрастающей (по сложности) . Или посоветуйте где можно эти задания найти 8) Уровень начинающего.

Отправлено: 18:05, 17-11-2006

 

Аватара для Diseased Head

Ветеран


Сообщения: 881
Благодарности: 55

Профиль | Отправить PM | Цитировать


bool
Мне это тоже интересно.
Но у меня такое ощущение что все забыли про C. Про структурное программирование забыли. И непонятно, почему?
Ведь ОО языки предназначены для написания, больших по размеру программ (ну можно и средних). А писать на C++ (и др. ООЯ) маленькие проги это дибилизм. Уж не говоря о C# и Java. Эти мне кажется вобще предназначены только для прикладух и под сеть, а системные проги на них писать, по моему, изврат.
Или я не прав?

-------
Знаю точно, что я есть. Остальное, всё, не точно.
Возможное - невозможно! Но невозможное - возможно, но нужна жертва соразмерная.


Отправлено: 19:11, 17-11-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для CyraxZ

Ветеран


Сообщения: 784
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата:
вспоминаю и изучаю дальше - С, самостоятельно
Чистый C сейчас практически нигде не используется, посему советую (лично моё мнение) взяться за C++... Даже фирмы, которые писали на чистом C, скажем, драйвера или программы прошивки для всяких устройст (т.е. системное низкоуровневое программирование), сейчас переходят на C++. Потому что сейчас уже разницы практически нет, что мы напишем прогу с использованием классов и конструкторов на C++, что с использованием переменных и инициализирующих функций (вместо конструкторов) на чистом C. А вернее, машинный код после компиляции C-программы ничуть не быстрее и не короче, чем после компиляции аналогичной C++-программы (а эти параметры - скорость и размер кода - в системном программировании играют ведущую роль). Раньше то, возможно, и была. Но сейчас компиляторы и оптимизаторы сделали своё дело.
Это о скорости выполнения кода и о его размере. Что касается простоты, удобства и эффективности, то верх берёт, однозначно, C++...

Цитата:
Но у меня такое ощущение что все забыли про C. Про структурное программирование забыли. И непонятно, почему?
С++ - не чисто объектно-ориентированный язык (в отличие, например, от C#). C++ проектировался как язык общего назначения с уклоном в сторону системного программирования и поддерживающий несколько парадигм программирования, куда наряду с парадигмой ООП входит и парадигма процедурного программирования. Никакой стиль программирования язык не навязывает, он всего лишь предоставляет удобные средства для использования какой-либо парадигмы. Т.е. С++ не заменяет C, а всего лишь добавляет поддержку абстракции данных, объектно-ориентированного и обобщённого программирования (его главные преимущества перед традиционным C).
Т.е. на C++ запросто можно написать структурную программу без использования классов и конструкторов/деструкторов (если нравится). На C же ООП-программа пишется довольно сложно (поддержки ООП то нет)...

Таким образом, системные программы на C++ пишутся так же легко, как и на чистом C. Чего не скажешь, например, о C#. На C# тоже можно писать системные программы, но это неоправданно сложно и неэффективно, поскольку C# - полностью объектно-ориентированный язык (там даже функция main принадлежит классу) и заточенный именно на ООП. Другие парадигмы он не поддерживает...
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:30, 17-11-2006 | #3


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


CyraxZ, а почему на C# неэффективно писать системные программы? Тот же Visual Studio 2005 всё равно сначала переводит программу с поддерживаемых языков (C++, C#, Basic - всё равно) в свой IL-код, а уж потом выходит бинарник. Так по сути - какая разница на каком языке, если есть ещё общий для всех IL?
Или моя логика неверна? Было бы интересно знать.

bool, посмотри курс по C/C++ на intuit.ru. Там вроде не особо сложно.

Отправлено: 17:39, 18-11-2006 | #4


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Coutty
Студия умеет генерить для C++ как нэйтив код, так и IL. Драйверы всё ещё в нэйтив делают. К тому же в плюсах работа с указателями много прозрачней, чем в C# (в котором указатели тоже есть, но более ограниченные. Основное назначение - связка с ансэйф кодом; непосредственно при программировании ими никто не пользуется).

-------
http://ivank.ru


Отправлено: 18:42, 18-11-2006 | #5


Аватара для Diseased Head

Ветеран


Сообщения: 881
Благодарности: 55

Профиль | Отправить PM | Цитировать


Coutty ты чёт...
Цитата:
Так по сути - какая разница на каком языке, если есть ещё общий для всех IL?
Так именно поэтому и системные проги писать не катит. Потому как все в IL-код, а уж как он потом это в машкод переделывает (???).
Я так думаю, может я не прав. Я в C# не силён.

Отправлено: 19:43, 18-11-2006 | #6

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


bool, стандартные шаги:
1. напиши прогу "hello, world" (ещё один сишник родился)
2. программу поиска максимального и минимального элемента массива
3. определитель матрицы
4. изменяемый список (рекомендуется двухсвязный)
5. быстрая сортировка этого списка.
Думаю на этом этапе желание работать с чистым C пропадёт

Отправлено: 19:53, 23-11-2006 | #7


Аватара для bool

Старожил


Сообщения: 229
Благодарности: 9

Профиль | Отправить PM | Цитировать


забыл совсем про эту тему , да и времени не хватало. Вот по поиску максимального и минимального элемента, что то сразу застопорился)
массив задаю с 11 элементами, а почему позволяет вводить только 5 и сразу результат, и только на максимальный. Ещё подскажите как нужно правильно в начале объявить функции которые будут возвращать значение int, и в которую я буду передавать как аргумент - массив.

Код: Выделить весь код
#include <stdio.h>

char find_max(char *x);
char find_min(char *n);
main(void)
{
     int t;
     char a[10];
     printf("input elements of array\n");
     for(t=0;t<10;t++){
       scanf("%c",&a[t]);
       }
     printf("Max = %c\n",find_max(a));
     printf("Min = %c",find_min(a));

}

char find_max(char *x)
{
     int t;
     char max;
     max=x[0];
     for(t=1;t<10;t++){
     if(x[t]>max) max=x[t];
     }
     return max;
}
char find_min(char *n)
{
     int t;
     char min;
     min=n[0];
     for(t=1;t<10;t++){
     if(n[t]<min) min=n[t];
     }
     return min;
}

Отправлено: 01:51, 26-02-2007 | #8


Аватара для bool

Старожил


Сообщения: 229
Благодарности: 9

Профиль | Отправить PM | Цитировать


чет меня заклинило 8) пардон, вот работает) посмотрите пожалуйста , как можно оптимальнее её написать, и ещё такой вопрос: вот допустим я хочу прям в программе ввести величину массива. Мне нужно сначала объявить переменную int size; /* размер массива */
а как потом объявлять сам массив? так ведь нельзя: int a[size] , потому что переменная size ещё не определена. Подскажите пожалуйста.

Код: Выделить весь код
#include <stdio.h>

find_max(int *x);
find_min(int *n);
main(void)
{
     int t;
     int a[10];
     printf("input elements of array\n");
     for(t=0;t<11;t++){
       scanf("%d",&a[t]);
       }
     printf("Max = %d\n",find_max(a));
     printf("Min = %d",find_min(a));

}

find_max(int *x)
{
     int t;
     int max;
     max=x[0];
     for(t=1;t<11;t++){
     if(x[t]>max) max=x[t];
     }
     return max;
}
find_min(int *n)
{
     int t;
     int min;
     min=n[0];
     for(t=1;t<11;t++){
     if(n[t]<min) min=n[t];
     }
     return min;
}

Отправлено: 02:09, 26-02-2007 | #9

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


массив переменного размера, так называемый динамический берётся из свободной памяти:
Код: Выделить весь код
   int size1 = 10;
   int* array1 = new int[size1];

...

  delete[] array1;
усовершенствовать алгоритм поиска мин/макс дальше сложно. Можно только сделать его более универсальным, не теряя производительности:
Код: Выделить весь код
// возвращает указатель на минимальный элемент или на конец массива (если он пустой)
int* find_min(int* first, int* last)
{
  int* result = first;
  if (first!=last)
  {
      while(++first!=last) if (*first<*result) result=first;
  }
  return result;
}

...

// вообще бы надо проверить, что size1>0
  int* min1 = find_min(array1, array1+size1);
  print("found minimum %d at position %d\n", *min1, ((unsigned)min1-(unsigned)array1)/sizeof(int));

// минимум среди первых 10:
  int* min1 = find_min(array1, array1+min(size1,10));
  print("found minimum %d at position %d\n", *min1, ((unsigned)min1-(unsigned)array1)/sizeof(int));

Отправлено: 20:48, 26-02-2007 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » нужны задания практические по С

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Двойные задания печати. rezzyurfak Microsoft Windows 2000/XP 0 28-09-2009 14:53
Fujifilm FinePix F100fd Практические советы и рекомендации! UADE Цифровое изображение 9 07-09-2009 10:39
Новые задания Veter23 Лечение систем от вредоносных программ 8 17-07-2009 21:30
Прочее - Беспроводной интернет. Практические вопросы. Murder7 Сетевое оборудование 4 07-11-2008 08:36
Назаначенные задания - Безопасность Chuk Microsoft Windows 2000/XP 3 19-10-2005 14:13




 
Переход