#6 peter
Děkuji :)
Příspěvky odeslané z IP adresy 93.187.106.–
#2 Kowalsky95
Děkuji, to vím.
Mě jde o to, jak tyto hodnoty vypsat v tabulce, jak udělat v PHP HTML tabulku. Prostě aby to, co mi výjde na výstupu vypadalo napříkad takto:
Zdravím,
pořebovala bych poradit. Mám udělat skript, který z formuláře vytáhne data a zapíše je do tabulky.
Mám například jednoduchý formulář:
<form>
Jméno: <input type="text" name="jmeno">
Příjmení: <input type="text" name="prijmeni">
<input type="submit" value="Odeslat" name="odeslat">
</form>
A potřebuju aby v jedné buňce tabulky byl název hodnoty (jméno, příjmení) a ve druhé byla zadaná hodnota.
Díky moc.
Ono se to tady neoznačilo ten řádek.
Je to tenhle: bw.writeContentToFile("vystup.txt", crypt(cryptedText, 2));
Zdravím,
mám takový problém.
protected String crypt(String content, int key) {
StringBuilder cryptedText = new StringBuilder();
for (int i = 0; i < content.length()-1; i++) {
cryptedText.append((char)(content.charAt(i) + 2));
}
return cryptedText.toString();
}
protected void writeContentToFile(String targetFileName, String content) {
File f;
try {
f = new File("vystup.txt");
f.createNewFile();
} catch(IOException ex) {
System.out.print("Failed to create file " + fileName + ": " + ex.toString());
seznam.add(ex.getMessage());
}
BufferedWriter bw;
try {
bw = new BufferedWriter(new FileWriter("vystup.txt"));
bw.writeContentToFile("vystup.txt", crypt(cryptedText, 2));
} catch (IOException ex) {
System.out.print("Error while reading file " + fileName + ": " + ex.toString());
seznam.add(ex.getMessage());
}
}
Tohle jsou 2 metody. První zašifruje text a vrátí ho a druhá ten text má zapsat do nového souboru.
Problém je, že nevím, jak tu proměnnou cryptedText, kterou vrací metoda crypt mám "hodit" do toho souboru.
Konkrétně se jedná o podtržený a tučný řádek v textu.
Díky za rady!
#6 ingiraxo
Jo, dobře, to by teoreticky šlo :))
A ještě se zeptám, načítám data ze souboru, ty zašifruju a mám udělat metodu, která vytvoří soubor (ve vyjímce otestuje jestli neexistuje, pokud ano, tak vrátí chybu) a následně zapíšu ten zašifrovaný text do toho nově vytvořeného souboru.
Mám něco takového:
protected void writeContentToFile(String targetFileName, String content) {
BufferedReader in = null;
StringBuilder cont = new StringBuilder();
String line, text;
try{
in = new BufferedReader(new FileReader(targetFileName));
while((line = in.readLine()) != null) {
content.append(line);
content.append("\n");
}
} catch (IOException ex) {
System.out.println("Error while reading file " + fileName + ": " + ex.toString());
}
}
Problém tady je, že nevím, jak vytvořit ten nový soubor a potom ještě mi to podtrhuje append.
Zdravím,
potřebuji poradit, jak zapsat vyjímku v metodě do seznamu. Můj program zatím vypadá takto:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class CaesarCypher extends Cypher {
private String fileName;
protected String readFileContent(String sourceFileName) {
String fileName = "vstup.txt";
BufferedReader in = null;
StringBuilder content = new StringBuilder();
String line, text;
try {
in = new BufferedReader(new FileReader(fileName));
while((line = in.readLine()) != null) {
content.append(line);
content.append("\n");
}
} catch (FileNotFoundException ex) {
System.out.println("File with name " + fileName + " was not found: " + ex.toString());
} catch (IOException ex) {
System.out.println("Failed to read file " + fileName + " :" + ex.toString());
} finally {
if (in != null) {
try {
in.close();
} catch (IOException ex) {
System.out.println("Failed to close file " + fileName + " :" + ex.toString());
}
}
}
text = content.toString();
return text;
}
protected String crypt(String content, int key) {
StringBuilder cryptedText = new StringBuilder();
for (int i = 0; i < content.length()-1; i++) {
cryptedText.append((char)(content.charAt(i) + 2));
}
return cryptedText.toString();
}
}
A já mám každou chybu, která v metodě vznikne zapsat do seznamu (List<String>) chyb. Tento seznam chyb lze pak zjistit voláním metody getAllErrors().
Díky za pomoc.
Zdravím,
máte nějaký nápad jednoduchého programu o min. 3 třídách, kde využiju jednoduchou dědičnost, kontejner STL a nějaký návrhový vzor?
Díky za tipy :)
#19 KIIV
Jojojo, už je to dobré, super. V tom Code::Blocks mi to tam pořád u toho řádku (Zasobnik z1(5);) háže chybu. Každopádně si myslím, že budu mít špatně Zasobnik.h, v tom Code:Blocks je to trošku jinak, tak si s tím nějak pohraju, pohledám a uvidíme.
Děkuju moc! :)
#4 KIIV
C++ vidím poprvé v životě, takže zase v tom tak zběhlá nejsem, navíc, Visual mám, jen mám problém při kompilaci, každopádně jsem opravdu schopná program psát v něčem jiném (momentálně Code::Blocks) :))
Teď jsem to trošku změnila, každopádně bych prosila o trošku trpělivosti :))
main.cpp:
#include <iostream>
using namespace std;
int main()
{
Zasobnik z1(5);
for(int i = 5; i < 10; i++)
z1.PridejNaVrchol(i);
}
zasobnik.cpp:
#include "zasobnik.h"
private:
int *zas;
int index;
int max;
public:
Zasobnik(int);
~Zasobnik();
void PridejNaVrchol(int);
typ OdeberZVrcholu();
bool JePrazdny();
Zasobnik::Zasobnik(int poc){
zas = new int[max];
max = poc;
index = -1;
}
Zasobnik::~Zasobnik(void){
delete zas[];
}
int Zasobnik::PridejNaVrchol(int h){
if (index < max-1){
index++;
zas[index] = h;
} else
cout << "Zasobnik je plny!"; << endl;
}
int Zasobnik::OdeberZVrcholu(){
if (index >= 0){
return zas[index--];
} else
cout << "Zasobnik je prazdny!" << endl;
}
bool Zasobnik::JePrazdny(){
if (index < 0) return true;
else return false;
}
zasobnik.h
#pragma once
class Zasobnik
{
public:
Zasobnik(void);
~Zasobnik(void);
};
No, tady mi to hází jednu chybu ve třídě main - Zasobnik z1(5);
#2 Koudis
No dobře, to si člověk nevšimne někdy, mě jde spíše o funkčnost, ne o syntaxi, pořád mě to hází chybky, navíc ted mám problém ještě s MS Visual, při kompilaci mi vyhodí chybu, že nelze najít exe soubor, zkoušela jsem podle návodů tady to vyřešit, ale bez úspěchu :-/
Zdravím,
potřebuju naprogramovat zásobník, který bude mít tyto data:
- ukazatel na jednorozměrné dynamické pole, ve kterém budou jednotlivé prvky-celá čísla zásobníku
- vrchol zásobníku (index posledního prvku vloženého do zásobníku)
- max - hodnota omezující počet prvků v dynamickém poli
A pak bude třída obsahovat následující metody:
- konstruktor s parametrem, který vytvoří objekt a v něm dynamické pole o určitém max počtu prvků (hodnota
parametru) a inicializuje se vrchol zásobníku
- destruktor, který uvolní paměť po objektu
- metoda PridejNaVrchol, která přidá prvek na vrchol zásobníku
- metoda OdeberZVrcholu, která odebere prvek-číslo z vrcholu zásobníku a vrátí jeho hodnotu
- metoda JePrázdný, která vrátí true, bude-li zásobník prázdný, a false, bude-li obsahovat alespoň jeden prvek
Moje třída zásobník vypadá takto:
#include "StdAfx.h"
#include "Zasobnik.h"
private:
int *zas;
int index;
int max;
Zasobnik::Zasobnik(int max){
zas = new int[max];
index = max-1;
}
Zasobnik::~Zasobnik(void){
delete zas;
}
int Zasobnik::PridejNaVrchol(int h){
zas[index] = h;
index++;
}
int Zasobnik::OdeberZVrcholu(){
return zas[index--];
}
bool Zasobnik::Je Prazdny(){
if (index <= 0) return true;
else return false;
}
A ve třídě main mám zatím jen aplikovanou metodu pro vložení:
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Zadej pocet prvku: ";
cin >> max;
Zasobnik z1(max);
for(int i = max; i < ; i++)
z1.PridejNaVrchol(i);
}
Jelikož mám Visual Studio mimo provoz, tak to nemám jak vyzkoušet? Teoreticky mám to dobře?
Díky!
#17 KIIV
No ..... to chápu, ale, nevím jak to napsat, možná nad tím až moc přemýšlím :)) Prostě nechápu jak ten cyklus může poznat, že je stav různý od 0, když je zrovna nastaven na 0, opravdu bych to potřeboval vysvětlit celý ten cyklus úplně polopaticky.
#18 ingiraxo
Dobře, zkusím si to pak ještě prokontrolovat. Děkuju :)
#12 KIIV
Jasně, funguje, jenže programování není mojí silnou stránkou, C jazyk už vůbec ne, navíc se ho učím asi 2 měsíce a ještě sám a musím plnit úkoly, kdy některé jsou pro mě bohužel složité, to znamená že se vyhýbám pro mě "složitějším" řešením i když jsou třeba kratší a vypadají líp, protože to budu muset obhajovat.
Můžeš mi prosímtě ještě vysvětlit jak funguje ten stav? Ještě jsem nikde neviděl, že je v podmínce čistě jen číslo a pak, že stavu přiřazuju hodnotu ...
Mě už se to nechce ten program moc překopávat, mám to takhle:
for(i=0; i<N; i++){
if (a[i]%2 == 0){
prvek = a[i];
for (j=prvek; j<N; j++){
a[j] = a[j+1];
}
}
}
Nešlo by to v tomhle nějak popachtit? Když program spustím a napíšu pole:
1 3 5 7 6 4 5 7 8 5
vypíše mi to:
1 3 5 7 4 5 5 7 5
První sudý prvek to odstraní, ale pak se následující číslice zdvojí a prostě moc nechápu co se tam děje.
Tak po pár úpravách už v pohodě, jen mám problém s for
for(i=0; i<N; i++){
if (a[i]%2 == 0){
prvek = a[i];
for (i=prvek; prvek<N; i++){
prvek = a[i+1];
}
}
}
Pole odstraní poslední prvek.
Nejspíše z důvodu toho, že alokuju paměť v cyklu, takže to jsem taky vyhodil mimo cyklus:
for(i=0; i<N; i++){
if (a[i]%2 == 0){
prvek = a[i];
for (i=prvek; prvek<N-1; i++){
prvek = a[i+1];
}
}
}
za = (unsigned int *)malloc(sizeof(unsigned int)*9);
za = a;
for (i=0; i<N-1; i++) printf ("%d", za[i]);
free(a);
a = NULL;
a teď už mi to nevypisuje to nové pole vůbec
Jinak ještě jsem spravil u druhého for cyklus:
for(i=0; i<N; i++){
if (a[i]%2 == 0){
prvek = a[i];
for (i=prvek; prvek<N-1; i++){
prvek = a[i+1];
}
}
za = (unsigned int *)malloc(sizeof(unsigned int)*9);
za = a;
printf ("%d", za[i]);
}
prvek = a[i+1] a jedou mi tam do nekonečně samé 9 :))
Zdravím vás,
mám menší problém u pole. Potřebuju napsat program, kde funkce vyhledá první sudé číslo v dynamickém 10prvkovém poli, následně ho odstraní, prvky přepíše a pole zmenší na 9 prvků.
Mám tohle:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#define N 10
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int *a;
unsigned int *za;
int i;
int prvek;
a = (unsigned int *)malloc(sizeof(unsigned int)*N);
printf("Nacti deset cisel:\n", i);
for(i=0; i<N; i++){
scanf("%d", &a[i]);
}
for(i=0; i<N; i++) printf("%d", a[i]);
for(i=0; i<N; i++){
if (a[i]%2 == 0){
prvek = a[i];
for (i=prvek; prvek<N-1; i++){
a[i] = a[i+1];
}
}
za = (unsigned int *)malloc(sizeof(unsigned int)*9);
za = a;
printf ("%d", za[i]);
free(a);
a = NULL;
}
system("PAUSE");
return 0;
}
Program mi vyhodí nějakou šílenou chybu u if (a[i]%2 == 0).
Díky předem za jakékoliv rady.
#54 ingiraxo
... Jo v pořádku, takhle jsem to udělala předtím, ale max se mi nezobrazilo, teď jsem si všimla, že jsem zapomněla hodit do printf formát čísla :/ Asi přepracovanost :D Nechám to tak jak to mám, i kdybych tam měla potom ještě nějaké chyby, tak už to řešit nebudu, ten příklad už nechci vidět :))
Tak děkuju moc a hlavně za tu trpělivost :)
Žádná změna, mě už tenhle příklad příjde jako nevyřešitelný :D
Píše mi to - Error 9 error C2143: syntax error : missing ';' before 'type' - takže to bude úplně nějaká blbost někde.
Main:
int _tmain(int argc, _TCHAR* argv[]) {
int a;
float pp[N] = {0};
srand((unsigned int)time(NULL));
RandomFloat(a);
NaplnPole(pp, 2, 8);
VypisPole(pp, 2, 8);
float* max = HledejPrvek(pp, 2, 8);
// UsporadejPole(pp, 2, 8);
system("PAUSE");
return 0;
}
Když to napíšu takhle:
float* max = HledejPrvek(pole, 0, N); hodí mi to chybu, když to napíšu takhle:
float* max = NULL;
max = HledejPrvek(pp, 2, 8);
tak se program rozjede, ale nic mi to neprovede, tak já už fakt nevím
Ještě jsem se chtěla zeptat, funkce, která hledá největší prvek mezi indexy dolní a horní, vypadá takto - float* HledejPrvek(float pp[],int dolni, int horni), to znamená, že má vracet adresu toho maximálního prvku, funkci mám teda takto:
float* HledejPrvek(float pp[], int dolni, int horni) {
int i;
float max = -1;
if (pp && dolni >= 0 && horni < N) {
for (i = dolni; i < horni; i++) {
if (pp[i] > max)
max = pp[i];
}
}
return max;
}
V mainu pak:
#define N 10
int _tmain(int argc, _TCHAR* argv[]) {
float pp[N] = {0};
float max;
srand((unsigned int)time(NULL));
NaplnPole(pp, 2, 8);
VypisPole(pp, 2, 8);
max = HledejPrvek(pp, 2, 8);
UsporadejPole(pp, 2, 8);
system("PAUSE");
return 0;
}
No, a teď zase ty pointery .... :))
Jasně, to chápu, jen co mi dělá pořád problémy jsou ty pointery. Nevím kde je dát a kde ne.
S tím že potom máme v dalších funkcích pole vypsat, vyhledat prvek, který má mezi indexem dolní a horní největší hodnotu a nakonec pole seřadit.
Napište program, který bude vytvořen pomocí projektu ze tří samostatných modulu. První modul bude obsahovat funkci 'main', druhý modul bude obsahovat funkci s označením (A). Třetí modul bude obsahovat funkce (B), (C), (D), (E). K příslušným zdrojovým souborům vytvořte hlavičkové soubory.
(B) void NaplnPole(float pp[],int dolni, int horni); - funkce naplní pole "pp" od indexu "dolni" po index "horni" náhodnými
hodnotami v rozsahu 0 až 999, ale typu float
Takové je zadání.
Pointery mi dělají strašný problém, tady v tom jsem úplně mimo, funkce má 3 parametry, pole, dolní a horní, nevím jak do toho zahrnout ještě velikost aby to bylo podle zadání.
No, jelikož ale nevím jak naplnit velikost pole tak vznikl další problém :/
Mám teda kód:
void NaplnPole(float pp[], int dolni, int horni){
int i, a, b;
float c;
int n;
printf("Zadej velikost pole: ");
scanf("%d", &n);
printf("\nZadej dolni index: ");
scanf("%d", &dolni);
printf("\nZadej horni index: ");
scanf("%d", &horni);
srand(time(0));
if (dolni >= 0 && horni < sizeof(pp)) {
for (i = dolni; i < horni; i++) {
pp[i] = rand() % 999;
printf("%d ", pp[i]);
}
}
a tuhle metodu pak testuju v main:
int _tmain(int argc, _TCHAR* argv[])
{
int b, c;
float *pp;
NaplnPole(pp, b, c);
system("PAUSE");
return 0;
}
Velikost pole bych nastavila v mainu, že by uživatel zadal velikost pole (což mám tady v NaplnPole). Jelikož ale na pole odkazuji pomocí pointeru, tak nevím jak na to.
#9 ingiraxo
aa děkuju :))
Jinak ten rand jsem brala z jiné mojí metody, kde máme funkci, která vrací náhodná čísla typu float od 0 po rozsah, který je typu int, máme využít reálné dělení dvou celých čísel, a tuto funkci máme využít i právě v tomto příkladu.
No, takže by to měla řešit horni-1? To mi ale taky nejde.
Zdravím,
mám takový menší problém s naplněním pole v C. Mám naplnit pole od dolního po horní index (které nejspíše zadá uživatel) náhodnými čísly typu float. Cyklus jsem sestavila nějak takto:
for(i = dolni; dolni<=horni; i++){
a = rand() % 999;
b = rand() % 999;
pp[i] = (float)a/b;
printf("%0.2f ", pp[i]);
}
Když spustím program, hlásí mi to u řádku pp[i] = (float)a/b; varování Unhandled exception at 0x00413798 in Modul1.exe: 0xC0000005: Access violation writing location 0xcccccccc. Myslím si, že to bude tím, že pole nemá určenou délku. Pokud zadám třeba dolní 5 a horní 7, tak 0-4 není zadán 8+ taky ne, a tak metoda neví, co tam přiřadit, ale nejsem si tím jistá.
Byla bych ráda za jakoukoliv radu.
Děkuji :)