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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
#1

Как написать программу, которая читает список целых int in array и количество повторов по каждой цифре? - C++

01.11.2012, 21:07. Просмотров 565. Ответов 4
Метки нет (Все метки)

Необходимо написать программу, которая читает список целых int in array и количество повторов по каждой цифре.

- программа должна читать список из файла (никак не соображу как это делается);
- сортирует список от мин то мах;
- считает количество по каждой цифре;
- выдаёт результат как таблицу с 2 колонками: N(сортированный список) и Count(количество по каждой цифре).

Неполный код здесь:

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
#include <iostream>
#include <fstream>
 
using namespace std;
 
 
      void fill_array(ifstream& original, ofstream& updated); 
      void sortNumbers(int a[], int number_used);
      void swap_values(int&v1, int&v2);
      int next_smallest(const int a[], int start_index, int number_used);
      
int main( )
{
    cout << "This program sorts numbers from lowest to highest.\n";
    cout << "Homework 9: Solution to Project 5";
    
    
    
        
   ifstream inFile;
   ofstream outFile;
   
   inFile.open("hw9input.txt");
   outFile.open("hw9output.txt");
 
   
   
    int sample_array[30], number_used;
    fill_array(sample_array, 10, number_used);
    sort(sample_array, number_used);
    
    
    
    
    cout << "In sorted order the numbers are:\n";
    for (int index = 0; index < number_used; index++)
      cout << sample_array[index] << "  ";
      cout << endl;
    
 
    
    
    system("Pause");
    return 0;
}  
 
     void sortNumbers(int a[], int number_used)
     {
       int next_smallest;
       
       for(int index = 0; index < number_used - 1; index++)
               {
                     next_smallest = next_smallest(a, index, number_used);
                     swap_values(a[index], a[next_smallest]);
               }
            
      }
      
      
      void swap_values(int&v1, int&v2)
      {
        int temp;
        temp = v1;
        v1 = v2;
        v2 = temp;     
      }
      
      
      int next_smallest(const int a[], int start_index, int number_used)
      {
          int min = a[start_index],
              index_of_min = start_index;
              
          for (int index = start_index + 1; index < number_used; index++)
               if(a[index] > min)
               {
                           max = a[index];
                           index_of_max = index;
               }
               
               return index_of_min;        
      }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2012, 21:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как написать программу, которая читает список целых int in array и количество повторов по каждой цифре? (C++):

Написать программу, которая к первой цифре натурального числа N, добавляет 2 - C++
Нужно написать программу, которая к первой цифре натурального числа N, добовляет 2. Пример 49-69, 128-328 Помогите люди добрые)

Написать программу, которая по последней цифре числа позволяет определить последнюю цифру его квадрата - C++
13 Написать программу, которая по последней цифре числа позволяет определить последнюю цифру его квадрата. Использовать оператор выбора...

Написать программу, которая в последовательности целых чисел определяет количество чётных чисел, кратных 7 - C++
Здравствуйте, помогите пожалуйста с написанием кода. Напишите программу, которая в последовательности целых чисел определяет...

Как написать программу которая считала бы количество букв в string и количество гласных? - C++
Помогите, пожалуйста, написать программу которая считала бы количество букв в string и количество гласных. Цифры и пробелы,...

Нужно написать программу, которая читает из файла и пишет всё задом на перед - C++
например беру с файла слово неизвестного объему, а он пишет все задом наперед: программирование - еинавориммаргорп

Написать программу, которая вычисляет сумму первых n целых положительных целых чисел - C++
Написать программу, которая вычисляет сумму первых n целых положительных целых чисел. Количество суммируемых чисел должно вводиться во...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 22:28 #2
Вот такой вариант
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
#include <iostream> 
#include <algorithm>
#include <fstream> 
 
int main() 
{   
    int array[100]; 
    int a, j, i = 0; 
    int buffer[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
    int arr[10] = { 0 };
    std::ifstream infile("Text.txt");  
    
    if(!infile.is_open()) 
        std::cout << "Error " << std::endl; 
    else 
        while(infile >> array[i++]); 
    std::cout << "Primary array " << std::endl;
    for ( int j = 0; j < i-1; j++) 
        std::cout << array[j] << " "; 
 
    std::cout << std::endl; 
    std::cout << "Sorted array " << std::endl; 
    std::sort(array, array + i - 1 ); 
    for ( j = 0; j < i - 1; j++) 
        std::cout << array[j] << " "; 
    std::cout << std::endl << std::endl;
 
    for ( j = 0; j < i; j++) 
        for (  a = 0; a < 10; a++) 
        {   
            if(array[j] == buffer[a])  
            {
                arr[a] = arr[a]+1;
                continue; 
            } 
        } 
 
        for ( j = 0; j < 10; j++) 
            std::cout << j << ") " << arr[j] << std::endl;
}
Добавлено через 29 секунд
текстовый файл 1 3 4 5 7 9 4 5 5 5 5 5 5 1 2 3 4 6 7 8 9 9 9 9 1 2 3 4 5 7 2
QWERY_2012
5 / 5 / 2
Регистрация: 09.09.2012
Сообщений: 227
02.11.2012, 06:57  [ТС] #3
Классно!!!

Просто и понятно.
Respect
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
02.11.2012, 09:47 #4
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
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <string>
#include <map>
#include <iterator>
 
int main()
{
   const char* f_name = "file.txt";
   std::ifstream ifs(f_name);
   if (!ifs)
   {
      return 1;
   }
   std::vector<int> vec{std::istream_iterator<int>(ifs), std::istream_iterator<int>()};
   std::map<int, int> counted;
   for (auto i : vec)
   {
      auto pos = counted.find(i);
      if (pos != counted.end())
      {
         ++pos->second;
      }
      else
      {
         counted.insert(std::make_pair(i, 1));
      }
   }
   for (const auto& p : counted)
   {
      std::cout << "Number: " << p.first << " repeats: " << p.second << std::endl;
   }
}
http://liveworkspace.org/code/675ab9...59b6012480ebc8
-=ЮрА=-
Заблокирован
Автор FAQ
02.11.2012, 12:22 #5
QWERY_2012, ниже моё видение проблемы
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
#include <vector>
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
 
bool bComp(pair<int, int> pLeft, 
           pair<int, int> pRight)//Булевая функция для std::sort
{
    return pLeft.first > pRight.first;
}
 
//Функция для поиска значения value среди first полей вектора pVec
//если значение value присутсвует в векторе то увеличиваем поле счётчик second
//иначе добавляем число в вектор 
bool bFind(int value, vector< pair<int, int> > &pVec)
{
    bool bFound = false;
    for(int iElem = 0; iElem < pVec.size() && !bFound; iElem++)
    {
        bFound = (pVec[iElem].first == value);
        if(bFound)
            pVec[iElem].second = pVec[iElem].second + 1;
    }
    return bFound;
}
 
int main()
{
    int value;//Буффер для числа из потока
    //Вектор пар число - колво поторений
    //другими словами нашатаблица
    vector< pair<int, int> > pVec;
    fstream fs("data.txt", ios::in);//Организуем поток чтения
    if(!fs.is_open())
        cerr<<"Error open data.txt"<<endl;
    else
    {
        while(fs>>value)
        {
            if(!bFind(value, pVec))
                pVec.push_back(make_pair(value, 1));
        }
        //Соритируем вектор причём не надо писать сложных алгоритмов
        sort(pVec.begin(), pVec.end());//за нас уже всё написали
        //Печатаем нашу таблицу на экране
        for(int iElem = 0; iElem < pVec.size(); iElem++)
            cout<<pVec[iElem].first<<"\t- "<<pVec[iElem].second<<endl;
    }
    return 0;
}
файл данных data.txt
1 3 25 5 16 9 -7 8 8 9 -7 9 -7 1 2 3 4 5 7 2 -3 -15 11 0 25 28 146 -253 15 -253
Миниатюры
Как написать программу, которая читает список целых int in array и количество повторов по каждой цифре?  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 12:22
Привет! Вот еще темы с ответами:

Написать программу, которая читает с клавиатуры строку символов, преобразует ее и выводит результат на дисплей - C++
Подсчитать количество слов в строке. Помогите плиз.

Написать программу, которая читает первые три символа из каждой строки текстового файла - VBA
Написать программу, которая читает первые три символа из каждой строки текстового файла stroki.txt

Написать программу, которая создает файл целых чисел, а затем формирует список целых чисел файла - Free Pascal
Написать программу, которая создает файл целых чисел, а затем формирует список целых чисел файла. Создать список чисел, являющихся суммой...

Написать программу , которая вводит и суммирует любое количество целых чисел - Pascal ABC
Всем привет ... Будьте добры , Практическая =) 2.Написать программу , которая вводит и суммирует любое количество целых чисел . При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.11.2012, 12:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru