Результаты поиска
| |
vasua99 | Дата: Воскресенье, 14 Октября 2012, 12:45 | Сообщение # 321 | Тема: Покоментируйте код) |
GNU follower
Сейчас нет на сайте
| После выходного думаю добавлю интерактивный режим помимо параметровно(ну который сейчас) + поиск по части имена и телефона) и посмотрю что еще можно сделать... Добавлено (14.10.2012, 12:45) --------------------------------------------- Наверное небольшой рефакторинг сделаю))
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Суббота, 13 Октября 2012, 15:29 | Сообщение # 322 | Тема: Покоментируйте код) |
GNU follower
Сейчас нет на сайте
| насчет пустых параметров - уже вчера сам заметил и исправлил Добавлено (13.10.2012, 15:29) --------------------------------------------- исправил баги вроде)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Пятница, 12 Октября 2012, 21:10 | Сообщение # 323 | Тема: Покоментируйте код) |
GNU follower
Сейчас нет на сайте
| хех, я уже разобрался - меня сейчас интересуют 2 вещи - utf-8 в виндовской консоле и tolower() для юникода(двухбайтового)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Пятница, 12 Октября 2012, 20:23 | Сообщение # 324 | Тема: Покоментируйте код) |
GNU follower
Сейчас нет на сайте
| я тоже самое заметил, только не пойму почему - пробовал и кодовую страницу менять и setlocale()
может потому что у меня исходники(файлы) в UTF-8?Добавлено (12.10.2012, 18:47) --------------------------------------------- Опять мне нужна помощь - есть 2 функции:
Code // приводим строку str к нижнему регистру, сохраняем ее в dest, и возвращаем указатель на него char *tolower_str(char *str, char *dest) { char *tmp = dest; for(; *str; *tmp = tolower(*str), str++, tmp++); if(*(str - 1) == '\n') *(tmp - 1) = '\0'; return dest; }
// сравнение без учета регистра int unregister_strcmp(char *s1, char *s2) { char *tmp1 = calloc(64, sizeof(char)); char *tmp2 = calloc(64, sizeof(char)); tolower_str(s1, tmp1); tolower_str(s2, tmp2); printf("s1 = %s\ns2 = %s\n", tmp1, tmp2); int i = strcmp(tmp1, tmp2); free(tmp1), free(tmp2); return i; }
Но при вызове: Code int i = unregister_strcmp("Привет", "ПриВеТ");
Значит, строка при вызове функции tolower_str() не меняется! Простестировав его "внутрипрограмным" отладчиком - оказалось что так на самом деле, но почему?Добавлено (12.10.2012, 18:58) --------------------------------------------- при этом такое только с русскими символами Добавлено (12.10.2012, 20:23) --------------------------------------------- решил пока не заходить дальше, т.к с кодировками проблема.
Новая версия пожалуйста, подскажите как бы сделать, чтобы русские символы нормально отображались и в лине и в винде?за правильный ответ +)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Четверг, 11 Октября 2012, 22:44 | Сообщение # 325 | Тема: Покоментируйте код) |
GNU follower
Сейчас нет на сайте
| ну мне это надо на конкурс по программированию и времени мало, поэтому писал - как мысли в голову приходили, позже перепишу с использованием односвязного списка может быть)
и еще вопрос - как платформо-независимо очистить файл от данных, а то в результате моей очистки и записи получается что то вроде этого, что не очень приятно:  Добавлено (11.10.2012, 21:21) --------------------------------------------- хех, после исправление небольшой другой ошибки(при добавлении нового элемента в БД он писался в одной строке с другим) баг исправлся сам как то)
Есть желающие потестить программу?просто не охото сдавать на конкурс лажную прогу))
бинарник под Linux, под винду чуть позже будет - т.к нету пока времени перезапускать оси)
Бинарник(Linux)
файл phonebook.db скидывать в одну папку с бинарником.
P.S как платформо-независимо создать пустой файл? Добавлено (11.10.2012, 22:44) --------------------------------------------- Бинарник для винды:
Ссылка
конкретно интересует - отображаются ли нормально русские символы в винде и ошибки с псевдо БД(phonebook.db)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Четверг, 11 Октября 2012, 18:43 | Сообщение # 326 | Тема: Покоментируйте код) |
GNU follower
Сейчас нет на сайте
| всмысле, можно отрывок из кода, чтобы понятнее было)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Среда, 10 Октября 2012, 19:06 | Сообщение # 327 | Тема: Покоментируйте код) |
GNU follower
Сейчас нет на сайте
| Итак, сегодня я написал свою первую программу размеров +200 строк кода)) Это консольный телефонный справочник, кто может покоментируйте код - т.е что где можно оптимизировать заменить и т.д Скачать(Исходники + Бинарник для Linux)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Среда, 10 Октября 2012, 18:58 | Сообщение # 328 | Тема: И снова у меня проблема)) |
GNU follower
Сейчас нет на сайте
| Вообщем был код и работал он нормально:
Code i++; add_db_elem(argv[i], argv[i + 1]); argc -= 3; i += 2;
И заменили его на этот:
Code char *name = malloc(sizeof(char) * 64); i++; strcpy(name, argv[i]); while(i++, !isdigit(argv[i][0])) { strcat(name, " "); strcat(name, argv[i]); } add_db_elem(name, argv[i]); argc -= 3; i++; free(name); continue; теперь тоже все работает как надо, но выкидывает Segmentation fault (core dumped) кто найдет ошибку, 2 часа бьюсь уже(:-Добавлено (10.10.2012, 17:19) --------------------------------------------- выяснил что Segmentation fault вылетает изза этих строк:
Code while(i++, !isdigit(argv[i][0])) { strcat(name, " "); strcat(name, argv[i]); } Но почему/  Добавлено (10.10.2012, 18:58) --------------------------------------------- Проблема решена, что то я туплю сегодня))
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Вторник, 09 Октября 2012, 22:13 | Сообщение # 329 | Тема: fscanf() и чтение отдельных частей строки |
GNU follower
Сейчас нет на сайте
| Спасибо, теперь работает, сделал так; Code char *tmp_str = malloc(sizeof(char) * 256); for(i = 0; i < count_element; i++) { tmp.name = malloc(sizeof(char) * 64); tmp.phone = malloc(sizeof(char) * 20); fgets(tmp_str, 256, db_file); tmp.index = atoi(strtok(tmp_str, ":")); strcpy(tmp.name, strtok(NULL, ":")); strcpy(tmp.phone, strtok(NULL, ":")); add(&db, (void*)(&tmp)); }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Вторник, 09 Октября 2012, 20:36 | Сообщение # 330 | Тема: fscanf() и чтение отдельных частей строки |
GNU follower
Сейчас нет на сайте
| Здравствуйте, сейчас я пишу телефонный справочник на конкурс по программированию, и возникла одна проблема:
Имеется структура: Code typedef struct { int index; // используется для более быстрого поиска char *name; // ФИО char *phone; // номер телефона } element;
и следующий код:
Code for(i = 0; i < count_element; i++) { tmp.name = malloc(sizeof(char) * 64); tmp.phone = malloc(sizeof(char) * 20); fscanf(db_file, "%d:%s:%s\n", &(tmp.index), tmp.name, tmp.phone); add(&db, (void*)(&tmp)); }
после пытуаюсь вывести данные следующим способом: Code element *e = get_element(&db, 0); printf("%s - %s\n", e->name, e->phone); в результате входит примерно это: Code Vasiliy:+79871111111 -
а должно: Code Vasiliy Kozlov - +79871111111
формат элемента в файле таблицы данных таков:
подскажите пожалуйста, где тут ошибка и каким образом ее можно исправить, уже 2 часа сижу думаю? Скорее всего это при чтении данных из файла(fscanf) но каким образом тогда читать чтобы правильно получалось.
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Понедельник, 08 Октября 2012, 15:35 | Сообщение # 331 | Тема: Вопрос-Ответ (C++) |
GNU follower
Сейчас нет на сайте
| решил так)):
Code #include <iostream> using namespace std;
int main() { bool simple; for(int i = 2; i < 10000; i++) { simple = true; for(int j = 2; i > j; j++) if(!(i % j)) simple = false; if(simple) cout << i << ' '; } cout << '\n'; return 0; }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Понедельник, 08 Октября 2012, 15:02 | Сообщение # 332 | Тема: Вопрос-Ответ (C++) |
GNU follower
Сейчас нет на сайте
| Подскажиет что за проблема в моем коде:
Code // вычисление простых чисел #include <iostream> using namespace std;
int main() { for(int i = 0; i < 1000000; i++) { bool simple = true; for(int j = 0; j < 1000000; j++) if(i % j) simple = false; if(simple) cout << i << ' '; } return 0; } Компилится нормально, но при запуске выдает - Code Floating point exception (core dumped)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Воскресенье, 07 Октября 2012, 21:03 | Сообщение # 333 | Тема: Эккель. Философия С++ |
GNU follower
Сейчас нет на сайте
| Разобрался, все работает))
Code // Вывод файла по строчкам - после каждой требуется нажатие enter #include <iostream> #include <fstream> #include <string> using namespace std;
int main() { string line; int ch; ifstream in("outfile.cpp"); while(getline(in, line)) { cout << line; while((ch = getchar()) != 10); } return 0; }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Воскресенье, 07 Октября 2012, 21:00 | Сообщение # 334 | Тема: Эккель. Философия С++ |
GNU follower
Сейчас нет на сайте
| Для проверки написал тест-программу которая выводит код символа, но при нажатии enter ничего не выводится, почему?(Fedora 17 Xfce, Xfce Terminal Emulator 0.4.8)
Code // Вывод файла по строчкам - после каждой требуется нажатие enter #include <iostream> #include <fstream> #include <string> using namespace std;
int main() { //~ string line; char chs[2]; cin >> chs; cout << static_cast<int>(chs[0]) << " " << static_cast<int>(chs[1]) << "\n"; //~ ifstream in("outfile.cpp"); //~ while(in >> line) { //~ cout << line; //~ cin >> ch; //~ while(ch != char(13)) cin >> ch; // 13 - ASCII код Enter //~ } return 0; } Добавлено (07.10.2012, 21:00) --------------------------------------------- хотя нет, getchar() выдал 10 10, сейчас проверю)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Воскресенье, 07 Октября 2012, 19:56 | Сообщение # 335 | Тема: Ваша ОС |
GNU follower
Сейчас нет на сайте
| Использую Fedora 17(Xfce) для работы/инета/просмотра фильмов/прослушивания музыки и т.д и windows 7 для игрушек(1-2 раза в неделю)))
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Воскресенье, 07 Октября 2012, 19:28 | Сообщение # 336 | Тема: Эккель. Философия С++ |
GNU follower
Сейчас нет на сайте
| а если обойтись C++ стандартной билиотекой? - на момент где задана эта задача - эта функция не изучена еще.
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Воскресенье, 07 Октября 2012, 19:05 | Сообщение # 337 | Тема: Эккель. Философия С++ |
GNU follower
Сейчас нет на сайте
| ну это уже личные предпочтения)
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Воскресенье, 07 Октября 2012, 18:12 | Сообщение # 338 | Тема: Эккель. Философия С++ |
GNU follower
Сейчас нет на сайте
| Помогите решить, вот само задание:
Выводите содержимое файла по строкам. После вывода каждой строки программа должна ждать, пока пользователь нажмет клавишу Enter
Мое решение, которое не работает(ошибка скорее всего в сравнение символа с кодом Enter'а'):
Code // Вывод файла по строчкам - после каждой требуется нажатие enter #include <iostream> #include <fstream> #include <string> using namespace std;
int main() { string line; char ch; ifstream in("outfile.cpp"); while(in >> line) { cout << line; cin >> ch; while(ch != char(13)) cin >> ch; // 13 - ASCII код Enter } return 0; }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Пятница, 10 Августа 2012, 10:12 | Сообщение # 339 | Тема: Керриган & Ритчи.Язык Программирования C |
GNU follower
Сейчас нет на сайте
| спасибо всем - вроде получилось:
Code #include <stdio.h> #include <stdlib.h> #define MAXHINST 10 /* максимальное количество самых длинных слов */
int compare(const void *a,const void *b) { return (*(int*)b - *(int*)a); }
int main() { int c, length, hinst_table[256], i, h; length = i = 0; while((c = getchar()) != EOF) { if(c == ' ' || c == '\n' || c == '\t') { if(length) { hinst_table[i] = length; ++i; } length = 0; } else length++; } qsort(hinst_table, 256, sizeof(int), compare); for(i = hinst_table[0]; i > 0; --i) { for(h = 0; h < MAXHINST; ++h) { if(hinst_table[h] < i) putchar(' '); else putchar('*'); } putchar('\n'); } }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
vasua99 | Дата: Пятница, 10 Августа 2012, 09:36 | Сообщение # 340 | Тема: Да,но... |
GNU follower
Сейчас нет на сайте
| да,но у нас уже 22:30)))
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
|