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

Сортировка номеров машин с записью в файл - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти минимальное расстояние между точками этих множеств и сами точки http://www.cyberforum.ru/cpp-beginners/thread512261.html
Даны множества A и B, состоящие соответственно из N1 и N2 точек (точки заданы своими координатами x, y). Найти минимальное расстояние между точками этих множеств и сами точки, расположенные на этом рас-стоянии (вначале выводится точка из множества A, затем точка из множе-ства B).
C++ Как сделать циклическую перестановку Уважаемые Форумчане помогите новичку в нелегком деле: Написать программу циклической перестановки букв в словах текста так, что i-я буква слова становится i+1-ой, а последняя - первой http://www.cyberforum.ru/cpp-beginners/thread512259.html
Задача связанная с символьными массивами и функциями C++
Добрый день Помогите пожалуйста с этой задачей никак не выходит у меня. Заранее спасибою Написать функцию, которая проверяет содержит ли строка цитату (фразу, заключенную в кавычки) и возвращает ее, если она есть. Заголовок функции bool funk(char *str, char *res); Написать программу, которая принимает от пользователя набор строк (массив строк), проверяет есть ли в этих строках хотя бы одна...
Циклическая перестановка C++
Неужели никто не может решить - очень прошу помогите: Написать программу циклической перестановки букв в словах текста так, что i-я буква слова становится i+1-ой, а последняя - первой
C++ Ссылки VS портабельность. http://www.cyberforum.ru/cpp-beginners/thread512234.html
Предыстория Я пишу хост для плагинов. Когда плагин загружен, он получает указатель на таблицу функций. Иногда мне нужно построить "текучий интерфейс", типа такого: typedef struct{} *ht_MenuNode; struct iMenuNode { struct iEditor { typedef iEditor *t_loopback; t_loopback (*SetCaption) (const char *); t_loopback (*AddChild) (ht_MenuNode Child);
C++ Поиск всех убывающих последовательностей длины K в массиве длины N. Дан одномерный массив длины N (заполненный рандомно числами от 1 до N ), и требуется реализовать поиск всех убывающих последовательностей длины K в этом массиве (при этом мы задаем это K, оно может быть равно от 2 до N). То есть, если у нас массив состоит из 5 элементов (12543) и K = 2, то на выходе мы должны получить следующее: 54 43, а если K = 3, то : 543. Моей логике это не подвластно,... подробнее

Показать сообщение отдельно
The_Rock
Сообщений: n/a
05.03.2012, 11:24     Сортировка номеров машин с записью в файл
Задание было такое:
Составить программу, определяющую вид регистрационного номера автомобиля.
Номер может быть обычным, специальным и не соответствующим правилам.
Обычный номер начинается двумя или тремя цифрами, после которых следуют три больших латинских буквы.
Например: «367ARZ», «82ZBG».
Специальные номера имеют длину до 9 знаков, номер должен заканчиваться хотя бы одной цифрой, остальные символы - большие латинские буквы.
Например: «MEDIA782», «R2», «MARIKA1».
Создать текстовый файл с номерами различного типа (минимум 15).
Имя файла задаётся программе в командной строке.
Программа считывает номера и создаёт новый файл, где в первой строке задано имя исходного файла, каждая следующая строка содержит номер, его тип и пояснение, если данный номер не является обычным.

Имею код, полностью рабочий, для сортировки номеров.
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <stdio.h>
#include <string.h>
 
using namespace std;
 
char * kontrolli( char * input) {
 
    // eemaldame inputist tГјhikud
    char f_input[80];
    int j = 0;
    for (int i = 0; i <= strlen(input); i++) {
        if (i == strlen(input)) {
            f_input[j] = '\0';
            break;
        }
        else if (input[i] != ' ' and input[i] != '\t') {
            f_input[j] = input[i];
            j++;
        }
    }
 
    // kontrollime pikkust
    if ( strlen( f_input ) > 9) {
        // liiga pikk
        return "reeglitele mittevastav";
    }
    else {
 
        for (int i = 0; i < strlen( f_input ); i++) {
            if (!isalnum(f_input[i])) {
                // sisaldab lubamatuid tahemarke
                return "reeglitele mittevastav";
            }
        }
    }
 
    // tavaline numbrimark
    int numbreid = 0;
    int tahti = 0;
 
    bool numbrid_otsas = false;
 
    if ( strlen( f_input ) == 6 || strlen( f_input ) == 5) {
        for (int i = 0; i < strlen( f_input ); i++) {
 
            // alguses peavad olema numbrid
            if( !numbrid_otsas && isdigit( f_input[i] ) ) {
                numbreid += 1;
            }
            else {
                numbrid_otsas = true;
            }
 
            // lГµpus peab olema 3 tГ¤hte
            if (numbrid_otsas) {
                if (isalpha(f_input[i])) {
                    tahti += 1;
                }
            }
        }
    }
 
 
    if (tahti == 3 && (numbreid == 2 or numbreid == 3)) {
        return "tavaline";
    }
    else {
        // kontrollime erinumbreid
        // peab olema Гјks number
 
        tahti = 0;
        numbreid = 0;
        for (int i = 0; i < strlen( f_input ); i++) {
            if (isdigit(f_input[i])) {
                numbreid += 1;
            }
            else if (isalpha(f_input[i])) {
                tahti += 1;
            }
        }
 
        if (numbreid > 0 and tahti > 0) {
            return "eritellimusel tehtud";
        }
    }
 
 
    return "reeglitele mittevastav";
}
 
int main()
{
    const char * data[] = {
        "367ARZ", "82ZBG", "MEDIA7", "R2", "MARIKA1", "jfkl;", "ABD232", "da234", "32df",
        "jjfksadljfkldsfl", "2232424234", "123456789", ";.,.", "234 adf"};
 
    int total_size, tmp_size;
    total_size = sizeof( data );
    tmp_size = 0;
 
    for (int i = 0; tmp_size < total_size; i++) {
        printf("%20s | %s\n", data[i], kontrolli( (char *) data[i] ));
        tmp_size += sizeof(data[i]);
    }
 
    return 0;
}
Проблема в том, что номера он берёт из массива как видите, и выводит на экран
const char * data[] = {
"367ARZ", "82ZBG", "MEDIA7", "R2", "MARIKA1", "jfkl;", "ABD232", "da234", "32df",
"jjfksadljfkldsfl", "2232424234", "123456789", ";.,.", "234 adf"};
А нужно, чтобы брал из файла, и записывал в другой файл, как в задании. Никак не могу реализовать.
Из файла номера вытаскиваю таким образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main () {
  string line;
  ifstream myfile ("avtonomer.txt");
  if (myfile.is_open())
  {
    while ( myfile.good() )
    {
      getline (myfile,line);
      cout << line << endl;
    }
    myfile.close();
  }
 
  else cout << "Unable to open file";
 
  return 0;
}
Тоже вытаскиваются без ошибок, хорошо.
Как соединить эти два кода вместе и сделать вывод данных в другой файл - ума не приложу. Уже десятки вариантов перепробовал, ничего не работает. В С++ я абсолютный новичек, поэтому не пинайте, если спрашиваю глупый вопрос.

Добавлено через 16 часов 33 минуты
Неужели никто не в курсе как такое решить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 00:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru