PDA

Показать полную графическую версию : [решено] cin и cout заменить на scanf и printf


Frozen_Sky
13-04-2014, 18:34
Всем привет. Вообщем препод придрался к коду, и требует, чтобы я cin и cout заменил на scanf и printf. Поможете? или хотя бы пример для преобразования покажите, сам постараюсь выполнить. Заранее спасибо.#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;


int main()
{
cout << endl;
unsigned int lenthOfArray=0; //переменная длины массива
cin >> lenthOfArray; //считываем длину массива

//создаем Массив
int** Array = new int *[lenthOfArray];
for (int i = 0; i < lenthOfArray; i++)
Array[i] = new int [2];

for(int i=0;i<lenthOfArray;i++)
{
Array[i][1]=0; //заполняем 0 количество повторов для каждого элемента
}
unsigned int max=0;
cout << endl;
for(int i=0;i<lenthOfArray;i++)
{
cin >> Array[i][0]; //считываем массив
for(int j=0;j<i;j++)
{
if(Array[j][0]==Array[i][0])
Array[i][1]++; //увеличиваем на 1, если такой элемент уже встречался
}
}

for(int i=0;i<lenthOfArray;i++)
{
if (Array[i][1]>max)
{
max=Array[i][1]; //ищем максимальное число повторов
}
}
cout << endl;
for(int i=0;i<lenthOfArray;i++)
{
if (Array[i][1]==max)
{
cout << Array[i][0] << " "; //выводим элементы с максимальным числом повторов
}
}
getch();

for (int i = 0; i < lenthOfArray; i++)
{
delete [] Array[i];
}
delete [] Array;
return 0;
}

Prof
13-04-2014, 19:00
Гуглить не пробовали? Тыц (http://www.realcoding.net/articles/funktsii-standartnogo-vvodavyvoda-printf-scanf.html)

Frozen_Sky
13-04-2014, 19:08
пробовали) наткнулся на похожую статью, попробовал перевести, но выдало ошибку "Необработанное исключение в "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;i<lenthOfArray;i++)
{
Array[i][1]=0; //заполняем 0 количество повторов для каждого элемента
}
unsigned int max=0;
printf ("\n");
for(int i=0;i<lenthOfArray;i++)
{
scanf ("%d", "Array[i][0]"); //считываем массив
for(int j=0;j<i;j++)
{
if(Array[j][0]==Array[i][0])
Array[i][1]++; //увеличиваем на 1, если такой элемент уже встречался
}
}

for(int i=0;i<lenthOfArray;i++)
{
if (Array[i][1]>max)
{
max=Array[i][1]; //ищем максимальное число повторов
}
}
printf ("\n");
for(int i=0;i<lenthOfArray;i++)
{
if (Array[i][1]==max)
{
printf ("Array[i][0]", ""); //выводим элементы с максимальным числом повторов
}
}
getch();

for (int i = 0; i < lenthOfArray; i++)
{
delete [] Array[i];
}
delete [] Array;
return 0;
}

ой...я оказывается там & подставить забыл, все заработало) теперь другая проблема
printf ("Array[i][0]", ""); //выводим элементы с максимальным числом повторов
он мне не элементы выводит, а тупо само "Array[i][0]", что тут не так?)

Prof
13-04-2014, 19:14
scanf("%d", &Array[i][0]);
И вывод посмотрите.

Frozen_Sky
13-04-2014, 19:21
все отредактировал, все работает, спасибо!)




© OSzone.net 2001-2012