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

ошибочка. не понимаю как сделать чтоб типы соответствовали - C++

Восстановить пароль Регистрация
 
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 98
16.02.2013, 19:49     ошибочка. не понимаю как сделать чтоб типы соответствовали #1
по надобности переделывала паскалевскую блок-схему под С++.начало выбивать много ошибок. вот с одной из них не могу справиться


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 <stdio.h>
#include<math.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    int i,j,f,n,r; int y[2],d[3];
    char k,l,s,t;
printf("universal'noe mno*estvo U:[1...255]");
 for (int j = 0; j<255; ++j)
   y[j] = j+1;
   printf("\n");
printf("vvedite kolli4estvo elementov mno*estva A:");
 scanf("%d",&n); 
 
 printf("mno*estvo A sostoit iz elementov:"); 
 for (int i=1;i<=n;i++)
 d[i]=i+1; 
 printf("%d",d[i]);
 printf("\n") ; 
     
r=0;
for(k=1;k<=strlen(y[j]);k++)
{f=0;
for (l=1;l<=strlen(d[i]);l++)
if(y[j]==d[i]) f=1;
if (f=0) r=r+y[j];
}
printf("%d",r);
 
printf("\n");
system("pause");
return 0;
 
}

выбивает ошибку initializing argument 1 of `size_t strlen(const char*)' как мне ее исправить??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
popelyuk
 Аватар для popelyuk
8 / 8 / 1
Регистрация: 04.12.2012
Сообщений: 130
16.02.2013, 21:43     ошибочка. не понимаю как сделать чтоб типы соответствовали #2
Напишите на какую строчку ругается компилятор, а то вы только привели описание ошибки и то частично.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
16.02.2013, 22:27     ошибочка. не понимаю как сделать чтоб типы соответствовали #3
Путаница в коде полная.
0.Ошибки выдаются по причине того, что d и y не строки.
И нельзя к ним применить strlen().

1. Дальше: массив y[2] у Вас имеет длину 2, а записываете в него 255 чисел:
for (int j = 0; j<255; ++j)
y[j] = j+1;
2. В строке if(y[j]==d[i])
j равно 256, а i равно n+1
не думаю, что это имелось ввиду.
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
16.02.2013, 22:29     ошибочка. не понимаю как сделать чтоб типы соответствовали #4
для начала, вы i и j объявляете несколько раз...)
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
16.02.2013, 22:38     ошибочка. не понимаю как сделать чтоб типы соответствовали #5
Цитата Сообщение от NeonLost Посмотреть сообщение
для начала, вы i и j объявляете несколько раз...)
Это не так уж важно. Вторые объявления локализуются внутри циклов.
А вот алгоритм программы совершенно невозможно понять.
Все переменные перепутаны до неузнаваемости.
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 98
16.02.2013, 23:39  [ТС]     ошибочка. не понимаю как сделать чтоб типы соответствовали #6
[img]http://s019.***********/i611/1302/f6/c7fedac54a3b.jpg[img] - извините, еще не разобралась как правильно изображения вставлять
сама запуталась уже не могу как..видно и правда глупости написала..дали блок-схему преподы с функциями некоторыми как на паскале.. а учат все на С++ делать..и тип string еще не проходили а уже надо его использовать.. я просто незнаю как..

Добавлено через 13 минут
а ошибку выбивает здесь
C++
1
for (l=1;l<=strlen(d[i]);l++)
и здесьfor
C++
1
(k=1;k<=strlen(y[j]);k++)
avfed
14 / 12 / 2
Регистрация: 24.01.2013
Сообщений: 23
17.02.2013, 01:13     ошибочка. не понимаю как сделать чтоб типы соответствовали #7
честно сказать сам алгоритм достаточно странно выглядит, может из-за того, что его изначально для паскаля делали, вообще у меня из вашего кода получилось вот что
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
#include<string.h>
#include <iostream>
using namespace std;
 
const char y[]="QWERTYUIOPASDFGHJKLZXCVBNM";
 
void dopoln(char* D,char *R)
{
    int i,n,un;
    n=strlen(D);
    un=strlen(y);
    for (i=0;i<un-n;i++)R[i]=' ';
    i=0;
    int f;
    for (int j=0;j<un;j++)
    {
        f=0;
        for (int k=0;k<n;k++)
        {
            if (D[k]==y[j])f=1;
        }
        if (!f)
        {
            R[i]=y[j];i++;
        }
    }
}
 
 
 
int main()
{
 
    char *d=new char(sizeof("QWERTYUIOPGHJKLZXCVBNM"));
    d="QWERTYUIOPGHJKLZXCVBNM";
    char *r=new char[strlen(y)-strlen(d)];
    dopoln(d,r);
    for (int i =0;i<strlen(y)-strlen(d);i++)cout<<r[i];
    cout<<endl;
 
    delete [] r;
    delete [] d;
    return 0;
 
}
это с учетом того, что алгоритм вроде как для функции
Милашечка
0 / 0 / 0
Регистрация: 16.02.2013
Сообщений: 98
17.02.2013, 01:56  [ТС]     ошибочка. не понимаю как сделать чтоб типы соответствовали #8
Цитата Сообщение от avfed Посмотреть сообщение
честно сказать сам алгоритм достаточно странно выглядит,
это с учетом того, что алгоритм вроде как для функции
согласна что странно.. саму этот момент ох как странной делает..да,алгоритмы для функции,и таких функций еще несколько..с половиной только разобралась..этот вариант мне еще и с числами нужно сделать..с числами думаю проще должно быть..


спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 11:05     ошибочка. не понимаю как сделать чтоб типы соответствовали
Еще ссылки по теме:

C++ Как сделать чтоб отделяло IP и Port
C++ Не понимаю как сделать
как сделать, чтоб кнопка работала? C++

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

Или воспользуйтесь поиском по форуму:
avfed
14 / 12 / 2
Регистрация: 24.01.2013
Сообщений: 23
17.02.2013, 11:05     ошибочка. не понимаю как сделать чтоб типы соответствовали #9
для цифр на самом деле в общем случае немного сложнее, хотя для учебы для вас думаю будет достаточно так(не заморачиваясь с определением внутри функции размера динамического массива, а задавшись размерами множеств как константами, хотя насколько я помню остатки паскаля там без этого вообще мрак получался), кстати ввод D можно по желанию прикрутить с клавиатуры
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
#include<string.h>
#include <iostream>
using namespace std;
#define un 16
#define n 10
 
const int y[un]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
 
int * dopoln(int* D)
{
    int i;
    int *R=new int[un-n];
    for (i=0;i<un-n;i++)R[i]=0;
    i=0;
    int f;
    for (int j=0;j<un;j++)
    {
        f=0;
        for (int k=0;k<n;k++)
        {
            if (D[k]==y[j])f=1;
        }
        if (!f)
        {
            R[i]=y[j];i++;
        }
    }
    return R;
}
 
int main()
{
 
    int *d=new int[n];
    for (int i=0;i<n;i++)d[i]=i+1;
    int *r;
    r=dopoln(d);
    for (int i =0;i<un-n;i++)cout<<r[i]<<"\n";
    cout<<endl;
 
    delete [] r;
    delete [] d;
    return 0;
 
}
Yandex
Объявления
17.02.2013, 11:05     ошибочка. не понимаю как сделать чтоб типы соответствовали
Ответ Создать тему
Опции темы

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