Чем заменить printf
Сообщения: 8
Благодарности: 0
Всем привет. Вообщем препод придрался к коду, и требует, чтобы я cin и cout заменил на scanf и printf. Поможете? или хотя бы пример для преобразования покажите, сам постараюсь выполнить. Заранее спасибо.
#include "stdafx.h" #include "conio.h" #include "iostream" using namespace std; int main() < cout > lenthOfArray; //считываем длину массива //создаем Массив int** Array = new int *[lenthOfArray]; for (int i = 0; i < lenthOfArray; i++) Array[i] = new int [2]; for(int i=0;iunsigned int max=0; cout > Array[i][0]; //считываем массив for(int j=0;j > for(int i=0;i max) < max=Array[i][1]; //ищем максимальное число повторов >> cout > getch(); for (int i = 0; i < lenthOfArray; i++) < delete [] Array[i]; >delete [] Array; return 0; >
Сообщения: 64
Благодарности: 2
| Конфигурация компьютера | |
| Процессор: Pentium(R) Dual-Core CPU E5200 @ 2.50GHz | |
| Материнская плата: Gigabyte G31M-S2L | |
| Память: DDR2 4GB | |
| HDD: Samsung 500GB + WD 1TB | |
| Видеокарта: NVIDIA GeForce 9600GT | |
| Блок питания: 400W | |
| Монитор: Asus VW222U (22″) | |
| ОС: W7Uх64 SP1 | |
| Индекс производительности Windows: 4,9 проц |
Гуглить не пробовали? Тыц
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Сообщения: 8
Благодарности: 0
пробовали) наткнулся на похожую статью, попробовал перевести, но выдало ошибку «Необработанное исключение в «0x0fcfe42e (msvcr100d.dll)» в «Lab4_Khudasov.exe»: 0xC0000005: Нарушение прав доступа при записи «0x009c5744″.». По-моему я тут намудрил, когда из cin в scanf переводил
cin >> Array[i][0]; ——> scanf («%d», «Array[i][0]»);
вот собственно сам код, отредактированный
#include "stdafx.h" #include "conio.h" #include "iostream" using namespace std; int main() < printf ("\n"); unsigned int lenthOfArray=0; //переменная длины массива scanf ("%d ", &lenthOfArray); //считываем длину массива //создаем Массив int** Array = new int *[lenthOfArray]; for (int i = 0; i < lenthOfArray; i++) Array[i] = new int [2]; for(int i=0;iunsigned int max=0; printf ("\n"); for(int i=0;i > for(int i=0;imax) < max=Array[i][1]; //ищем максимальное число повторов >> printf ("\n"); for(int i=0;i > getch(); for (int i = 0; i < lenthOfArray; i++) < delete [] Array[i]; >delete [] Array; return 0; >
ой. я оказывается там & подставить забыл, все заработало) теперь другая проблема
printf («Array[i][0]», «»); //выводим элементы с максимальным числом повторов
он мне не элементы выводит, а тупо само «Array[i][0]», что тут не так?)
Чем заменить printf
Регистрация: 14.04.2010
Сообщений: 6
замена printf на cout
Добрый вечер! Подскажите пожалуйста, очень срочно, не получается заменить printf на cout:
| Aleksandra1990 |
| Посмотреть профиль |
| Найти ещё сообщения от Aleksandra1990 |
Форумчанин
Регистрация: 06.11.2011
Сообщений: 214
std::cout << x[i*n+j];
Помог, нажми на весы
html, js, php, С++, С#, OpenGl, DirectX, XNA, HLSL
Регистрация: 14.04.2010
Сообщений: 6
спасибо, а такой момент
line7(x,i,h2,b2);
printf(» %c «,i%2?’.’:’ ‘);
| Aleksandra1990 |
| Посмотреть профиль |
| Найти ещё сообщения от Aleksandra1990 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
Сообщение от Aleksandra1990
спасибо, а такой момент
line7(x,i,h2,b2);
printf(» %c «,i%2?’.’:’ ‘);
cout
Регистрация: 14.04.2010
Сообщений: 6
спасибо всем, получилось))
| Aleksandra1990 |
| Посмотреть профиль |
| Найти ещё сообщения от Aleksandra1990 |
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Cout. | Notan1310 | Общие вопросы C/C++ | 8 | 26.01.2012 04:08 |
| Как написать это-> printf("%4.2f",n) через cout | Виндовс 7 | Общие вопросы C/C++ | 1 | 23.01.2012 14:17 |
| printf | zmey31313 | Помощь студентам | 4 | 13.01.2010 18:29 |
| cout/printf дублирует сообщение дважды, в начале цикла. | Qousio | Общие вопросы C/C++ | 2 | 23.05.2009 13:50 |
| В чём различие printf и cout? | kobolok | Общие вопросы C/C++ | 3 | 20.11.2008 22:38 |
Улучшения языка C
Функции и операции
Функциям, выполняющим одинаковые действия с данными различных типов, в С++ можно дать одинаковые имена. Компилятор сможет определить, какую функцию из набора вызвать, по типу аргументов.
void print(int x) < printf("%d",x); >void print(char x) < printf("%c",x); >int main()
Чтобы на этапе компоновки программы можно было установить соответствие между функциями и их вызовами в имя функции на языке С++ включаются типы ее параметров. Для функций на языке С типы параметров не важны, поэтому перед объявлением функции из библиотек на языке С нужно написать extern "C".
Обычно один и тот же заголовочный файл используется для программ на С и С++, поэтому в него добавляет следующие строки:
#ifdef __cplusplus extern "C" < #endif //объявления функций на С #ifdef __cplusplus > #endif
Вместо определения набора функций, отличающихся только количеством параметров, можно указать при объявлении функции в заголовочном файле значения по умолчанию для некоторых параметров. Эти параметры должны быть последними в списке. Если при вызове соответствующий аргумент пропущен, то должны быть пропущены и все аргументы за ним. В качестве значений по умолчанию можно использовать константы и глобальные переменные.
void f(int a, int n=100, double eps=1e-9); . f(1,200,1e-6); f(1,200); // f(1,200,1e-9); f(1); // f(1,100,1e-9);
В C++ можно переопределять операции для собственных типов данных и, также как для функций, нужный вариант операции будет вызван в зависимости от типов аргументов. Разработчиками языка эта возможность была использована, чтобы избавиться от проблемы несоответствия форматов и списка аргументов в функциях форматированного ввода-вывода. При изменении типа переменной в программе на С необходимо было отследить все появления этой переменной в списке аргументов в printf/scanf и изменить строки с форматами.
int a,b; scanf("%d%d",&a,&b);
В С++ для ввода-вывода были переопределены операции и >> (в С это операции поразрядного сдвига для целых чисел). Первым аргументом операции указывается поток ввода (например, cin – консольный ввод, console input) или поток вывода (например, cout – консольный вывод, console output), а вторым аргументом – вводимая переменная или выводимое значение. В качестве результата операция возвращает поток и поэтому её можно применить последовательно для ввода или вывода нескольких значений.
int a,b; cin>>a>>b; coutОбратите внимание на отсутствие форматов и операции &, так как в операции ввода происходит передача аргумента по ссылке.
Запомнить: направление уголков указывает направление передачи информации.Лямбда-выражения и анонимные функции можно использовать везде, где требуется передавать в качестве аргумента функцию.
Лямбда-выражения создаются следующим образом:
[замыкание](параметры)< return выражение; >
Тип лямбда-выражения определяется по типу возвращаемого значения.vectorint> v; // подсчитать количество положительных элементов вектора v // через обычную функцию int gt(int x)< return x>0; > . int n=count_if(v.begin(),v.end(),gt); // больше чего? // через лямбда-выражение int n=count_if(v.begin(),v.end(),[](int x)< return x>0; >);Анонимные функции создаются аналогичным образом, но нужно указать тип результата и можно писать любые операторы в теле функции:
[замыкание](параметры) –> тип_результата операторы >В замыкании нужно указать список имен объектов, которые используются для вычислений, но не передаются как параметры. Перед именем объекта можно указать &, если объект нужно передавать по ссылке, иначе в замыкании будет копия значения объекта в момент определения лямбда-выражения. Можно не перечислять самостоятельно объекты поименно, а указать [=], если все объекты должны храниться по значению, или [&] для передачи по ссылке. Важно: лямбда-выражение, использующее в замыкании ссылки на локальные объекты блока, становится ошибочным после завершения блока, так как объекты будут уничтожены. При использовании в замыкании копий значений, лямбда-выражение останется корректным. Можно поместить в замыкание любое значение и дать ему имя.
int i=0; // заполнить вектор квадратами натуральных чисел generate(v.begin(),v.end(),[&i]()->int < ++i; return i*i; >); auto one = [value=1]()return value;>; cout выводится 1Альтернативный синтаксис можно использовать при определении обычных функций. Такой синтаксис особенно полезен для шаблонов функций, когда тип результата определить затруднительно.
auto f(int x) -> int; template typename T1, typename T2> auto add(const T1 &a, const T2 &b) -> decltype(a+b) < return a+b; >Замена printf и scanf на аналогичные команды
Добрый день, по условию я составил программу, но с меня потребовали, что бы я пользовался такими операциями,как sin/cout, вот вопрос в том, можете помочь заменить printf/scanf так, что бы не было потери кода от уже составленной программы?
условие:
"1. Определить класс с именем AEROFLOT, содержащий следующие поля:· название пункта назначения рейса
Определить методы доступа к этим полям и перегруженные операции извлечения и вставки для объектов типа AEROFLOT.
Написать программу, выполняющие следующие действия:
* ввод с клавиатуры данных в массив, состоящий из семи объектов типа AEROFLOT; записи должны быть упорядочены по возрастанию номера рейса;
* вывод на экран номера рейсов и типов самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры; "
* если таких рейсов нет, вывести соответствующее сообщение."
Код: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#include #pragma hdrstop #include #include #include //--------------------------------------------------------------------------- #pragma argsused struct AEROFLOT{ char destination[40]; int number; char type[15]; }; int main(){ AEROFLOT routes[7]; //ввод с консоли в массив for(int i=0; i7; i++){ printf("punkt naznacheni9\n"); scanf("%s", routes[i].destination); printf("nomer reisa\n"); scanf("%d", &(routes[i].number)); printf("tip somaleta\n"); scanf("%s", routes[i].type); } //=================================== AEROFLOT n; int k=1; //сортировка while(k==1) { k=0; for (int i=0; i7; i++) if (strcmp(routes[i].destination, routes[i+1].destination)>0){ n=routes[i]; routes[i]=routes[i+1]; routes[i+1]=n; k=1; } } //=================================== char str[40]; printf("tip somaleta\n"); scanf("%s",str); //вывод рейса int b=0; for (int i=0; i7; i++){ if (strcmp(routes[i].type,str)==0){ printf("punkt:%s, nomer:%d \n",routes[i].destination,routes[i].number); b=1; } } if (b==0){ printf("net takih\n"); } return 0; } //