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

Словарик/Тестер - C++

Восстановить пароль Регистрация
 
alexyoung
0 / 0 / 0
Регистрация: 25.06.2010
Сообщений: 6
29.07.2010, 15:49     Словарик/Тестер #1
Добрый день! Необходимость параллельного с си изучения и другого языка - английского навела меня на мысль написать простой словарик - и одновременно проверщик запоминания. Привожу код на си той части которая должна записывать новые слова в словарь:

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
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
struct word
{
char Eng[35];
char TransOne[50];
char TransTwo[50];
} New;
 
int main()
{
FILE *f;
char *voc = "vocabulary.txt";
char c = 'y';
 
    f = fopen( voc, "a" );
 
    while ( c == 'y' )
    {
        printf("Вводи уже слово, неуч :");
        scanf( "%s", New.Eng );
 
        printf("Терерь основной перевод :");
        scanf( "%s", New.TransOne );
 
        printf("Другое значение.Если нет такого введи -- :");
        scanf( "%s", New.TransTwo );
 
        
 
        fprintf( f, "%s -- %s , (%s)\n", New.Eng, New.TransOne, New.TransTwo );
 
        printf( "Будешь еще записывать? Введи y если да :" );
        scanf( "%c", &c ); 
            
    }
 
    fclose(f);
 
  return EXIT_SUCCESS;
}
Проблема в следующем: не производится повторный ввод слов( более того даже не ожидается ввод проверочного символа, а в файл пишется одна строка и все). Подскажите пожалуйста в чем тут может быть ошибка.
И еще если подкинете идею как реализовать проверщик(должен из файла случайно выдавать английское слово, в ответ получать русское слово и если это слово совпадет с одним из двух значений выдавать типо "верно" и снова англ слово), то будет просто прекрасно.

Заметьте я прошу помощи, подсказки, толчка в нужном направлении но не готового кода. Хочу сам написать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2010, 15:49     Словарик/Тестер
Посмотрите здесь:

Словарик :)
Мини-интернет словарик
написать словарик C++
Женско - мужской словарик.
Словарик C++ Builder
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
29.07.2010, 16:35     Словарик/Тестер #2
Цитата Сообщение от alexyoung Посмотреть сообщение
Проблема в следующем: не производится повторный ввод слов( более того даже не ожидается ввод проверочного символа, а в файл пишется одна строка и все). Подскажите пожалуйста в чем тут может быть ошибка.
Цитата Сообщение от alexyoung Посмотреть сообщение
scanf( "%s", New.TransTwo );
Цитата Сообщение от alexyoung Посмотреть сообщение
scanf( "%c", &c );
C
1
2
3
scanf("%s%*c", New.TransTwo );
...
scanf("%c%*c", &c);
Добавлено через 5 минут
Цитата Сообщение от alexyoung Посмотреть сообщение
И еще если подкинете идею как реализовать проверщик(должен из файла случайно выдавать английское слово, в ответ получать русское слово и если это слово совпадет с одним из двух значений выдавать типо "верно" и снова англ слово), то будет просто прекрасно.
из массива структур случайным образом брать любую, выводить из неё английское слово, читать в буфер ответ, сравнивать с первым русским из структуры, если не совпадёт - сравнивать со вторым...

Кстати, странный у Вас какой-то С...
alexyoung
0 / 0 / 0
Регистрация: 25.06.2010
Сообщений: 6
29.07.2010, 17:09  [ТС]     Словарик/Тестер #3
Прекрасно,все работает. Вот только хотелось бы узнать: что именно делает ваше добавление в форматной строке, если вам не сложно пояснить, разумеется.
П.с. среда разработки KDevelop под KDE.Может поэтому немого отличается...
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.07.2010, 17:13     Словарик/Тестер #4
alexyoung, Ну как бэ...

C++
1
2
3
#include <iostream>
#include <cstdlib>
using namespace std;
- это C++.

Для C

C
1
2
#include <stdio.h>
#include <stdlib.h>
Быть могут проблемы с хидерами, если будете писать в CPP файле, тогда

C++
1
2
#include <cstdio>
#include <cstdlib>
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
29.07.2010, 17:20     Словарик/Тестер #5
Цитата Сообщение от alexyoung Посмотреть сообщение
Прекрасно,все работает. Вот только хотелось бы узнать: что именно делает ваше добавление в форматной строке, если вам не сложно пояснить, разумеется.
П.с. среда разработки KDevelop под KDE.Может поэтому немого отличается...
Среда разработки тут не при чём абсолютно. Прочитайте внимательнее руководство к scanf:
Код
man 3 scanf
в консоли... Спецификатор %*c пропускает символ, следующий за только-что прочитанным. Проще говоря '\n' проглатывает.
Yandex
Объявления
29.07.2010, 17:20     Словарик/Тестер
Ответ Создать тему
Опции темы

Текущее время: 08:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru