|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » нужны задания практические по С |
|
нужны задания практические по С
|
Старожил Сообщения: 229 |
Профиль | Отправить PM | Цитировать
вспоминаю и изучаю дальше - С, самостоятельно. Дайте какие нибудь задания пожалуйста, а лучше несколько по возрастающей (по сложности) . Или посоветуйте где можно эти задания найти 8) Уровень начинающего.
|
|
Отправлено: 18:05, 17-11-2006 |
Ветеран Сообщения: 881
|
Профиль | Отправить PM | Цитировать bool
Мне это тоже интересно. Но у меня такое ощущение что все забыли про C. Про структурное программирование забыли. И непонятно, почему? Ведь ОО языки предназначены для написания, больших по размеру программ (ну можно и средних). А писать на C++ (и др. ООЯ) маленькие проги это дибилизм. Уж не говоря о C# и Java. Эти мне кажется вобще предназначены только для прикладух и под сеть, а системные проги на них писать, по моему, изврат. Или я не прав? |
------- Отправлено: 19:11, 17-11-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 784
|
Профиль | Отправить PM | Цитировать Цитата:
Это о скорости выполнения кода и о его размере. Что касается простоты, удобства и эффективности, то верх берёт, однозначно, C++... Цитата:
Т.е. на C++ запросто можно написать структурную программу без использования классов и конструкторов/деструкторов (если нравится). На C же ООП-программа пишется довольно сложно (поддержки ООП то нет)... Таким образом, системные программы на C++ пишутся так же легко, как и на чистом C. Чего не скажешь, например, о C#. На C# тоже можно писать системные программы, но это неоправданно сложно и неэффективно, поскольку C# - полностью объектно-ориентированный язык (там даже функция main принадлежит классу) и заточенный именно на ООП. Другие парадигмы он не поддерживает... |
||
Отправлено: 20:30, 17-11-2006 | #3 |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать CyraxZ, а почему на C# неэффективно писать системные программы? Тот же Visual Studio 2005 всё равно сначала переводит программу с поддерживаемых языков (C++, C#, Basic - всё равно) в свой IL-код, а уж потом выходит бинарник. Так по сути - какая разница на каком языке, если есть ещё общий для всех IL?
Или моя логика неверна? Было бы интересно знать. bool, посмотри курс по C/C++ на intuit.ru. Там вроде не особо сложно. |
Отправлено: 17:39, 18-11-2006 | #4 |
редкий гость Сообщения: 1696
|
Профиль | Сайт | Отправить PM | Цитировать Coutty
Студия умеет генерить для C++ как нэйтив код, так и IL. Драйверы всё ещё в нэйтив делают. К тому же в плюсах работа с указателями много прозрачней, чем в C# (в котором указатели тоже есть, но более ограниченные. Основное назначение - связка с ансэйф кодом; непосредственно при программировании ими никто не пользуется). |
|
------- Отправлено: 18:42, 18-11-2006 | #5 |
Ветеран Сообщения: 881
|
Профиль | Отправить PM | Цитировать Coutty ты чёт...
Цитата:
Я так думаю, может я не прав. Я в C# не силён. |
|
Отправлено: 19:43, 18-11-2006 | #6 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать bool, стандартные шаги:
1. напиши прогу "hello, world" (ещё один сишник родился) 2. программу поиска максимального и минимального элемента массива 3. определитель матрицы 4. изменяемый список (рекомендуется двухсвязный) 5. быстрая сортировка этого списка. Думаю на этом этапе желание работать с чистым C пропадёт |
Отправлено: 19:53, 23-11-2006 | #7 |
Старожил Сообщения: 229
|
Профиль | Отправить 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 |
Старожил Сообщения: 229
|
Профиль | Отправить 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 |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать массив переменного размера, так называемый динамический берётся из свободной памяти:
усовершенствовать алгоритм поиска мин/макс дальше сложно. Можно только сделать его более универсальным, не теряя производительности: // возвращает указатель на минимальный элемент или на конец массива (если он пустой) 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ошибка - Двойные задания печати. | 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 |
|