ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

25.04.2009, 19:55
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме: 18127311
Репутация:
1676
|
|
Я как бэ не программист по образованию и даже не интересующийся (особенно с++), ну да ладно...
1)юзинг неинициализированной переменной в ch
2)в случае достижения eof-а всё равно пытаемся что-то вывести
Приведи практический пример, когда мой вариант повлечет за собой ошибку
вот что тебя сподвигло на написание "<48" вместо "<'0'"?
ascii коды сподвигли
|
|
|

25.04.2009, 20:09
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Сообщение от Kaimi
Если не напутал, то вот поидее
Код:
#include <stdio.h>
void main()
{
FILE *in;
char ch;
in = fopen("in.txt", "r");
while(ch != EOF)
{
ch = fgetc(in);
if((ch < 48 || ch > 57) && (ch < 65 || ch > 90) && (ch < 97 || ch > 122)) printf("%c", ch);
}
fclose(in);
}
Зачем изобретать велосипед когда он уже сделан?
Код:
#include <stdio.h>
#include <ctype.h>
int main() {
FILE *in;
char ch;
in = fopen("in.txt", "r");
while(ch != EOF) {
ch = fgetc(in);
if(!isalnum(ch)) {
printf("%c", ch);
}
}
fclose(in);
return 0;
}
|
|
|

25.04.2009, 21:51
|
|
Новичок
Регистрация: 23.04.2009
Сообщений: 6
Провел на форуме: 10455
Репутация:
0
|
|
Нужно задав двумерную матрицу поменять в ней 1 столбец с последним, Помогите очень срочно надо.
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char* argv[])
{ int i,mas[25][25],o,n,m,q;
printf("Yslovie 2\n ");
printf("Vvesti matricy, 1 stolbec pome9t` mestami \n ");
printf("Vvedite razmernost: ");
scanf("%d", &o);
for (n=0; n<=o; n++)
for (m=0; m<=o; m++)
{mas[n][m]=random(15)-7;}
for (n=0; n<o; n++)
{printf("\n");
for (m=0; m<o; m++)
{printf(" %d ", mas[n][m]);}}
printf("\n");
printf("\n");
printf("S drygim stolbcom: \n");
????????????????? //Здесь должен быть код которй меняет один столбец местами с последним, и выводит измененый массив
getch();
return 0;
}
|
|
|

25.04.2009, 22:37
|
|
Участник форума
Регистрация: 26.11.2008
Сообщений: 158
Провел на форуме: 2816163
Репутация:
158
|
|
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int i,mas[25][25],o,n,m,tmp;
clrscr();
printf("Yslovie 2\n ");
printf("Vvesti matricy, 1 stolbec pome9t` mestami \n ");
printf("Vvedite razmernost: ");
scanf("%d", &o);
for(n=0; n<=o; n++){
for(m=0; m<=o; m++)
{
mas[n][m]=random(15)-7;
printf("%3d ", mas[n][m]);
}
printf("\n");
}
printf("S drygim stolbcom: \n");
//замена столбцов
for(i=0; i<=o; i++){
tmp=mas[i][0];
mas[i][0]=mas[i][o];
mas[i][o]=tmp;
}
for(n=0; n<=o; n++){
for(m=0; m<=o; m++)
printf("%3d ", mas[n][m]);
printf("\n");
}
getch();
return 0;
}
Последний раз редактировалось fker; 25.04.2009 в 23:03..
Причина: o
|
|
|

25.04.2009, 23:18
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
Сообщение от Kaimi
Я как бэ не программист по образованию и даже не интересующийся (особенно с++), ну да ладно...
Приведи практический пример, когда мой вариант повлечет за собой ошибку
ascii коды сподвигли
Неинициализированная перменная в языкам типа с++ есть очень опасное зло. Значение будет ровно таким, какое значение имела ячейка памяти. Так как переменная локальная - то лежит в стеке. Сталобыть значение может быть любым. Таким образом ты получишь магическую ошибку, которая трудновоспроизводима, ибо зависит от состояния памяти процесса(а суть в том, что EOF это просто символьное описание числа 0xFF, которое встречается в памяти довольно часто, и вполне вероятно его получить в неочищенном блоке памяти). И если бы такое приложение было комерческим, то чудесные часы дебагинга и анализа кода были бы обеспечены. Ну а потом промывка мозга на тему "почему не учтен warning C4700, который дал компилятор"
По поводу кодов - так и пиши символы, зачем ты переводишь их в коды? Чтобы сложнее было понять суть проверки? if (ch >= '0' && ch <= '9') гораздо нагляднее. Опять же использование числовых констант ацки нерекомендуется нигде и никогда. Все константы должны иметь символические имена. #define WEEK_LENGTH 7 итп. Это помогает понять контекст кода просто глянув на него, без комментариев.
ЗЫ: не учите плохому плз. ибо потом такие кодесы городят, что страшно смотреть.
Последний раз редактировалось Ra$cal; 26.04.2009 в 01:29..
|
|
|

26.04.2009, 10:38
|
|
Познающий
Регистрация: 30.12.2007
Сообщений: 52
Провел на форуме: 375217
Репутация:
2
|
|
у меня вопрос. Имееться две переменные типа int, к пример
int a,b; //числитель и знаменатель
как привести дробь к нормальному виду, тоесть нужно разделить a/b и присвоить к переменной. такая фишка не срабатывает:
int a,b;
float s;
s=a/b;
cout<<s;
оно округляет значения. Подскажите как решить проблемму?
|
|
|

26.04.2009, 10:54
|
|
Участник форума
Регистрация: 25.08.2008
Сообщений: 187
Провел на форуме: 2066562
Репутация:
86
|
|
Сообщение от WALKMAN
у меня вопрос. Имееться две переменные типа int, к пример
int a,b; //числитель и знаменатель
как привести дробь к нормальному виду, тоесть нужно разделить a/b и присвоить к переменной. такая фишка не срабатывает:
int a,b;
float s;
s=a/b;
cout<<s;
оно округляет значения. Подскажите как решить проблемму?
ничего не удивительного ведь
'=' : conversion from 'int' to 'float', possible loss of data
поэтому надо так
Код:
float a, b;
float s;
s = a / b;
cout << s;
|
|
|

26.04.2009, 11:01
|
|
Познающий
Регистрация: 30.12.2007
Сообщений: 52
Провел на форуме: 375217
Репутация:
2
|
|
Ясно, получаеться для правильной работы нужно вводить числа "с точкой" : 3.0, 2.0 .....
|
|
|

26.04.2009, 11:04
|
|
Участник форума
Регистрация: 26.11.2008
Сообщений: 158
Провел на форуме: 2816163
Репутация:
158
|
|
2WALKMAN
#include<iomanip.h>
cout<<setprecision(3)<<s; //манипулятор setprecision(n) устанавливает точность вывода чисел типа float или double
Последний раз редактировалось fker; 26.04.2009 в 11:08..
|
|
|

26.04.2009, 14:44
|
|
Познающий
Регистрация: 17.01.2007
Сообщений: 94
Провел на форуме: 528220
Репутация:
65
|
|
Люди подскажите как создать функцию которая примет структуру и вернет массив заполненый элементами из структуры. И как потом к этому массиву обращаться из мэйн. Че то сам писал писал так ничо и не получается. Желательно примерчик простенький.
На си)
Последний раз редактировалось CHIP:)); 26.04.2009 в 14:47..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|