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

Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) - C++

Восстановить пароль Регистрация
 
 
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
03.11.2013, 16:06     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #1
Помогите пожалуйста дописать программу, мне надо ее написать на Visual C++ 6.0
Вот задача В массиве целых чисел,расположенном в файле(кол-во чисел в фале произв-ое) найти все числа,начинающихся с цифры выбранной пользователем.Числа сильно различаются по величине(по кол-ву цифр в их написании).Предусмотреть ввод исходных данных из файла и генерацию этого файла с помощью генератора псевдослучайных чисел.Результат также сохранить в файле и вывести на экран

Вот я сделал, файл забивается случайными числами
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream.h>
const int n=3;
  int i,j;
  double A[n][n];
void main()
{
    srand((unsigned)time(NULL));
    for (i=0; i<n; i++)
      for (j=0; j<n; j++)
          A[i][j]=rand()% 20000 -100;
      FILE*f;
      char fname[]="C:\\\\data.txt\0";
      f=fopen(fname, "w");
      for (i=0; i<n; i++)
          for (j=0; j<n; j++)
      fprintf(f,"%.0f\n",A[i][j]);
      fclose(f);
      cout<<"File is saved to disk C"<<endl;
}
Спасибо заранее

Добавлено через 55 минут
up!

Добавлено через 17 минут
Пожааалуйста, помогите
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 16:06     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем)
Посмотрите здесь:

C++ Нужно найти максимальные и минимальные числа в массиве, причём кол-во массивов задаётся пользователем
C++ Найти все натуральные числа от промежутка от 0 до 200. Проверить задачу
C++ Дано натуральное число n (n <= 9999). Учитывая все четыре цифры числа, определить, правильно, что оно содержит: все разные цифры
C++ Найти все трехзначные числа, в которых все цифры различны.
Найти все числа, начинающиеся с цифры, выбранной пользователем C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 09:38     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #2
[CPP]"C:\\\\data.txt\0"/CPP]
замени на
C++
1
"C:\\data.txt\0"
возможно после инклудов нужна строка
C++
1
using namespace std;
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 10:05  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #3
Цитата Сообщение от chedman Посмотреть сообщение
[CPP]"C:\\\\data.txt\0"/CPP]
замени на
C++
1
"C:\\data.txt\0"
возможно после инклудов нужна строка
C++
1
using namespace std;
Моя часть программы работает) мне надо теперь сделать следующее: найти числа, которые начинаются с цифры выбранным пользователем
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 10:47     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #4
Странно, пишете "В массиве целых чисел,расположенном в файле", а используйте тип double.

Добавлено через 13 минут
За спасибо в репутацию, вот фрагменты кода, решающий вашу задачу
C++
1
2
#include <fstream>
#include <string>
. . .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    ///
    string ccc;
    char c;
    ifstream fi("C:\\data.txt");
 
    cout << "Input value 0-9" << endl;
    cin >> c;
 
    while((fi >> ccc))
    {
        if(isdigit(ccc.c_str()[0]) &&  ccc.c_str()[0]==c )
            cout << ccc << endl;
        else if(ccc.c_str()[0]=='-' &&  ccc.c_str()[1]==c)
            cout << ccc << endl;
    }
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 11:17  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #5
Цитата Сообщение от chedman Посмотреть сообщение
Странно, пишете "В массиве целых чисел,расположенном в файле", а используйте тип double.

Добавлено через 13 минут
За спасибо в репутацию, вот фрагменты кода, решающий вашу задачу
C++
1
2
#include <fstream>
#include <string>
. . .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    ///
    string ccc;
    char c;
    ifstream fi("C:\\data.txt");
 
    cout << "Input value 0-9" << endl;
    cin >> c;
 
    while((fi >> ccc))
    {
        if(isdigit(ccc.c_str()[0]) &&  ccc.c_str()[0]==c )
            cout << ccc << endl;
        else if(ccc.c_str()[0]=='-' &&  ccc.c_str()[1]==c)
            cout << ccc << endl;
    }
Тоесть вот так должно быть?
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream.h>
#include <fstream>
#include <string.h>
 
const int n=3;
  int i,j;
  double A[n][n];
void main()
{
    srand((unsigned)time(NULL));
    for (i=0; i<n; i++)
      for (j=0; j<n; j++)
          A[i][j]=rand()% 20000 -100;
      FILE*f;
      char fname[]="C:\\\\data.txt\0";
      f=fopen(fname, "w");
      for (i=0; i<n; i++)
          for (j=0; j<n; j++)
      fprintf(f,"%.0f\n",A[i][j]);
      fclose(f);
      cout<<"File is saved to disk C"<<endl;
}
 
{  
    string ccc;
    char c;
    ifstream fi("C:\\data.txt");
 
    cout << "Input value 0-9" << endl;
    cin >> c;
 
    while((fi >> ccc))
    {
        if(isdigit(ccc.c_str()[0]) &&  ccc.c_str()[0]==c )
            cout << ccc << endl;
        else if(ccc.c_str()[0]=='-' &&  ccc.c_str()[1]==c)
            cout << ccc << endl;
    }
}
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 11:20     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #6
25 и 27 строки удали
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 11:33  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #7
Цитата Сообщение от chedman Посмотреть сообщение
25 и 27 строки удали
Удалил, до этого была одна ошибка, щас 10)
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream.h>
#include <fstream>
#include <string.h>
 
const int n=3;
  int i,j;
  double A[n][n];
void main()
{
    srand((unsigned)time(NULL));
    for (i=0; i<n; i++)
      for (j=0; j<n; j++)
          A[i][j]=rand()% 20000 -100;
      FILE*f;
      char fname[]="C:\\\\data.txt\0";
      f=fopen(fname, "w");
      for (i=0; i<n; i++)
          for (j=0; j<n; j++)
      fprintf(f,"%.0f\n",A[i][j]);
      fclose(f);
      cout<<"File is saved to disk C"<<endl;
 
 
    
    string ccc;
    char c;
    ifstream fi("C:\\data.txt");
 
    cout << "Input value 0-9" << endl;
    cin >> c;
 
    while((fi >> ccc))
    {
        if(isdigit(ccc.c_str()[0]) &&  ccc.c_str()[0]==c )
            cout << ccc << endl;
        else if(ccc.c_str()[0]=='-' &&  ccc.c_str()[1]==c)
            cout << ccc << endl;
    }
    }
И сами ошибки
Compiling...
Cpp4.cpp
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(28) : error C2065: 'string' : undeclared identifier
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(28) : error C2146: syntax error : missing ';' before identifier 'ccc'
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(28) : error C2065: 'ccc' : undeclared identifier
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(30) : error C2065: 'ifstream' : undeclared identifier
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(30) : error C2146: syntax error : missing ';' before identifier 'fi'
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(30) : error C2065: 'fi' : undeclared identifier
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(37) : error C2228: left of '.c_str' must have class/struct/union type
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(37) : error C2228: left of '.c_str' must have class/struct/union type
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(39) : error C2228: left of '.c_str' must have class/struct/union type
C:\Users\Teacher\Desktop\Êóðñà÷\Cpp4.cpp(39) : error C2228: left of '.c_str' must have class/struct/union type
Error executing cl.exe.

Cpp4.exe - 10 error(s), 0 warning(s)
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 11:46     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #8
У меня другой компилятор, т.е. другая реализация языка Си++, у меня работает.
Попробуй заменить
C++
1
#include <fstream>
на
C++
1
#include <fstream.h>
И добавь после инклудов
C++
1
using namespace std;
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 11:50  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #9
Цитата Сообщение от chedman Посмотреть сообщение
У меня другой компилятор, т.е. другая реализация языка Си++, у меня работает.
Попробуй заменить
C++
1
#include <fstream>
на
C++
1
#include <fstream.h>
И добавь после инклудов
C++
1
using namespace std;
Если пишешь
C++
1
using namespace std;
то выходит 9 ошибок, без него 8

Compiling...
Cpp4.cpp
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(30) : error C2065: 'string' : undeclared identifier
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(30) : error C2146: syntax error : missing ';' before identifier 'ccc'
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(30) : error C2065: 'ccc' : undeclared identifier
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(39) : error C2065: 'isdigit' : undeclared identifier
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(39) : error C2228: left of '.c_str' must have class/struct/union type
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(39) : error C2228: left of '.c_str' must have class/struct/union type
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(41) : error C2228: left of '.c_str' must have class/struct/union type
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(41) : error C2228: left of '.c_str' must have class/struct/union type
Error executing cl.exe.

Cpp4.exe - 8 error(s), 0 warning(s)
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 12:15     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #10
Вместо <string.h> используй <string>
оставь
using namespace std;

Добавлено через 11 минут
Понятно, что проблема с именами заголовочных файлах и пространствах имен.
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 12:53  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #11
Цитата Сообщение от chedman Посмотреть сообщение
Вместо <string.h> используй <string>
оставь
using namespace std;

Добавлено через 11 минут
Понятно, что проблема с именами заголовочных файлах и пространствах имен.
Compiling...
Cpp4.cpp
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(31) : error C2872: 'ifstream' : ambiguous symbol
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(36) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptab
le conversion)
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(36) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Error executing cl.exe.

Cpp4.exe - 3 error(s), 0 warning(s)
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 14:23     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #12
Попробуй, вместо <fstream.h> используй <fstream>
оставь
using namespace std;
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 15:05  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #13
Цитата Сообщение от chedman Посмотреть сообщение
Попробуй, вместо <fstream.h> используй <fstream>
оставь
using namespace std;
2 ошибки)
Compiling...
Cpp4.cpp
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(39) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptab
le conversion)
C:\Users\Teacher\Desktop\Курсач\Cpp4.cpp(41) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptab
le conversion)
Error executing cl.exe.

Cpp4.exe - 2 error(s), 0 warning(s)
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 15:13     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #14
Попробуй,
вместо <string.h> используй <string>
вместо <iostream.h> используй <iostream>
оставь
using namespace std;
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 15:50  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #15
Цитата Сообщение от chedman Посмотреть сообщение
Попробуй,
вместо <string.h> используй <string>
вместо <iostream.h> используй <iostream>
оставь
using namespace std;
Все работает теперь) только вот окно открывается я ввожу цифру, а файл он не создает ща помужусь конечно может и придумаю чего
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 15:58     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #16
путь к файлу не правильный, замени "\\\\" на "\\"
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 16:00  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #17
Цитата Сообщение от chedman Посмотреть сообщение
путь к файлу не правильный, замени "\\\\" на "\\"
уже так пробывал все равно не хочет
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 16:02     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #18
Возможно у тебя нет прав на создание файла в корне на диске C:\ , попробуй другое место (папку).
fReekufa
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 39
04.11.2013, 16:07  [ТС]     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #19
Цитата Сообщение от chedman Посмотреть сообщение
Возможно у тебя нет прав на создание файла в корне на диске C:\ , попробуй другое место (папку).
Все создается, случайно сгенерированные числа в файл записываются а ответ нет, ответ только на экране выводиться
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2013, 16:15     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем)
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
04.11.2013, 16:15     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем) #20
Попробуй этот фрагмент, путь свой пропиши
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 ///
    string ccc;
    char c;
    ifstream fi("D:\\data.txt");
 
    cout << "Input value 0-9" << endl;
    cin >> c;
 
    ofstream fo("D:\\outdata.txt");
    while((fi >> ccc))
    {
        if((isdigit(ccc.c_str()[0]) &&  ccc.c_str()[0]==c) || (ccc.c_str()[0]=='-' &&  ccc.c_str()[1]==c))
        {
            cout << ccc << endl;
            fo << ccc << endl;
        }
    }
Yandex
Объявления
04.11.2013, 16:15     Пожалуйста доделайте задачу (в массиве найти все числа,начинающихся с цифры выбранной пользователем)
Ответ Создать тему
Опции темы

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