Procvičení učiva 1
2 posters
Forum Apl Inf :: C
Strana 1 z 1
Procvičení učiva 1
Nazdar borci, už jsem se dlouho neozval že? Hele dostal jsem za odměnu 1 úkol na víc z těch procvičení učiva. Nemáte nějakej něgdo hotovej já nestíhám chci se konečně věnovat SCHEME , a nemůžu stihnout vše :-) .
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
Hele zkouším ten "Počet výskytů řetězce v řetězci" :-( . Hele jak nato porovnávat už umím "snad :-) " ale co mi počítá ten výskyt shodných řetězců ???
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
Tady mam akorat ukol 11.2
Jinak co se tyce te cetnosti to je celkem jednoduche...nebo jako v ramci moznosti jednoduche....
Jinak co se tyce te cetnosti to je celkem jednoduche...nebo jako v ramci moznosti jednoduche....
- kód:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int chance(unsigned int input, unsigned int** coins);
int main(int argc, char** argv)
{
printf("Exercise 11.2\n");
unsigned int amount;
unsigned int* currency = NULL;
int coins, i;
printf("Enter a amount: ");
scanf("%d", &amount);
coins = chance(amount, ¤cy);
printf("Used coins: ");
for(i = 0; i < coins; i++) {
if(i != 0) printf(", ");
printf("%d", currency[i]);
}
free(currency);
currency = NULL;
return 0;
}
int chance(unsigned int input, unsigned int** currency)
{
int coins[] = { 5000, 2000, 1000, 500, 200, 100, 50, 20, 10, 5, 2, 1 };
int size = sizeof(coins) / sizeof(int);
int i, j = 0;
for(i = 0; i < size; i++) {
while(input >= coins[i]) {
input -= coins[i];
if(!*currency)
{
*currency = (unsigned int*)malloc((j + 1) * sizeof(int));
*(*currency + j) = coins[i];
}
else
{
*currency = (unsigned int*)realloc(*currency, (j + 1) * sizeof(int));
*(*currency + j) = coins[i];
}
j++;
}
}
return j;
}
adam.korinek- Poèet pøíspìvkù : 25
Join date : 18. 11. 14
Re: Procvičení učiva 1
Nazdar, nemáš čas mi trochu pomoc s "Počet výskytů řetězce v řetězci" výš za prve musíš... a za druhé .... :-) tlačí mě čas dík.
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
Tady mas ty vyskyty
Snad to funguje tak jak chteli oni, pac ja se ted nemuzu dostat na to pdf zadani
Kdyztak si z toho neco vem, mas tam i komenty...
PS. Tohle sice neni idealni postup ale je nejjednodussi ale celkem i efektivni....ale ne na pamet:-)
Snad to funguje tak jak chteli oni, pac ja se ted nemuzu dostat na to pdf zadani
Kdyztak si z toho neco vem, mas tam i komenty...
PS. Tohle sice neni idealni postup ale je nejjednodussi ale celkem i efektivni....ale ne na pamet:-)
- kód:
#include <stdio.h>
#include <string.h> //kvuli strlen
#define BUFFER_SIZE 1024
#define CHARS_SIZE 255
int main(int argc, char **argv)
{
char buffer[BUFFER_SIZE] = {0};
char chars[CHARS_SIZE] = {0}; //char ma velikost 255, proto v C nemuzes zadat jiny znak nez char, tedy do velikost 255
int lenght = 0,i = 0;
printf("Histogram\n");
printf("Enter some string: ");
fgets(buffer,BUFFER_SIZE,stdin);
lenght = strlen(buffer);
buffer[lenght- 1] = '\0'; // ukoncovaci znak
for(; i < lenght; i++) {
//(int)buffer[i] - index pole chars, a zaroven je to char jakozto znak v vstupu, ale kazdy je vlastne asci hodnota 0-255
//pod indexem (int)buffer[i] navysim pocet vyskytu
// HOTOVO
chars[(int)buffer[i]]++;
}
for(i = 0; i < CHARS_SIZE ; i++)
{
if(chars[i]) printf("Char %c: %d\n",i,chars[i]);
}
getchar();
return 0;
}
adam.korinek- Poèet pøíspìvkù : 25
Join date : 18. 11. 14
Re: Procvičení učiva 1
Znovu mockrát dík !!! mrknu nato :-) .
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
Nazdar kluci, poslední tejden jsem strávil s učebnici jazyka C. A bláhovje si myslel že mám jasno. No tet jsem zkoušel řešit úkol co mám dělat na víc, no a zjistil jsem že mi stále a stále a.... unikaj nějaké souvislosti no kdyby jste si někdo našel čas a znovu mi s tím pomohl tak budu moc rád. Jedná se o "procvičení učiva 1"
Procvičované učivo: dynamická alokace paměti, práce s textem, funkce, pole, cykly
Napište v jazyku C funkci int *cetnost(char *text), která určí počet výskytů jednotlivých znaků ve vstupním textovém řetězci text. Funkce pak vrací pole četností znaků, kde i-tý prvek pole odpovídá počtu výskytů i-tého znaku ASCII tabulky. Funkce musí rozpoznávat všechny znaky ASCII tabulky, tedy 256 znaků. Ve funkci main vytvořenou funkci otestujte.
no jestli má někdo čas tak se ozvěte dík !!!
Procvičované učivo: dynamická alokace paměti, práce s textem, funkce, pole, cykly
Napište v jazyku C funkci int *cetnost(char *text), která určí počet výskytů jednotlivých znaků ve vstupním textovém řetězci text. Funkce pak vrací pole četností znaků, kde i-tý prvek pole odpovídá počtu výskytů i-tého znaku ASCII tabulky. Funkce musí rozpoznávat všechny znaky ASCII tabulky, tedy 256 znaků. Ve funkci main vytvořenou funkci otestujte.
no jestli má někdo čas tak se ozvěte dík !!!
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
Zdar, mas to ten kod na kousek nad tim co jsi napsal. Akorat jestli chce vsech 256 znaku tak to char pole musi byt unsigned a vsechny chary unsigned...jinak pokud chces, tak ti snad muzu zavolat pres skype jestli to chces vytvetlit nejak lepe...jinak sorry ten program nad tim ma vse. pozna vsech 256 znaku...ozvi se kdyztak
adam.korinek- Poèet pøíspìvkù : 25
Join date : 18. 11. 14
Re: Procvičení učiva 1
hele moc děkuju, skype jsem nepouzíval, ale tet jsem ho nainstaloval jak te najdu Adamů Kořínků je tam víc
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
snad jsem to pochopil takhle jsem to sesmolil:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEL_ZAD 1024
#define VEL_ASCII 256
int *cetnost(char *text);
char cetnost_c[VEL_ASCII] = {0};
int main()
{
int i, y;
char *x;
char text[MAX_VEL_ZAD] = {0};
printf("zadej retezec ");
fgets(text,MAX_VEL_ZAD,stdin);
x = cetnost(text);
y = strlen(x);
x[y - 1] = '\0';
for (i = 0; i < VEL_ASCII; i++)
if (x[i])
printf("znak: %c zadan: %d-krat\n", i, x[i]);
return 0;
}
int *cetnost(char *text)
{
int velikost = 0;
int i;
velikost = strlen(text);
text[velikost - 1] = '\0';
for (i = 0; i < velikost; i++){
cetnost_c[(int)text[i]]++;
}
return (int)cetnost_c;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEL_ZAD 1024
#define VEL_ASCII 256
int *cetnost(char *text);
char cetnost_c[VEL_ASCII] = {0};
int main()
{
int i, y;
char *x;
char text[MAX_VEL_ZAD] = {0};
printf("zadej retezec ");
fgets(text,MAX_VEL_ZAD,stdin);
x = cetnost(text);
y = strlen(x);
x[y - 1] = '\0';
for (i = 0; i < VEL_ASCII; i++)
if (x[i])
printf("znak: %c zadan: %d-krat\n", i, x[i]);
return 0;
}
int *cetnost(char *text)
{
int velikost = 0;
int i;
velikost = strlen(text);
text[velikost - 1] = '\0';
for (i = 0; i < velikost; i++){
cetnost_c[(int)text[i]]++;
}
return (int)cetnost_c;
}
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
Cau
Evaluace tveho kodu...
Evaluace tveho kodu...
- kód:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEL_ZAD 1024
#define VEL_ASCII 256
int *cetnost(char *text);
char cetnost_c[VEL_ASCII] = {0};
int main()
{
int i, y;
char *x;
char text[MAX_VEL_ZAD] = {0};
printf("zadej retezec ");
fgets(text,MAX_VEL_ZAD,stdin);
int velikost = strlen(text);
text[velikost - 1] = '\0'; [color=#FF0000]//tady to ma byt[/color]
x = cetnost(text);
y = strlen(x); [color=#FF0000]//nema to tu co delat[/color]
x[y - 1] = '\0'; [color=#FF0000]//nema to tu co delat[/color]
for (i = 0; i < VEL_ASCII; i++)
if (x[i]) [color=#FF0000] //tohle neni nute, navic kdyz dodjed na 0 znak tak ti ho podminka nevypise[/color]
printf("znak: %c zadan: %d-krat\n", i, x[i]);
return 0;
}
int *cetnost(char *text) [color=#FF0000]//funkce muze byt void, nemusi nic vracet[/color]
{
int velikost = 0;
int i;
velikost = strlen(text);
text[velikost - 1] = '\0'; [color=#FF0000]//tohle nedelej tady ale v main predtim nez posles ten retezec do fce[/color]
for (i = 0; i < velikost; i++){
cetnost_c[(int)text[i]]++;
}
return (int)cetnost_c; [color=#FF0000]//tohle tu nema byt a stejne mas chybu v pretipovani, nemuzes do navratove hodnoty kterou mas ukazatel na int posilat jenom int...ale jak rikam staci fuknce void[/color]
}
adam.korinek- Poèet pøíspìvkù : 25
Join date : 18. 11. 14
Re: Procvičení učiva 1
Cau
Evaluace tveho kodu...druhy poksu cervene
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEL_ZAD 1024
#define VEL_ASCII 256
int *cetnost(char *text);
char cetnost_c[VEL_ASCII] = {0};
int main()
{
int i, y;
char *x;
char text[MAX_VEL_ZAD] = {0};
printf("zadej retezec ");
fgets(text,MAX_VEL_ZAD,stdin);
int velikost = strlen(text);
text[velikost - 1] = '\0'; //tady to ma byt
x = cetnost(text);
y = strlen(x); //nema to tu co delat
x[y - 1] = '\0'; //nema to tu co delat
for (i = 0; i < VEL_ASCII; i++)
if (x[i]) //tohle neni nute, navic kdyz dodjed na 0 znak tak ti ho podminka nevypise
printf("znak: %c zadan: %d-krat\n", i, x[i]);
return 0;
}
int *cetnost(char *text) //funkce muze byt void, nemusi nic vracet
{
int velikost = 0;
int i;
velikost = strlen(text);
text[velikost - 1] = '\0'; //tohle nedelej tady ale v main predtim nez posles ten retezec do fce
for (i = 0; i < velikost; i++){
cetnost_c[(int)text[i]]++;
}
return (int)cetnost_c; //tohle tu nema byt a stejne mas chybu v pretipovani, nemuzes do navratove hodnoty kterou mas ukazatel na int posilat jenom int...ale jak rikam staci fuknce void
}
Evaluace tveho kodu...druhy poksu cervene
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEL_ZAD 1024
#define VEL_ASCII 256
int *cetnost(char *text);
char cetnost_c[VEL_ASCII] = {0};
int main()
{
int i, y;
char *x;
char text[MAX_VEL_ZAD] = {0};
printf("zadej retezec ");
fgets(text,MAX_VEL_ZAD,stdin);
int velikost = strlen(text);
text[velikost - 1] = '\0'; //tady to ma byt
x = cetnost(text);
y = strlen(x); //nema to tu co delat
x[y - 1] = '\0'; //nema to tu co delat
for (i = 0; i < VEL_ASCII; i++)
if (x[i]) //tohle neni nute, navic kdyz dodjed na 0 znak tak ti ho podminka nevypise
printf("znak: %c zadan: %d-krat\n", i, x[i]);
return 0;
}
int *cetnost(char *text) //funkce muze byt void, nemusi nic vracet
{
int velikost = 0;
int i;
velikost = strlen(text);
text[velikost - 1] = '\0'; //tohle nedelej tady ale v main predtim nez posles ten retezec do fce
for (i = 0; i < velikost; i++){
cetnost_c[(int)text[i]]++;
}
return (int)cetnost_c; //tohle tu nema byt a stejne mas chybu v pretipovani, nemuzes do navratove hodnoty kterou mas ukazatel na int posilat jenom int...ale jak rikam staci fuknce void
}
adam.korinek- Poèet pøíspìvkù : 25
Join date : 18. 11. 14
Re: Procvičení učiva 1
Nazdar děkuji za tvůj čas. Mám pár otázek:
1)Když nebudu měřit velikost textu ve fun. int*cetnost(char*text) tak jak zadám konec při výpočtu četnosti znaků for (i=0;i<než co;i++){.....
2)funkce musi byt *int je to v zadani
tak jak nato ?
3)podmínka pro tisk (nedavat if (x[i]) )jakou dat aby se tiskly cetnost jen tech zadanejch ??
Dík za vysvětlení a tvůj čas !!!
1)Když nebudu měřit velikost textu ve fun. int*cetnost(char*text) tak jak zadám konec při výpočtu četnosti znaků for (i=0;i<než co;i++){.....
2)funkce musi byt *int je to v zadani
tak jak nato ?
3)podmínka pro tisk (nedavat if (x[i]) )jakou dat aby se tiskly cetnost jen tech zadanejch ??
Dík za vysvětlení a tvůj čas !!!
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Re: Procvičení učiva 1
Nazdar,
trochu opravenej kod co takhle je to lepší ?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEL_ZAD 1024
#define VEL_ASCII 256
int *cetnost(char *text);
int main()
{
int i;
int *x;
char text[MAX_VEL_ZAD] = {0};
printf("zadej retezec ");
fgets(text,MAX_VEL_ZAD,stdin);
x = cetnost(text);
for (i = 0; i < VEL_ASCII; i++)
if (x[i])
printf("znak: %c zadan: %d-krat\n", i, x[i]);
return 0;
}
int *cetnost(char *text)
{
int velikost;
int i;
int *cetnost_c;
velikost = strlen(text); /*zmeri velikost*/
text[velikost - 1] = '\0'; /*odstrani '\n' a nahradi ho '\0'*/
cetnost_c = (int *) calloc(velikost, sizeof(int)); /*dynamicke prideleni pameti (+nulovani) s testem neuspechu*/
if (cetnost_c == NULL){ /*nulovani mi nefunguje*/
printf("Malo pameti\n");
exit(1);
}
for (i = 0; i < VEL_ASCII; i++) /*nulovani pameti*/
cetnost_c[i] = 0;
for (i = 0; i < velikost - 1; i++){ /*soucet vyskytu*/
cetnost_c[(int)text[i]]++;
}
return cetnost_c;
}
ještě jednou dík že strácíš svuj čas na odpovědi pro mě dík!!!!
trochu opravenej kod co takhle je to lepší ?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_VEL_ZAD 1024
#define VEL_ASCII 256
int *cetnost(char *text);
int main()
{
int i;
int *x;
char text[MAX_VEL_ZAD] = {0};
printf("zadej retezec ");
fgets(text,MAX_VEL_ZAD,stdin);
x = cetnost(text);
for (i = 0; i < VEL_ASCII; i++)
if (x[i])
printf("znak: %c zadan: %d-krat\n", i, x[i]);
return 0;
}
int *cetnost(char *text)
{
int velikost;
int i;
int *cetnost_c;
velikost = strlen(text); /*zmeri velikost*/
text[velikost - 1] = '\0'; /*odstrani '\n' a nahradi ho '\0'*/
cetnost_c = (int *) calloc(velikost, sizeof(int)); /*dynamicke prideleni pameti (+nulovani) s testem neuspechu*/
if (cetnost_c == NULL){ /*nulovani mi nefunguje*/
printf("Malo pameti\n");
exit(1);
}
for (i = 0; i < VEL_ASCII; i++) /*nulovani pameti*/
cetnost_c[i] = 0;
for (i = 0; i < velikost - 1; i++){ /*soucet vyskytu*/
cetnost_c[(int)text[i]]++;
}
return cetnost_c;
}
ještě jednou dík že strácíš svuj čas na odpovědi pro mě dík!!!!
Labonek Karel- Poèet pøíspìvkù : 27
Join date : 06. 12. 14
Forum Apl Inf :: C
Strana 1 z 1
Povolení tohoto fóra:
Nemůžete odpovídat na témata v tomto fóru
|
|