Нужно задав двумерную матрицу поменять в ней 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; }
Code: #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; }
Неинициализированная перменная в языкам типа с++ есть очень опасное зло. Значение будет ровно таким, какое значение имела ячейка памяти. Так как переменная локальная - то лежит в стеке. Сталобыть значение может быть любым. Таким образом ты получишь магическую ошибку, которая трудновоспроизводима, ибо зависит от состояния памяти процесса(а суть в том, что EOF это просто символьное описание числа 0xFF, которое встречается в памяти довольно часто, и вполне вероятно его получить в неочищенном блоке памяти). И если бы такое приложение было комерческим, то чудесные часы дебагинга и анализа кода были бы обеспечены. Ну а потом промывка мозга на тему "почему не учтен warning C4700, который дал компилятор" По поводу кодов - так и пиши символы, зачем ты переводишь их в коды? Чтобы сложнее было понять суть проверки? if (ch >= '0' && ch <= '9') гораздо нагляднее. Опять же использование числовых констант ацки нерекомендуется нигде и никогда. Все константы должны иметь символические имена. #define WEEK_LENGTH 7 итп. Это помогает понять контекст кода просто глянув на него, без комментариев. ЗЫ: не учите плохому плз. ибо потом такие кодесы городят, что страшно смотреть.
у меня вопрос. Имееться две переменные типа int, к пример int a,b; //числитель и знаменатель как привести дробь к нормальному виду, тоесть нужно разделить a/b и присвоить к переменной. такая фишка не срабатывает: int a,b; float s; s=a/b; cout<<s; оно округляет значения. Подскажите как решить проблемму?
2WALKMAN #include<iomanip.h> cout<<setprecision(3)<<s; //манипулятор setprecision(n) устанавливает точность вывода чисел типа float или double
Люди подскажите как создать функцию которая примет структуру и вернет массив заполненый элементами из структуры. И как потом к этому массиву обращаться из мэйн. Че то сам писал писал так ничо и не получается. Желательно примерчик простенький. На си)
А погуглить? http://www.java2s.com/Tutorial/Cpp/0160__Structure/Passstructuretoafunctionasapointer.htm
Ругается на директиву. При компиляции выходит сообщение об ошибке по директиве #include<.h>: А вот и код: Code: #include <stdio.h> #include <stdlib.h> namespace az { class Program { int main() { char *Remote_IP = getenv("REMOTE_ADDR"); char *Query_String = getenv("QUERY_STRING"); printf("Content-type: text/html\n\n"); printf("<html><body><h1>Привет</h1><p>"); printf("Ваш IP: %s", Remote_IP); printf("<p>Переданные вами параметры: %s", Query_String); printf("</body></html>") return 0; } } } Как от это исправить?
Судя по тем кодам, что пишут в этой теме, мой код, действительно, совсем другой, не сказал бы, что он плохой... Слова добавлялись в дерево, вполне логично, по сравнению строк на больше/меньше. Никаких стеков, массивов нельзя - это глупо, да и на это стоит ограничение, просто, в данном случае, память является самым критичным ресурсом, поэтому разрастание стека при рекурсии - недопустимая роскошь. Привожу код с нерекурсивным обходом (не самый эллегантный алгоритм, но все же...), может кому пригодится, потому что задача не самая тривиальная... Если кто захочет компилить, то это делать надо в 99-м стандарте С. Code: #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct tree_item_tag { const char * word; size_t count; struct tree_item_tag *left, *right, *parent; } tree_item_t; void insert(tree_item_t** first_item, const char* keyword, size_t * count) { tree_item_t** pcur = first_item, **prev = first_item; int cmp_words; while (*pcur != NULL) { /* searching for already inserted word inc count */ if((cmp_words=strcmp(keyword, (*pcur)->word)) == 0) { ++(*pcur)->count; return; } prev = pcur; pcur=(cmp_words<0) ? &((*pcur)->left) : &((*pcur)->right); } /* it is the first insert of this word */ *pcur = malloc( sizeof(tree_item_t) ); (*pcur)->word = strcpy( malloc( strlen(keyword) + 1) , keyword); (*pcur)->count = 1; (*pcur)->parent = *prev; (*pcur)->left = (*pcur)->right = NULL; ++(*count); } void printnotrec(tree_item_t* tree_item, size_t count) { size_t cur_count = 0; tree_item_t * pcur = tree_item, * pprev = pcur, *tmppcur; while(cur_count != count) { tmppcur = pcur; if( (pcur->left==NULL && pprev!=pcur->right) ||pprev==pcur->left) { (void)printf("%s %d\n",pcur->word, pcur->count); ++cur_count; if( pcur->right == NULL ) { if( pcur->parent->right == pcur ) { pprev = pcur->parent; pcur = pcur->parent->parent; continue; } else pcur = pcur->parent; } else pcur = pcur->right; } else { if(pprev == pcur->right) pcur = pcur->parent; else pcur = pcur->left; } pprev = tmppcur; } } int get_word(char * buf_word, size_t buf_size) { int c; /* current read symbol */ size_t word_len = 0; while( (c=getchar()) != EOF) { if(isalpha( (unsigned char) c) || (word_len > 0 && c == '\'')) { buf_word[ word_len++ ] = (unsigned char) tolower(c); if(word_len + 1 == buf_size) break; /* return only part of word */ } else if(word_len > 0) break; /* word can be returned */ } if(word_len > 0) { buf_word[ word_len ]= '\0'; return 1; } else return 0; } int main(void) { tree_item_t *first_item = NULL; size_t buf_size = 50; /* must be bigger than 1 */ size_t count = 0; char * buf_word = malloc(buf_size); while(get_word(buf_word, buf_size)) insert(&first_item, buf_word,&count); printnotrec(first_item,count); printf("%d\n",count); return EXIT_SUCCESS; }
Может я что то не так делаю, вот мой код может кто нить подскажет что не так? PHP: #include <stdio.h> #include <time.h> struct tm intime; // создаю структуру типа tm которая описана в time.h int* funct(struct tm *p); // обьявление функции int* funct(struct tm *p) // описание { int temp[7]; // создаем массив который вернется temp[0] = p.tm_sec; // присваиваем элементам массива, значения структуры temp[1] = p.tm_min; // .. temp[2] = p.tm_hour; temp[3] = p.tm_mday; temp[4] = p.tm_mon; temp[5] = p.tm_year; temp[6] = '\0'; // закрываем массив return temp; // возвращаем массив } int main (void) { int *temp2; // создаем указатель на массив который получим из функции { intime.tm_sec=10; // присваиваем значения элементам нашей входной структуры intime.tm_min=19; intime.tm_hour=20; intime.tm_mday=14; intime.tm_mon=5; intime.tm_year=109; } temp2 = funct(&intime); // пытаемся отправить структуру в функцию и ничего не выходит (( return 0; } Compiling source file(s)... gps.cpp gps.cpp: In function `int* funct(tm*)': gps.cpp:9: error: `tm_sec' has not been declared // здесь непонимаю почему ругается, ведь мы обьявили структуру в файле <time.h> gps.cpp:9: error: request for member of non-aggregate type before ';' token gps.cpp:10: error: `tm_min' has not been declared gps.cpp:10: error: request for member of non-aggregate type before ';' token gps.cpp:11: error: `tm_hour' has not been declared gps.cpp:8: warning: address of local variable `temp' returned // здесь вроде ругается что возвращаем локальную а не глобальную переменную
Code: temp[0] = p->tm_sec; // присваиваем элементам массива, значения структуры temp[1] = p->tm_min; // .. temp[2] = p->tm_hour; temp[3] = p->tm_mday; ... насчет переменной локальной - она создается в стеке, а стек это такайа штука, которая после выхода из подпрограммы может быть использована другой подпрограммой - следовательно и данные будут испорчены.
не знаю, сколько вам лет, но я ТАКОГО даже в школе не писал ))) Вас самих не пугает ТАКОЕ??? "Сколько не делай из говна конфету, получается либо слдкое говно, либо говняная конфета" (с) Я
Меня ТАКОЕ не пугает, просто потому что я неопытен в этой сфере. Если несложно можешь обьяснить конкретно что именно тебя так пугает в этом коде? Я учту это на будущее. Мне 21)
CHIP), удаляй к чертям весь этот код, бери книжку по сям и садись читать её сначала и ну хотя бы страницы до сотой....