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

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

Войти
Регистрация
Восстановить пароль
 
Show2011
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 8
#1

Строки - C++

14.12.2011, 16:06. Просмотров 355. Ответов 9
Метки нет (Все метки)

Написать программу, которая принимает с клавиатуры 3 целых числа через запятую и вычисляет для них среднее арифметическое. Использовать приведение типов.
Как записать эти 5 чисел через запятую в строку, и что за приведение типов использовать скажите пожалуйста)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2011, 16:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки (C++):

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

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: "Добавить строки, начиная...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней - C++
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка...

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

Чтение через fscanf_s части строки с пробелом (и запись этой же строки) - C++
нужно записать в файл строку, содержащую через табуляцию int, char, char, char, float, int. Далее необходимо из такой же строки вывести...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 16:37 #2
Ну как я понял, нужно считывать все в строку, а потом преобразовать char -> int ну или double если числа с плавующей точкой.

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <string>
 
int main() {
    std::string str;
    std::cin >> str;
    return 0;
}
считать можно как-то так.

Добавлено через 8 минут
http://www.cplusplus.com/doc/tutorial/typecasting/ Ну вот информация по type casting'у, помойму, именно это тебе нужно.
Show2011
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 8
14.12.2011, 17:03  [ТС] #3
записываю в строку, а как мне тут приведение нужно использовать, не понимаю что хотят =)
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 17:09 #4
Я же написал, вы должны преобразовать строку в число. тоесть char в int.

Приведе́ние ти́па (type conversion) — преобразование значения переменной одного типа в значение другого типа. Выделяют явное и неявное приведения типов.
При явном приведении указывается тип переменной, к которому необходимо преобразовать исходную переменную.
При неявном приведении преобразование происходит автоматически, по правилам, заложенным в данном языке программирования.
Также в языке могут быть заданы специальные функции для приведения. Wikipedia.

А еще я дал ссылку на стать по type casting'у (Приведению типов), если не устраивает англоязычный ресурс, могу дать ссылку на русский
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
14.12.2011, 17:24 #5
Цитата Сообщение от Show2011 Посмотреть сообщение
принимает с клавиатуры 3 целых числа через запятую
Цитата Сообщение от Show2011 Посмотреть сообщение
Как записать эти 5 чисел
Так сколько чисел-то?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
    
int main(void){
    int a, b, c;
    char buf[BUFSIZ];
    
    while ( printf("Three comma separated values: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ){
        if ( sscanf(buf, "%d,%d,%d", &a, &b, &c) != 3 ){
            fprintf(stderr, "Wrong input!\n");
            continue;
        }
        printf("Average: %.1f\n", ((double)(a + b + c)) / 3.0);
    }
    
    return 0;
}
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 17:24 #6
Ну вот первое что в голову пришло.
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
int main() {
    string str, subString;
    vector<int> nums;
    int tmp = int();
    cin >> str;
    for(int i = 0; i < str.length(); i++) {
        if(str[i] == ',') {
            subString = str.substr(tmp,i);
            nums.push_back(atoi(subString.c_str()));
            tmp = i+1;
        }
    }
 
    subString = str.substr(tmp,str.length()-1);
    nums.push_back(atoi(subString.c_str()));
 
    for(int i = 0; i < nums.size(); i++) {
        cout << nums[i] << " ";
    }
 
    return 0;
}
YouDoItWrong
46 / 46 / 7
Регистрация: 29.10.2011
Сообщений: 154
14.12.2011, 17:35 #7
Ну и среднее арифметическое.
C++
1
2
3
4
#include <numeric>
...
    cout << std::accumulate(nums.begin(), nums.end(), 0)/nums.size() << endl;
...
Show2011
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 8
14.12.2011, 17:37  [ТС] #8
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
#include <iostream>
#include <math.h>
#include <conio.h>
#include <string>
 
using namespace std;
int main()
{
    int i; double S=0;
    char str[6];
    char tmp;
    cout<<"Enter the parameters:"<<endl;
    gets(str);
    puts(str);
    for(i=0;i<6;i=i+2) {
        tmp=str[i];
        cout<<"temp="<<tmp<<endl;
        cout<<"temp="<<double(tmp)<<endl;
        S=S+(int)tmp; 
    }
    S=S/3;
    cout<<"Result="<<S<<endl;
    getch();
    return 0;
}
сделал так, но приведение типов не работает, если ввожу 1,1,1 то он переводит 1 в 49, а нужно 1 в 1... как сделать это приведение..

Добавлено через 1 минуту
оу, спасибо, щас гляну))

Добавлено через 13 секунд
не видел что уже прислал)
Dr.Urban
63 / 58 / 7
Регистрация: 14.12.2011
Сообщений: 193
14.12.2011, 18:28 #9
Была в С такая функция int atoi(const char *s);
Например:
C++
1
2
3
4
5
6
7
8
9
10
#include "stdlib.h"
#include <iostream>
using namespace std;
int main(void){
    char Str[] = "12";
    int k = atoi(Str);
 
    cout << k << endl;
    return 0;
}
Будет полезно или нет решайте сами...
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
14.12.2011, 19:04 #10
Цитата Сообщение от Dr.Urban Посмотреть сообщение
Была в С такая функция int atoi(const char *s);
По моему скромному мнению функция скорее вредная. Никакой возможности проверить, насколько правильно она отработала. Если строка начинается не с цифры (ну или знака '-' за которым должна быть цифра) - вернёт 0, если с цифры - вернёт число состоящее из цифр от первой до той, за которой идёт буква, символ, да что угодно... И в случае переполнения просто неверный результат вернёт. Если уж на то пошло, лучше strtol() использовать...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 19:04
Привет! Вот еще темы с ответами:

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A - C++
&quot;Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и...

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

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

Как считать строки из файла, если там больше одной строки? - C++
Как считать строки из файла в массив. Если в файле одна строка, то нет проблем, но если несколько, то при использовании функции fgets ...


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

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

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